2024-06-07 09:50:13 +02:00
|
|
|
/*
|
|
|
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
|
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// https://vitejs.dev/config/build-options.html#build-modulepreload
|
|
|
|
|
import 'vite/modulepreload-polyfill';
|
|
|
|
|
|
|
|
|
|
import '@/style.scss';
|
2024-06-25 16:51:32 +02:00
|
|
|
import { createApp, defineAsyncComponent } from 'vue';
|
2024-08-25 13:45:28 +02:00
|
|
|
import { setIframeId } from '@/post-message.js';
|
2024-08-23 01:07:23 +02:00
|
|
|
import { parseEmbedParams } from '@/embed-page.js';
|
2024-06-07 09:50:13 +02:00
|
|
|
|
2024-08-27 01:16:02 +02:00
|
|
|
console.info('Misskey Embed');
|
|
|
|
|
|
2024-06-07 09:50:13 +02:00
|
|
|
const params = new URLSearchParams(location.search);
|
2024-07-06 03:45:16 +02:00
|
|
|
const embedParams = parseEmbedParams(params);
|
|
|
|
|
|
|
|
|
|
// サイズの制限
|
|
|
|
|
document.documentElement.style.maxWidth = '500px';
|
|
|
|
|
|
2024-06-07 09:50:13 +02:00
|
|
|
// iframeIdの設定
|
2024-07-06 03:45:16 +02:00
|
|
|
function setIframeIdHandler(event: MessageEvent) {
|
2024-06-07 09:50:13 +02:00
|
|
|
if (event.data?.type === 'misskey:embedParent:registerIframeId' && event.data.payload?.iframeId != null) {
|
|
|
|
|
setIframeId(event.data.payload.iframeId);
|
2024-07-06 03:45:16 +02:00
|
|
|
window.removeEventListener('message', setIframeIdHandler);
|
2024-06-07 09:50:13 +02:00
|
|
|
}
|
2024-07-06 03:45:16 +02:00
|
|
|
}
|
2024-07-06 04:20:04 +02:00
|
|
|
|
2024-07-06 03:45:16 +02:00
|
|
|
window.addEventListener('message', setIframeIdHandler);
|
2024-06-07 09:50:13 +02:00
|
|
|
|
2024-08-22 10:32:24 +02:00
|
|
|
const app = createApp(
|
2024-08-22 10:19:36 +02:00
|
|
|
defineAsyncComponent(() => import('@/ui.vue')),
|
2024-08-22 10:32:24 +02:00
|
|
|
);
|
2024-07-06 03:45:16 +02:00
|
|
|
|
2024-08-22 10:32:24 +02:00
|
|
|
//#region Embed Provide
|
|
|
|
|
app.provide('embedParams', embedParams);
|
|
|
|
|
//#endregion
|
2024-07-06 06:03:21 +02:00
|
|
|
|
2024-08-26 10:18:49 +02:00
|
|
|
removeSplash();
|
|
|
|
|
|
|
|
|
|
function removeSplash() {
|
|
|
|
|
const splash = document.getElementById('splash');
|
|
|
|
|
if (splash) {
|
|
|
|
|
splash.style.opacity = '0';
|
|
|
|
|
splash.style.pointerEvents = 'none';
|
|
|
|
|
|
|
|
|
|
// transitionendイベントが発火しない場合があるため
|
|
|
|
|
window.setTimeout(() => {
|
|
|
|
|
splash.remove();
|
|
|
|
|
}, 1000);
|
|
|
|
|
}
|
|
|
|
|
}
|