{"version":3,"file":"index.mjs","sources":["../src/constants.ts","../src/callback.ts","../src/Utils/AppCreateQueue.ts","../src/InternalEmitter.ts","../src/Register/storage.ts","../src/Register/loader.ts","../src/Register/index.ts","../src/Utils/Common.ts","../src/AppListener.ts","../src/Utils/error.ts","../node_modules/.pnpm/side-effect-manager@0.1.5/node_modules/side-effect-manager/dist/side-effect-manager.es.js","../src/Utils/Reactive.ts","../src/App/Storage/StorageEvent.ts","../src/App/Storage/utils.ts","../src/App/Storage/index.ts","../src/App/AppContext.ts","../src/App/AppPageStateImpl.ts","../node_modules/.pnpm/@netless+telebox-insider@0.3.0/node_modules/@netless/telebox-insider/dist/telebox-insider.es.js","../src/BoxManager.ts","../src/Utils/attributesLogStringify.ts","../src/Utils/log.ts","../src/Helper.ts","../node_modules/.pnpm/svelte@3.59.2/node_modules/svelte/internal/index.mjs","../src/Cursor/Cursor.svelte","../src/Cursor/icons2.ts","../src/Cursor/Cursor.ts","../src/image/pencil-cursor.png","../src/image/selector-cursor.png","../src/image/eraser-cursor.png","../src/image/shape-cursor.svg","../src/image/text-cursor.svg","../src/image/laser-pointer-cursor.svg","../src/image/pencil-eraser-1.svg","../src/image/pencil-eraser-2.svg","../src/image/pencil-eraser-3.svg","../src/Cursor/icons.ts","../src/Cursor/index.ts","../src/Utils/extendClass.ts","../src/AttributesDelegate.ts","../src/Page/index.ts","../src/BoxEmitter.ts","../src/App/AppProxy.ts","../src/View/ViewManager.ts","../src/View/MainView.ts","../src/RedoUndo.ts","../src/AppManager.ts","../src/ContainerResizeObserver.ts","../src/PageState.ts","../src/ReconnectRefresher.ts","../src/Utils/RoomHacker.ts","../node_modules/.pnpm/@netless+app-docs-viewer@0.2.20_jspdf@2.5.2/node_modules/@netless/app-docs-viewer/dist/main.es.js","../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js","../node_modules/.pnpm/react@16.14.0/node_modules/react/cjs/react.production.min.js","../node_modules/.pnpm/react@16.14.0/node_modules/react/index.js","../node_modules/.pnpm/scheduler@0.19.1/node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/.pnpm/scheduler@0.19.1/node_modules/scheduler/index.js","../node_modules/.pnpm/react-dom@16.14.0_react@16.14.0/node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/.pnpm/react-dom@16.14.0_react@16.14.0/node_modules/react-dom/index.js","../node_modules/.pnpm/@netless+app-media-player@0.1.4/node_modules/@netless/app-media-player/dist/main.es.js","../src/BuiltinApps.ts","../src/View/IframeBridge.ts","../src/ExtendPluginManager.ts","../src/utils/extendClass.ts","../src/index.ts"],"sourcesContent":["export enum Events {\n    AppMove = \"AppMove\",\n    AppFocus = \"AppFocus\",\n    AppResize = \"AppResize\",\n    AppBoxStateChange = \"AppBoxStateChange\",\n    GetAttributes = \"GetAttributes\",\n    UpdateWindowManagerWrapper = \"UpdateWindowManagerWrapper\",\n    InitReplay = \"InitReplay\",\n    WindowCreated = \"WindowCreated\",\n    SetMainViewScenePath = \"SetMainViewScenePath\",\n    SetMainViewSceneIndex = \"SetMainViewSceneIndex\",\n    SetAppFocusIndex = \"SetAppFocusIndex\",\n    SwitchViewsToFreedom = \"SwitchViewsToFreedom\",\n    MoveCamera = \"MoveCamera\",\n    MoveCameraToContain = \"MoveCameraToContain\",\n    CursorMove = \"CursorMove\",\n    RootDirRemoved = \"RootDirRemoved\",\n    Refresh = \"Refresh\",\n    InitMainViewCamera = \"InitMainViewCamera\",\n}\n\nexport const MagixEventName = \"__WindowManger\";\nexport const EnsureReconnectEvent = \"__WindowMangerEnsureReconnected__\";\n\nexport enum AppAttributes {\n    Size = \"size\",\n    Position = \"position\",\n    SceneIndex = \"SceneIndex\",\n    ZIndex = \"zIndex\",\n}\n\nexport enum AppEvents {\n    setBoxSize = \"setBoxSize\",\n    setBoxMinSize = \"setBoxMinSize\",\n    destroy = \"destroy\",\n}\n\nexport enum AppStatus {\n    StartCreate = \"StartCreate\",\n}\n\nexport enum CursorState {\n    Leave = \"leave\",\n    Normal = \"normal\",\n}\n\nexport const REQUIRE_VERSION = \"2.16.1\";\n\nexport const MIN_WIDTH = 340 / 720;\nexport const MIN_HEIGHT = 340 / 720;\n\nexport const SET_SCENEPATH_DELAY = 100; // 设置 scenePath 的延迟事件\n\nexport const DEFAULT_CONTAINER_RATIO = 9 / 16;\n\nexport const ROOT_DIR = \"/\";\nexport const INIT_DIR = \"/init\";\n\nexport const SETUP_APP_DELAY = 50;\n","import Emittery from \"emittery\";\nimport type {\n    TeleBoxColorScheme,\n    TELE_BOX_STATE,\n    TeleBoxState,\n    NotMinimizedBoxState,\n} from \"@netless/telebox-insider\";\nimport type { CameraState, SceneState, View, ViewVisionMode } from \"white-web-sdk\";\nimport type { LoadAppEvent } from \"./Register\";\nimport type { PageState } from \"./Page\";\nimport type {\n    BoxBlurredPayload,\n    BoxClosePayload,\n    BoxFocusPayload,\n    BoxMovePayload,\n    BoxResizePayload,\n    BoxStateChangePayload,\n} from \"./BoxEmitter\";\nimport type { AppPayload } from \"./typings\";\n\nexport type PublicEvent = {\n    mainViewModeChange: ViewVisionMode;\n    boxStateChange: `${TELE_BOX_STATE}`;\n    darkModeChange: boolean;\n    prefersColorSchemeChange: TeleBoxColorScheme;\n    cameraStateChange: CameraState;\n    mainViewScenePathChange: string;\n    mainViewSceneIndexChange: number;\n    focusedChange: string | undefined;\n    mainViewScenesLengthChange: number;\n    canRedoStepsChange: number;\n    canUndoStepsChange: number;\n    loadApp: LoadAppEvent;\n    ready: undefined; // 所有 APP 创建完毕时触发\n    sceneStateChange: SceneState;\n    pageStateChange: PageState;\n    fullscreenChange: boolean;\n    appsChange: string[]; // APP 列表变化时触发\n    onBoxMove: BoxMovePayload;\n    onBoxResize: BoxResizePayload;\n    onBoxFocus: BoxFocusPayload;\n    onBoxBlurred: BoxBlurredPayload;\n    onBoxClose: BoxClosePayload;\n    onBoxStateChange: BoxStateChangePayload;\n    onMainViewMounted: View;\n    onMainViewRebind: View;\n    onAppViewMounted: AppPayload;\n    onAppSetup: string;\n    onAppScenePathChange: AppPayload;\n    onBoxesStatusChange: Map<string, TeleBoxState>;\n    onLastNotMinimizedBoxesStatusChange: Map<string, NotMinimizedBoxState>;\n};\n\nexport type CallbacksType = Emittery<PublicEvent>;\nexport const callbacks: CallbacksType = new Emittery();\n","import { callbacks } from \"../callback\";\nimport { SETUP_APP_DELAY } from \"../constants\";\n\nexport type Invoker<T = any> = () => Promise<T | undefined>;\n\nexport class AppCreateQueue {\n    private list: Invoker[] = [];\n    private currentInvoker: Invoker | undefined;\n    private timer: number | undefined;\n    public isEmit = false;\n\n    private initInterval() {\n        return setInterval(() => {\n            this.invoke();\n        }, 50);\n    }\n\n    public push<T>(item: Invoker<T>) {\n        this.list.push(item);\n        this.invoke();\n        if (this.timer === undefined && this.list.length > 0) {\n            this.timer = this.initInterval();\n        }\n    }\n\n    public invoke() {\n        if (this.list.length === 0) {\n            return;\n        }\n        if (this.currentInvoker !== undefined) {\n            return;\n        }\n\n        const item = this.list.shift();\n        if (item) {\n            this.currentInvoker = item;\n            item()\n                .then(() => {\n                    this.invoked();\n                })\n                .catch(error => {\n                    console.error(`[WindowManager]: create app error: ${error.message}`);\n                    this.invoked();\n                });\n        }\n    }\n\n    private invoked = () => {\n        this.currentInvoker = undefined;\n        if (this.list.length === 0) {\n            this.clear();\n            this.emitReady();\n        }\n    };\n\n    private clear = () => {\n        clearInterval(this.timer);\n        this.timer = undefined;\n    };\n\n    public emitReady() {\n        if (!this.isEmit) {\n            setTimeout(() => {\n                callbacks.emit(\"ready\");\n            }, SETUP_APP_DELAY);\n        }\n        this.isEmit = true;\n    }\n\n    public empty() {\n        this.list = [];\n        this.clear();\n    }\n\n    public destroy() {\n        if (this.timer) {\n            this.clear();\n        }\n    }\n}\n","import Emittery from \"emittery\";\nimport type { AppInitState, CursorMovePayload } from \"./index\";\nimport type { NotMinimizedBoxState, TeleBoxState } from \"@netless/telebox-insider\";\n\nexport type RemoveSceneParams = {\n    scenePath: string;\n    index?: number;\n};\n\nexport type EmitterEvent = {\n    onCreated: undefined;\n    InitReplay: AppInitState;\n    error: Error;\n    seekStart: undefined;\n    seek: number;\n    mainViewMounted: undefined;\n    observerIdChange: number;\n    boxStateChange: string;\n    playgroundSizeChange: DOMRect;\n    startReconnect: undefined;\n    onReconnected: undefined;\n    removeScenes: RemoveSceneParams;\n    cursorMove: CursorMovePayload;\n    updateManagerRect: undefined;\n    focusedChange: { focused: string | undefined; prev: string | undefined };\n    rootDirRemoved: undefined; // 根目录整个被删除\n    rootDirSceneRemoved: string; // 根目录下的场景被删除\n    setReadonly: boolean;\n    changePageState: undefined;\n    writableChange: boolean;\n    containerSizeRatioUpdate: number;\n    wrapperRectChange: { width: number; height: number; origin?: string };\n    boxesStatusChange: Map<string, TeleBoxState>;\n    lastNotMinimizedBoxesStatusChange: Map<string, NotMinimizedBoxState>;\n};\n\nexport type EmitterType = Emittery<EmitterEvent>;\nexport const internalEmitter: EmitterType = new Emittery();\n","const DatabaseName = \"__WindowManagerAppCache\";\n\nlet db: IDBDatabase;\nlet store: IDBObjectStore;\n\nexport type Item = {\n    kind: string;\n    sourceCode: string;\n};\n\nexport const initDb = async () => {\n    db = await createDb();\n};\n\nexport const setItem = (key: string, val: any) => {\n    if (!db) return;\n    return addRecord(db, { kind: key, sourceCode: val });\n};\n\nexport const getItem = async (key: string): Promise<Item | null> => {\n    if (!db) return null;\n    return await query(db, key);\n};\n\nexport const removeItem = (key: string) => {\n    if (!db) return;\n    return deleteRecord(db, key);\n};\n\nfunction createDb(): Promise<IDBDatabase> {\n    return new Promise((resolve, reject) => {\n        const request = indexedDB.open(DatabaseName, 2);\n        request.onerror = e => {\n            reject(e);\n        };\n\n        request.onupgradeneeded = (event: any) => {\n            const db = event.target.result as IDBDatabase;\n            if (!db.objectStoreNames.contains(\"apps\")) {\n                store = db.createObjectStore(\"apps\", { keyPath: \"kind\" });\n                store.createIndex(\"kind\", \"kind\", { unique: true });\n            }\n        };\n\n        request.onsuccess = () => {\n            const db = request.result;\n            resolve(db);\n        };\n    });\n}\n\nfunction query<T>(db: IDBDatabase, val: string): Promise<T | null> {\n    return new Promise((resolve, reject) => {\n        const index = db.transaction([\"apps\"]).objectStore(\"apps\").index(\"kind\");\n        const request = index.get(val);\n        request.onerror = e => reject(e);\n        request.onsuccess = () => {\n            if (request.result) {\n                resolve(request.result);\n            } else {\n                resolve(null);\n            }\n        };\n    });\n}\n\nfunction addRecord(db: IDBDatabase, payload: any): Promise<void> {\n    return new Promise((resolve, reject) => {\n        const request = db.transaction([\"apps\"], \"readwrite\").objectStore(\"apps\").add(payload);\n        request.onsuccess = () => resolve();\n        request.onerror = () => reject();\n    });\n}\n\nfunction deleteRecord(db: IDBDatabase, key: string): Promise<void> {\n    return new Promise((resolve, reject) => {\n        const request = db.transaction([\"apps\"], \"readwrite\").objectStore(\"apps\").delete(key);\n        request.onsuccess = () => resolve();\n        request.onerror = () => reject();\n    });\n}\n","import { callbacks } from \"../callback\";\nimport { getItem, setItem } from \"./storage\";\nimport type { NetlessApp } from \"../typings\";\n\nconst Prefix = \"NetlessApp\";\n\nconst TIMEOUT = 10000; // 下载 script 10 秒超时\n\nexport const getScript = async (url: string): Promise<string> => {\n    const item = await getItem(url);\n    if (item) {\n        return item.sourceCode;\n    } else {\n        const result = await fetchWithTimeout(url, { timeout: TIMEOUT });\n        const text = await result.text();\n        await setItem(url, text);\n        return text;\n    }\n};\n\nexport const executeScript = (text: string, appName: string): NetlessApp => {\n    let result = Function(text + `\\n;return ${appName}`)();\n    if (typeof result === \"undefined\") {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        result = window[appName];\n    }\n    return result;\n};\n\nexport const loadApp = async (url: string, key: string, name?: string): Promise<NetlessApp> => {\n    const appName = name || Prefix + key;\n    callbacks.emit(\"loadApp\", { kind: key, status: \"start\" });\n\n    let text: string;\n    try {\n        text = await getScript(url);\n        if (!text || text.length === 0) {\n            callbacks.emit(\"loadApp\", { kind: key, status: \"failed\", reason: \"script is empty.\" });\n            throw new Error(\"[WindowManager]: script is empty.\");\n        }\n    } catch (error) {\n        callbacks.emit(\"loadApp\", { kind: key, status: \"failed\", reason: error.message });\n        throw error;\n    }\n    return getResult(text, appName, key);\n};\n\nconst getResult = (text: string, appName: string, key: string): NetlessApp => {\n    try {\n        const result = executeScript(text, appName);\n        callbacks.emit(\"loadApp\", { kind: key, status: \"success\" });\n        return result;\n    } catch (error: any) {\n        if (error.message.includes(\"Can only have one anonymous define call per script file\")) {\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            const define = window.define;\n            if (\"function\" == typeof define && define.amd) {\n                delete define.amd;\n            }\n            const result = executeScript(text, appName);\n            callbacks.emit(\"loadApp\", { kind: key, status: \"success\" });\n            return result;\n        }\n        callbacks.emit(\"loadApp\", { kind: key, status: \"failed\", reason: error.message });\n        throw error;\n    }\n};\n\nasync function fetchWithTimeout(resource: string, options: RequestInit & { timeout: number }) {\n    const { timeout = 10000 } = options;\n\n    const controller = new AbortController();\n    const id = setTimeout(() => controller.abort(), timeout);\n\n    const response = await fetch(resource, {\n        ...options,\n        signal: controller.signal,\n        headers: {\n            \"content-type\": \"text/plain\",\n        },\n    });\n    clearTimeout(id);\n\n    return response;\n}\n","import Emittery from \"emittery\";\nimport { loadApp } from \"./loader\";\nimport type { NetlessApp, RegisterEvents, RegisterParams } from \"../typings\";\n\nexport type LoadAppEvent = {\n    kind: string;\n    status: \"start\" | \"success\" | \"failed\";\n    reason?: string;\n};\n\nexport type SyncRegisterAppPayload = { kind: string; src: string; name: string | undefined };\nexport type SyncRegisterApp = (payload: SyncRegisterAppPayload) => void;\n\nclass AppRegister {\n    public kindEmitters: Map<string, Emittery<RegisterEvents>> = new Map();\n    public registered: Map<string, RegisterParams> = new Map();\n    public appClassesCache: Map<string, Promise<NetlessApp>> = new Map();\n    public appClasses: Map<string, () => Promise<NetlessApp>> = new Map();\n\n    private syncRegisterApp: SyncRegisterApp | null = null;\n\n    public setSyncRegisterApp(fn: SyncRegisterApp) {\n        this.syncRegisterApp = fn;\n    }\n\n    public onSyncRegisterAppChange = (payload: SyncRegisterAppPayload) => {\n        this.register({ kind: payload.kind, src: payload.src });\n    };\n\n    public async register(params: RegisterParams): Promise<void> {\n        this.appClassesCache.delete(params.kind);\n        this.registered.set(params.kind, params);\n\n        const paramSrc = params.src;\n        let downloadApp: () => Promise<NetlessApp>;\n\n        if (typeof paramSrc === \"string\") {\n            downloadApp = async () => {\n                const result = (await loadApp(paramSrc, params.kind, params.name)) as any;\n                if (result.__esModule) {\n                    return result.default;\n                }\n                return result;\n            };\n            if (this.syncRegisterApp) {\n                this.syncRegisterApp({ kind: params.kind, src: paramSrc, name: params.name });\n            }\n        }\n        if (typeof paramSrc === \"function\") {\n            downloadApp = async () => {\n                let appClass = (await paramSrc()) as any;\n                if (appClass) {\n                    if (appClass.__esModule || appClass.default) {\n                        appClass = appClass.default;\n                    }\n                    return appClass;\n                } else {\n                    throw new Error(`[WindowManager]: load remote script failed, ${paramSrc}`);\n                }\n            };\n        }\n        if (typeof paramSrc === \"object\") {\n            downloadApp = async () => paramSrc;\n        }\n        this.appClasses.set(params.kind, async () => {\n            let app = this.appClassesCache.get(params.kind);\n            if (!app) {\n                app = downloadApp();\n                this.appClassesCache.set(params.kind, app);\n            }\n            return app;\n        });\n\n        if (params.addHooks) {\n            const emitter = this.createKindEmitter(params.kind);\n            if (emitter) {\n                params.addHooks(emitter);\n            }\n        }\n    }\n\n    public unregister(kind: string) {\n        this.appClasses.delete(kind);\n        this.appClassesCache.delete(kind);\n        this.registered.delete(kind);\n        const kindEmitter = this.kindEmitters.get(kind);\n        if (kindEmitter) {\n            kindEmitter.clearListeners();\n            this.kindEmitters.delete(kind);\n        }\n    }\n\n    public async notifyApp<T extends keyof RegisterEvents>(\n        kind: string,\n        event: T,\n        payload: RegisterEvents[T]\n    ) {\n        const emitter = this.kindEmitters.get(kind);\n        await emitter?.emit(event, payload);\n    }\n\n    private createKindEmitter(kind: string) {\n        if (!this.kindEmitters.has(kind)) {\n            const emitter = new Emittery<RegisterEvents>();\n            this.kindEmitters.set(kind, emitter);\n        }\n        return this.kindEmitters.get(kind);\n    }\n}\n\nexport const appRegister = new AppRegister();\n","import { appRegister } from \"../Register\";\nimport { debounce } from \"lodash\";\nimport { internalEmitter } from \"../InternalEmitter\";\nimport { ROOT_DIR } from \"../constants\";\nimport { ScenePathType } from \"white-web-sdk\";\nimport { v4 } from \"uuid\";\nimport type { PublicEvent } from \"../callback\";\nimport type { Displayer, ViewVisionMode, Room, View, SceneDefinition } from \"white-web-sdk\";\nimport type Emittery from \"emittery\";\n\nexport const genAppId = async (kind: string) => {\n    const impl = await appRegister.appClasses.get(kind)?.();\n    if (impl && impl.config?.singleton) {\n        return kind;\n    }\n    return `${kind}-${v4().replace(\"-\", \"\").slice(0, 8)}`;\n};\n\nexport const setViewFocusScenePath = (view: View, focusScenePath: string) => {\n    if (view.focusScenePath !== focusScenePath) {\n        view.focusScenePath = focusScenePath;\n        return view;\n    }\n};\n\nexport const setViewSceneIndex = (view: View, index: number) => {\n    if (view.focusSceneIndex !== index) {\n        view.focusSceneIndex = index;\n        return view;\n    }\n};\n\nexport const setScenePath = (room: Room | undefined, scenePath: string) => {\n    if (room && room.isWritable) {\n        if (room.state.sceneState.scenePath !== scenePath) {\n            const nextScenePath = scenePath === \"/\" ? \"\" : scenePath;\n            room.setScenePath(nextScenePath);\n        }\n    }\n};\n\nexport const getScenePath = (\n    room: Room | undefined,\n    dir: string | undefined,\n    index: number\n): string | undefined => {\n    if (room && dir) {\n        const scenes = entireScenes(room);\n        const scene = scenes[dir]?.[index];\n        if (scene) {\n            return `${dir}/${scene.name}`;\n        }\n    }\n};\n\nexport const removeScenes = (room: Room | undefined, scenePath: string, index?: number) => {\n    if (room) {\n        const type = room.scenePathType(scenePath);\n        if (type !== ScenePathType.None) {\n            (room.removeScenes as any)(scenePath, index);\n        }\n    }\n};\n\nexport const setViewMode = (view: View, mode: ViewVisionMode) => {\n    if (!(view as any).didRelease && view.mode !== mode) {\n        view.mode = mode;\n    }\n};\n\nexport const emitError = (error: Error) => {\n    if (internalEmitter.listenerCount(\"error\") > 0) {\n        internalEmitter.emit(\"error\", error);\n    } else {\n        console.log(\"[WindowManager]:\", error);\n    }\n};\n\nexport const addEmitterOnceListener = (event: any, listener: any) => {\n    internalEmitter.once(event).then(listener);\n};\n\nexport const notifyMainViewModeChange = debounce(\n    (callbacks: Emittery<PublicEvent>, mode: ViewVisionMode) => {\n        callbacks.emit(\"mainViewModeChange\", mode);\n    },\n    200\n);\n\nexport const makeValidScenePath = (displayer: Displayer, scenePath: string, index = 0) => {\n    const scenes = entireScenes(displayer)[scenePath];\n    if (!scenes) return;\n    const scene = scenes[index];\n    if (!scene) return;\n    const firstSceneName = scene.name;\n    if (scenePath === ROOT_DIR) {\n        return `/${firstSceneName}`;\n    } else {\n        return `${scenePath}/${firstSceneName}`;\n    }\n};\n\nexport const entireScenes = (displayer: Displayer) => {\n    return displayer.entireScenes();\n};\n\nexport const putScenes = (\n    room: Room | undefined,\n    path: string,\n    scenes: SceneDefinition[],\n    index?: number\n) => {\n    for (let i = 0; i < scenes.length; ++i) {\n        if (scenes[i].name?.includes(\"/\")) {\n            throw new Error(\"scenes name can not have '/'\");\n        }\n    }\n    return room?.putScenes(path, scenes, index);\n};\n\nexport const isValidScenePath = (scenePath: string) => {\n    return scenePath.startsWith(\"/\");\n};\n\nexport const parseSceneDir = (scenePath: string) => {\n    const sceneList = scenePath.split(\"/\");\n    sceneList.pop();\n    let sceneDir = sceneList.join(\"/\");\n    // \"/page1\" 的 dir 为 \"/\"\n    if (sceneDir === \"\") {\n        sceneDir = \"/\";\n    }\n    return sceneDir;\n};\n\nexport const ensureValidScenePath = (scenePath: string) => {\n    if (scenePath.endsWith(\"/\")) {\n        return scenePath.slice(0, -1);\n    } else {\n        return scenePath;\n    }\n};\n\nexport const getVersionNumber = (version: string) => {\n    const versionString = version\n        .split(\".\")\n        .map(s => s.padStart(2, \"0\"))\n        .join(\"\");\n    return parseInt(versionString);\n};\n\nexport const wait = (time: number) => new Promise(resolve => setTimeout(resolve, time));\n\n// rootDirPage: /page1  || / page2\n// notRootDirPage: /dir1/page1 || /dir1/page2\nexport const isRootDirPage = (scenePath: string) => {\n    const delimiterCount = scenePath.split(\"\").reduce((prev, cur) => {\n        if (cur === ROOT_DIR) {\n            prev += 1;\n        }\n        return prev;\n    }, 0);\n    return delimiterCount === 1;\n};\n","import { callbacks } from \"./callback\";\nimport { internalEmitter } from \"./InternalEmitter\";\nimport { Events, MagixEventName } from \"./constants\";\n// import { isEqual, omit } from \"lodash\";\nimport { setViewFocusScenePath } from \"./Utils/Common\";\nimport type { Event } from \"white-web-sdk\";\nimport type { AppManager } from \"./AppManager\";\nimport type { TeleBoxState } from \"@netless/telebox-insider\";\n\ntype SetAppFocusIndex = {\n    type: \"main\" | \"app\";\n    appID?: string;\n    index: number;\n};\n\nexport class AppListeners {\n    private displayer = this.manager.displayer;\n\n    constructor(private manager: AppManager) {}\n\n    private get boxManager() {\n        return this.manager.boxManager;\n    }\n\n    public addListeners() {\n        this.displayer.addMagixEventListener(MagixEventName, this.mainMagixEventListener);\n    }\n\n    public removeListeners() {\n        this.displayer.removeMagixEventListener(MagixEventName, this.mainMagixEventListener);\n    }\n\n    private mainMagixEventListener = (event: Event) => {\n        if (event.authorId !== this.displayer.observerId) {\n            const data = event.payload;\n            switch (data.eventName) {\n                case Events.AppMove: {\n                    this.appMoveHandler(data.payload);\n                    break;\n                }\n                case Events.AppResize: {\n                    this.appResizeHandler(data.payload);\n                    break;\n                }\n                case Events.AppBoxStateChange: {\n                    this.boxStateChangeHandler(data.payload);\n                    break;\n                }\n                case Events.SetMainViewScenePath: {\n                    this.setMainViewScenePathHandler(data.payload);\n                    break;\n                }\n                case Events.CursorMove: {\n                    this.cursorMoveHandler(data.payload);\n                    break;\n                }\n                case Events.RootDirRemoved: {\n                    this.rootDirRemovedHandler();\n                    break;\n                }\n                case Events.Refresh: {\n                    this.refreshHandler();\n                    break;\n                }\n                case Events.InitMainViewCamera: {\n                    this.initMainViewCameraHandler();\n                    break;\n                }\n                case Events.SetAppFocusIndex: {\n                    this.setAppFocusViewIndexHandler(data.payload);\n                    break;\n                }\n                default:\n                    break;\n            }\n        }\n    };\n\n    private appMoveHandler = (payload: any) => {\n        this.boxManager?.moveBox(payload);\n    };\n\n    private appResizeHandler = (payload: any) => {\n        this.boxManager?.resizeBox(Object.assign(payload, { skipUpdate: true }));\n        this.manager.room?.refreshViewSize();\n    };\n\n    private boxStateChangeHandler = (state: TeleBoxState) => {\n        callbacks.emit(\"boxStateChange\", state);\n    };\n\n    private setMainViewScenePathHandler = ({ nextScenePath }: { nextScenePath: string }) => {\n        setViewFocusScenePath(this.manager.mainView, nextScenePath);\n        callbacks.emit(\"mainViewScenePathChange\", nextScenePath);\n    };\n\n    private cursorMoveHandler = (payload: any) => {\n        internalEmitter.emit(\"cursorMove\", payload);\n    };\n\n    private rootDirRemovedHandler = () => {\n        this.manager.createRootDirScenesCallback();\n        this.manager.mainViewProxy.rebind();\n        internalEmitter.emit(\"rootDirRemoved\");\n    };\n\n    private refreshHandler = () => {\n        this.manager.windowManger._refresh();\n    };\n\n    private initMainViewCameraHandler = () => {\n        this.manager.mainViewProxy.addCameraReaction();\n    };\n\n    private setAppFocusViewIndexHandler = (payload: SetAppFocusIndex) => {\n        if (payload.type === \"main\") {\n            this.manager.setSceneIndexWithoutSync(payload.index);\n        } else if (payload.type === \"app\" && payload.appID) {\n            const app = this.manager.appProxies.get(payload.appID);\n            if (app) {\n                app.setSceneIndexWithoutSync(payload.index);\n            }\n        }\n    };\n}\n","export class AppCreateError extends Error {\n    override message = \"[WindowManager]: app duplicate exists and cannot be created again\";\n}\n\nexport class AppNotRegisterError extends Error {\n    constructor(kind: string) {\n        super(`[WindowManager]: app ${kind} need register or provide src`);\n    }\n}\n\nexport class AppManagerNotInitError extends Error {\n    override message = \"[WindowManager]: AppManager must be initialized\";\n}\n\nexport class WhiteWebSDKInvalidError extends Error {\n    constructor(version: string) {\n        super(`[WindowManager]: white-web-sdk version must large than ${version}`);\n    }\n}\n\nexport class ParamsInvalidError extends Error {\n    override message = \"[WindowManager]: kind must be a valid string\";\n}\n\nexport class BoxNotCreatedError extends Error {\n    override message = \"[WindowManager]: box need created\";\n}\n\nexport class InvalidScenePath extends Error {\n    override message = `[WindowManager]: ScenePath should start with \"/\"`;\n}\n\nexport class BoxManagerNotFoundError extends Error {\n    override message = \"[WindowManager]: boxManager not found\";\n}\n\nexport class BindContainerRoomPhaseInvalidError extends Error {\n    override message = \"[WindowManager]: room phase only Connected can be bindContainer\";\n}\n","const e=\"!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\",s=e.length,t=Array(20),r=()=>{for(let r=0;r<20;r++)t[r]=e.charAt(Math.random()*s);return t.join(\"\")};class o{constructor(){this.disposers=new Map}add(e,s=r()){return this.flush(s),this.disposers.set(s,e()),s}addDisposer(e,s=r()){return this.flush(s),this.disposers.set(s,e),s}addEventListener(e,s,t,o,i=r()){return this.add((()=>(e.addEventListener(s,t,o),()=>e.removeEventListener(s,t,o))),i),i}setTimeout(e,s,t=r()){return this.add((()=>{const r=window.setTimeout((()=>{this.remove(t),e()}),s);return()=>window.clearTimeout(r)}),t)}setInterval(e,s,t=r()){return this.add((()=>{const t=window.setInterval(e,s);return()=>window.clearInterval(t)}),t)}remove(e){const s=this.disposers.get(e);return this.disposers.delete(e),s}flush(e){const s=this.remove(e);if(s)try{s()}catch(t){console.error(t)}}flushAll(){this.disposers.forEach((e=>{try{e()}catch(s){console.error(s)}})),this.disposers.clear()}}export{o as SideEffectManager,r as genUID};\n//# sourceMappingURL=side-effect-manager.es.js.map\n","import { listenUpdated, unlistenUpdated, reaction, UpdateEventKind } from \"white-web-sdk\";\nimport type { AkkoObjectUpdatedProperty, AkkoObjectUpdatedListener } from \"white-web-sdk\";\nimport { isObject } from \"lodash\";\n\n// 兼容 13 和 14 版本 SDK\nexport const onObjectByEvent = (event: UpdateEventKind) => {\n    return (object: any, func: () => void) => {\n        if (object === undefined) return;\n        if (listenUpdated) {\n            const listener = (events: readonly AkkoObjectUpdatedProperty<any>[]) => {\n                const kinds = events.map(e => e.kind);\n                if (kinds.includes(event)) {\n                    func();\n                }\n            };\n            listenUpdated(object, listener);\n            func();\n            return () => unlistenUpdated(object, listener);\n        } else {\n            return reaction(\n                () => object,\n                () => {\n                    func();\n                },\n                {\n                    fireImmediately: true,\n                }\n            );\n        }\n    };\n};\n\nexport const safeListenPropsUpdated = <T extends Record<string, unknown>>(\n    getProps: () => T | null | undefined,\n    callback: AkkoObjectUpdatedListener<T>,\n    onDestroyed?: (props: unknown) => void\n) => {\n    let disposeListenUpdated: (() => void) | null = null;\n    const disposeReaction = reaction(\n        getProps,\n        () => {\n            if (disposeListenUpdated) {\n                disposeListenUpdated();\n                disposeListenUpdated = null;\n            }\n            const props = getProps();\n            if (isObject(props)) {\n                disposeListenUpdated = () => unlistenUpdated(props, callback);\n                listenUpdated(props, callback);\n            } else {\n                onDestroyed?.(props);\n            }\n        },\n        { fireImmediately: true }\n    );\n\n    return () => {\n        disposeListenUpdated?.();\n        disposeReaction();\n    };\n};\n\nexport const onObjectRemoved = onObjectByEvent(UpdateEventKind.Removed);\nexport const onObjectInserted = onObjectByEvent(UpdateEventKind.Inserted);\n","export type StorageEventListener<T> = (event: T) => void;\n\nexport class StorageEvent<TMessage> {\n    listeners = new Set<StorageEventListener<TMessage>>();\n\n    get length(): number {\n        return this.listeners.size;\n    }\n\n    dispatch(message: TMessage): void {\n        this.listeners.forEach(callback => callback(message));\n    }\n\n    addListener(listener: StorageEventListener<TMessage>): void {\n        this.listeners.add(listener);\n    }\n\n    removeListener(listener: StorageEventListener<TMessage>): void {\n        this.listeners.delete(listener);\n    }\n}\n","import { has } from \"lodash\";\nimport { genUID } from \"side-effect-manager\";\nimport type { AutoRefValue, ExtractRawValue, RefValue } from \"./typings\";\n\nexport const plainObjectKeys = Object.keys as <T>(o: T) => Array<Extract<keyof T, string>>;\n\nexport function isRef<TValue = unknown>(e: unknown): e is RefValue<TValue> {\n    return Boolean(has(e, \"__isRef\"));\n}\n\nexport function makeRef<TValue>(v: TValue): RefValue<TValue> {\n    return { k: genUID(), v, __isRef: true };\n}\n\nexport function makeAutoRef<TValue>(v: TValue): AutoRefValue<TValue> {\n    return isRef<ExtractRawValue<TValue>>(v) ? v : makeRef(v as ExtractRawValue<TValue>);\n}\n","import type { AkkoObjectUpdatedProperty } from \"white-web-sdk\";\nimport type { AppContext } from \"../AppContext\";\nimport type {\n    Diff,\n    MaybeRefValue,\n    RefValue,\n    StorageStateChangedEvent,\n    StorageStateChangedListener,\n    StorageStateChangedListenerDisposer,\n} from \"./typings\";\n\nimport { get, has, isObject, mapValues, noop, size } from \"lodash\";\nimport { SideEffectManager } from \"side-effect-manager\";\nimport { safeListenPropsUpdated } from \"../../Utils/Reactive\";\nimport { StorageEvent } from \"./StorageEvent\";\nimport { isRef, makeRef, plainObjectKeys } from \"./utils\";\n\nexport * from \"./typings\";\n\nexport const STORAGE_NS = \"_WM-STORAGE_\";\n\nexport class Storage<TState extends Record<string, any> = any> implements Storage<TState> {\n    readonly id: string | null;\n    readonly maxIllusionQueueSize = 500;\n\n    private readonly _context: AppContext;\n    private readonly _sideEffect = new SideEffectManager();\n    private _state: TState;\n    private _destroyed = false;\n\n    private _refMap = new WeakMap<any, RefValue>();\n\n    /**\n     * `setState` alters local state immediately before sending to server. This will cache the old value for onStateChanged diffing.\n     */\n    private _lastValue = new Map<string | number | symbol, TState[Extract<keyof TState, string>]>();\n\n    constructor(context: AppContext, id?: string, defaultState?: TState) {\n        if (defaultState && !isObject(defaultState)) {\n            throw new Error(`Default state for Storage ${id} is not an object.`);\n        }\n\n        this._context = context;\n        this.id = id || null;\n\n        this._state = {} as TState;\n        const rawState = this._getRawState(this._state);\n\n        if (this._context.getIsWritable()) {\n            if (this.id === null) {\n                if (context.isAddApp && defaultState) {\n                    this.setState(defaultState);\n                }\n            } else {\n                if (rawState === this._state || !isObject(rawState)) {\n                    if (!get(this._context.getAttributes(), [STORAGE_NS])) {\n                        this._context.updateAttributes([STORAGE_NS], {});\n                    }\n                    this._context.updateAttributes([STORAGE_NS, this.id], this._state);\n                    if (defaultState) {\n                        this.setState(defaultState);\n                    }\n                }\n            }\n        }\n\n        // strip mobx\n        plainObjectKeys(rawState).forEach(key => {\n            if (this.id === null && key === STORAGE_NS) {\n                return;\n            }\n            try {\n                const rawValue = isObject(rawState[key])\n                    ? JSON.parse(JSON.stringify(rawState[key]))\n                    : rawState[key];\n                if (isRef<TState[Extract<keyof TState, string>]>(rawValue)) {\n                    this._state[key] = rawValue.v;\n                    if (isObject(rawValue.v)) {\n                        this._refMap.set(rawValue.v, rawValue);\n                    }\n                } else {\n                    this._state[key] = rawValue;\n                }\n            } catch (e) {\n                console.error(e);\n            }\n        });\n\n        this._sideEffect.addDisposer(\n            safeListenPropsUpdated(\n                () =>\n                    this.id === null\n                        ? context.getAttributes()\n                        : get(context.getAttributes(), [STORAGE_NS, this.id]),\n                this._updateProperties.bind(this),\n                this.destroy.bind(this)\n            )\n        );\n    }\n\n    get state(): Readonly<TState> {\n        if (this._destroyed) {\n            console.warn(`Accessing state on destroyed Storage \"${this.id}\"`);\n        }\n        return this._state;\n    }\n\n    readonly onStateChanged = new StorageEvent<StorageStateChangedEvent<TState>>();\n\n    addStateChangedListener(\n        handler: StorageStateChangedListener<TState>\n    ): StorageStateChangedListenerDisposer {\n        this.onStateChanged.addListener(handler);\n        return () => this.onStateChanged.removeListener(handler);\n    }\n\n    ensureState(state: Partial<TState>): void {\n        return this.setState(\n            plainObjectKeys(state).reduce((payload, key) => {\n                if (!has(this._state, key)) {\n                    payload[key] = state[key];\n                }\n                return payload;\n            }, {} as Partial<TState>)\n        );\n    }\n\n    setState(state: Partial<TState>): void {\n        if (this._destroyed) {\n            console.error(new Error(`Cannot call setState on destroyed Storage \"${this.id}\".`));\n            return;\n        }\n\n        if (!this._context.getIsWritable()) {\n            console.error(\n                new Error(`Cannot setState on Storage \"${this.id}\" without writable access`),\n                state\n            );\n            return;\n        }\n\n        const keys = plainObjectKeys(state);\n        if (keys.length > 0) {\n            keys.forEach(key => {\n                const value = state[key];\n                if (value === this._state[key]) {\n                    return;\n                }\n\n                if (value === void 0) {\n                    this._lastValue.set(key, this._state[key]);\n                    delete this._state[key];\n                    this._setRawState(key, value);\n                } else {\n                    this._lastValue.set(key, this._state[key]);\n                    this._state[key] = value as TState[Extract<keyof TState, string>];\n\n                    let payload: MaybeRefValue<typeof value> = value;\n                    if (isObject(value)) {\n                        let refValue = this._refMap.get(value);\n                        if (!refValue) {\n                            refValue = makeRef(value);\n                            this._refMap.set(value, refValue);\n                        }\n                        payload = refValue;\n                    }\n\n                    this._setRawState(key, payload);\n                }\n            });\n        }\n    }\n\n    /**\n     * Empty storage data.\n     */\n    emptyStorage(): void {\n        if (size(this._state) <= 0) {\n            return;\n        }\n\n        if (this._destroyed) {\n            console.error(new Error(`Cannot empty destroyed Storage \"${this.id}\".`));\n            return;\n        }\n\n        if (!this._context.getIsWritable()) {\n            console.error(new Error(`Cannot empty Storage \"${this.id}\" without writable access.`));\n            return;\n        }\n\n        this.setState(mapValues(this._state, noop as () => undefined));\n    }\n\n    /**\n     * Delete storage index with all of its data and destroy the Storage instance.\n     */\n    deleteStorage(): void {\n        if (this.id === null) {\n            throw new Error(`Cannot delete main Storage`);\n        }\n\n        if (!this._context.getIsWritable()) {\n            console.error(new Error(`Cannot delete Storage \"${this.id}\" without writable access.`));\n            return;\n        }\n\n        this.destroy();\n\n        this._context.updateAttributes([STORAGE_NS, this.id], void 0);\n    }\n\n    get destroyed(): boolean {\n        return this._destroyed;\n    }\n\n    /**\n     * Destroy the Storage instance. The data will be kept.\n     */\n    destroy() {\n        this._destroyed = true;\n        this._sideEffect.flushAll();\n    }\n\n    private _getRawState(): TState | undefined;\n    private _getRawState(defaultValue: TState): TState;\n    private _getRawState(defaultValue?: TState): TState | undefined {\n        if (this.id === null) {\n            return this._context.getAttributes() ?? defaultValue;\n        } else {\n            return get(this._context.getAttributes(), [STORAGE_NS, this.id], defaultValue);\n        }\n    }\n\n    private _setRawState(key: string, value: any): void {\n        if (this.id === null) {\n            if (key === STORAGE_NS) {\n                throw new Error(`Cannot set attribute internal filed \"${STORAGE_NS}\"`);\n            }\n            return this._context.updateAttributes([key], value);\n        } else {\n            return this._context.updateAttributes([STORAGE_NS, this.id, key], value);\n        }\n    }\n\n    private _updateProperties(\n        actions: ReadonlyArray<AkkoObjectUpdatedProperty<TState, string>>\n    ): void {\n        if (this._destroyed) {\n            console.error(\n                new Error(`Cannot call _updateProperties on destroyed Storage \"${this.id}\".`)\n            );\n            return;\n        }\n\n        if (actions.length > 0) {\n            const diffs: Diff<TState> = {};\n\n            for (let i = 0; i < actions.length; i++) {\n                try {\n                    const action = actions[i];\n                    const key = action.key as Extract<keyof TState, string>;\n\n                    if (this.id === null && key === STORAGE_NS) {\n                        continue;\n                    }\n\n                    const value = isObject(action.value)\n                        ? JSON.parse(JSON.stringify(action.value))\n                        : action.value;\n                    let oldValue: TState[Extract<keyof TState, string>] | undefined;\n                    if (this._lastValue.has(key)) {\n                        oldValue = this._lastValue.get(key);\n                        this._lastValue.delete(key);\n                    }\n\n                    switch (action.kind) {\n                        case 2: {\n                            // Removed\n                            if (has(this._state, key)) {\n                                oldValue = this._state[key];\n                                delete this._state[key];\n                            }\n                            diffs[key] = { oldValue };\n                            break;\n                        }\n                        default: {\n                            let newValue = value;\n\n                            if (isRef<TState[Extract<keyof TState, string>]>(value)) {\n                                const { k, v } = value;\n                                const curValue = this._state[key];\n                                if (isObject(curValue) && this._refMap.get(curValue)?.k === k) {\n                                    newValue = curValue;\n                                } else {\n                                    newValue = v;\n                                    if (isObject(v)) {\n                                        this._refMap.set(v, value);\n                                    }\n                                }\n                            }\n\n                            if (newValue !== this._state[key]) {\n                                oldValue = this._state[key];\n                                this._state[key] = newValue;\n                            }\n\n                            diffs[key] = { newValue, oldValue };\n                            break;\n                        }\n                    }\n                } catch (e) {\n                    console.error(e);\n                }\n            }\n\n            this.onStateChanged.dispatch(diffs);\n        }\n    }\n}\n","import { BoxNotCreatedError } from \"../Utils/error\";\nimport { putScenes } from \"../Utils/Common\";\nimport { Storage } from \"./Storage\";\nimport {\n    autorun,\n    listenDisposed,\n    listenUpdated,\n    reaction,\n    unlistenDisposed,\n    unlistenUpdated,\n    toJS,\n} from \"white-web-sdk\";\nimport type {\n    Room,\n    SceneDefinition,\n    View,\n    EventListener as WhiteEventListener,\n} from \"white-web-sdk\";\nimport type { NotMinimizedBoxState, ReadonlyTeleBox, TeleBoxState } from \"@netless/telebox-insider\";\nimport type Emittery from \"emittery\";\nimport type { BoxManager } from \"../BoxManager\";\nimport type { AppEmitterEvent, WindowManager } from \"../index\";\nimport type { AppManager } from \"../AppManager\";\nimport type { AppProxy } from \"./AppProxy\";\nimport type {\n    MagixEventAddListener,\n    MagixEventDispatcher,\n    MagixEventRemoveListener,\n} from \"./MagixEvent\";\nimport type { AddPageParams, PageController, PageState } from \"../Page\";\nimport { internalEmitter } from \"../InternalEmitter\";\nimport { callbacks } from \"../callback\";\n\nexport class AppContext<TAttributes extends {} = any, TMagixEventPayloads = any, TAppOptions = any>\n    implements PageController\n{\n    static readonly kind = \"AppContext\";\n    public readonly emitter: Emittery<AppEmitterEvent<TAttributes>>;\n    public readonly mobxUtils = {\n        autorun,\n        reaction,\n        toJS,\n    };\n    public readonly objectUtils = {\n        listenUpdated,\n        unlistenUpdated,\n        listenDisposed,\n        unlistenDisposed,\n    };\n\n    private store = this.manager.store;\n    public readonly isAddApp: boolean;\n    public readonly isReplay = this.manager.isReplay;\n\n    constructor(\n        private manager: AppManager,\n        private boxManager: BoxManager,\n        public appId: string,\n        private appProxy: AppProxy,\n        private appOptions?: TAppOptions | (() => TAppOptions)\n    ) {\n        this.emitter = appProxy.appEmitter;\n        this.isAddApp = appProxy.isAddApp;\n    }\n\n    public getManager = (): AppManager => {\n        return this.manager;\n    };\n\n    public getBoxManager = (): BoxManager => {\n        return this.boxManager;\n    };\n\n    public getWindowManager = (): WindowManager => {\n        return this.manager.windowManger;\n    };\n\n    public getBoxStatus = (): TeleBoxState | undefined => {\n        return this.manager.store.getBoxStatus(this.appId);\n    };\n\n    public getLastNotMinimizedBoxStatus = (): NotMinimizedBoxState | undefined => {\n        return this.manager.store.getLastNotMinimizedBoxStatus(this.appId);\n    };\n\n    public getDisplayer = () => {\n        return this.manager.displayer;\n    };\n\n    public getAppProxy = (): AppProxy => {\n        return this.appProxy;\n    };\n\n    /** @deprecated Use context.storage.state instead. */\n    public getAttributes = (): TAttributes | undefined => {\n        return this.appProxy.attributes;\n    };\n\n    public getScenes = (): SceneDefinition[] | undefined => {\n        const appAttr = this.store.getAppAttributes(this.appId);\n        if (appAttr?.isDynamicPPT) {\n            return this.appProxy.scenes;\n        } else {\n            return appAttr?.options[\"scenes\"];\n        }\n    };\n\n    public getView = (): View | undefined => {\n        return this.appProxy.view;\n    };\n\n    public mountView = (dom: HTMLElement): void => {\n        const view = this.getView();\n        if (view) {\n            view.divElement = dom as HTMLDivElement;\n            setTimeout(() => {\n                // 渲染需要时间，延迟 refresh\n                this.getRoom()?.refreshViewSize();\n                callbacks.emit(\"onAppViewMounted\", { appId: this.appId, view });\n            }, 1000);\n        }\n    };\n\n    public getInitScenePath = () => {\n        return this.manager.getAppInitPath(this.appId);\n    };\n\n    /** Get App writable status. */\n    public getIsWritable = (): boolean => {\n        return this.manager.canOperate;\n    };\n\n    /** Get the App Window UI box. */\n    public getBox = (): ReadonlyTeleBox => {\n        const box = this.boxManager.getBox(this.appId);\n        if (box) {\n            return box;\n        } else {\n            throw new BoxNotCreatedError();\n        }\n    };\n\n    public getRoom = (): Room | undefined => {\n        return this.manager.room;\n    };\n\n    /** @deprecated Use context.storage.setState instead. */\n    public setAttributes = (attributes: TAttributes) => {\n        this.manager.safeSetAttributes({ [this.appId]: attributes });\n    };\n\n    /** @deprecated Use context.storage.setState instead. */\n    public updateAttributes = (keys: string[], value: any) => {\n        if (this.manager.attributes[this.appId]) {\n            this.manager.safeUpdateAttributes([this.appId, ...keys], value);\n        }\n    };\n\n    public setScenePath = async (scenePath: string): Promise<void> => {\n        if (!this.appProxy.box) return;\n        this.appProxy.setFullPath(scenePath);\n        // 兼容 15 版本 SDK 的切页\n        this.getRoom()?.setScenePath(scenePath);\n    };\n\n    /** Get the local App options. */\n    public getAppOptions = (): TAppOptions | undefined => {\n        return typeof this.appOptions === \"function\"\n            ? (this.appOptions as () => TAppOptions)()\n            : this.appOptions;\n    };\n\n    private _storage?: Storage<TAttributes>;\n\n    /** Main Storage for attributes. */\n    public get storage(): Storage<TAttributes> {\n        if (!this._storage) {\n            this._storage = new Storage(this);\n        }\n        return this._storage;\n    }\n\n    /**\n     * Create separated storages for flexible state management.\n     * @param storeId Namespace for the storage. Storages of the same namespace share the same data.\n     * @param defaultState Default state for initial storage creation.\n     * @returns\n     */\n    public createStorage = <TState extends {}>(\n        storeId: string,\n        defaultState?: TState\n    ): Storage<TState> => {\n        const storage = new Storage(this, storeId, defaultState);\n        this.emitter.on(\"destroy\", () => {\n            storage.destroy();\n        });\n        return storage;\n    };\n\n    /** Dispatch events to other clients (and self). */\n    public dispatchMagixEvent: MagixEventDispatcher<TMagixEventPayloads> = (...args) => {\n        // can't dispatch events on replay mode\n        const appScopeEvent = `${this.appId}:${args[0]}`;\n        return this.manager.room?.dispatchMagixEvent(appScopeEvent, args[1]);\n    };\n\n    /** Listen to events from others clients (and self messages). */\n    public addMagixEventListener: MagixEventAddListener<TMagixEventPayloads> = (\n        event,\n        handler,\n        options\n    ) => {\n        const appScopeEvent = `${this.appId}:${event}`;\n        this.manager.displayer.addMagixEventListener(\n            appScopeEvent,\n            handler as WhiteEventListener,\n            options\n        );\n        return () =>\n            this.manager.displayer.removeMagixEventListener(\n                appScopeEvent,\n                handler as WhiteEventListener\n            );\n    };\n\n    /** Remove a Magix event listener. */\n    public removeMagixEventListener = this.manager.displayer.removeMagixEventListener.bind(\n        this.manager.displayer\n    ) as MagixEventRemoveListener<TMagixEventPayloads>;\n\n    /** PageController  */\n    public nextPage = async (): Promise<boolean> => {\n        const nextIndex = this.pageState.index + 1;\n        if (nextIndex > this.pageState.length - 1) {\n            console.warn(\"[WindowManager] nextPage: index out of range\");\n            return false;\n        }\n        this.appProxy.setSceneIndex(nextIndex);\n        return true;\n    };\n\n    public jumpPage = async (index: number): Promise<boolean> => {\n        if (!(0 <= index && index < this.pageState.length)) {\n            console.warn(\"[WindowManager] nextPage: index out of range\");\n            return false;\n        }\n        this.appProxy.setSceneIndex(index);\n        return true;\n    };\n\n    public prevPage = async (): Promise<boolean> => {\n        const nextIndex = this.pageState.index - 1;\n        if (nextIndex < 0) {\n            console.warn(\"[WindowManager] prevPage: index out of range\");\n            return false;\n        }\n        this.appProxy.setSceneIndex(nextIndex);\n        return true;\n    };\n\n    public addPage = async (params?: AddPageParams) => {\n        const after = params?.after;\n        const scene = params?.scene;\n        const scenePath = this.appProxy.scenePath;\n        if (!scenePath) return;\n        if (after) {\n            const nextIndex = this.pageState.index + 1;\n            putScenes(this.manager.room, scenePath, [scene || {}], nextIndex);\n        } else {\n            putScenes(this.manager.room, scenePath, [scene || {}]);\n        }\n    };\n\n    public removePage = async (index?: number): Promise<boolean> => {\n        const needRemoveIndex = index === undefined ? this.pageState.index : index;\n        if (this.pageState.length === 1) {\n            console.warn(`[WindowManager]: can not remove the last page`);\n            return false;\n        }\n        if (needRemoveIndex < 0 || needRemoveIndex >= this.pageState.length) {\n            console.warn(`[WindowManager]: page index ${index} out of range`);\n            return false;\n        }\n        return this.appProxy.removeSceneByIndex(needRemoveIndex);\n    };\n\n    public get pageState(): PageState {\n        return this.appProxy.pageState;\n    }\n\n    public get kind(): string {\n        return this.appProxy.kind;\n    }\n\n    /** Dispatch a local event to `manager.onAppEvent()`. */\n    public dispatchAppEvent(type: string, value?: any): void {\n        internalEmitter.emit(`custom-${this.kind}` as any, {\n            kind: this.kind,\n            appId: this.appId,\n            type,\n            value,\n        });\n    }\n}\n","import type { Displayer, ScenesCallbacksNode, View } from \"white-web-sdk\";\nimport type { PageState } from \"../Page\";\n\nexport type AppPageStateParams = {\n    displayer: Displayer;\n    scenePath: string | undefined;\n    view: View | undefined;\n    notifyPageStateChange: () => void;\n};\n\nexport class AppPageStateImpl {\n    private sceneNode: ScenesCallbacksNode | null = null;\n\n    constructor(private params: AppPageStateParams) {\n        const { displayer, scenePath } = this.params;\n        if (scenePath) {\n            this.sceneNode = displayer.createScenesCallback(scenePath, {\n                onAddScene: this.onSceneChange,\n                onRemoveScene: this.onSceneChange,\n            });\n        }\n    }\n\n    private onSceneChange = (node: ScenesCallbacksNode) => {\n        this.sceneNode = node;\n        this.params.notifyPageStateChange();\n    };\n\n    public getFullPath(index: number) {\n        const scenes = this.sceneNode?.scenes;\n        if (this.params.scenePath && scenes) {\n            const name = scenes[index];\n            if (name) {\n                return `${this.params.scenePath}/${name}`;\n            }\n        }\n    }\n\n    public toObject(): PageState {\n        return {\n            index: this.params.view?.focusSceneIndex || 0,\n            length: this.sceneNode?.scenes.length || 0,\n        };\n    }\n\n    public destroy() {\n        this.sceneNode?.dispose();\n    }\n}\n","var fancyScrollbar = \"\";\nvar style$4 = \"\";\nvar eventemitter3 = { exports: {} };\n(function(module) {\n  var has = Object.prototype.hasOwnProperty, prefix = \"~\";\n  function Events() {\n  }\n  if (Object.create) {\n    Events.prototype = /* @__PURE__ */ Object.create(null);\n    if (!new Events().__proto__)\n      prefix = false;\n  }\n  function EE(fn, context, once) {\n    this.fn = fn;\n    this.context = context;\n    this.once = once || false;\n  }\n  function addListener(emitter, event, fn, context, once) {\n    if (typeof fn !== \"function\") {\n      throw new TypeError(\"The listener must be a function\");\n    }\n    var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;\n    if (!emitter._events[evt])\n      emitter._events[evt] = listener, emitter._eventsCount++;\n    else if (!emitter._events[evt].fn)\n      emitter._events[evt].push(listener);\n    else\n      emitter._events[evt] = [emitter._events[evt], listener];\n    return emitter;\n  }\n  function clearEvent(emitter, evt) {\n    if (--emitter._eventsCount === 0)\n      emitter._events = new Events();\n    else\n      delete emitter._events[evt];\n  }\n  function EventEmitter2() {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n  EventEmitter2.prototype.eventNames = function eventNames() {\n    var names = [], events, name;\n    if (this._eventsCount === 0)\n      return names;\n    for (name in events = this._events) {\n      if (has.call(events, name))\n        names.push(prefix ? name.slice(1) : name);\n    }\n    if (Object.getOwnPropertySymbols) {\n      return names.concat(Object.getOwnPropertySymbols(events));\n    }\n    return names;\n  };\n  EventEmitter2.prototype.listeners = function listeners(event) {\n    var evt = prefix ? prefix + event : event, handlers = this._events[evt];\n    if (!handlers)\n      return [];\n    if (handlers.fn)\n      return [handlers.fn];\n    for (var i2 = 0, l = handlers.length, ee = new Array(l); i2 < l; i2++) {\n      ee[i2] = handlers[i2].fn;\n    }\n    return ee;\n  };\n  EventEmitter2.prototype.listenerCount = function listenerCount(event) {\n    var evt = prefix ? prefix + event : event, listeners = this._events[evt];\n    if (!listeners)\n      return 0;\n    if (listeners.fn)\n      return 1;\n    return listeners.length;\n  };\n  EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n    var evt = prefix ? prefix + event : event;\n    if (!this._events[evt])\n      return false;\n    var listeners = this._events[evt], len = arguments.length, args, i2;\n    if (listeners.fn) {\n      if (listeners.once)\n        this.removeListener(event, listeners.fn, void 0, true);\n      switch (len) {\n        case 1:\n          return listeners.fn.call(listeners.context), true;\n        case 2:\n          return listeners.fn.call(listeners.context, a1), true;\n        case 3:\n          return listeners.fn.call(listeners.context, a1, a2), true;\n        case 4:\n          return listeners.fn.call(listeners.context, a1, a2, a3), true;\n        case 5:\n          return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n        case 6:\n          return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n      }\n      for (i2 = 1, args = new Array(len - 1); i2 < len; i2++) {\n        args[i2 - 1] = arguments[i2];\n      }\n      listeners.fn.apply(listeners.context, args);\n    } else {\n      var length = listeners.length, j;\n      for (i2 = 0; i2 < length; i2++) {\n        if (listeners[i2].once)\n          this.removeListener(event, listeners[i2].fn, void 0, true);\n        switch (len) {\n          case 1:\n            listeners[i2].fn.call(listeners[i2].context);\n            break;\n          case 2:\n            listeners[i2].fn.call(listeners[i2].context, a1);\n            break;\n          case 3:\n            listeners[i2].fn.call(listeners[i2].context, a1, a2);\n            break;\n          case 4:\n            listeners[i2].fn.call(listeners[i2].context, a1, a2, a3);\n            break;\n          default:\n            if (!args)\n              for (j = 1, args = new Array(len - 1); j < len; j++) {\n                args[j - 1] = arguments[j];\n              }\n            listeners[i2].fn.apply(listeners[i2].context, args);\n        }\n      }\n    }\n    return true;\n  };\n  EventEmitter2.prototype.on = function on(event, fn, context) {\n    return addListener(this, event, fn, context, false);\n  };\n  EventEmitter2.prototype.once = function once(event, fn, context) {\n    return addListener(this, event, fn, context, true);\n  };\n  EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {\n    var evt = prefix ? prefix + event : event;\n    if (!this._events[evt])\n      return this;\n    if (!fn) {\n      clearEvent(this, evt);\n      return this;\n    }\n    var listeners = this._events[evt];\n    if (listeners.fn) {\n      if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n        clearEvent(this, evt);\n      }\n    } else {\n      for (var i2 = 0, events = [], length = listeners.length; i2 < length; i2++) {\n        if (listeners[i2].fn !== fn || once && !listeners[i2].once || context && listeners[i2].context !== context) {\n          events.push(listeners[i2]);\n        }\n      }\n      if (events.length)\n        this._events[evt] = events.length === 1 ? events[0] : events;\n      else\n        clearEvent(this, evt);\n    }\n    return this;\n  };\n  EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {\n    var evt;\n    if (event) {\n      evt = prefix ? prefix + event : event;\n      if (this._events[evt])\n        clearEvent(this, evt);\n    } else {\n      this._events = new Events();\n      this._eventsCount = 0;\n    }\n    return this;\n  };\n  EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;\n  EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;\n  EventEmitter2.prefixed = prefix;\n  EventEmitter2.EventEmitter = EventEmitter2;\n  {\n    module.exports = EventEmitter2;\n  }\n})(eventemitter3);\nvar EventEmitter = eventemitter3.exports;\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar __assign = function() {\n  __assign = Object.assign || function __assign2(t2) {\n    for (var s2, i2 = 1, n = arguments.length; i2 < n; i2++) {\n      s2 = arguments[i2];\n      for (var p in s2)\n        if (Object.prototype.hasOwnProperty.call(s2, p))\n          t2[p] = s2[p];\n    }\n    return t2;\n  };\n  return __assign.apply(this, arguments);\n};\nfunction __rest(s2, e2) {\n  var t2 = {};\n  for (var p in s2)\n    if (Object.prototype.hasOwnProperty.call(s2, p) && e2.indexOf(p) < 0)\n      t2[p] = s2[p];\n  if (s2 != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i2 = 0, p = Object.getOwnPropertySymbols(s2); i2 < p.length; i2++) {\n      if (e2.indexOf(p[i2]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i2]))\n        t2[p[i2]] = s2[p[i2]];\n    }\n  return t2;\n}\nvar prevTime = 0;\nvar onNextFrame = typeof window !== \"undefined\" && window.requestAnimationFrame !== void 0 ? function(callback) {\n  return window.requestAnimationFrame(callback);\n} : function(callback) {\n  var timestamp = Date.now();\n  var timeToCall = Math.max(0, 16.7 - (timestamp - prevTime));\n  prevTime = timestamp + timeToCall;\n  setTimeout(function() {\n    return callback(prevTime);\n  }, timeToCall);\n};\nvar createStep = function(setRunNextFrame) {\n  var processToRun = [];\n  var processToRunNextFrame = [];\n  var numThisFrame = 0;\n  var isProcessing2 = false;\n  var i2 = 0;\n  var cancelled = /* @__PURE__ */ new WeakSet();\n  var toKeepAlive = /* @__PURE__ */ new WeakSet();\n  var renderStep = {\n    cancel: function(process) {\n      var indexOfCallback = processToRunNextFrame.indexOf(process);\n      cancelled.add(process);\n      if (indexOfCallback !== -1) {\n        processToRunNextFrame.splice(indexOfCallback, 1);\n      }\n    },\n    process: function(frame2) {\n      var _a;\n      isProcessing2 = true;\n      _a = [processToRunNextFrame, processToRun], processToRun = _a[0], processToRunNextFrame = _a[1];\n      processToRunNextFrame.length = 0;\n      numThisFrame = processToRun.length;\n      if (numThisFrame) {\n        var process_1;\n        for (i2 = 0; i2 < numThisFrame; i2++) {\n          process_1 = processToRun[i2];\n          process_1(frame2);\n          if (toKeepAlive.has(process_1) === true && !cancelled.has(process_1)) {\n            renderStep.schedule(process_1);\n            setRunNextFrame(true);\n          }\n        }\n      }\n      isProcessing2 = false;\n    },\n    schedule: function(process, keepAlive, immediate) {\n      if (keepAlive === void 0) {\n        keepAlive = false;\n      }\n      if (immediate === void 0) {\n        immediate = false;\n      }\n      var addToCurrentBuffer = immediate && isProcessing2;\n      var buffer = addToCurrentBuffer ? processToRun : processToRunNextFrame;\n      cancelled.delete(process);\n      if (keepAlive)\n        toKeepAlive.add(process);\n      if (buffer.indexOf(process) === -1) {\n        buffer.push(process);\n        if (addToCurrentBuffer)\n          numThisFrame = processToRun.length;\n      }\n    }\n  };\n  return renderStep;\n};\nvar maxElapsed = 40;\nvar defaultElapsed = 1 / 60 * 1e3;\nvar useDefaultElapsed = true;\nvar willRunNextFrame = false;\nvar isProcessing = false;\nvar frame = {\n  delta: 0,\n  timestamp: 0\n};\nvar stepsOrder = [\"read\", \"update\", \"preRender\", \"render\", \"postRender\"];\nvar setWillRunNextFrame = function(willRun) {\n  return willRunNextFrame = willRun;\n};\nvar steps = /* @__PURE__ */ stepsOrder.reduce(function(acc, key) {\n  acc[key] = createStep(setWillRunNextFrame);\n  return acc;\n}, {});\nvar sync = /* @__PURE__ */ stepsOrder.reduce(function(acc, key) {\n  var step = steps[key];\n  acc[key] = function(process, keepAlive, immediate) {\n    if (keepAlive === void 0) {\n      keepAlive = false;\n    }\n    if (immediate === void 0) {\n      immediate = false;\n    }\n    if (!willRunNextFrame)\n      startLoop();\n    step.schedule(process, keepAlive, immediate);\n    return process;\n  };\n  return acc;\n}, {});\nvar processStep = function(stepId) {\n  return steps[stepId].process(frame);\n};\nvar processFrame = function(timestamp) {\n  willRunNextFrame = false;\n  frame.delta = useDefaultElapsed ? defaultElapsed : Math.max(Math.min(timestamp - frame.timestamp, maxElapsed), 1);\n  if (!useDefaultElapsed)\n    defaultElapsed = frame.delta;\n  frame.timestamp = timestamp;\n  isProcessing = true;\n  stepsOrder.forEach(processStep);\n  isProcessing = false;\n  if (willRunNextFrame) {\n    useDefaultElapsed = false;\n    onNextFrame(processFrame);\n  }\n};\nvar startLoop = function() {\n  willRunNextFrame = true;\n  useDefaultElapsed = true;\n  if (!isProcessing)\n    onNextFrame(processFrame);\n};\nvar clamp$1 = function(min, max) {\n  return function(v) {\n    return Math.max(Math.min(v, max), min);\n  };\n};\nvar sanitize = function(v) {\n  return v % 1 ? Number(v.toFixed(5)) : v;\n};\nvar singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))$/i;\nvar number = {\n  test: function(v) {\n    return typeof v === \"number\";\n  },\n  parse: parseFloat,\n  transform: function(v) {\n    return v;\n  }\n};\nvar alpha = __assign(__assign({}, number), { transform: clamp$1(0, 1) });\nvar scale = __assign(__assign({}, number), { default: 1 });\nvar createUnitType = function(unit) {\n  return {\n    test: function(v) {\n      return typeof v === \"string\" && v.endsWith(unit) && v.split(\" \").length === 1;\n    },\n    parse: parseFloat,\n    transform: function(v) {\n      return \"\" + v + unit;\n    }\n  };\n};\nvar degrees = createUnitType(\"deg\");\nvar percent = createUnitType(\"%\");\nvar px = createUnitType(\"px\");\nvar progressPercentage = __assign(__assign({}, percent), { parse: function(v) {\n  return percent.parse(v) / 100;\n}, transform: function(v) {\n  return percent.transform(v * 100);\n} });\nvar getValueFromFunctionString = function(value) {\n  return value.substring(value.indexOf(\"(\") + 1, value.lastIndexOf(\")\"));\n};\nvar clampRgbUnit = clamp$1(0, 255);\nvar isRgba = function(v) {\n  return v.red !== void 0;\n};\nvar isHsla = function(v) {\n  return v.hue !== void 0;\n};\nfunction getValuesAsArray(value) {\n  return getValueFromFunctionString(value).replace(/(,|\\/)/g, \" \").split(/ \\s*/);\n}\nvar splitColorValues = function(terms) {\n  return function(v) {\n    if (typeof v !== \"string\")\n      return v;\n    var values = {};\n    var valuesArray = getValuesAsArray(v);\n    for (var i2 = 0; i2 < 4; i2++) {\n      values[terms[i2]] = valuesArray[i2] !== void 0 ? parseFloat(valuesArray[i2]) : 1;\n    }\n    return values;\n  };\n};\nvar rgbaTemplate = function(_a) {\n  var red = _a.red, green = _a.green, blue = _a.blue, _b = _a.alpha, alpha2 = _b === void 0 ? 1 : _b;\n  return \"rgba(\" + red + \", \" + green + \", \" + blue + \", \" + alpha2 + \")\";\n};\nvar hslaTemplate = function(_a) {\n  var hue = _a.hue, saturation = _a.saturation, lightness = _a.lightness, _b = _a.alpha, alpha2 = _b === void 0 ? 1 : _b;\n  return \"hsla(\" + hue + \", \" + saturation + \", \" + lightness + \", \" + alpha2 + \")\";\n};\nvar rgbUnit = __assign(__assign({}, number), { transform: function(v) {\n  return Math.round(clampRgbUnit(v));\n} });\nfunction isColorString(color2, colorType) {\n  return color2.startsWith(colorType) && singleColorRegex.test(color2);\n}\nvar rgba = {\n  test: function(v) {\n    return typeof v === \"string\" ? isColorString(v, \"rgb\") : isRgba(v);\n  },\n  parse: splitColorValues([\"red\", \"green\", \"blue\", \"alpha\"]),\n  transform: function(_a) {\n    var red = _a.red, green = _a.green, blue = _a.blue, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;\n    return rgbaTemplate({\n      red: rgbUnit.transform(red),\n      green: rgbUnit.transform(green),\n      blue: rgbUnit.transform(blue),\n      alpha: sanitize(alpha.transform(alpha$1))\n    });\n  }\n};\nvar hsla = {\n  test: function(v) {\n    return typeof v === \"string\" ? isColorString(v, \"hsl\") : isHsla(v);\n  },\n  parse: splitColorValues([\"hue\", \"saturation\", \"lightness\", \"alpha\"]),\n  transform: function(_a) {\n    var hue = _a.hue, saturation = _a.saturation, lightness = _a.lightness, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;\n    return hslaTemplate({\n      hue: Math.round(hue),\n      saturation: percent.transform(sanitize(saturation)),\n      lightness: percent.transform(sanitize(lightness)),\n      alpha: sanitize(alpha.transform(alpha$1))\n    });\n  }\n};\nvar hex = __assign(__assign({}, rgba), { test: function(v) {\n  return typeof v === \"string\" && isColorString(v, \"#\");\n}, parse: function(v) {\n  var r2 = \"\";\n  var g = \"\";\n  var b = \"\";\n  if (v.length > 4) {\n    r2 = v.substr(1, 2);\n    g = v.substr(3, 2);\n    b = v.substr(5, 2);\n  } else {\n    r2 = v.substr(1, 1);\n    g = v.substr(2, 1);\n    b = v.substr(3, 1);\n    r2 += r2;\n    g += g;\n    b += b;\n  }\n  return {\n    red: parseInt(r2, 16),\n    green: parseInt(g, 16),\n    blue: parseInt(b, 16),\n    alpha: 1\n  };\n} });\nvar color = {\n  test: function(v) {\n    return typeof v === \"string\" && singleColorRegex.test(v) || isRgba(v) || isHsla(v);\n  },\n  parse: function(v) {\n    if (rgba.test(v)) {\n      return rgba.parse(v);\n    } else if (hsla.test(v)) {\n      return hsla.parse(v);\n    } else if (hex.test(v)) {\n      return hex.parse(v);\n    }\n    return v;\n  },\n  transform: function(v) {\n    if (isRgba(v)) {\n      return rgba.transform(v);\n    } else if (isHsla(v)) {\n      return hsla.transform(v);\n    }\n    return v;\n  }\n};\nvar createStyler = function(_a) {\n  var onRead2 = _a.onRead, onRender2 = _a.onRender, _b = _a.uncachedValues, uncachedValues = _b === void 0 ? /* @__PURE__ */ new Set() : _b, _c = _a.useCache, useCache = _c === void 0 ? true : _c;\n  return function(_a2) {\n    if (_a2 === void 0) {\n      _a2 = {};\n    }\n    var props = __rest(_a2, []);\n    var state = {};\n    var changedValues = [];\n    var hasChanged = false;\n    function setValue(key, value) {\n      if (key.startsWith(\"--\")) {\n        props.hasCSSVariable = true;\n      }\n      var currentValue = state[key];\n      state[key] = value;\n      if (state[key] === currentValue)\n        return;\n      if (changedValues.indexOf(key) === -1) {\n        changedValues.push(key);\n      }\n      if (!hasChanged) {\n        hasChanged = true;\n        sync.render(styler.render);\n      }\n    }\n    var styler = {\n      get: function(key, forceRead) {\n        if (forceRead === void 0) {\n          forceRead = false;\n        }\n        var useCached = !forceRead && useCache && !uncachedValues.has(key) && state[key] !== void 0;\n        return useCached ? state[key] : onRead2(key, props);\n      },\n      set: function(values, value) {\n        if (typeof values === \"string\") {\n          setValue(values, value);\n        } else {\n          for (var key in values) {\n            setValue(key, values[key]);\n          }\n        }\n        return this;\n      },\n      render: function(forceRender) {\n        if (forceRender === void 0) {\n          forceRender = false;\n        }\n        if (hasChanged || forceRender === true) {\n          onRender2(state, props, changedValues);\n          hasChanged = false;\n          changedValues.length = 0;\n        }\n        return this;\n      }\n    };\n    return styler;\n  };\n};\nvar CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g;\nvar REPLACE_TEMPLATE = \"$1-$2\";\nvar camelToDash = function(str) {\n  return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase();\n};\nvar camelCache = /* @__PURE__ */ new Map();\nvar dashCache = /* @__PURE__ */ new Map();\nvar prefixes = [\"Webkit\", \"Moz\", \"O\", \"ms\", \"\"];\nvar numPrefixes = prefixes.length;\nvar isBrowser = typeof document !== \"undefined\";\nvar testElement;\nvar setDashPrefix = function(key, prefixed) {\n  return dashCache.set(key, camelToDash(prefixed));\n};\nvar testPrefix = function(key) {\n  testElement = testElement || document.createElement(\"div\");\n  for (var i2 = 0; i2 < numPrefixes; i2++) {\n    var prefix = prefixes[i2];\n    var noPrefix = prefix === \"\";\n    var prefixedPropertyName = noPrefix ? key : prefix + key.charAt(0).toUpperCase() + key.slice(1);\n    if (prefixedPropertyName in testElement.style || noPrefix) {\n      if (noPrefix && key === \"clipPath\" && dashCache.has(key)) {\n        return;\n      }\n      camelCache.set(key, prefixedPropertyName);\n      setDashPrefix(key, (noPrefix ? \"\" : \"-\") + camelToDash(prefixedPropertyName));\n    }\n  }\n};\nvar setServerProperty = function(key) {\n  return setDashPrefix(key, key);\n};\nvar prefixer = function(key, asDashCase) {\n  if (asDashCase === void 0) {\n    asDashCase = false;\n  }\n  var cache2 = asDashCase ? dashCache : camelCache;\n  if (!cache2.has(key)) {\n    isBrowser ? testPrefix(key) : setServerProperty(key);\n  }\n  return cache2.get(key) || key;\n};\nvar axes = [\"\", \"X\", \"Y\", \"Z\"];\nvar order = [\"translate\", \"scale\", \"rotate\", \"skew\", \"transformPerspective\"];\nvar transformProps = /* @__PURE__ */ order.reduce(function(acc, key) {\n  return axes.reduce(function(axesAcc, axesKey) {\n    axesAcc.push(key + axesKey);\n    return axesAcc;\n  }, acc);\n}, [\"x\", \"y\", \"z\"]);\nvar transformPropDictionary = /* @__PURE__ */ transformProps.reduce(function(dict, key) {\n  dict[key] = true;\n  return dict;\n}, {});\nfunction isTransformProp(key) {\n  return transformPropDictionary[key] === true;\n}\nfunction sortTransformProps(a, b) {\n  return transformProps.indexOf(a) - transformProps.indexOf(b);\n}\nvar transformOriginProps = /* @__PURE__ */ new Set([\"originX\", \"originY\", \"originZ\"]);\nfunction isTransformOriginProp(key) {\n  return transformOriginProps.has(key);\n}\nvar int = /* @__PURE__ */ __assign(/* @__PURE__ */ __assign({}, number), { transform: Math.round });\nvar valueTypes = {\n  color,\n  backgroundColor: color,\n  outlineColor: color,\n  fill: color,\n  stroke: color,\n  borderColor: color,\n  borderTopColor: color,\n  borderRightColor: color,\n  borderBottomColor: color,\n  borderLeftColor: color,\n  borderWidth: px,\n  borderTopWidth: px,\n  borderRightWidth: px,\n  borderBottomWidth: px,\n  borderLeftWidth: px,\n  borderRadius: px,\n  radius: px,\n  borderTopLeftRadius: px,\n  borderTopRightRadius: px,\n  borderBottomRightRadius: px,\n  borderBottomLeftRadius: px,\n  width: px,\n  maxWidth: px,\n  height: px,\n  maxHeight: px,\n  size: px,\n  top: px,\n  right: px,\n  bottom: px,\n  left: px,\n  padding: px,\n  paddingTop: px,\n  paddingRight: px,\n  paddingBottom: px,\n  paddingLeft: px,\n  margin: px,\n  marginTop: px,\n  marginRight: px,\n  marginBottom: px,\n  marginLeft: px,\n  rotate: degrees,\n  rotateX: degrees,\n  rotateY: degrees,\n  rotateZ: degrees,\n  scale,\n  scaleX: scale,\n  scaleY: scale,\n  scaleZ: scale,\n  skew: degrees,\n  skewX: degrees,\n  skewY: degrees,\n  distance: px,\n  translateX: px,\n  translateY: px,\n  translateZ: px,\n  x: px,\n  y: px,\n  z: px,\n  perspective: px,\n  opacity: alpha,\n  originX: progressPercentage,\n  originY: progressPercentage,\n  originZ: px,\n  zIndex: int,\n  fillOpacity: alpha,\n  strokeOpacity: alpha,\n  numOctaves: int\n};\nvar getValueType = function(key) {\n  return valueTypes[key];\n};\nvar getValueAsType = function(value, type) {\n  return type && typeof value === \"number\" ? type.transform(value) : value;\n};\nvar SCROLL_LEFT = \"scrollLeft\";\nvar SCROLL_TOP = \"scrollTop\";\nvar scrollKeys = /* @__PURE__ */ new Set([SCROLL_LEFT, SCROLL_TOP]);\nvar blacklist = /* @__PURE__ */ new Set([SCROLL_LEFT, SCROLL_TOP, \"transform\"]);\nvar translateAlias = {\n  x: \"translateX\",\n  y: \"translateY\",\n  z: \"translateZ\"\n};\nfunction isCustomTemplate(v) {\n  return typeof v === \"function\";\n}\nfunction buildTransform(state, transform, transformKeys, transformIsDefault, enableHardwareAcceleration, allowTransformNone) {\n  if (allowTransformNone === void 0) {\n    allowTransformNone = true;\n  }\n  var transformString = \"\";\n  var transformHasZ = false;\n  transformKeys.sort(sortTransformProps);\n  var numTransformKeys = transformKeys.length;\n  for (var i2 = 0; i2 < numTransformKeys; i2++) {\n    var key = transformKeys[i2];\n    transformString += (translateAlias[key] || key) + \"(\" + transform[key] + \") \";\n    transformHasZ = key === \"z\" ? true : transformHasZ;\n  }\n  if (!transformHasZ && enableHardwareAcceleration) {\n    transformString += \"translateZ(0)\";\n  } else {\n    transformString = transformString.trim();\n  }\n  if (isCustomTemplate(state.transform)) {\n    transformString = state.transform(transform, transformIsDefault ? \"\" : transformString);\n  } else if (allowTransformNone && transformIsDefault) {\n    transformString = \"none\";\n  }\n  return transformString;\n}\nfunction buildStyleProperty(state, enableHardwareAcceleration, styles, transform, transformOrigin, transformKeys, isDashCase, allowTransformNone) {\n  if (enableHardwareAcceleration === void 0) {\n    enableHardwareAcceleration = true;\n  }\n  if (styles === void 0) {\n    styles = {};\n  }\n  if (transform === void 0) {\n    transform = {};\n  }\n  if (transformOrigin === void 0) {\n    transformOrigin = {};\n  }\n  if (transformKeys === void 0) {\n    transformKeys = [];\n  }\n  if (isDashCase === void 0) {\n    isDashCase = false;\n  }\n  if (allowTransformNone === void 0) {\n    allowTransformNone = true;\n  }\n  var transformIsDefault = true;\n  var hasTransform = false;\n  var hasTransformOrigin = false;\n  for (var key in state) {\n    var value = state[key];\n    var valueType = getValueType(key);\n    var valueAsType = getValueAsType(value, valueType);\n    if (isTransformProp(key)) {\n      hasTransform = true;\n      transform[key] = valueAsType;\n      transformKeys.push(key);\n      if (transformIsDefault) {\n        if (valueType.default && value !== valueType.default || !valueType.default && value !== 0) {\n          transformIsDefault = false;\n        }\n      }\n    } else if (isTransformOriginProp(key)) {\n      transformOrigin[key] = valueAsType;\n      hasTransformOrigin = true;\n    } else if (!blacklist.has(key) || !isCustomTemplate(valueAsType)) {\n      styles[prefixer(key, isDashCase)] = valueAsType;\n    }\n  }\n  if (hasTransform || typeof state.transform === \"function\") {\n    styles.transform = buildTransform(state, transform, transformKeys, transformIsDefault, enableHardwareAcceleration, allowTransformNone);\n  }\n  if (hasTransformOrigin) {\n    styles.transformOrigin = (transformOrigin.originX || \"50%\") + \" \" + (transformOrigin.originY || \"50%\") + \" \" + (transformOrigin.originZ || 0);\n  }\n  return styles;\n}\nfunction createStyleBuilder(_a) {\n  var _b = _a === void 0 ? {} : _a, _c = _b.enableHardwareAcceleration, enableHardwareAcceleration = _c === void 0 ? true : _c, _d = _b.isDashCase, isDashCase = _d === void 0 ? true : _d, _e = _b.allowTransformNone, allowTransformNone = _e === void 0 ? true : _e;\n  var styles = {};\n  var transform = {};\n  var transformOrigin = {};\n  var transformKeys = [];\n  return function(state) {\n    transformKeys.length = 0;\n    buildStyleProperty(state, enableHardwareAcceleration, styles, transform, transformOrigin, transformKeys, isDashCase, allowTransformNone);\n    return styles;\n  };\n}\nfunction onRead(key, options) {\n  var element = options.element, preparseOutput = options.preparseOutput;\n  var defaultValueType = getValueType(key);\n  if (isTransformProp(key)) {\n    return defaultValueType ? defaultValueType.default || 0 : 0;\n  } else if (scrollKeys.has(key)) {\n    return element[key];\n  } else {\n    var domValue = window.getComputedStyle(element, null).getPropertyValue(prefixer(key, true)) || 0;\n    return preparseOutput && defaultValueType && defaultValueType.test(domValue) && defaultValueType.parse ? defaultValueType.parse(domValue) : domValue;\n  }\n}\nfunction onRender(state, _a, changedValues) {\n  var element = _a.element, buildStyles = _a.buildStyles, hasCSSVariable = _a.hasCSSVariable;\n  Object.assign(element.style, buildStyles(state));\n  if (hasCSSVariable) {\n    var numChangedValues = changedValues.length;\n    for (var i2 = 0; i2 < numChangedValues; i2++) {\n      var key = changedValues[i2];\n      if (key.startsWith(\"--\")) {\n        element.style.setProperty(key, state[key]);\n      }\n    }\n  }\n  if (changedValues.indexOf(SCROLL_LEFT) !== -1) {\n    element[SCROLL_LEFT] = state[SCROLL_LEFT];\n  }\n  if (changedValues.indexOf(SCROLL_TOP) !== -1) {\n    element[SCROLL_TOP] = state[SCROLL_TOP];\n  }\n}\nvar cssStyler = /* @__PURE__ */ createStyler({\n  onRead,\n  onRender,\n  uncachedValues: scrollKeys\n});\nfunction createCssStyler(element, _a) {\n  if (_a === void 0) {\n    _a = {};\n  }\n  var enableHardwareAcceleration = _a.enableHardwareAcceleration, allowTransformNone = _a.allowTransformNone, props = __rest(_a, [\"enableHardwareAcceleration\", \"allowTransformNone\"]);\n  return cssStyler(__assign({ element, buildStyles: createStyleBuilder({\n    enableHardwareAcceleration,\n    allowTransformNone\n  }), preparseOutput: true }, props));\n}\nvar camelCaseAttributes = /* @__PURE__ */ new Set([\"baseFrequency\", \"diffuseConstant\", \"kernelMatrix\", \"kernelUnitLength\", \"keySplines\", \"keyTimes\", \"limitingConeAngle\", \"markerHeight\", \"markerWidth\", \"numOctaves\", \"targetX\", \"targetY\", \"surfaceScale\", \"specularConstant\", \"specularExponent\", \"stdDeviation\", \"tableValues\"]);\nvar defaultOrigin = 0.5;\nvar svgAttrsTemplate = function() {\n  return {\n    style: {}\n  };\n};\nvar progressToPixels = function(progress, length) {\n  return px.transform(progress * length);\n};\nvar unmeasured = { x: 0, y: 0, width: 0, height: 0 };\nfunction calcOrigin(origin, offset, size) {\n  return typeof origin === \"string\" ? origin : px.transform(offset + size * origin);\n}\nfunction calculateSVGTransformOrigin(dimensions, originX, originY) {\n  return calcOrigin(originX, dimensions.x, dimensions.width) + \" \" + calcOrigin(originY, dimensions.y, dimensions.height);\n}\nvar svgStyleConfig = {\n  enableHardwareAcceleration: false,\n  isDashCase: false\n};\nfunction buildSVGAttrs(_a, dimensions, totalPathLength, cssBuilder, attrs, isDashCase) {\n  if (dimensions === void 0) {\n    dimensions = unmeasured;\n  }\n  if (cssBuilder === void 0) {\n    cssBuilder = createStyleBuilder(svgStyleConfig);\n  }\n  if (attrs === void 0) {\n    attrs = svgAttrsTemplate();\n  }\n  if (isDashCase === void 0) {\n    isDashCase = true;\n  }\n  var attrX = _a.attrX, attrY = _a.attrY, originX = _a.originX, originY = _a.originY, pathLength = _a.pathLength, _b = _a.pathSpacing, pathSpacing = _b === void 0 ? 1 : _b, _c = _a.pathOffset, pathOffset = _c === void 0 ? 0 : _c, state = __rest(_a, [\"attrX\", \"attrY\", \"originX\", \"originY\", \"pathLength\", \"pathSpacing\", \"pathOffset\"]);\n  var style2 = cssBuilder(state);\n  for (var key in style2) {\n    if (key === \"transform\") {\n      attrs.style.transform = style2[key];\n    } else {\n      var attrKey = isDashCase && !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n      attrs[attrKey] = style2[key];\n    }\n  }\n  if (originX !== void 0 || originY !== void 0 || style2.transform) {\n    attrs.style.transformOrigin = calculateSVGTransformOrigin(dimensions, originX !== void 0 ? originX : defaultOrigin, originY !== void 0 ? originY : defaultOrigin);\n  }\n  if (attrX !== void 0)\n    attrs.x = attrX;\n  if (attrY !== void 0)\n    attrs.y = attrY;\n  if (totalPathLength !== void 0 && pathLength !== void 0) {\n    attrs[isDashCase ? \"stroke-dashoffset\" : \"strokeDashoffset\"] = progressToPixels(-pathOffset, totalPathLength);\n    attrs[isDashCase ? \"stroke-dasharray\" : \"strokeDasharray\"] = progressToPixels(pathLength, totalPathLength) + \" \" + progressToPixels(pathSpacing, totalPathLength);\n  }\n  return attrs;\n}\nfunction createAttrBuilder(dimensions, totalPathLength, isDashCase) {\n  if (isDashCase === void 0) {\n    isDashCase = true;\n  }\n  var attrs = svgAttrsTemplate();\n  var cssBuilder = createStyleBuilder(svgStyleConfig);\n  return function(state) {\n    return buildSVGAttrs(state, dimensions, totalPathLength, cssBuilder, attrs, isDashCase);\n  };\n}\nvar getDimensions = function(element) {\n  return typeof element.getBBox === \"function\" ? element.getBBox() : element.getBoundingClientRect();\n};\nvar getSVGElementDimensions = function(element) {\n  try {\n    return getDimensions(element);\n  } catch (e2) {\n    return { x: 0, y: 0, width: 0, height: 0 };\n  }\n};\nvar isPath = function(element) {\n  return element.tagName === \"path\";\n};\nvar svgStyler = /* @__PURE__ */ createStyler({\n  onRead: function(key, _a) {\n    var element = _a.element;\n    key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n    if (!isTransformProp(key)) {\n      return element.getAttribute(key);\n    } else {\n      var valueType = getValueType(key);\n      return valueType ? valueType.default || 0 : 0;\n    }\n  },\n  onRender: function(state, _a) {\n    var element = _a.element, buildAttrs = _a.buildAttrs;\n    var attrs = buildAttrs(state);\n    for (var key in attrs) {\n      if (key === \"style\") {\n        Object.assign(element.style, attrs.style);\n      } else {\n        element.setAttribute(key, attrs[key]);\n      }\n    }\n  }\n});\nvar svg = function(element) {\n  var dimensions = getSVGElementDimensions(element);\n  var pathLength = isPath(element) && element.getTotalLength ? element.getTotalLength() : void 0;\n  return svgStyler({\n    element,\n    buildAttrs: createAttrBuilder(dimensions, pathLength)\n  });\n};\nvar viewport = /* @__PURE__ */ createStyler({\n  useCache: false,\n  onRead: function(key) {\n    return key === \"scrollTop\" ? window.pageYOffset : window.pageXOffset;\n  },\n  onRender: function(_a) {\n    var _b = _a.scrollTop, scrollTop = _b === void 0 ? 0 : _b, _c = _a.scrollLeft, scrollLeft = _c === void 0 ? 0 : _c;\n    return window.scrollTo(scrollLeft, scrollTop);\n  }\n});\nvar cache = /* @__PURE__ */ new WeakMap();\nvar isHTMLElement = function(node) {\n  return node instanceof HTMLElement || typeof node.click === \"function\";\n};\nvar isSVGElement = function(node) {\n  return node instanceof SVGElement || \"ownerSVGElement\" in node;\n};\nvar createDOMStyler = function(node, props) {\n  var styler;\n  if (node === window) {\n    styler = viewport(node);\n  } else if (isHTMLElement(node)) {\n    styler = createCssStyler(node, props);\n  } else if (isSVGElement(node)) {\n    styler = svg(node);\n  }\n  cache.set(node, styler);\n  return styler;\n};\nvar getStyler = function(node, props) {\n  return cache.has(node) ? cache.get(node) : createDOMStyler(node, props);\n};\nfunction index(nodeOrSelector, props) {\n  var node = typeof nodeOrSelector === \"string\" ? document.querySelector(nodeOrSelector) : nodeOrSelector;\n  return getStyler(node, props);\n}\nvar shallowequal = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n  if (ret !== void 0) {\n    return !!ret;\n  }\n  if (objA === objB) {\n    return true;\n  }\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n    return false;\n  }\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n    var valueA = objA[key];\n    var valueB = objB[key];\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n    if (ret === false || ret === void 0 && valueA !== valueB) {\n      return false;\n    }\n  }\n  return true;\n};\nconst e$1 = \"!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\", s$1 = e$1.length, t$1 = Array(20), r$1 = () => {\n  for (let r2 = 0; r2 < 20; r2++)\n    t$1[r2] = e$1.charAt(Math.random() * s$1);\n  return t$1.join(\"\");\n};\nclass o {\n  constructor() {\n    this.disposers = /* @__PURE__ */ new Map();\n  }\n  add(e2, s2 = r$1()) {\n    return this.flush(s2), this.disposers.set(s2, e2()), s2;\n  }\n  addDisposer(e2, s2 = r$1()) {\n    return this.flush(s2), this.disposers.set(s2, e2), s2;\n  }\n  addEventListener(e2, s2, t2, o2, i2 = r$1()) {\n    return this.add(() => (e2.addEventListener(s2, t2, o2), () => e2.removeEventListener(s2, t2, o2)), i2), i2;\n  }\n  setTimeout(e2, s2, t2 = r$1()) {\n    return this.add(() => {\n      const r2 = window.setTimeout(() => {\n        this.remove(t2), e2();\n      }, s2);\n      return () => window.clearTimeout(r2);\n    }, t2);\n  }\n  setInterval(e2, s2, t2 = r$1()) {\n    return this.add(() => {\n      const t3 = window.setInterval(e2, s2);\n      return () => window.clearInterval(t3);\n    }, t2);\n  }\n  remove(e2) {\n    const s2 = this.disposers.get(e2);\n    return this.disposers.delete(e2), s2;\n  }\n  flush(e2) {\n    const s2 = this.remove(e2);\n    if (s2)\n      try {\n        s2();\n      } catch (t2) {\n        console.error(t2);\n      }\n  }\n  flushAll() {\n    this.disposers.forEach((e2) => {\n      try {\n        e2();\n      } catch (s2) {\n        console.error(s2);\n      }\n    }), this.disposers.clear();\n  }\n}\nvar e = Object.defineProperty, s = (\"undefined\" != typeof require && require, (s2, r2, t2) => (((s3, r3, t3) => {\n  r3 in s3 ? e(s3, r3, { enumerable: true, configurable: true, writable: true, value: t3 }) : s3[r3] = t3;\n})(s2, \"symbol\" != typeof r2 ? r2 + \"\" : r2, t2), t2));\nclass r {\n  constructor(e2, r2) {\n    s(this, \"_value\"), s(this, \"_beforeDestroys\"), s(this, \"_subscribers\"), this._value = e2, r2 && (this.compare = r2);\n  }\n  get value() {\n    return this._value;\n  }\n  setValue(e2, s2) {\n    if (!this.compare(e2, this._value)) {\n      const r2 = this._value;\n      this._value = e2, this._subscribers && this._subscribers.forEach((t2) => t2(e2, r2, s2));\n    }\n  }\n  reaction(e2) {\n    return this._subscribers || (this._subscribers = /* @__PURE__ */ new Set()), this._subscribers.add(e2), () => {\n      this._subscribers && this._subscribers.delete(e2);\n    };\n  }\n  subscribe(e2, s2) {\n    const r2 = this.reaction(e2);\n    return e2(this._value, void 0, s2), r2;\n  }\n  derive(e2, s2, t2) {\n    const i2 = new r(e2(this.value, void 0, t2), s2), o2 = this.reaction((s3, r2, t3) => {\n      i2.setValue(e2(s3, r2, t3));\n    });\n    return i2.addBeforeDestroy(o2), i2;\n  }\n  destroy() {\n    this._beforeDestroys && (this._beforeDestroys.forEach((e2) => e2()), this._beforeDestroys.clear()), this._subscribers && this._subscribers.clear();\n  }\n  addBeforeDestroy(e2) {\n    return this._beforeDestroys || (this._beforeDestroys = /* @__PURE__ */ new Set()), this._beforeDestroys.add(e2), () => {\n      this._beforeDestroys && this._beforeDestroys.delete(e2);\n    };\n  }\n  compare(e2, s2) {\n    return e2 === s2;\n  }\n}\nfunction t(e2, s2, t2, i2) {\n  let o2 = e2.map((e3) => e3.value);\n  const u2 = new r(s2(o2, void 0, i2), t2);\n  return e2.forEach((e3, r2) => {\n    const t3 = e3.reaction((e4, t4, i3) => {\n      const c2 = o2.slice();\n      c2[r2] = e4;\n      const n = o2;\n      o2 = c2, u2.setValue(s2(c2, n, i3), i3);\n    });\n    u2.addBeforeDestroy(t3);\n  }), u2;\n}\nfunction i(e2, s2) {\n  Object.keys(s2).forEach((r2) => {\n    u(e2, r2, s2[r2]);\n  });\n}\nfunction u(e2, s2, r2) {\n  var t2;\n  return Object.defineProperties(e2, { [s2]: { get: () => r2.value }, [`_${s2}$`]: { value: r2 }, [`set${t2 = s2, t2[0].toUpperCase() + t2.slice(1)}`]: { value: (e3, s3) => r2.setValue(e3, s3) } }), e2;\n}\nfunction c(e2) {\n  const s2 = (s3) => {\n    const r2 = e2.addDisposer(() => {\n      s3.destroy();\n    });\n    return s3.addBeforeDestroy(() => {\n      e2.remove(r2);\n    }), s3;\n  };\n  return { bindSideEffect: s2, combine: (e3, r2, i2, o2) => s2(t(e3, r2, i2, o2)), createVal: (e3, t2) => s2(new r(e3, t2)) };\n}\nvar style$3 = \"\";\nvar TELE_BOX_COLOR_SCHEME = /* @__PURE__ */ ((TELE_BOX_COLOR_SCHEME2) => {\n  TELE_BOX_COLOR_SCHEME2[\"Light\"] = \"light\";\n  TELE_BOX_COLOR_SCHEME2[\"Dark\"] = \"dark\";\n  TELE_BOX_COLOR_SCHEME2[\"Auto\"] = \"auto\";\n  return TELE_BOX_COLOR_SCHEME2;\n})(TELE_BOX_COLOR_SCHEME || {});\nvar TELE_BOX_STATE = /* @__PURE__ */ ((TELE_BOX_STATE2) => {\n  TELE_BOX_STATE2[\"Normal\"] = \"normal\";\n  TELE_BOX_STATE2[\"Minimized\"] = \"minimized\";\n  TELE_BOX_STATE2[\"Maximized\"] = \"maximized\";\n  return TELE_BOX_STATE2;\n})(TELE_BOX_STATE || {});\nvar TELE_BOX_EVENT = /* @__PURE__ */ ((TELE_BOX_EVENT2) => {\n  TELE_BOX_EVENT2[\"DarkMode\"] = \"dark_mode\";\n  TELE_BOX_EVENT2[\"PrefersColorScheme\"] = \"prefers_color_scheme\";\n  TELE_BOX_EVENT2[\"Close\"] = \"close\";\n  TELE_BOX_EVENT2[\"Focus\"] = \"focus\";\n  TELE_BOX_EVENT2[\"Blur\"] = \"blur\";\n  TELE_BOX_EVENT2[\"Move\"] = \"move\";\n  TELE_BOX_EVENT2[\"Resize\"] = \"resize\";\n  TELE_BOX_EVENT2[\"IntrinsicMove\"] = \"intrinsic_move\";\n  TELE_BOX_EVENT2[\"IntrinsicResize\"] = \"intrinsic_resize\";\n  TELE_BOX_EVENT2[\"VisualResize\"] = \"visual_resize\";\n  TELE_BOX_EVENT2[\"ZIndex\"] = \"z_index\";\n  TELE_BOX_EVENT2[\"State\"] = \"state\";\n  TELE_BOX_EVENT2[\"Minimized\"] = \"minimized\";\n  TELE_BOX_EVENT2[\"Maximized\"] = \"maximized\";\n  TELE_BOX_EVENT2[\"Readonly\"] = \"readonly\";\n  TELE_BOX_EVENT2[\"Destroyed\"] = \"destroyed\";\n  TELE_BOX_EVENT2[\"BoxStatus\"] = \"box_status\";\n  TELE_BOX_EVENT2[\"LastNotMinimizedBoxStatus\"] = \"last_not_minimized_box_status\";\n  TELE_BOX_EVENT2[\"ForceTop\"] = \"force_top\";\n  TELE_BOX_EVENT2[\"ForceNormal\"] = \"force_normal\";\n  return TELE_BOX_EVENT2;\n})(TELE_BOX_EVENT || {});\nvar TELE_BOX_DELEGATE_EVENT = /* @__PURE__ */ ((TELE_BOX_DELEGATE_EVENT2) => {\n  TELE_BOX_DELEGATE_EVENT2[\"Close\"] = \"close\";\n  TELE_BOX_DELEGATE_EVENT2[\"Maximize\"] = \"maximize\";\n  TELE_BOX_DELEGATE_EVENT2[\"Minimize\"] = \"minimize\";\n  return TELE_BOX_DELEGATE_EVENT2;\n})(TELE_BOX_DELEGATE_EVENT || {});\nvar TELE_BOX_RESIZE_HANDLE = /* @__PURE__ */ ((TELE_BOX_RESIZE_HANDLE2) => {\n  TELE_BOX_RESIZE_HANDLE2[\"North\"] = \"n\";\n  TELE_BOX_RESIZE_HANDLE2[\"South\"] = \"s\";\n  TELE_BOX_RESIZE_HANDLE2[\"West\"] = \"w\";\n  TELE_BOX_RESIZE_HANDLE2[\"East\"] = \"e\";\n  TELE_BOX_RESIZE_HANDLE2[\"NorthWest\"] = \"nw\";\n  TELE_BOX_RESIZE_HANDLE2[\"NorthEast\"] = \"ne\";\n  TELE_BOX_RESIZE_HANDLE2[\"SouthEast\"] = \"se\";\n  TELE_BOX_RESIZE_HANDLE2[\"SouthWest\"] = \"sw\";\n  return TELE_BOX_RESIZE_HANDLE2;\n})(TELE_BOX_RESIZE_HANDLE || {});\nconst TeleBoxDragHandleType = \"dh\";\nfunction clamp(value, min, max) {\n  return Math.min(Math.max(value, min), max);\n}\nfunction preventEvent(ev) {\n  ev.stopPropagation();\n  if (ev.cancelable) {\n    ev.preventDefault();\n  }\n}\nfunction flattenEvent(ev) {\n  return ev.touches ? ev.touches[0] : ev;\n}\nfunction genUniqueKey() {\n  return Date.now().toString().slice(6) + Math.random().toString().slice(2, 8);\n}\nlet defaultBoxCount = 1;\nfunction getBoxDefaultName() {\n  return `New Box ${defaultBoxCount++}`;\n}\nfunction isTruthy(value) {\n  return Boolean(value);\n}\nfunction isFalsy(value) {\n  return !value;\n}\nclass DefaultTitleBar {\n  constructor({\n    readonly = false,\n    title,\n    buttons,\n    onEvent,\n    onDragStart,\n    namespace = \"telebox\",\n    state = TELE_BOX_STATE.Normal,\n    boxStatus,\n    forceTop = false,\n    forceNormal = false\n  } = {}) {\n    this.$btns = [];\n    this.sideEffect = new o();\n    this.lastTitleBarClick = {\n      timestamp: 0,\n      clientX: -100,\n      clientY: -100\n    };\n    this.handleTitleBarClick = (ev) => {\n      var _a;\n      if (this.readonly) {\n        return;\n      }\n      if (ev.button !== 0) {\n        return;\n      }\n      if ((_a = ev.target.dataset) == null ? void 0 : _a.teleTitleBarNoDblClick) {\n        return;\n      }\n      preventEvent(ev);\n      const now = Date.now();\n      if (now - this.lastTitleBarClick.timestamp <= 500) {\n        if (Math.abs(ev.clientX - this.lastTitleBarClick.clientX) <= 5 && Math.abs(ev.clientY - this.lastTitleBarClick.clientY) <= 5) {\n          if (this.onEvent) {\n            this.onEvent({ type: TELE_BOX_DELEGATE_EVENT.Maximize });\n          }\n        }\n      } else if (this.onDragStart) {\n        this.onDragStart(ev);\n      }\n      this.lastTitleBarClick.timestamp = now;\n      this.lastTitleBarClick.clientX = ev.clientX;\n      this.lastTitleBarClick.clientY = ev.clientY;\n    };\n    this.lastTitleBarTouch = {\n      timestamp: 0,\n      clientX: -100,\n      clientY: -100\n    };\n    this.handleTitleBarTouch = (ev) => {\n      var _a;\n      if (this.readonly) {\n        return;\n      }\n      if ((_a = ev.target.dataset) == null ? void 0 : _a.teleTitleBarNoDblClick) {\n        return;\n      }\n      preventEvent(ev);\n      const now = Date.now();\n      const {\n        clientX = this.lastTitleBarTouch.clientX + 100,\n        clientY = this.lastTitleBarTouch.clientY + 100\n      } = ev.touches[0] || {};\n      if (now - this.lastTitleBarTouch.timestamp <= 500) {\n        if (Math.abs(clientX - this.lastTitleBarTouch.clientX) <= 10 && Math.abs(clientY - this.lastTitleBarTouch.clientY) <= 10) {\n          if (this.onEvent) {\n            this.onEvent({ type: TELE_BOX_DELEGATE_EVENT.Maximize });\n          }\n        }\n      } else if (this.onDragStart) {\n        this.onDragStart(ev);\n      }\n      this.lastTitleBarTouch.timestamp = now;\n      this.lastTitleBarTouch.clientX = clientX;\n      this.lastTitleBarTouch.clientY = clientY;\n    };\n    this.readonly = readonly;\n    this.onEvent = onEvent;\n    this.onDragStart = onDragStart;\n    this.namespace = namespace;\n    this.title = title;\n    this.state = state;\n    this.boxStatus = boxStatus;\n    this.forceTop = forceTop;\n    this.forceNormal = forceNormal;\n    this.buttons = buttons || (forceNormal ? [\n      {\n        type: TELE_BOX_DELEGATE_EVENT.Close,\n        iconClassName: this.wrapClassName(\"titlebar-icon-close\")\n      }\n    ] : [\n      {\n        type: TELE_BOX_DELEGATE_EVENT.Minimize,\n        iconClassName: this.wrapClassName(\"titlebar-icon-minimize\")\n      },\n      {\n        type: TELE_BOX_DELEGATE_EVENT.Maximize,\n        iconClassName: this.wrapClassName(\"titlebar-icon-maximize\"),\n        isActive: (state2) => state2 === TELE_BOX_STATE.Maximized\n      },\n      {\n        type: TELE_BOX_DELEGATE_EVENT.Close,\n        iconClassName: this.wrapClassName(\"titlebar-icon-close\")\n      }\n    ]);\n    this.$dragArea = this.renderDragArea();\n  }\n  setTitle(title) {\n    this.title = title;\n    if (this.$title) {\n      this.$title.textContent = title;\n      this.$title.title = title;\n    }\n  }\n  setState(state) {\n    if (this.state !== state) {\n      this.state = state;\n      this.buttons.forEach((btn, i2) => {\n        if (btn.isActive) {\n          this.$btns[i2].classList.toggle(\n            \"is-active\",\n            btn.isActive(state)\n          );\n        }\n      });\n    }\n  }\n  setBoxStatus(boxStatus) {\n    if (this.boxStatus !== boxStatus) {\n      this.boxStatus = boxStatus;\n      if (boxStatus) {\n        this.buttons.forEach((btn, i2) => {\n          if (btn.isActive) {\n            this.$btns[i2].classList.toggle(\n              \"is-active\",\n              btn.isActive(boxStatus)\n            );\n          }\n        });\n      }\n    }\n  }\n  setReadonly(readonly) {\n    if (this.readonly !== readonly) {\n      this.readonly = readonly;\n    }\n  }\n  render() {\n    if (!this.$titleBar) {\n      this.$titleBar = document.createElement(\"div\");\n      this.$titleBar.className = this.wrapClassName(\"titlebar\");\n      const $titleArea = document.createElement(\"div\");\n      $titleArea.className = this.wrapClassName(\"title-area\");\n      $titleArea.dataset.teleBoxHandle = TeleBoxDragHandleType;\n      this.$title = document.createElement(\"h1\");\n      this.$title.className = this.wrapClassName(\"title\");\n      this.$title.dataset.teleBoxHandle = TeleBoxDragHandleType;\n      if (this.title) {\n        this.$title.textContent = this.title;\n        this.$title.title = this.title;\n      }\n      $titleArea.appendChild(this.$title);\n      $titleArea.appendChild(this.$dragArea);\n      const $buttonsContainer = document.createElement(\"div\");\n      $buttonsContainer.className = this.wrapClassName(\"titlebar-btns\");\n      this.buttons.forEach(({ iconClassName, isActive }, i2) => {\n        const teleTitleBarBtnIndex = String(i2);\n        const $btn = document.createElement(\"button\");\n        $btn.className = `${this.wrapClassName(\n          \"titlebar-btn\"\n        )} ${iconClassName}`;\n        $btn.dataset.teleTitleBarBtnIndex = teleTitleBarBtnIndex;\n        $btn.dataset.teleTitleBarNoDblClick = \"true\";\n        if (isActive) {\n          $btn.classList.toggle(\"is-active\", isActive(this.boxStatus || this.state));\n        }\n        this.$btns.push($btn);\n        $buttonsContainer.appendChild($btn);\n      });\n      this.sideEffect.addEventListener(\n        $buttonsContainer,\n        \"click\",\n        (ev) => {\n          var _a;\n          if (this.readonly) {\n            return;\n          }\n          const target = ev.target;\n          const teleTitleBarBtnIndex = Number(\n            (_a = target.dataset) == null ? void 0 : _a.teleTitleBarBtnIndex\n          );\n          if (!Number.isNaN(teleTitleBarBtnIndex) && teleTitleBarBtnIndex < this.buttons.length) {\n            preventEvent(ev);\n            const btn = this.buttons[teleTitleBarBtnIndex];\n            if (this.onEvent) {\n              this.onEvent({\n                type: btn.type,\n                value: btn.value\n              });\n            }\n          }\n        }\n      );\n      this.$titleBar.appendChild($titleArea);\n      this.$titleBar.appendChild($buttonsContainer);\n    }\n    return this.$titleBar;\n  }\n  renderDragArea() {\n    const $dragArea = document.createElement(\"div\");\n    $dragArea.className = this.wrapClassName(\"drag-area\");\n    $dragArea.dataset.teleBoxHandle = TeleBoxDragHandleType;\n    this.sideEffect.addEventListener(\n      $dragArea,\n      \"mousedown\",\n      this.handleTitleBarClick\n    );\n    this.sideEffect.addEventListener(\n      $dragArea,\n      \"touchstart\",\n      this.handleTitleBarTouch,\n      { passive: true }\n    );\n    return $dragArea;\n  }\n  dragHandle() {\n    return this.$titleBar;\n  }\n  wrapClassName(className) {\n    return `${this.namespace}-${className}`;\n  }\n  destroy() {\n    this.sideEffect.flushAll();\n    if (this.$titleBar) {\n      this.$titleBar = void 0;\n      this.$title = void 0;\n      this.$btns.length = 0;\n      this.onDragStart = void 0;\n      this.onEvent = void 0;\n    }\n  }\n}\nclass TeleBox {\n  constructor({\n    id = genUniqueKey(),\n    title = getBoxDefaultName(),\n    prefersColorScheme = TELE_BOX_COLOR_SCHEME.Light,\n    darkMode,\n    visible = true,\n    width = 0.5,\n    height = 0.5,\n    minWidth = 0,\n    minHeight = 0,\n    x = 0.1,\n    y = 0.1,\n    minimized = false,\n    maximized = false,\n    readonly = false,\n    resizable = true,\n    draggable = true,\n    fence = true,\n    fixRatio = false,\n    focus = false,\n    zIndex = 100,\n    namespace = \"telebox\",\n    titleBar,\n    content,\n    footer,\n    styles,\n    containerRect = {\n      x: 0,\n      y: 0,\n      width: window.innerWidth,\n      height: window.innerHeight\n    },\n    collectorRect,\n    boxStatus,\n    lastNotMinimizedBoxStatus,\n    forceTop = false,\n    forceNormal = false,\n    isDragContent = false\n  } = {}) {\n    this._renderSideEffect = new o();\n    this.handleTrackStart = (ev) => {\n      var _a;\n      return (_a = this._handleTrackStart) == null ? void 0 : _a.call(this, ev);\n    };\n    this._sideEffect = new o();\n    this._valSideEffectBinder = c(this._sideEffect);\n    const { combine, createVal } = this._valSideEffectBinder;\n    this.id = id;\n    this.namespace = namespace;\n    this.events = new EventEmitter();\n    this._delegateEvents = new EventEmitter();\n    const boxStatus$ = createVal(boxStatus);\n    const lastNotMinimizedBoxStatus$ = createVal(lastNotMinimizedBoxStatus);\n    const prefersColorScheme$ = createVal(\n      prefersColorScheme\n    );\n    prefersColorScheme$.reaction((prefersColorScheme2, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(\n          TELE_BOX_EVENT.PrefersColorScheme,\n          prefersColorScheme2\n        );\n      }\n    });\n    const darkMode$ = createVal(Boolean(darkMode));\n    if (darkMode == null) {\n      prefersColorScheme$.subscribe(\n        (prefersColorScheme2, _, skipUpdate) => {\n          this._sideEffect.add(() => {\n            if (prefersColorScheme2 === \"auto\") {\n              const prefersDark = window.matchMedia(\n                \"(prefers-color-scheme: dark)\"\n              );\n              if (prefersDark) {\n                darkMode$.setValue(\n                  prefersDark.matches,\n                  skipUpdate\n                );\n                const handler = (evt) => {\n                  darkMode$.setValue(evt.matches, skipUpdate);\n                };\n                prefersDark.addListener(handler);\n                return () => prefersDark.removeListener(handler);\n              } else {\n                return noop;\n              }\n            } else {\n              darkMode$.setValue(\n                prefersColorScheme2 === \"dark\",\n                skipUpdate\n              );\n              return noop;\n            }\n          }, \"prefers-color-scheme\");\n        }\n      );\n    }\n    darkMode$.reaction((darkMode2, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.DarkMode, darkMode2);\n      }\n    });\n    const containerRect$ = createVal(containerRect, shallowequal);\n    const collectorRect$ = createVal(collectorRect, shallowequal);\n    const forceTop$ = createVal(forceTop);\n    forceTop$.reaction((forceTop2, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.ForceTop, forceTop2 || false);\n      }\n    });\n    const forceNormal$ = createVal(forceNormal);\n    forceNormal$.reaction((forceNormal2, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.ForceNormal, forceNormal2 || false);\n      }\n    });\n    const isDragContent$ = createVal(isDragContent);\n    const title$ = createVal(title);\n    title$.reaction((title2, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.titleBar.setTitle(title2);\n      }\n    });\n    const visible$ = createVal(visible);\n    visible$.reaction((visible2, _, skipUpdate) => {\n      if (!skipUpdate && !visible2) {\n        this.events.emit(TELE_BOX_EVENT.Close);\n      }\n    });\n    const readonly$ = createVal(readonly);\n    readonly$.reaction((readonly2, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.Readonly, readonly2);\n      }\n    });\n    const resizable$ = createVal(resizable);\n    const draggable$ = createVal(draggable);\n    const fence$ = createVal(fence);\n    const fixRatio$ = createVal(fixRatio);\n    const zIndex$ = createVal(zIndex);\n    zIndex$.reaction((zIndex2, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.ZIndex, zIndex2);\n      }\n    });\n    const focus$ = createVal(focus);\n    focus$.reaction((focus2, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(\n          focus2 ? TELE_BOX_EVENT.Focus : TELE_BOX_EVENT.Blur\n        );\n      }\n    });\n    const minimized$ = createVal(minimized);\n    minimized$.reaction((minimized2, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.Minimized, minimized2);\n      }\n    });\n    const maximized$ = createVal(maximized);\n    maximized$.reaction((maximized2, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.Maximized, maximized2);\n      }\n    });\n    const state$ = combine(\n      [minimized$, maximized$, boxStatus$],\n      ([minimized2, maximized2, boxStatus2]) => minimized2 ? TELE_BOX_STATE.Minimized : maximized2 ? TELE_BOX_STATE.Maximized : !boxStatus2 ? TELE_BOX_STATE.Normal : boxStatus2\n    );\n    state$.reaction((state, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.State, state);\n      }\n    });\n    const minSize$ = createVal(\n      {\n        width: clamp(minWidth, 0, 1),\n        height: clamp(minHeight, 0, 1)\n      },\n      shallowequal\n    );\n    const intrinsicSize$ = createVal(\n      {\n        width: clamp(width, minSize$.value.width, 1),\n        height: clamp(height, minSize$.value.height, 1)\n      },\n      shallowequal\n    );\n    minSize$.reaction((minSize, _, skipUpdate) => {\n      intrinsicSize$.setValue(\n        {\n          width: clamp(width, minSize.width, 1),\n          height: clamp(height, minSize.height, 1)\n        },\n        skipUpdate\n      );\n    });\n    intrinsicSize$.reaction((size, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.IntrinsicResize, size);\n      }\n    });\n    const size$ = combine(\n      [intrinsicSize$, maximized$, boxStatus$],\n      ([intrinsicSize, maximized2, boxStatus2]) => {\n        if (maximized2 || boxStatus2 === TELE_BOX_STATE.Maximized) {\n          return { width: 1, height: 1 };\n        }\n        return intrinsicSize;\n      },\n      shallowequal\n    );\n    size$.reaction((size, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.Resize, size);\n      }\n    });\n    const visualSize$ = combine(\n      [size$, minimized$, containerRect$, collectorRect$, boxStatus$],\n      ([size, minimized2, containerRect2, collectorRect2, boxStatus2]) => {\n        if ((minimized2 || boxStatus2 === TELE_BOX_STATE.Minimized) && collectorRect2) {\n          return {\n            width: collectorRect2.width / size.width / containerRect2.width,\n            height: collectorRect2.height / size.height / containerRect2.height\n          };\n        }\n        return size;\n      },\n      shallowequal\n    );\n    visualSize$.reaction((size, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.VisualResize, size);\n      }\n    });\n    const intrinsicCoord$ = createVal(\n      { x: clamp(x, 0, 1), y: clamp(y, 0, 1) },\n      shallowequal\n    );\n    intrinsicCoord$.reaction((coord, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.IntrinsicMove, coord);\n      }\n    });\n    const coord$ = combine(\n      [\n        intrinsicCoord$,\n        intrinsicSize$,\n        containerRect$,\n        collectorRect$,\n        minimized$,\n        maximized$,\n        boxStatus$,\n        lastNotMinimizedBoxStatus$\n      ],\n      ([\n        intrinsicCoord,\n        intrinsicSize,\n        containerRect2,\n        collectorRect2,\n        minimized2,\n        maximized2,\n        boxStatus2,\n        lastNotMinimizedBoxStatus2\n      ]) => {\n        if ((minimized2 || boxStatus2 === TELE_BOX_STATE.Minimized) && collectorRect2) {\n          if (maximized2 || lastNotMinimizedBoxStatus2 === TELE_BOX_STATE.Maximized) {\n            return {\n              x: (collectorRect2.x + collectorRect2.width / 2) / containerRect2.width - 1 / 2,\n              y: (collectorRect2.y + collectorRect2.height / 2) / containerRect2.height - 1 / 2\n            };\n          }\n          return {\n            x: (collectorRect2.x + collectorRect2.width / 2) / containerRect2.width - intrinsicSize.width / 2,\n            y: (collectorRect2.y + collectorRect2.height / 2) / containerRect2.height - intrinsicSize.height / 2\n          };\n        }\n        if (maximized2 || boxStatus2 === TELE_BOX_STATE.Maximized) {\n          return { x: 0, y: 0 };\n        }\n        return intrinsicCoord;\n      },\n      shallowequal\n    );\n    coord$.reaction((coord, _, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_EVENT.Move, coord);\n      }\n    });\n    this.titleBar = titleBar || new DefaultTitleBar({\n      readonly: readonly$.value,\n      title: title$.value,\n      namespace: this.namespace,\n      boxStatus: boxStatus$.value,\n      forceTop: forceTop$.value,\n      forceNormal: forceNormal$.value,\n      onDragStart: (event) => {\n        var _a;\n        return (_a = this._handleTrackStart) == null ? void 0 : _a.call(this, event);\n      },\n      onEvent: (event) => {\n        if (this._delegateEvents.listeners.length > 0) {\n          this._delegateEvents.emit(event.type);\n        } else {\n          switch (event.type) {\n            case TELE_BOX_DELEGATE_EVENT.Maximize: {\n              if (!boxStatus$.value) {\n                maximized$.setValue(!maximized$.value);\n              }\n              break;\n            }\n            case TELE_BOX_DELEGATE_EVENT.Minimize: {\n              if (!boxStatus$.value) {\n                minimized$.setValue(true);\n              }\n              break;\n            }\n            case TELE_BOX_DELEGATE_EVENT.Close: {\n              visible$.setValue(false);\n              break;\n            }\n            default: {\n              console.error(\n                \"Unsupported titleBar event:\",\n                event\n              );\n              break;\n            }\n          }\n        }\n      }\n    });\n    readonly$.reaction((readonly2) => {\n      this.titleBar.setReadonly(readonly2);\n    });\n    boxStatus$.reaction((boxStatus2) => {\n      this.titleBar.setBoxStatus(boxStatus2);\n    });\n    const $userContent$ = createVal(content);\n    const $userFooter$ = createVal(footer);\n    const $userStyles$ = createVal(styles);\n    const valConfig = {\n      prefersColorScheme: prefersColorScheme$,\n      darkMode: darkMode$,\n      containerRect: containerRect$,\n      collectorRect: collectorRect$,\n      title: title$,\n      visible: visible$,\n      readonly: readonly$,\n      resizable: resizable$,\n      draggable: draggable$,\n      fence: fence$,\n      fixRatio: fixRatio$,\n      focus: focus$,\n      zIndex: zIndex$,\n      minimized: minimized$,\n      maximized: maximized$,\n      $userContent: $userContent$,\n      $userFooter: $userFooter$,\n      $userStyles: $userStyles$,\n      forceTop: forceTop$,\n      forceNormal: forceNormal$,\n      isDragContent: isDragContent$\n    };\n    i(this, valConfig);\n    this._state$ = state$;\n    this._minSize$ = minSize$;\n    this._size$ = size$;\n    this._intrinsicSize$ = intrinsicSize$;\n    this._visualSize$ = visualSize$;\n    this._coord$ = coord$;\n    this._intrinsicCoord$ = intrinsicCoord$;\n    this._boxStatus$ = boxStatus$;\n    this._lastNotMinimizedBoxStatus$ = lastNotMinimizedBoxStatus$;\n    if (this.fixRatio) {\n      this.transform(\n        coord$.value.x,\n        coord$.value.y,\n        size$.value.width,\n        size$.value.height,\n        true\n      );\n    }\n    this.$box = this.render();\n  }\n  get boxStatus() {\n    return this._boxStatus$.value;\n  }\n  set boxStatus(boxStatus) {\n    this._boxStatus$.setValue(boxStatus);\n  }\n  get lastNotMinimizedBoxStatus() {\n    return this._lastNotMinimizedBoxStatus$.value;\n  }\n  get darkMode() {\n    return this._darkMode$.value;\n  }\n  get state() {\n    return this._state$.value;\n  }\n  setState(state, skipUpdate = false) {\n    switch (state) {\n      case TELE_BOX_STATE.Maximized: {\n        this.setMinimized(false, skipUpdate);\n        this.setMaximized(true, skipUpdate);\n        break;\n      }\n      case TELE_BOX_STATE.Minimized: {\n        this.setMinimized(true, skipUpdate);\n        this.setMaximized(false, skipUpdate);\n        break;\n      }\n      default: {\n        this.setMinimized(false, skipUpdate);\n        this.setMaximized(false, skipUpdate);\n        break;\n      }\n    }\n    return this;\n  }\n  setBoxStatus(boxStatus, skipUpdate = false) {\n    if (boxStatus === TELE_BOX_STATE.Minimized) {\n      if (this._boxStatus$.value && this._boxStatus$.value !== TELE_BOX_STATE.Minimized) {\n        this.setLastNotMinimizedBoxStatus(this._boxStatus$.value, skipUpdate);\n      }\n    } else {\n      this.setLastNotMinimizedBoxStatus(void 0, skipUpdate);\n    }\n    this._boxStatus$.setValue(boxStatus, skipUpdate);\n    if (!skipUpdate) {\n      this.events.emit(TELE_BOX_EVENT.BoxStatus, { id: this.id, boxStatus });\n    }\n    return this;\n  }\n  setLastNotMinimizedBoxStatus(lastNotMinimizedBoxStatus, skipUpdate = false) {\n    this._lastNotMinimizedBoxStatus$.setValue(lastNotMinimizedBoxStatus, skipUpdate);\n    if (!skipUpdate) {\n      this.events.emit(TELE_BOX_EVENT.LastNotMinimizedBoxStatus, { id: this.id, lastNotMinimizedBoxStatus });\n    }\n    return this;\n  }\n  get minWidth() {\n    return this._minSize$.value.width;\n  }\n  get minHeight() {\n    return this._minSize$.value.height;\n  }\n  setMinWidth(minWidth, skipUpdate = false) {\n    this._minSize$.setValue(\n      { width: minWidth, height: this.minHeight },\n      skipUpdate\n    );\n    return this;\n  }\n  setMinHeight(minHeight, skipUpdate = false) {\n    this._minSize$.setValue(\n      { width: this.minWidth, height: minHeight },\n      skipUpdate\n    );\n    return this;\n  }\n  get intrinsicWidth() {\n    return this._intrinsicSize$.value.width;\n  }\n  get intrinsicHeight() {\n    return this._intrinsicSize$.value.height;\n  }\n  resize(width, height, skipUpdate = false) {\n    this._intrinsicSize$.setValue({ width, height }, skipUpdate);\n    return this;\n  }\n  get width() {\n    return this._size$.value.width;\n  }\n  get height() {\n    return this._size$.value.height;\n  }\n  get absoluteWidth() {\n    return this.width * this.containerRect.width;\n  }\n  get absoluteHeight() {\n    return this.height * this.containerRect.height;\n  }\n  get visualWidth() {\n    return this._visualSize$.value.width;\n  }\n  get visualHeight() {\n    return this._visualSize$.value.height;\n  }\n  get intrinsicX() {\n    return this._intrinsicCoord$.value.x;\n  }\n  get intrinsicY() {\n    return this._intrinsicCoord$.value.y;\n  }\n  move(x, y, skipUpdate = false) {\n    this._intrinsicCoord$.setValue({ x, y }, skipUpdate);\n    return this;\n  }\n  get x() {\n    return this._coord$.value.x;\n  }\n  get y() {\n    return this._coord$.value.y;\n  }\n  transform(x, y, width, height, skipUpdate = false) {\n    if (this.fixRatio) {\n      const newHeight = this.intrinsicHeight / this.intrinsicWidth * width;\n      if (y !== this.intrinsicY) {\n        y -= newHeight - height;\n      }\n      height = newHeight;\n    }\n    if (y < 0) {\n      y = 0;\n      if (height > this.intrinsicHeight) {\n        height = this.intrinsicHeight;\n      }\n    }\n    this._intrinsicCoord$.setValue(\n      {\n        x: width >= this.minWidth ? x : this.intrinsicX,\n        y: height >= this.minHeight ? y : this.intrinsicY\n      },\n      skipUpdate\n    );\n    this._intrinsicSize$.setValue(\n      {\n        width: clamp(width, this.minWidth, 1),\n        height: clamp(height, this.minHeight, 1)\n      },\n      skipUpdate\n    );\n    return this;\n  }\n  mount(container) {\n    container.appendChild(this.render());\n    return this;\n  }\n  unmount() {\n    if (this.$box) {\n      this.$box.remove();\n    }\n    return this;\n  }\n  mountContent(content) {\n    this.set$userContent(content);\n    return this;\n  }\n  unmountContent() {\n    this.set$userContent(void 0);\n    return this;\n  }\n  mountFooter(footer) {\n    this.set$userFooter(footer);\n    return this;\n  }\n  unmountFooter() {\n    this.set$userFooter(void 0);\n    return this;\n  }\n  getUserStyles() {\n    return this.$userStyles;\n  }\n  mountStyles(styles) {\n    let $styles;\n    if (typeof styles === \"string\") {\n      $styles = document.createElement(\"style\");\n      $styles.textContent = styles;\n    } else {\n      $styles = styles;\n    }\n    this.set$userStyles($styles);\n    return this;\n  }\n  unmountStyles() {\n    this.set$userStyles(void 0);\n    return this;\n  }\n  render(root) {\n    if (root) {\n      if (root === this.$box) {\n        return this.$box;\n      } else {\n        this.$box = root;\n      }\n    } else {\n      if (this.$box) {\n        return this.$box;\n      } else {\n        this.$box = document.createElement(\"div\");\n      }\n    }\n    this._renderSideEffect.flushAll();\n    this.$box.classList.add(this.wrapClassName(\"box\"));\n    const bindClassName = (el, val, className, predicate = isTruthy) => {\n      return this._renderSideEffect.add(() => {\n        const wrappedClassName = this.wrapClassName(className);\n        return val.subscribe((value) => {\n          el.classList.toggle(wrappedClassName, predicate(value));\n        });\n      });\n    };\n    bindClassName(this.$box, this._readonly$, \"readonly\");\n    bindClassName(this.$box, this._draggable$, \"no-drag\", isFalsy);\n    bindClassName(this.$box, this._resizable$, \"no-resize\", isFalsy);\n    bindClassName(this.$box, this._focus$, \"blur\", isFalsy);\n    bindClassName(this.$box, this._darkMode$, \"color-scheme-dark\");\n    bindClassName(\n      this.$box,\n      this._darkMode$,\n      \"color-scheme-light\",\n      isFalsy\n    );\n    this._renderSideEffect.add(() => {\n      const minimizedClassName = this.wrapClassName(\"minimized\");\n      const maximizedClassName = this.wrapClassName(\"maximized\");\n      const MAXIMIZED_TIMER_ID = \"box-maximized-timer\";\n      return this._state$.subscribe((state) => {\n        this.$box.classList.toggle(\n          minimizedClassName,\n          state === TELE_BOX_STATE.Minimized\n        );\n        if (state === TELE_BOX_STATE.Maximized) {\n          this._renderSideEffect.flush(MAXIMIZED_TIMER_ID);\n          this.$box.classList.toggle(maximizedClassName, true);\n        } else {\n          this._renderSideEffect.setTimeout(\n            () => {\n              this.$box.classList.toggle(\n                maximizedClassName,\n                false\n              );\n            },\n            0,\n            MAXIMIZED_TIMER_ID\n          );\n        }\n      });\n    });\n    this._renderSideEffect.add(\n      () => this._visible$.subscribe((visible) => {\n        if (visible) {\n          this.$box.style.removeProperty(\"display\");\n        } else {\n          this.$box.style.display = \"none\";\n        }\n      })\n    );\n    this._renderSideEffect.add(\n      () => this._zIndex$.subscribe((zIndex) => {\n        this.$box.style.zIndex = String(zIndex);\n      })\n    );\n    const boxStyler = index(this.$box);\n    this.$box.dataset.teleBoxID = this.id;\n    this.$box.style.width = this.absoluteWidth + \"px\";\n    this.$box.style.height = this.absoluteHeight + \"px\";\n    const translateX = this.x * this.containerRect.width + this.containerRect.x;\n    const translateY = this.y * this.containerRect.height + this.containerRect.y;\n    this.$box.style.transform = `translate(${translateX - 10}px,${translateY - 10}px)`;\n    this._valSideEffectBinder.combine(\n      [\n        this._coord$,\n        this._size$,\n        this._minimized$,\n        this._containerRect$,\n        this._collectorRect$,\n        this._boxStatus$\n      ],\n      ([coord, size, minimized, containerRect, collectorRect, boxStatus]) => {\n        const absoluteWidth = size.width * containerRect.width;\n        const absoluteHeight = size.height * containerRect.height;\n        return {\n          width: absoluteWidth + ((minimized || boxStatus === TELE_BOX_STATE.Minimized) && collectorRect ? 1 : 0),\n          height: absoluteHeight + ((minimized || boxStatus === TELE_BOX_STATE.Minimized) && collectorRect ? 1 : 0),\n          x: coord.x * containerRect.width,\n          y: coord.y * containerRect.height,\n          scaleX: (minimized || boxStatus === TELE_BOX_STATE.Minimized) && collectorRect ? collectorRect.width / absoluteWidth : 1,\n          scaleY: (minimized || boxStatus === TELE_BOX_STATE.Minimized) && collectorRect ? collectorRect.height / absoluteHeight : 1\n        };\n      },\n      shallowequal\n    ).subscribe((styles) => {\n      boxStyler.set(styles);\n    });\n    boxStyler.set({ x: translateX, y: translateY });\n    const $boxMain = document.createElement(\"div\");\n    $boxMain.className = this.wrapClassName(\"box-main\");\n    this.$box.appendChild($boxMain);\n    const $titleBar = document.createElement(\"div\");\n    $titleBar.className = this.wrapClassName(\"titlebar-wrap\");\n    $titleBar.appendChild(this.titleBar.render());\n    this.$titleBar = $titleBar;\n    const $contentWrap = document.createElement(\"div\");\n    $contentWrap.className = this.wrapClassName(\"content-wrap\");\n    const $content = document.createElement(\"div\");\n    $content.className = this.wrapClassName(\"content\") + \" tele-fancy-scrollbar\";\n    this.$content = $content;\n    if (this.isDragContent) {\n      this.$content.appendChild(this.titleBar.$dragArea);\n    }\n    this._renderSideEffect.add(() => {\n      let last$userStyles;\n      return this._$userStyles$.subscribe(($userStyles) => {\n        if (last$userStyles) {\n          last$userStyles.remove();\n        }\n        last$userStyles = $userStyles;\n        if ($userStyles) {\n          $contentWrap.appendChild($userStyles);\n        }\n      });\n    });\n    this._renderSideEffect.add(() => {\n      let last$userContent;\n      return this._$userContent$.subscribe(($userContent) => {\n        if (last$userContent) {\n          last$userContent.remove();\n        }\n        last$userContent = $userContent;\n        if ($userContent) {\n          $content.appendChild($userContent);\n        }\n      });\n    });\n    $contentWrap.appendChild($content);\n    const $footer = document.createElement(\"div\");\n    $footer.className = this.wrapClassName(\"footer-wrap\");\n    this.$footer = $footer;\n    this._renderSideEffect.add(() => {\n      let last$userFooter;\n      return this._$userFooter$.subscribe(($userFooter) => {\n        if (last$userFooter) {\n          last$userFooter.remove();\n        }\n        last$userFooter = $userFooter;\n        if ($userFooter) {\n          $footer.appendChild($userFooter);\n        }\n      });\n    });\n    $boxMain.appendChild($titleBar);\n    $boxMain.appendChild($contentWrap);\n    $boxMain.appendChild($footer);\n    this._renderResizeHandlers();\n    return this.$box;\n  }\n  _renderResizeHandlers() {\n    const $resizeHandles = document.createElement(\"div\");\n    $resizeHandles.className = this.wrapClassName(\"resize-handles\");\n    Object.values(TELE_BOX_RESIZE_HANDLE).forEach((handleType) => {\n      const $handle = document.createElement(\"div\");\n      $handle.className = this.wrapClassName(handleType) + \" \" + this.wrapClassName(\"resize-handle\");\n      $handle.dataset.teleBoxHandle = handleType;\n      $resizeHandles.appendChild($handle);\n    });\n    this.$box.appendChild($resizeHandles);\n    const TRACKING_DISPOSER_ID = \"handle-tracking-listener\";\n    const transformingClassName = this.wrapClassName(\"transforming\");\n    let $trackMask;\n    let trackStartX = 0;\n    let trackStartY = 0;\n    let trackStartWidth = 0;\n    let trackStartHeight = 0;\n    let trackStartPageX = 0;\n    let trackStartPageY = 0;\n    let trackingHandle;\n    const handleTracking = (ev) => {\n      if (this.state !== TELE_BOX_STATE.Normal) {\n        return;\n      }\n      preventEvent(ev);\n      let { pageX, pageY } = flattenEvent(ev);\n      if (pageY < 0) {\n        pageY = 0;\n      }\n      const offsetX = (pageX - trackStartPageX) / this.containerRect.width;\n      const offsetY = (pageY - trackStartPageY) / this.containerRect.height;\n      switch (trackingHandle) {\n        case TELE_BOX_RESIZE_HANDLE.North: {\n          this.transform(\n            this.x,\n            trackStartY + offsetY,\n            this.width,\n            trackStartHeight - offsetY\n          );\n          break;\n        }\n        case TELE_BOX_RESIZE_HANDLE.South: {\n          this.transform(\n            this.x,\n            this.y,\n            this.width,\n            trackStartHeight + offsetY\n          );\n          break;\n        }\n        case TELE_BOX_RESIZE_HANDLE.West: {\n          this.transform(\n            trackStartX + offsetX,\n            this.y,\n            trackStartWidth - offsetX,\n            this.height\n          );\n          break;\n        }\n        case TELE_BOX_RESIZE_HANDLE.East: {\n          this.transform(\n            this.x,\n            this.y,\n            trackStartWidth + offsetX,\n            this.height\n          );\n          break;\n        }\n        case TELE_BOX_RESIZE_HANDLE.NorthWest: {\n          this.transform(\n            trackStartX + offsetX,\n            trackStartY + offsetY,\n            trackStartWidth - offsetX,\n            trackStartHeight - offsetY\n          );\n          break;\n        }\n        case TELE_BOX_RESIZE_HANDLE.NorthEast: {\n          this.transform(\n            this.x,\n            trackStartY + offsetY,\n            trackStartWidth + offsetX,\n            trackStartHeight - offsetY\n          );\n          break;\n        }\n        case TELE_BOX_RESIZE_HANDLE.SouthEast: {\n          this.transform(\n            this.x,\n            this.y,\n            trackStartWidth + offsetX,\n            trackStartHeight + offsetY\n          );\n          break;\n        }\n        case TELE_BOX_RESIZE_HANDLE.SouthWest: {\n          this.transform(\n            trackStartX + offsetX,\n            this.y,\n            trackStartWidth - offsetX,\n            trackStartHeight + offsetY\n          );\n          break;\n        }\n        default: {\n          if (this.fence) {\n            this.move(\n              clamp(trackStartX + offsetX, 0, 1 - this.width),\n              clamp(trackStartY + offsetY, 0, 1 - this.height)\n            );\n          } else {\n            const xOverflowOffset = 20 / this.containerRect.width;\n            const yOverflowOffset = 20 / this.containerRect.height;\n            this.move(\n              clamp(\n                trackStartX + offsetX,\n                xOverflowOffset - this.width,\n                1 - xOverflowOffset\n              ),\n              clamp(trackStartY + offsetY, 0, 1 - yOverflowOffset)\n            );\n          }\n          break;\n        }\n      }\n    };\n    const handleTrackEnd = (ev) => {\n      trackingHandle = void 0;\n      if (!$trackMask) {\n        return;\n      }\n      preventEvent(ev);\n      this.$box.classList.toggle(transformingClassName, false);\n      this._sideEffect.flush(TRACKING_DISPOSER_ID);\n      $trackMask.remove();\n    };\n    const handleTrackStart = (ev) => {\n      var _a;\n      if (this.readonly) {\n        return;\n      }\n      if (ev.button != null && ev.button !== 0) {\n        return;\n      }\n      if (!this.draggable || trackingHandle || this.state !== TELE_BOX_STATE.Normal) {\n        return;\n      }\n      const target = ev.target;\n      if ((_a = target.dataset) == null ? void 0 : _a.teleBoxHandle) {\n        preventEvent(ev);\n        trackStartX = this.x;\n        trackStartY = this.y;\n        trackStartWidth = this.width;\n        trackStartHeight = this.height;\n        ({ pageX: trackStartPageX, pageY: trackStartPageY } = flattenEvent(ev));\n        trackingHandle = target.dataset.teleBoxHandle;\n        if (!$trackMask) {\n          $trackMask = document.createElement(\"div\");\n        }\n        const cursor = trackingHandle ? this.wrapClassName(`cursor-${trackingHandle}`) : \"\";\n        $trackMask.className = this.wrapClassName(\n          `track-mask${cursor ? ` ${cursor}` : \"\"}`\n        );\n        this.$box.appendChild($trackMask);\n        this.$box.classList.add(transformingClassName);\n        this._sideEffect.add(() => {\n          window.addEventListener(\"mousemove\", handleTracking);\n          window.addEventListener(\"touchmove\", handleTracking, {\n            passive: false\n          });\n          window.addEventListener(\"mouseup\", handleTrackEnd);\n          window.addEventListener(\"touchend\", handleTrackEnd, {\n            passive: false\n          });\n          window.addEventListener(\"touchcancel\", handleTrackEnd, {\n            passive: false\n          });\n          return () => {\n            window.removeEventListener(\"mousemove\", handleTracking);\n            window.removeEventListener(\"touchmove\", handleTracking);\n            window.removeEventListener(\"mouseup\", handleTrackEnd);\n            window.removeEventListener(\"touchend\", handleTrackEnd);\n            window.removeEventListener(\n              \"touchcancel\",\n              handleTrackEnd\n            );\n          };\n        }, TRACKING_DISPOSER_ID);\n      }\n    };\n    this._handleTrackStart = handleTrackStart;\n    this._sideEffect.addEventListener(\n      $resizeHandles,\n      \"mousedown\",\n      handleTrackStart,\n      {},\n      \"box-resizeHandles-mousedown\"\n    );\n    this._sideEffect.addEventListener(\n      $resizeHandles,\n      \"touchstart\",\n      handleTrackStart,\n      { passive: false },\n      \"box-resizeHandles-touchstart\"\n    );\n  }\n  destroy() {\n    this.$box.remove();\n    this.events.emit(TELE_BOX_EVENT.Destroyed);\n    this._sideEffect.flushAll();\n    this._renderSideEffect.flushAll();\n    this.events.removeAllListeners();\n    this._delegateEvents.removeAllListeners();\n  }\n  wrapClassName(className) {\n    return `${this.namespace}-${className}`;\n  }\n}\nfunction noop() {\n  return;\n}\nvar style$2 = \"\";\nvar collectorSVG = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxNiI+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzdCODhBMCIgc3Ryb2tlLXdpZHRoPSIxLjQiIGQ9Ik0uNyAxLjJoMTYuNnYxMy42SC43eiIgLz4KICAgICAgICA8cGF0aCBmaWxsPSIjN0I4OEEwIiBkPSJNNCA1LjVoNnYxLjRINHpNNCA5LjVoMTB2MS40SDR6IiAvPgogICAgPC9nPgo8L3N2Zz4K\";\nclass TeleBoxCollector {\n  constructor({\n    visible = true,\n    readonly = false,\n    darkMode = false,\n    namespace = \"telebox\",\n    styles = {},\n    onClick,\n    getBoxesStatus\n  }) {\n    this.$appMenuContainer = document.createElement(\"div\");\n    this.handleCollectorClick = () => {\n      if (!this._readonly && this.onClick) {\n        this.onClick();\n      }\n    };\n    this._visible = visible;\n    this._readonly = readonly;\n    this._darkMode = darkMode;\n    this.namespace = namespace;\n    this.styles = styles;\n    this.onClick = onClick;\n    this.getBoxesStatus = getBoxesStatus;\n  }\n  get boxesStatus() {\n    var _a;\n    return (_a = this.getBoxesStatus) == null ? void 0 : _a.call(this);\n  }\n  get visible() {\n    return this._visible;\n  }\n  get readonly() {\n    return this._readonly;\n  }\n  get darkMode() {\n    return this._darkMode;\n  }\n  mount(root) {\n    root.appendChild(this.render());\n    return this;\n  }\n  unmount() {\n    if (this.$collector) {\n      this.$collector.remove();\n    }\n    return this;\n  }\n  hasMinimizedBox() {\n    const boxesStatus = this.boxesStatus;\n    if (boxesStatus) {\n      for (const status of boxesStatus.values()) {\n        if (status === TELE_BOX_STATE.Minimized) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n  updateBoxesStatus() {\n    const hasMinimizedBox = this.hasMinimizedBox();\n    this.setVisible(hasMinimizedBox);\n  }\n  setVisible(visible) {\n    if (this._visible !== visible) {\n      this._visible = visible;\n      if (this.$collector) {\n        this.$collector.classList.toggle(\n          this.wrapClassName(\"collector-visible\"),\n          visible\n        );\n      }\n    }\n    return this;\n  }\n  setReadonly(readonly) {\n    if (this._readonly !== readonly) {\n      this._readonly = readonly;\n      if (this.$collector) {\n        this.$collector.classList.toggle(\n          this.wrapClassName(\"collector-readonly\"),\n          readonly\n        );\n      }\n    }\n    return this;\n  }\n  setDarkMode(darkMode) {\n    if (this._darkMode !== darkMode) {\n      this._darkMode = darkMode;\n      if (this.$collector) {\n        this.$collector.classList.toggle(\n          this.wrapClassName(\"color-scheme-dark\"),\n          darkMode\n        );\n        this.$collector.classList.toggle(\n          this.wrapClassName(\"color-scheme-light\"),\n          !darkMode\n        );\n      }\n    }\n    return this;\n  }\n  setStyles(styles) {\n    Object.assign(this.styles, styles);\n    if (this.$collector) {\n      const $collector = this.$collector;\n      Object.keys(styles).forEach((key) => {\n        const value = styles[key];\n        if (value != null) {\n          $collector.style[key] = value;\n        }\n      });\n    }\n    return this;\n  }\n  render() {\n    if (!this.$collector) {\n      this.$collector = document.createElement(\"button\");\n      this.$collector.className = this.wrapClassName(\"collector\");\n      this.$collector.style.backgroundImage = `url('${collectorSVG}')`;\n      this.$collector.addEventListener(\n        \"click\",\n        this.handleCollectorClick\n      );\n      if (this._visible) {\n        this.$collector.classList.add(\n          this.wrapClassName(\"collector-visible\")\n        );\n      }\n      if (this._readonly) {\n        this.$collector.classList.add(\n          this.wrapClassName(\"collector-readonly\")\n        );\n      }\n      this.$collector.classList.add(\n        this.wrapClassName(\n          this._darkMode ? \"color-scheme-dark\" : \"color-scheme-light\"\n        )\n      );\n      this.$appMenuContainer.classList.add(this.wrapClassName(\"collector-shadow\"));\n      this.$collector.append(this.$appMenuContainer);\n      this.setStyles(this.styles);\n    }\n    return this.$collector;\n  }\n  destroy() {\n    if (this.$collector) {\n      this.$collector.removeEventListener(\n        \"click\",\n        this.handleCollectorClick\n      );\n      this.$collector.remove();\n      this.$collector = void 0;\n    }\n    this.onClick = void 0;\n  }\n  wrapClassName(className) {\n    return `${this.namespace}-${className}`;\n  }\n}\nTeleBoxCollector.kind = \"TeleBoxCollector\";\nvar TELE_BOX_MANAGER_EVENT = /* @__PURE__ */ ((TELE_BOX_MANAGER_EVENT2) => {\n  TELE_BOX_MANAGER_EVENT2[\"Focused\"] = \"focused\";\n  TELE_BOX_MANAGER_EVENT2[\"Blurred\"] = \"blurred\";\n  TELE_BOX_MANAGER_EVENT2[\"Created\"] = \"created\";\n  TELE_BOX_MANAGER_EVENT2[\"Removed\"] = \"removed\";\n  TELE_BOX_MANAGER_EVENT2[\"State\"] = \"state\";\n  TELE_BOX_MANAGER_EVENT2[\"Maximized\"] = \"maximized\";\n  TELE_BOX_MANAGER_EVENT2[\"Minimized\"] = \"minimized\";\n  TELE_BOX_MANAGER_EVENT2[\"Move\"] = \"move\";\n  TELE_BOX_MANAGER_EVENT2[\"Resize\"] = \"resize\";\n  TELE_BOX_MANAGER_EVENT2[\"IntrinsicMove\"] = \"intrinsic_move\";\n  TELE_BOX_MANAGER_EVENT2[\"IntrinsicResize\"] = \"intrinsic_resize\";\n  TELE_BOX_MANAGER_EVENT2[\"VisualResize\"] = \"visual_resize\";\n  TELE_BOX_MANAGER_EVENT2[\"ZIndex\"] = \"z_index\";\n  TELE_BOX_MANAGER_EVENT2[\"PrefersColorScheme\"] = \"prefers_color_scheme\";\n  TELE_BOX_MANAGER_EVENT2[\"DarkMode\"] = \"dark_mode\";\n  TELE_BOX_MANAGER_EVENT2[\"BoxStatus\"] = \"box_status\";\n  TELE_BOX_MANAGER_EVENT2[\"LastNotMinimizedBoxStatus\"] = \"last_not_minimized_box_status\";\n  return TELE_BOX_MANAGER_EVENT2;\n})(TELE_BOX_MANAGER_EVENT || {});\nvar style$1 = \"\";\nclass MaxTitleBar extends DefaultTitleBar {\n  constructor(config) {\n    super(config);\n    this.boxes = config.boxes;\n    this.focusedBox = config.focusedBox;\n    this.containerRect = config.containerRect;\n    this.darkMode = config.darkMode;\n    this.getBoxesStatus = config.getBoxesStatus;\n  }\n  get boxesStatus() {\n    var _a;\n    return (_a = this.getBoxesStatus) == null ? void 0 : _a.call(this);\n  }\n  hasMaximizedBoxInStatus() {\n    if (this.getBoxesStatus) {\n      const boxesStatus = this.getBoxesStatus();\n      if (boxesStatus.size) {\n        const hasMaximizedBox = [...boxesStatus.values()].find((state) => state === TELE_BOX_STATE.Maximized);\n        return !!hasMaximizedBox;\n      }\n    }\n    return false;\n  }\n  get MaximizedBoxes() {\n    if (this.getBoxesStatus) {\n      const boxesStatus = this.getBoxesStatus();\n      if (boxesStatus) {\n        return this.boxes.filter((box) => boxesStatus && boxesStatus.get(box.id) === TELE_BOX_STATE.Maximized && !box.forceTop);\n      }\n    }\n    return [];\n  }\n  focusBox(box) {\n    var _a, _b;\n    if (this.focusedBox && this.focusedBox === box) {\n      return;\n    }\n    if (this.$titles) {\n      const { children } = this.$titles.firstElementChild;\n      if (this.state === TELE_BOX_STATE.Maximized && !this.hasMaximizedBoxInStatus()) {\n        for (let i2 = children.length - 1; i2 >= 0; i2 -= 1) {\n          const $tab = children[i2];\n          const id = (_a = $tab.dataset) == null ? void 0 : _a.teleBoxID;\n          if (id) {\n            if (box && id === box.id) {\n              $tab.classList.toggle(\n                this.wrapClassName(\"titles-tab-focus\"),\n                true\n              );\n            } else if (this.focusedBox && id === this.focusedBox.id) {\n              $tab.classList.toggle(\n                this.wrapClassName(\"titles-tab-focus\"),\n                false\n              );\n            }\n          }\n        }\n      } else if (this.hasMaximizedBoxInStatus()) {\n        for (let i2 = children.length - 1; i2 >= 0; i2 -= 1) {\n          const $tab = children[i2];\n          const id = (_b = $tab.dataset) == null ? void 0 : _b.teleBoxID;\n          if (id) {\n            if (box && id === box.id) {\n              $tab.classList.toggle(\n                this.wrapClassName(\"titles-tab-focus\"),\n                true\n              );\n            } else if (this.focusedBox && id === this.focusedBox.id) {\n              $tab.classList.toggle(\n                this.wrapClassName(\"titles-tab-focus\"),\n                false\n              );\n            }\n          }\n        }\n      }\n    }\n    this.focusedBox = box;\n  }\n  setContainerRect(rect) {\n    this.containerRect = rect;\n    if (this.$titleBar) {\n      const { x, y, width } = rect;\n      this.$titleBar.style.transform = `translate(${x}px, ${y}px)`;\n      this.$titleBar.style.width = width + \"px\";\n    }\n  }\n  updateBoxesStatus() {\n    if (this.hasMaximizedBoxInStatus()) {\n      this.setBoxStatus(TELE_BOX_STATE.Maximized);\n    }\n    if (this.$titleBar) {\n      this.$titleBar.classList.toggle(\n        this.wrapClassName(\"max-titlebar-maximized\"),\n        this.state === TELE_BOX_STATE.Maximized && this.boxes.length > 0 || this.hasMaximizedBoxInStatus()\n      );\n    }\n    this.updateTitles();\n  }\n  setBoxes(boxes) {\n    this.boxes = boxes;\n    if (this.$titleBar) {\n      this.$titleBar.classList.toggle(\n        this.wrapClassName(\"max-titlebar-maximized\"),\n        this.state === TELE_BOX_STATE.Maximized && boxes.length > 0 || this.hasMaximizedBoxInStatus()\n      );\n    }\n    this.updateTitles();\n  }\n  setState(state) {\n    super.setState(state);\n    if (this.$titleBar) {\n      this.$titleBar.classList.toggle(\n        this.wrapClassName(\"max-titlebar-maximized\"),\n        state === TELE_BOX_STATE.Maximized && this.boxes.length > 0 || this.hasMaximizedBoxInStatus()\n      );\n    }\n    this.updateTitles();\n  }\n  setReadonly(readonly) {\n    super.setReadonly(readonly);\n    if (this.$titleBar) {\n      this.$titleBar.classList.toggle(\n        this.wrapClassName(\"readonly\"),\n        this.readonly\n      );\n    }\n  }\n  setDarkMode(darkMode) {\n    if (darkMode !== this.darkMode) {\n      this.darkMode = darkMode;\n      if (this.$titleBar) {\n        this.$titleBar.classList.toggle(\n          this.wrapClassName(\"color-scheme-dark\"),\n          darkMode\n        );\n        this.$titleBar.classList.toggle(\n          this.wrapClassName(\"color-scheme-light\"),\n          !darkMode\n        );\n      }\n    }\n  }\n  render() {\n    const $titleBar = super.render();\n    const { x, y, width } = this.containerRect;\n    $titleBar.style.transform = `translate(${x}px, ${y}px)`;\n    $titleBar.style.width = width + \"px\";\n    $titleBar.classList.add(this.wrapClassName(\"max-titlebar\"));\n    $titleBar.classList.toggle(\n      this.wrapClassName(\"max-titlebar-maximized\"),\n      this.state === TELE_BOX_STATE.Maximized && this.boxes.length > 0\n    );\n    $titleBar.classList.toggle(\n      this.wrapClassName(\"readonly\"),\n      this.readonly\n    );\n    $titleBar.classList.add(\n      this.wrapClassName(\n        this.darkMode ? \"color-scheme-dark\" : \"color-scheme-light\"\n      )\n    );\n    const $titlesArea = document.createElement(\"div\");\n    $titlesArea.classList.add(this.wrapClassName(\"titles-area\"));\n    $titleBar.insertBefore($titlesArea, $titleBar.firstElementChild);\n    this.updateTitles();\n    return $titleBar;\n  }\n  destroy() {\n    super.destroy();\n    this.$titles = void 0;\n    this.boxes.length = 0;\n    this.focusedBox = void 0;\n  }\n  updateTitles() {\n    if (this.$titleBar && (this.state === TELE_BOX_STATE.Maximized || this.hasMaximizedBoxInStatus())) {\n      this.$titleBar.classList.toggle(\n        this.wrapClassName(\"max-titlebar-single-title\"),\n        this.boxes.length === 1 || this.hasMaximizedBoxInStatus() && this.MaximizedBoxes.length === 1\n      );\n      if (this.boxes.length === 1 || this.hasMaximizedBoxInStatus() && this.MaximizedBoxes.length === 1) {\n        this.setTitle(this.boxes[0].title);\n      } else {\n        this.$titleBar.replaceChild(\n          this.renderTitles(),\n          this.$titleBar.firstElementChild\n        );\n      }\n    }\n  }\n  renderTitles() {\n    this.$titles = document.createElement(\"div\");\n    this.$titles.className = this.wrapClassName(\"titles\");\n    this.$titles.addEventListener(\n      \"wheel\",\n      (ev) => {\n        ev.currentTarget.scrollBy({\n          left: ev.deltaY > 0 ? 250 : -250,\n          behavior: \"smooth\"\n        });\n      },\n      { passive: false }\n    );\n    const $content = document.createElement(\"div\");\n    $content.className = this.wrapClassName(\"titles-content\");\n    this.$titles.appendChild($content);\n    (this.hasMaximizedBoxInStatus() ? this.MaximizedBoxes : this.boxes).forEach((box) => {\n      const $tab = document.createElement(\"button\");\n      $tab.className = this.wrapClassName(\"titles-tab\");\n      $tab.textContent = box.title;\n      $tab.dataset.teleBoxID = box.id;\n      $tab.dataset.teleTitleBarNoDblClick = \"true\";\n      if (this.focusedBox && box.id === this.focusedBox.id) {\n        $tab.classList.add(this.wrapClassName(\"titles-tab-focus\"));\n      }\n      $content.appendChild($tab);\n    });\n    return this.$titles;\n  }\n}\nvar style = \"\";\nclass AppMenu {\n  constructor(props) {\n    this.namespace = \"telebox-app-menu\";\n    this.badge = document.createElement(\"div\");\n    this.menuView = document.createElement(\"div\");\n    this.containerClickHandler = () => {\n      if (this.manager.readonly) {\n        return;\n      }\n      const isShowMenuView = getComputedStyle(this.menuView).display === \"flex\";\n      if (isShowMenuView) {\n        this.menuView.style.display = \"none\";\n      } else {\n        this.menuView.style.display = \"flex\";\n      }\n    };\n    this.menuViewClickHandler = (e2) => {\n      e2.stopPropagation();\n      e2.stopImmediatePropagation();\n      const target = e2.target;\n      const id = target.getAttribute(`data-${this.c(\"app-id\")}`);\n      if (id) {\n        const lastNotMinimizedBoxStatus = this.manager.getLastNotMinimizedBoxStatus(id) || TELE_BOX_STATE.Normal;\n        const zIndex = (lastNotMinimizedBoxStatus === TELE_BOX_STATE.Maximized ? this.manager.getMaxMaximizedBoxZIndex() : this.manager.getMaxNormalBoxZIndex()) + 1;\n        this.manager.setBox(id, {\n          status: lastNotMinimizedBoxStatus,\n          zIndex\n        }, false, () => {\n          this.manager.focusBox(id);\n        });\n        return;\n      }\n    };\n    this.updatePrefersColorSchemeHandler = () => {\n      this.container.classList.remove(this.theme);\n      this.theme = this.manager.prefersColorScheme;\n      this.container.classList.add(this.theme);\n    };\n    this.appMenuChange = () => {\n      const minimizedBoxesStatus = this.manager.getMinimizedBoxesStatus();\n      this.render(minimizedBoxesStatus);\n    };\n    this.container = props.container;\n    this.manager = props.manager;\n    this.theme = props.theme;\n    this.getBoxesStatus = props.getBoxesStatus;\n    this.init();\n  }\n  get boxesStatus() {\n    var _a;\n    return ((_a = this.getBoxesStatus) == null ? void 0 : _a.call(this)) || /* @__PURE__ */ new Map();\n  }\n  get minimizedBoxesStatus() {\n    const arr = [];\n    this.boxesStatus.forEach((status) => {\n      if (status === TELE_BOX_STATE.Minimized) {\n        arr.push(status);\n      }\n    });\n    return arr;\n  }\n  c(className) {\n    return `${this.namespace}-${className}`;\n  }\n  setContainer(container) {\n    if (this.container) {\n      this.container.remove();\n    }\n    this.container = container;\n    this.init();\n  }\n  createDefaultAppMenu() {\n    this.badge.classList.add(this.c(\"app-menu-badge\"));\n    this.menuView.classList.add(this.c(\"app-menu-tooltip\"));\n    this.container.classList.add(this.c(\"app-menu-container\"), this.theme);\n    this.menuView.addEventListener(\"click\", this.menuViewClickHandler);\n    this.container.append(this.badge, this.menuView);\n  }\n  async init() {\n    this.createDefaultAppMenu();\n    this.appMenuChange();\n  }\n  createMinimizedItem(appId) {\n    const appItem = document.createElement(\"div\");\n    appItem.classList.add(this.c(\"app-menu-item\"));\n    appItem.setAttribute(`data-${this.c(\"app-id\")}`, appId);\n    const titleDiv = document.createElement(\"div\");\n    titleDiv.classList.add(this.c(\"app-menu-item-title\"));\n    const app = this.manager.getBox(appId);\n    titleDiv.innerText = (app == null ? void 0 : app.title) || appId;\n    appItem.appendChild(titleDiv);\n    return appItem;\n  }\n  renderMenuView(minimizedBoxesStatus) {\n    const items = [];\n    minimizedBoxesStatus.forEach((_, appId) => {\n      items.push(this.createMinimizedItem(appId));\n    });\n    this.menuView.append(...items);\n  }\n  render(minimizedBoxesStatus) {\n    this.menuView.style.display = \"none\";\n    this.badge.innerText = \"\";\n    this.menuView.innerHTML = \"\";\n    if (minimizedBoxesStatus.size === 0) {\n      this.container.style.display = \"none\";\n    } else {\n      this.badge.innerText = minimizedBoxesStatus.size.toString();\n      this.renderMenuView(minimizedBoxesStatus);\n      this.container.style.display = \"block\";\n    }\n  }\n  destroy() {\n    this.badge.remove();\n    this.menuView.removeEventListener(\"click\", this.menuViewClickHandler);\n    this.menuView.remove();\n    this.container.remove();\n  }\n}\nclass TeleBoxManager {\n  constructor({\n    root = document.body,\n    prefersColorScheme = TELE_BOX_COLOR_SCHEME.Light,\n    minimized = false,\n    maximized = false,\n    fence = true,\n    containerRect = {\n      x: 0,\n      y: 0,\n      width: window.innerWidth,\n      height: window.innerHeight\n    },\n    collector,\n    namespace = \"telebox\",\n    readonly = false,\n    useBoxesStatus = false\n  } = {}) {\n    this.events = new EventEmitter();\n    this._sideEffect = new o();\n    this.useBoxesStatus = useBoxesStatus;\n    const { combine, createVal } = c(this._sideEffect);\n    this.root = root;\n    this.namespace = namespace;\n    this.boxes$ = createVal([]);\n    this.topBox$ = this.boxes$.derive((boxes) => {\n      if (boxes.length > 0) {\n        let currentTopBox = void 0;\n        const topBox = boxes.reduce((topBox2, box) => {\n          if (box.forceTop) {\n            return topBox2;\n          }\n          if (box.boxStatus && box.boxStatus === TELE_BOX_STATE.Minimized) {\n            return topBox2;\n          }\n          if (!topBox2) {\n            topBox2 = box;\n            return topBox2;\n          }\n          return topBox2.zIndex > box.zIndex ? topBox2 : box;\n        }, currentTopBox);\n        return topBox;\n      }\n      return;\n    });\n    this.boxesStatus$ = /* @__PURE__ */ new Map();\n    this.lastNotMinimizedBoxesStatus$ = /* @__PURE__ */ new Map();\n    const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\");\n    const prefersDark$ = createVal(false);\n    if (prefersDark) {\n      prefersDark$.setValue(prefersDark.matches);\n      this._sideEffect.add(() => {\n        const handler = (evt) => {\n          prefersDark$.setValue(evt.matches);\n        };\n        prefersDark.addListener(handler);\n        return () => prefersDark.removeListener(handler);\n      });\n    }\n    const prefersColorScheme$ = createVal(prefersColorScheme);\n    prefersColorScheme$.reaction((prefersColorScheme2, _, skipUpdate) => {\n      this.boxes.forEach(\n        (box) => box.setPrefersColorScheme(prefersColorScheme2, skipUpdate)\n      );\n      if (!skipUpdate) {\n        this.events.emit(\n          TELE_BOX_MANAGER_EVENT.PrefersColorScheme,\n          prefersColorScheme2\n        );\n      }\n    });\n    this._darkMode$ = combine(\n      [prefersDark$, prefersColorScheme$],\n      ([prefersDark2, prefersColorScheme2]) => prefersColorScheme2 === \"auto\" ? prefersDark2 : prefersColorScheme2 === \"dark\"\n    );\n    this._darkMode$.reaction((darkMode, _, skipUpdate) => {\n      this.boxes.forEach((box) => box.setDarkMode(darkMode, skipUpdate));\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_MANAGER_EVENT.DarkMode, darkMode);\n      }\n    });\n    const readonly$ = createVal(readonly);\n    readonly$.reaction((readonly2, _, skipUpdate) => {\n      this.boxes.forEach((box) => box.setReadonly(readonly2, skipUpdate));\n    });\n    const minimized$ = createVal(minimized);\n    const maximized$ = createVal(maximized);\n    maximized$.reaction((maximized2, _, skipUpdate) => {\n      this.boxes.forEach(\n        (box) => box.setMaximized(maximized2, skipUpdate)\n      );\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_MANAGER_EVENT.Maximized, maximized2);\n      }\n    });\n    const state$ = combine(\n      [minimized$, maximized$],\n      ([minimized2, maximized2]) => minimized2 ? TELE_BOX_STATE.Minimized : maximized2 ? TELE_BOX_STATE.Maximized : TELE_BOX_STATE.Normal\n    );\n    state$.reaction((state, _, skipUpdate) => {\n      this.maxTitleBar.setState(state);\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_MANAGER_EVENT.State, state);\n      }\n    });\n    const fence$ = createVal(fence);\n    fence$.subscribe((fence2, _, skipUpdate) => {\n      this.boxes.forEach((box) => box.setFence(fence2, skipUpdate));\n    });\n    const containerRect$ = createVal(containerRect, shallowequal);\n    containerRect$.reaction((containerRect2, _, skipUpdate) => {\n      this.boxes.forEach(\n        (box) => box.setContainerRect(containerRect2, skipUpdate)\n      );\n      this.maxTitleBar.setContainerRect(containerRect2);\n    });\n    const collector$ = createVal(\n      collector === null ? null : collector || new TeleBoxCollector({\n        visible: minimized,\n        readonly,\n        namespace\n      }).mount(root)\n    );\n    collector$.subscribe((collector2) => {\n      if (collector2) {\n        collector2.setVisible(minimized$.value);\n        collector2.setReadonly(readonly$.value);\n        collector2.setDarkMode(this._darkMode$.value);\n        if (this.useBoxesStatus && this.appMenu) {\n          this.appMenu.setContainer(collector2.$appMenuContainer);\n        }\n        this._sideEffect.add(() => {\n          collector2.getBoxesStatus = () => {\n            return this.boxesStatus$;\n          };\n          collector2.onClick = () => {\n            if (!readonly$.value) {\n              if (!this.useBoxesStatus) {\n                minimized$.setValue(false);\n              } else if (this.useBoxesStatus && this.appMenu) {\n                this.appMenu.containerClickHandler();\n              }\n            }\n          };\n          return () => collector2.destroy();\n        }, \"collect-onClick\");\n      }\n    });\n    readonly$.subscribe(\n      (readonly2) => {\n        var _a;\n        return (_a = collector$.value) == null ? void 0 : _a.setReadonly(readonly2);\n      }\n    );\n    this._darkMode$.subscribe((darkMode) => {\n      var _a;\n      (_a = collector$.value) == null ? void 0 : _a.setDarkMode(darkMode);\n    });\n    this._calcCollectorRect = () => {\n      var _a;\n      if ((_a = collector$.value) == null ? void 0 : _a.$collector) {\n        const { x, y, width, height } = collector$.value.$collector.getBoundingClientRect();\n        const rootRect = this.root.getBoundingClientRect();\n        return {\n          x: x - rootRect.x,\n          y: y - rootRect.y,\n          width,\n          height\n        };\n      }\n      return;\n    };\n    this._setCollectorRect = (collectorRect) => {\n      var _a;\n      if ((_a = collector$.value) == null ? void 0 : _a.$collector) {\n        collectorRect$.setValue(collectorRect);\n      }\n    };\n    const collectorRect$ = createVal(\n      minimized$.value ? this._calcCollectorRect() : void 0\n    );\n    collectorRect$.subscribe((collectorRect, _, skipUpdate) => {\n      this.boxes.forEach((box) => {\n        box.setCollectorRect(collectorRect, skipUpdate);\n      });\n    });\n    minimized$.subscribe((minimized2, _, skipUpdate) => {\n      var _a;\n      (_a = collector$.value) == null ? void 0 : _a.setVisible(minimized2);\n      if (minimized2) {\n        this._setCollectorRect(this._calcCollectorRect());\n      }\n      this.boxes.forEach(\n        (box) => box.setMinimized(minimized2, skipUpdate)\n      );\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_MANAGER_EVENT.Minimized, minimized2);\n      }\n    });\n    const closeBtnClassName = this.wrapClassName(\"titlebar-icon-close\");\n    const checkFocusBox = (ev) => {\n      var _a;\n      if (readonly$.value) {\n        return;\n      }\n      const target = ev.target;\n      if (!target.tagName) {\n        return;\n      }\n      for (let el = target; el; el = el.parentElement) {\n        if (el.classList && el.classList.contains(closeBtnClassName)) {\n          return;\n        }\n        const id = (_a = el.dataset) == null ? void 0 : _a.teleBoxID;\n        if (id) {\n          const box = this.getBox(id);\n          if (box) {\n            if (!this.useBoxesStatus) {\n              this.makeBoxTop(box);\n            } else {\n              if (box.boxStatus && box.boxStatus === TELE_BOX_STATE.Normal) {\n                const maxNormalBoxZIndex = this.getMaxNormalBoxZIndex();\n                if (maxNormalBoxZIndex > box.zIndex) {\n                  this.setBox(box, {\n                    zIndex: maxNormalBoxZIndex + 1\n                  }, false);\n                }\n              } else if (box.boxStatus && box.boxStatus === TELE_BOX_STATE.Maximized) {\n                const maxMaximizedBoxZIndex = this.getMaxMaximizedBoxZIndex();\n                if (maxMaximizedBoxZIndex > box.zIndex) {\n                  this.setBox(box, {\n                    zIndex: maxMaximizedBoxZIndex + 1\n                  }, false);\n                }\n                this.makeMaximizedTopBoxFocus();\n              }\n            }\n            this.focusBox(box);\n            return;\n          }\n        }\n      }\n    };\n    this._sideEffect.addEventListener(\n      window,\n      \"mousedown\",\n      checkFocusBox,\n      true\n    );\n    this._sideEffect.addEventListener(\n      window,\n      \"touchstart\",\n      checkFocusBox,\n      true\n    );\n    this.maxTitleBar = new MaxTitleBar({\n      darkMode: this.darkMode,\n      readonly: readonly$.value,\n      namespace: this.namespace,\n      state: state$.value,\n      boxes: this.boxes$.value,\n      containerRect: containerRect$.value,\n      getBoxesStatus: () => {\n        return this.boxesStatus$;\n      },\n      onEvent: (event) => {\n        switch (event.type) {\n          case TELE_BOX_DELEGATE_EVENT.Maximize: {\n            if (this.hasBoxesStatus()) {\n              let targetBox = this.maxTitleBar.focusedBox;\n              if (!targetBox) {\n                targetBox = this.getMaximizedTopBox();\n              }\n              if (targetBox == null ? void 0 : targetBox.id) {\n                const box = this.getBox(targetBox.id);\n                if (box) {\n                  this.setBox(box, {\n                    status: TELE_BOX_STATE.Normal,\n                    zIndex: this.getMaxNormalBoxZIndex() + 1\n                  }, false, () => {\n                    this.makeMaximizedTopBoxFocus();\n                  });\n                }\n              }\n            } else {\n              maximized$.setValue(!maximized$.value);\n            }\n            break;\n          }\n          case TELE_BOX_DELEGATE_EVENT.Minimize: {\n            if (this.hasBoxesStatus()) {\n              let targetBox = this.maxTitleBar.focusedBox;\n              if (!targetBox) {\n                targetBox = this.getMaximizedTopBox();\n              }\n              if (targetBox == null ? void 0 : targetBox.id) {\n                const box = this.getBox(targetBox.id);\n                if (box) {\n                  let isFocusChanged = false;\n                  if (box.focus) {\n                    this.blurBox(box);\n                    isFocusChanged = true;\n                  }\n                  this.setBox(box, {\n                    status: TELE_BOX_STATE.Minimized,\n                    zIndex: -1\n                  }, false);\n                  if (isFocusChanged) {\n                    this.focusTopBox();\n                  } else {\n                    this.makeMaximizedTopBoxFocus();\n                  }\n                }\n              }\n            } else {\n              minimized$.setValue(true);\n            }\n            break;\n          }\n          case TELE_BOX_EVENT.Close: {\n            if (this.hasBoxesStatus()) {\n              let targetBox = this.maxTitleBar.focusedBox;\n              if (!targetBox) {\n                targetBox = this.getMaximizedTopBox();\n              }\n              if (targetBox == null ? void 0 : targetBox.id) {\n                const box = this.getBox(targetBox.id);\n                if (box) {\n                  let isFocusChanged = false;\n                  if (box.focus) {\n                    this.blurBox(box);\n                    isFocusChanged = true;\n                  }\n                  this.remove(box, false);\n                  if (isFocusChanged) {\n                    this.focusTopBox();\n                  } else {\n                    this.makeMaximizedTopBoxFocus();\n                  }\n                }\n              }\n            } else {\n              this.removeTopBox();\n              this.focusTopBox();\n            }\n            break;\n          }\n        }\n      }\n    });\n    readonly$.subscribe(\n      (readonly2) => this.maxTitleBar.setReadonly(readonly2)\n    );\n    this._darkMode$.subscribe((darkMode) => {\n      this.maxTitleBar.setDarkMode(darkMode);\n    });\n    this.boxes$.reaction((boxes) => {\n      this.maxTitleBar.setBoxes(boxes);\n    });\n    const valConfig = {\n      prefersColorScheme: prefersColorScheme$,\n      containerRect: containerRect$,\n      collector: collector$,\n      collectorRect: collectorRect$,\n      readonly: readonly$,\n      fence: fence$,\n      minimized: minimized$,\n      maximized: maximized$\n    };\n    i(this, valConfig);\n    this._state$ = state$;\n    this.root.appendChild(this.maxTitleBar.render());\n    if (useBoxesStatus) {\n      this.appMenu = this.createMinimizedAppMenu();\n    }\n  }\n  get boxes() {\n    return this.boxes$.value;\n  }\n  get topBox() {\n    return this.topBox$.value;\n  }\n  get forceTopBoxes() {\n    return this.boxes.find((box) => box.forceTop);\n  }\n  get maxForceTopBox() {\n    return this.boxes.reduce((maxTopBox, box) => {\n      var _a;\n      if (box.forceTop && box.zIndex > ((_a = maxTopBox == null ? void 0 : maxTopBox.zIndex) != null ? _a : 0)) {\n        return box;\n      }\n      return maxTopBox;\n    }, void 0);\n  }\n  get forceNormalBoxes() {\n    return this.boxes.find((box) => box.forceNormal);\n  }\n  get darkMode() {\n    return this._darkMode$.value;\n  }\n  get state() {\n    return this._state$.value;\n  }\n  setState(state, skipUpdate = false) {\n    switch (state) {\n      case TELE_BOX_STATE.Maximized: {\n        this.setMinimized(false, skipUpdate);\n        this.setMaximized(true, skipUpdate);\n        break;\n      }\n      case TELE_BOX_STATE.Minimized: {\n        this.setMinimized(true, skipUpdate);\n        this.setMaximized(false, skipUpdate);\n        break;\n      }\n      default: {\n        this.setMinimized(false, skipUpdate);\n        this.setMaximized(false, skipUpdate);\n        break;\n      }\n    }\n    return this;\n  }\n  setBoxStatus(boxId, boxStatus, skipUpdate = false) {\n    if (boxStatus) {\n      const oldBoxStatus = this.boxesStatus$.get(boxId);\n      this.boxesStatus$.set(boxId, boxStatus);\n      if (boxStatus === TELE_BOX_STATE.Minimized && oldBoxStatus !== TELE_BOX_STATE.Minimized) {\n        this.setLastNotMinimizedBoxStatus(boxId, oldBoxStatus, skipUpdate);\n      } else if (oldBoxStatus === TELE_BOX_STATE.Minimized && boxStatus !== TELE_BOX_STATE.Minimized) {\n        this.setLastNotMinimizedBoxStatus(boxId, void 0, skipUpdate);\n      }\n    } else {\n      this.boxesStatus$.delete(boxId);\n      this.setLastNotMinimizedBoxStatus(boxId, void 0, skipUpdate);\n    }\n    if (!skipUpdate) {\n      this.events.emit(TELE_BOX_MANAGER_EVENT.BoxStatus, { id: boxId, boxStatus });\n    }\n  }\n  getBoxStatus(boxId) {\n    return this.boxesStatus$.get(boxId);\n  }\n  get boxesStatus() {\n    return this.boxesStatus$;\n  }\n  get lastNotMinimizedBoxesStatus() {\n    return this.lastNotMinimizedBoxesStatus$;\n  }\n  setBoxesStatus(boxesStatus, skipUpdate = false) {\n    this.boxesStatus$ = boxesStatus;\n    this.effectBoxesStatusChange(skipUpdate);\n  }\n  getBoxesStatus() {\n    return this.boxesStatus$;\n  }\n  effectBoxStatusChange() {\n    if (!this.useBoxesStatus) {\n      return;\n    }\n    if (this.collector) {\n      this.collector.updateBoxesStatus();\n      if (this.hasMinimizedBox()) {\n        this._setCollectorRect(this._calcCollectorRect());\n      }\n    }\n    if (this.appMenu) {\n      this.appMenu.appMenuChange();\n    }\n    if (this.maxTitleBar) {\n      this.maxTitleBar.updateBoxesStatus();\n    }\n  }\n  effectBoxesStatusTimerFunc(skipUpdate) {\n    if (!this.useBoxesStatus) {\n      return;\n    }\n    let newTopBox;\n    const curTopBox = this.topBox;\n    this.boxes.forEach((box) => {\n      var _a;\n      const boxStatus = this.boxesStatus$.get(box.id);\n      if (boxStatus) {\n        if (boxStatus !== TELE_BOX_STATE.Minimized && !this.isForceTop(box) && box.zIndex > ((_a = newTopBox == null ? void 0 : newTopBox.zIndex) != null ? _a : 0)) {\n          newTopBox = box;\n        }\n        box.setBoxStatus(boxStatus, skipUpdate);\n      }\n    });\n    this.effectBoxStatusChange();\n    if (newTopBox && curTopBox !== newTopBox) {\n      this.topBox$.setValue(newTopBox);\n    }\n    if (!newTopBox && curTopBox) {\n      this.topBox$.setValue(void 0);\n    }\n  }\n  async effectBoxesStatusChange(skipUpdate = false) {\n    var _a, _b;\n    if (!this.useBoxesStatus) {\n      if (this.effectBoxesStatusTimer && this.effectBoxesStatusTimer.timer) {\n        clearTimeout(this.effectBoxesStatusTimer.timer);\n        if (this.effectBoxesStatusTimer.resolve) {\n          this.effectBoxesStatusTimer.resolve(!!((_a = this.effectBoxesStatusTimer) == null ? void 0 : _a.skipUpdate));\n        }\n      }\n      this.effectBoxesStatusTimer = void 0;\n      return;\n    }\n    if (this.effectBoxesStatusTimer && this.effectBoxesStatusTimer.timer) {\n      if (this.effectBoxesStatusTimer.skipUpdate !== skipUpdate) {\n        clearTimeout(this.effectBoxesStatusTimer.timer);\n        if (this.effectBoxesStatusTimer.resolve) {\n          this.effectBoxesStatusTimer.resolve(!!((_b = this.effectBoxesStatusTimer) == null ? void 0 : _b.skipUpdate));\n        }\n        this.effectBoxesStatusTimer.skipUpdate = skipUpdate;\n      } else {\n        return;\n      }\n    }\n    if (!this.effectBoxesStatusTimer) {\n      this.effectBoxesStatusTimer = {\n        skipUpdate,\n        timer: void 0,\n        resolve: void 0\n      };\n    }\n    if (this.effectBoxesStatusTimer) {\n      const _skipUpdate = await new Promise((resolve) => {\n        this.effectBoxesStatusTimer.resolve = resolve;\n        this.effectBoxesStatusTimer.timer = setTimeout(() => {\n          if (this.effectBoxesStatusTimer && this.effectBoxesStatusTimer.resolve) {\n            this.effectBoxesStatusTimer.resolve(this.effectBoxesStatusTimer.skipUpdate);\n          }\n        }, 100);\n      });\n      this.effectBoxesStatusTimerFunc(_skipUpdate);\n      this.effectBoxesStatusTimer = void 0;\n    }\n  }\n  hasBoxesStatus() {\n    if (!this.useBoxesStatus) {\n      return false;\n    }\n    return this.boxesStatus$.size > 0;\n  }\n  hasMinimizedBox() {\n    if (!this.useBoxesStatus) {\n      return false;\n    }\n    return this.boxes.some((box) => box.boxStatus && box.boxStatus === TELE_BOX_STATE.Minimized);\n  }\n  getMinimizedBoxesStatus() {\n    const minimizedBoxes = /* @__PURE__ */ new Map();\n    this.boxesStatus$.forEach((boxStatus, boxId) => {\n      if (boxStatus === TELE_BOX_STATE.Minimized) {\n        minimizedBoxes.set(boxId, boxStatus);\n      }\n    });\n    return minimizedBoxes;\n  }\n  getNotMinimizedBoxesStatus() {\n    const notMinimizedBoxes = /* @__PURE__ */ new Map();\n    this.boxesStatus$.forEach((boxStatus, boxId) => {\n      if (boxStatus !== TELE_BOX_STATE.Minimized) {\n        notMinimizedBoxes.set(boxId, boxStatus);\n      }\n    });\n    return notMinimizedBoxes;\n  }\n  getAllMaximizedBoxesStatus() {\n    const maximizedBoxes = /* @__PURE__ */ new Map();\n    this.boxesStatus$.forEach((boxStatus, boxId) => {\n      if (boxStatus === TELE_BOX_STATE.Maximized) {\n        maximizedBoxes.set(boxId, boxStatus);\n      }\n    });\n    return maximizedBoxes;\n  }\n  getAllNormalBoxesStatus() {\n    const normalBoxes = /* @__PURE__ */ new Map();\n    this.boxesStatus$.forEach((boxStatus, boxId) => {\n      if (boxStatus === TELE_BOX_STATE.Normal) {\n        normalBoxes.set(boxId, boxStatus);\n      }\n    });\n    return normalBoxes;\n  }\n  getLastNotMinimizedBoxStatus(boxId) {\n    return this.lastNotMinimizedBoxesStatus$.get(boxId);\n  }\n  setLastNotMinimizedBoxStatus(boxId, lastNotMinimizedBoxStatus, skipUpdate = false) {\n    if (lastNotMinimizedBoxStatus) {\n      this.lastNotMinimizedBoxesStatus$.set(boxId, lastNotMinimizedBoxStatus);\n    } else {\n      this.lastNotMinimizedBoxesStatus$.delete(boxId);\n    }\n    if (!skipUpdate) {\n      this.events.emit(TELE_BOX_MANAGER_EVENT.LastNotMinimizedBoxStatus, { id: boxId, boxStatus: lastNotMinimizedBoxStatus });\n    }\n  }\n  setLastNotMinimizedBoxesStatus(lastNotMinimizedBoxesStatus, skipUpdate = false) {\n    this.lastNotMinimizedBoxesStatus$ = lastNotMinimizedBoxesStatus;\n    this.effectLastNotMinimizedBoxStatusChange(skipUpdate);\n  }\n  async effectLastNotMinimizedBoxStatusChange(skipUpdate = false) {\n    var _a, _b;\n    if (!this.useBoxesStatus) {\n      if (this.effectLastNotMinimizedBoxStatusTimer && this.effectLastNotMinimizedBoxStatusTimer.timer) {\n        clearTimeout(this.effectLastNotMinimizedBoxStatusTimer.timer);\n        if (this.effectLastNotMinimizedBoxStatusTimer.resolve) {\n          this.effectLastNotMinimizedBoxStatusTimer.resolve(!!((_a = this.effectLastNotMinimizedBoxStatusTimer) == null ? void 0 : _a.skipUpdate));\n        }\n      }\n      this.effectLastNotMinimizedBoxStatusTimer = void 0;\n      return;\n    }\n    if (this.effectLastNotMinimizedBoxStatusTimer && this.effectLastNotMinimizedBoxStatusTimer.timer) {\n      clearTimeout(this.effectLastNotMinimizedBoxStatusTimer.timer);\n      if (this.effectLastNotMinimizedBoxStatusTimer.skipUpdate !== skipUpdate) {\n        if (this.effectLastNotMinimizedBoxStatusTimer.resolve) {\n          this.effectLastNotMinimizedBoxStatusTimer.resolve(!!((_b = this.effectLastNotMinimizedBoxStatusTimer) == null ? void 0 : _b.skipUpdate));\n        }\n        this.effectLastNotMinimizedBoxStatusTimer.skipUpdate = skipUpdate;\n      } else {\n        return;\n      }\n    }\n    if (!this.effectLastNotMinimizedBoxStatusTimer) {\n      this.effectLastNotMinimizedBoxStatusTimer = {\n        skipUpdate,\n        timer: void 0,\n        resolve: void 0\n      };\n    }\n    if (this.effectLastNotMinimizedBoxStatusTimer) {\n      const _skipUpdate = await new Promise((resolve) => {\n        this.effectLastNotMinimizedBoxStatusTimer.resolve = resolve;\n        this.effectLastNotMinimizedBoxStatusTimer.timer = setTimeout(() => {\n          if (this.effectLastNotMinimizedBoxStatusTimer && this.effectLastNotMinimizedBoxStatusTimer.resolve) {\n            this.effectLastNotMinimizedBoxStatusTimer.resolve(this.effectLastNotMinimizedBoxStatusTimer.skipUpdate);\n          }\n        }, 100);\n      });\n      this.effectLastNotMinimizedBoxStatusFunc(_skipUpdate);\n      this.effectLastNotMinimizedBoxStatusTimer = void 0;\n    }\n  }\n  effectLastNotMinimizedBoxStatusFunc(skipUpdate = false) {\n    if (!this.useBoxesStatus) {\n      return;\n    }\n    this.boxes.forEach((box) => {\n      const boxStatus = this.lastNotMinimizedBoxesStatus$.get(box.id);\n      if (boxStatus) {\n        box.setLastNotMinimizedBoxStatus(boxStatus, skipUpdate);\n      }\n    });\n  }\n  getUnabledBoxesStatusZIndex() {\n    return this.topBox ? this.topBox.zIndex : 99;\n  }\n  getMaxMaximizedBoxZIndex() {\n    if (!this.useBoxesStatus) {\n      return this.getUnabledBoxesStatusZIndex();\n    }\n    return this.boxes.reduce((maxZIndex, box) => {\n      if (box.boxStatus && box.boxStatus === TELE_BOX_STATE.Maximized && !this.isForceTop(box)) {\n        return Math.max(maxZIndex, box.zIndex);\n      }\n      return maxZIndex;\n    }, 99);\n  }\n  getMaxNormalBoxZIndex() {\n    if (!this.useBoxesStatus) {\n      return this.getUnabledBoxesStatusZIndex();\n    }\n    return this.boxes.reduce((maxZIndex, box) => {\n      if (box.boxStatus && box.boxStatus === TELE_BOX_STATE.Normal && !this.isForceTop(box)) {\n        return Math.max(maxZIndex, box.zIndex);\n      }\n      return maxZIndex;\n    }, 299);\n  }\n  getMaxForceTopBoxZIndex() {\n    if (!this.useBoxesStatus) {\n      return this.getUnabledBoxesStatusZIndex();\n    }\n    return this.boxes.reduce((maxZIndex, box) => {\n      if (box.boxStatus && this.isForceTop(box)) {\n        return Math.max(maxZIndex, box.zIndex);\n      }\n      return maxZIndex;\n    }, 699);\n  }\n  isForceNormal(box) {\n    return box._forceNormal$.value;\n  }\n  isForceTop(box) {\n    return box._forceTop$.value;\n  }\n  create(config = {}, smartPosition = true) {\n    const box = new TeleBox({\n      zIndex: config.forceTop ? this.getMaxForceTopBoxZIndex() + 1 : this.getMaxNormalBoxZIndex() + 1,\n      ...smartPosition ? this.smartPosition(config) : config,\n      darkMode: this.darkMode,\n      prefersColorScheme: this.prefersColorScheme,\n      maximized: this.maximized,\n      minimized: this.minimized,\n      fence: this.fence,\n      namespace: this.namespace,\n      containerRect: this.containerRect,\n      readonly: this.readonly,\n      collectorRect: this.collectorRect\n    });\n    box.mount(this.root);\n    this.boxes$.setValue([...this.boxes, box]);\n    if (box.boxStatus && this.useBoxesStatus) {\n      this.setBox(box, {\n        status: box.boxStatus,\n        lastNotMinimizedBoxStatus: box._lastNotMinimizedBoxStatus$.value\n      }, true);\n    }\n    if (box.focus) {\n      this.focusBox(box);\n      if (smartPosition) {\n        this.makeBoxTop(box);\n      }\n    }\n    box._delegateEvents.on(TELE_BOX_DELEGATE_EVENT.Maximize, () => {\n      if (this.useBoxesStatus && box.boxStatus) {\n        if (box._forceNormal$.value) {\n          return;\n        }\n        if (box.boxStatus === TELE_BOX_STATE.Maximized) {\n          this.setBox(box.id, {\n            status: TELE_BOX_STATE.Normal,\n            zIndex: this.getMaxNormalBoxZIndex() + 1\n          }, false);\n        } else {\n          [...this.boxes].filter((box2) => box2.boxStatus === TELE_BOX_STATE.Normal && !this.isForceNormal(box2)).sort((a, b) => a.zIndex - b.zIndex).forEach((box2) => {\n            if (box2.boxStatus === TELE_BOX_STATE.Normal) {\n              this.setBox(box2.id, {\n                status: TELE_BOX_STATE.Maximized,\n                zIndex: this.getMaxMaximizedBoxZIndex() + 1\n              }, false);\n            }\n          });\n          this.makeMaximizedTopBoxFocus();\n        }\n      } else {\n        this.setMaximized(!this.maximized);\n      }\n    });\n    box._delegateEvents.on(TELE_BOX_DELEGATE_EVENT.Minimize, () => {\n      if (box.boxStatus && this.useBoxesStatus) {\n        if (box._forceNormal$.value) {\n          return;\n        }\n        if (box.focus) {\n          this.blurBox(box);\n        }\n        this.setBox(box, {\n          status: TELE_BOX_STATE.Minimized,\n          zIndex: -1\n        }, false, () => {\n          this.focusTopBox();\n        });\n      } else {\n        this.setMinimized(true);\n      }\n    });\n    box._delegateEvents.on(TELE_BOX_DELEGATE_EVENT.Close, () => {\n      if (this.useBoxesStatus && box.focus) {\n        this.blurBox(box);\n      }\n      this.remove(box);\n      this.focusTopBox();\n    });\n    box._coord$.reaction((_, __, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_MANAGER_EVENT.Move, box);\n      }\n    });\n    box._size$.reaction((_, __, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_MANAGER_EVENT.Resize, box);\n      }\n    });\n    box._intrinsicCoord$.reaction((_, __, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_MANAGER_EVENT.IntrinsicMove, box);\n      }\n    });\n    box._intrinsicSize$.reaction((_, __, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_MANAGER_EVENT.IntrinsicResize, box);\n      }\n    });\n    box._visualSize$.reaction((_, __, skipUpdate) => {\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_MANAGER_EVENT.VisualResize, box);\n      }\n    });\n    box._zIndex$.reaction((_, __, skipUpdate) => {\n      if (this.boxes.length > 0) {\n        let currentTopBox = void 0;\n        const topBox = this.boxes.reduce((topBox2, box2) => {\n          if (this.isForceTop(box2)) {\n            return topBox2;\n          }\n          if (box2.boxStatus && box2.boxStatus === TELE_BOX_STATE.Minimized) {\n            return topBox2;\n          }\n          if (!topBox2) {\n            topBox2 = box2;\n            return topBox2;\n          }\n          return topBox2.zIndex > box2.zIndex ? topBox2 : box2;\n        }, currentTopBox);\n        this.topBox$.setValue(topBox);\n      }\n      if (!skipUpdate) {\n        this.events.emit(TELE_BOX_MANAGER_EVENT.ZIndex, box);\n      }\n    });\n    this.events.emit(TELE_BOX_MANAGER_EVENT.Created, box);\n    return box;\n  }\n  query(config) {\n    return config ? this.boxes.filter(this.teleBoxMatcher(config)) : [...this.boxes];\n  }\n  queryOne(config) {\n    return config ? this.boxes.find(this.teleBoxMatcher(config)) : this.boxes[0];\n  }\n  update(boxID, config, skipUpdate = false) {\n    const box = this.boxes.find((box2) => box2.id === boxID);\n    if (box) {\n      return this.updateBox(box, config, skipUpdate);\n    }\n  }\n  updateAll(config, skipUpdate = false) {\n    this.boxes.forEach((box) => {\n      this.updateBox(box, config, skipUpdate);\n    });\n  }\n  setBox(boxOrID, options, skipUpdate = false, effectFunc) {\n    const box = this.getBox(boxOrID);\n    if (box) {\n      const { status, zIndex, lastNotMinimizedBoxStatus } = options;\n      if (status) {\n        this.setBoxStatus(box.id, status, skipUpdate);\n        box.setBoxStatus(status, skipUpdate);\n        this.effectBoxStatusChange();\n      }\n      if (zIndex) {\n        box.setZIndex(zIndex, skipUpdate);\n      }\n      if (lastNotMinimizedBoxStatus) {\n        this.setLastNotMinimizedBoxStatus(box.id, lastNotMinimizedBoxStatus, skipUpdate);\n        box.setLastNotMinimizedBoxStatus(lastNotMinimizedBoxStatus, skipUpdate);\n      }\n      effectFunc && effectFunc();\n    }\n  }\n  remove(boxOrID, skipUpdate = false, effectFunc) {\n    const box = this.getBox(boxOrID);\n    const index2 = this.getBoxIndex(boxOrID);\n    if (index2 >= 0) {\n      const boxes = this.boxes.slice();\n      const deletedBoxes = boxes.splice(index2, 1);\n      this.boxes$.setValue(boxes);\n      deletedBoxes.forEach((box2) => box2.destroy());\n      if (box && this.useBoxesStatus) {\n        this.setBoxStatus(box.id, void 0, skipUpdate);\n        this.setLastNotMinimizedBoxStatus(box.id, void 0, skipUpdate);\n        this.effectBoxStatusChange();\n        effectFunc && effectFunc();\n      }\n      if (!skipUpdate) {\n        if (this.boxes.length <= 0) {\n          this.setMaximized(false);\n          this.setMinimized(false);\n        }\n        this.events.emit(TELE_BOX_MANAGER_EVENT.Removed, deletedBoxes);\n      }\n      return deletedBoxes[0];\n    }\n    return;\n  }\n  removeTopBox() {\n    if (this.topBox) {\n      return this.remove(this.topBox);\n    }\n    return;\n  }\n  removeAll(skipUpdate = false) {\n    const deletedBoxes = this.boxes$.value;\n    this.boxes$.setValue([]);\n    deletedBoxes.forEach((box) => box.destroy());\n    this.boxesStatus$.clear();\n    this.lastNotMinimizedBoxesStatus$.clear();\n    if (!skipUpdate) {\n      if (this.boxes.length <= 0) {\n        this.setMaximized(false);\n        this.setMinimized(false);\n      }\n      this.events.emit(TELE_BOX_MANAGER_EVENT.Removed, deletedBoxes);\n    }\n    return deletedBoxes;\n  }\n  destroy(skipUpdate = false) {\n    this.events.removeAllListeners();\n    this._sideEffect.flushAll();\n    this.removeAll(skipUpdate);\n    Object.keys(this).forEach((key) => {\n      const value = this[key];\n      if (value instanceof r) {\n        value.destroy();\n      }\n    });\n  }\n  wrapClassName(className) {\n    return `${this.namespace}-${className}`;\n  }\n  focusBox(boxOrID, skipUpdate = false) {\n    const targetBox = this.getBox(boxOrID);\n    if (targetBox) {\n      this.boxes.forEach((box) => {\n        if (targetBox === box) {\n          let focusChanged = false;\n          if (!targetBox.focus) {\n            focusChanged = true;\n            targetBox.setFocus(true, skipUpdate);\n          }\n          if (focusChanged && !skipUpdate) {\n            this.events.emit(\n              TELE_BOX_MANAGER_EVENT.Focused,\n              targetBox\n            );\n          }\n        } else if (box.focus) {\n          this.blurBox(box, skipUpdate);\n        }\n      });\n      if (!this.useBoxesStatus) {\n        this.maxTitleBar.focusBox(targetBox);\n      } else if (this.useBoxesStatus && this.maxTitleBar.hasMaximizedBoxInStatus()) {\n        this.makeMaximizedTopBoxFocus();\n      }\n    }\n  }\n  focusTopBox() {\n    if (this.topBox && !this.topBox.focus) {\n      return this.focusBox(this.topBox);\n    }\n  }\n  blurBox(boxOrID, skipUpdate = false) {\n    const targetBox = this.getBox(boxOrID);\n    if (targetBox) {\n      if (targetBox.focus) {\n        targetBox.setFocus(false, skipUpdate);\n        if (!skipUpdate) {\n          this.events.emit(TELE_BOX_MANAGER_EVENT.Blurred, targetBox);\n        }\n      }\n      if (this.maxTitleBar.focusedBox === targetBox) {\n        this.maxTitleBar.focusBox();\n      }\n    }\n  }\n  blurAll(skipUpdate = false) {\n    this.boxes.forEach((box) => {\n      if (box.focus) {\n        box.setFocus(false, skipUpdate);\n        if (!skipUpdate) {\n          this.events.emit(TELE_BOX_MANAGER_EVENT.Blurred, box);\n        }\n      }\n    });\n    if (this.maxTitleBar.focusedBox) {\n      this.maxTitleBar.focusBox();\n    }\n  }\n  teleBoxMatcher(config) {\n    const keys = Object.keys(config);\n    return (box) => keys.every((key) => config[key] === box[key]);\n  }\n  updateBox(box, config, skipUpdate = false) {\n    if (config.x != null || config.y != null) {\n      box.move(\n        config.x == null ? box.intrinsicX : config.x,\n        config.y == null ? box.intrinsicY : config.y,\n        skipUpdate\n      );\n    }\n    if (config.width != null || config.height != null) {\n      box.resize(\n        config.width == null ? box.intrinsicWidth : config.width,\n        config.height == null ? box.intrinsicHeight : config.height,\n        skipUpdate\n      );\n    }\n    if (config.title != null) {\n      box.setTitle(config.title);\n      this.maxTitleBar.updateTitles();\n    }\n    if (config.visible != null) {\n      box.setVisible(config.visible, skipUpdate);\n    }\n    if (config.minHeight != null) {\n      box.setMinHeight(config.minHeight, skipUpdate);\n    }\n    if (config.minWidth != null) {\n      box.setMinWidth(config.minWidth, skipUpdate);\n    }\n    if (config.resizable != null) {\n      box.setResizable(config.resizable, skipUpdate);\n    }\n    if (config.draggable != null) {\n      box.setDraggable(config.draggable, skipUpdate);\n    }\n    if (config.fixRatio != null) {\n      box.setFixRatio(config.fixRatio, skipUpdate);\n    }\n    if (config.zIndex != null) {\n      box.setZIndex(config.zIndex, skipUpdate);\n    }\n    if (config.content != null) {\n      box.mountContent(config.content);\n    }\n    if (config.footer != null) {\n      box.mountFooter(config.footer);\n    }\n    if (this.useBoxesStatus && (config.boxStatus || config.lastNotMinimizedBoxStatus)) {\n      this.setBox(box, {\n        status: config.boxStatus,\n        lastNotMinimizedBoxStatus: config.lastNotMinimizedBoxStatus\n      }, skipUpdate);\n    }\n    if (config.forceTop != null) {\n      box.setForceTop(config.forceTop, skipUpdate);\n    }\n    if (config.forceNormal != null) {\n      box.setForceNormal(config.forceNormal, skipUpdate);\n    }\n  }\n  smartPosition(config = {}) {\n    let { x, y } = config;\n    const { width = 0.5, height = 0.5 } = config;\n    if (x == null) {\n      let vx = 20;\n      if (config.forceTop) {\n        const forceTopBox = this.maxForceTopBox || this.topBox;\n        if (forceTopBox) {\n          vx = forceTopBox.intrinsicX * this.containerRect.width + 20;\n          if (vx > this.containerRect.width - width * this.containerRect.width) {\n            vx = 20;\n          }\n        }\n      } else if (this.topBox) {\n        vx = this.topBox.intrinsicX * this.containerRect.width + 20;\n        if (vx > this.containerRect.width - width * this.containerRect.width) {\n          vx = 20;\n        }\n      } else if (this.hasMinimizedBox()) {\n        vx = [...this.boxes].filter((box) => box.boxStatus && box.boxStatus === TELE_BOX_STATE.Minimized && box.lastNotMinimizedBoxStatus && box.lastNotMinimizedBoxStatus === TELE_BOX_STATE.Normal).reduce((maxX, box) => {\n          return Math.max(maxX, box.intrinsicX * this.containerRect.width + 20);\n        }, vx);\n      }\n      x = vx / this.containerRect.width;\n    }\n    if (y == null) {\n      let vy = 20;\n      if (config.forceTop) {\n        const forceTopBox = this.maxForceTopBox || this.topBox;\n        if (forceTopBox) {\n          vy = forceTopBox.intrinsicY * this.containerRect.height + 20;\n          if (vy > this.containerRect.height - height * this.containerRect.height) {\n            vy = 20;\n          }\n        }\n      } else if (this.topBox) {\n        vy = this.topBox.intrinsicY * this.containerRect.height + 20;\n        if (vy > this.containerRect.height - height * this.containerRect.height) {\n          vy = 20;\n        }\n      } else if (this.hasMinimizedBox()) {\n        vy = [...this.boxes].filter((box) => box.boxStatus && box.boxStatus === TELE_BOX_STATE.Minimized && box.lastNotMinimizedBoxStatus && box.lastNotMinimizedBoxStatus === TELE_BOX_STATE.Normal).reduce((maxY, box) => {\n          return Math.max(maxY, box.intrinsicY * this.containerRect.height + 20);\n        }, vy);\n      }\n      y = vy / this.containerRect.height;\n    }\n    return { ...config, x, y, width, height };\n  }\n  makeBoxTop(box, skipUpdate = false) {\n    if (!this.useBoxesStatus && this.topBox) {\n      if (box !== this.topBox) {\n        box.setZIndex(this.topBox.zIndex + 1, skipUpdate);\n      }\n    } else if (this.useBoxesStatus)\n      ;\n  }\n  getMaximizedTopBox() {\n    if (!this.useBoxesStatus) {\n      return void 0;\n    }\n    let maximizedBox;\n    if (this.maxTitleBar.hasMaximizedBoxInStatus()) {\n      maximizedBox = this.maxTitleBar.MaximizedBoxes.reduce((topBox, currentBox) => {\n        if (!topBox) {\n          return currentBox;\n        }\n        return topBox.zIndex > currentBox.zIndex ? topBox : currentBox;\n      });\n    }\n    return maximizedBox;\n  }\n  makeMaximizedTopBoxFocus() {\n    if (!this.useBoxesStatus) {\n      return;\n    }\n    const maximizedBox = this.getMaximizedTopBox();\n    this.maxTitleBar.focusBox(maximizedBox);\n  }\n  getBoxIndex(boxOrID) {\n    return typeof boxOrID === \"string\" ? this.boxes.findIndex((box) => box.id === boxOrID) : this.boxes.findIndex((box) => box === boxOrID);\n  }\n  getBox(boxOrID) {\n    return typeof boxOrID === \"string\" ? this.boxes.find((box) => box.id === boxOrID) : boxOrID;\n  }\n  createMinimizedAppMenu() {\n    var _a, _b;\n    if ((_a = this.collector) == null ? void 0 : _a.$appMenuContainer) {\n      return new AppMenu({\n        manager: this,\n        container: (_b = this.collector) == null ? void 0 : _b.$appMenuContainer,\n        theme: this.prefersColorScheme ? \"dark\" : \"light\",\n        getBoxesStatus: () => {\n          return this.boxesStatus$;\n        }\n      });\n    }\n    return;\n  }\n}\nTeleBoxManager.kind = \"TeleBoxManager\";\nexport { DefaultTitleBar, TELE_BOX_COLOR_SCHEME, TELE_BOX_DELEGATE_EVENT, TELE_BOX_EVENT, TELE_BOX_MANAGER_EVENT, TELE_BOX_RESIZE_HANDLE, TELE_BOX_STATE, TeleBox, TeleBoxCollector, TeleBoxDragHandleType, TeleBoxManager };\n//# sourceMappingURL=telebox-insider.es.js.map\n","import { AppAttributes, Events, MIN_HEIGHT, MIN_WIDTH } from \"./constants\";\nimport { debounce } from \"lodash\";\nimport { TELE_BOX_STATE } from \"@netless/telebox-insider\";\nimport { WindowManager } from \"./index\";\nimport type { BoxEmitterType } from \"./BoxEmitter\";\nimport type { AddAppOptions, AppInitState } from \"./index\";\nimport type {\n    TeleBoxManagerUpdateConfig,\n    TeleBoxManagerCreateConfig,\n    ReadonlyTeleBox,\n    TeleBoxManagerConfig,\n    TeleBoxColorScheme,\n    TeleBoxRect,\n    TeleBoxConfig,\n    TeleBoxState,\n    NotMinimizedBoxState,\n} from \"@netless/telebox-insider\";\nimport type Emittery from \"emittery\";\nimport type { NetlessApp } from \"./typings\";\nimport type { View } from \"white-web-sdk\";\nimport type { CallbacksType } from \"./callback\";\nimport type { EmitterType } from \"./InternalEmitter\";\nimport { getExtendClass, TeleBoxManager, TeleBoxCollector } from \"./Utils/extendClass\";\n\nexport { TELE_BOX_STATE };\n\nexport type CreateBoxParams = {\n    appId: string;\n    app: NetlessApp;\n    view?: View;\n    emitter?: Emittery;\n    options?: AddAppOptions;\n    canOperate?: boolean;\n    smartPosition?: boolean;\n    boxStatus?: TeleBoxState;\n    forceTop?: boolean;\n    forceNormal?: boolean;\n    isDragContent?: boolean;\n};\n\ntype AppId = { appId: string };\n\ntype MoveBoxParams = AppId & { x: number; y: number };\n\ntype ResizeBoxParams = AppId & { width: number; height: number; skipUpdate: boolean };\n\ntype SetBoxMinSizeParams = AppId & { minWidth: number; minHeight: number };\n\ntype SetBoxTitleParams = AppId & { title: string };\n\nexport type CreateTeleBoxManagerConfig = {\n    collectorContainer?: HTMLElement;\n    collectorStyles?: Partial<CSSStyleDeclaration>;\n    prefersColorScheme?: TeleBoxColorScheme;\n    useBoxesStatus?: boolean;\n};\n\nexport type BoxManagerContext = {\n    safeSetAttributes: (attributes: any) => void;\n    getMainView: () => View;\n    updateAppState: (appId: string, field: AppAttributes, value: any) => void;\n    setBoxStatus: (appId: string, status?: TeleBoxState) => void;\n    setLastNotMinimizedBoxStatus: (appId: string, status?: NotMinimizedBoxState) => void;\n    emitter: EmitterType;\n    boxEmitter: BoxEmitterType;\n    callbacks: CallbacksType;\n    canOperate: () => boolean;\n    notifyContainerRectUpdate: (rect: TeleBoxRect) => void;\n    cleanFocus: () => void;\n    setAppFocus: (appId: string) => void;\n};\n\nexport const createBoxManager = (\n    manager: WindowManager,\n    callbacks: CallbacksType,\n    emitter: EmitterType,\n    boxEmitter: BoxEmitterType,\n    options: CreateTeleBoxManagerConfig\n) => {\n    const BoxManagerClass = getExtendClass(BoxManager, WindowManager.extendClass);\n    return new BoxManagerClass(\n        {\n            safeSetAttributes: (attributes: any) => manager.safeSetAttributes(attributes),\n            getMainView: () => manager.mainView,\n            updateAppState: (...args) => manager.appManager?.store.updateAppState(...args),\n            setBoxStatus: (id: string, boxStatus?: TeleBoxState) =>\n                manager.appManager?.store.setBoxStatus(id, boxStatus),\n            setLastNotMinimizedBoxStatus: (\n                id: string,\n                lastNotMinimizedBoxStatus?: NotMinimizedBoxState\n            ) =>\n                manager.appManager?.store.setLastNotMinimizedBoxStatus(\n                    id,\n                    lastNotMinimizedBoxStatus\n                ),\n            canOperate: () => manager.canOperate,\n            notifyContainerRectUpdate: (rect: TeleBoxRect) =>\n                manager.appManager?.notifyContainerRectUpdate(rect),\n            cleanFocus: () => manager.appManager?.store.cleanFocus(),\n            setAppFocus: (appId: string) => manager.appManager?.store.setAppFocus(appId, true),\n            callbacks,\n            emitter,\n            boxEmitter,\n        },\n        options\n    );\n};\n\nexport class BoxManager {\n    static readonly kind = \"BoxManager\";\n    public teleBoxManager: TeleBoxManager;\n\n    constructor(\n        private context: BoxManagerContext,\n        private createTeleBoxManagerConfig?: CreateTeleBoxManagerConfig\n    ) {\n        const { emitter, callbacks, boxEmitter } = context;\n        this.teleBoxManager = this.setupBoxManager(createTeleBoxManagerConfig);\n\n        // 使用 _xxx$.reaction 订阅修改的值, 不管有没有 skipUpdate, 修改值都会触发回调\n        this.teleBoxManager._state$.reaction(state => {\n            callbacks.emit(\"boxStateChange\", state);\n            emitter.emit(\"boxStateChange\", state);\n        });\n\n        this.teleBoxManager._darkMode$.reaction(darkMode => {\n            callbacks.emit(\"darkModeChange\", darkMode);\n        });\n        this.teleBoxManager._prefersColorScheme$.reaction(colorScheme => {\n            callbacks.emit(\"prefersColorSchemeChange\", colorScheme);\n        });\n\n        // ppt 在最小化后刷新恢复正常大小，拿不到正确的宽高，需要手动触发一下窗口的 resize\n        this.teleBoxManager._minimized$.reaction(minimized => {\n            if (!minimized) {\n                setTimeout(() => {\n                    const offset = 0.001 * (Math.random() > 0.5 ? 1 : -1);\n                    this.teleBoxManager.boxes.forEach(box => {\n                        box.resize(box.intrinsicWidth + offset, box.intrinsicHeight + offset, true);\n                    });\n                }, 400);\n            }\n        });\n\n        // events.on 的值则会根据 skipUpdate 来决定是否触发回调\n        this.teleBoxManager.events.on(\"minimized\", minimized => {\n            this.context.safeSetAttributes({ minimized });\n            if (minimized) {\n                this.context.cleanFocus();\n                this.blurAllBox();\n            } else {\n                const topBox = this.getTopBox();\n                if (topBox) {\n                    this.context.setAppFocus(topBox.id);\n                    this.focusBox({ appId: topBox.id }, false);\n                }\n            }\n        });\n        this.teleBoxManager.events.on(\"maximized\", maximized => {\n            this.context.safeSetAttributes({ maximized });\n        });\n        this.teleBoxManager.events.on(\"removed\", boxes => {\n            boxes.forEach(box => {\n                boxEmitter.emit(\"close\", { appId: box.id });\n            });\n        });\n        this.teleBoxManager.events.on(\n            \"intrinsic_move\",\n            debounce((box: ReadonlyTeleBox): void => {\n                boxEmitter.emit(\"move\", { appId: box.id, x: box.intrinsicX, y: box.intrinsicY });\n            }, 50)\n        );\n        this.teleBoxManager.events.on(\n            \"intrinsic_resize\",\n            debounce((box: ReadonlyTeleBox): void => {\n                boxEmitter.emit(\"resize\", {\n                    appId: box.id,\n                    width: box.intrinsicWidth,\n                    height: box.intrinsicHeight,\n                });\n            }, 200)\n        );\n        this.teleBoxManager.events.on(\"focused\", box => {\n            if (box) {\n                if (this.canOperate) {\n                    boxEmitter.emit(\"focus\", { appId: box.id });\n                } else {\n                    this.teleBoxManager.blurBox(box.id);\n                }\n            }\n        });\n        this.teleBoxManager.events.on(\"blurred\", box => {\n            if (box) {\n                if (this.canOperate) {\n                    boxEmitter.emit(\"blurred\", { appId: box.id });\n                }\n            }\n        });\n        this.teleBoxManager.events.on(\"z_index\", box => {\n            this.context.updateAppState(box.id, AppAttributes.ZIndex, box.zIndex);\n        });\n        this.teleBoxManager.events.on(\n            \"box_status\",\n            (box: { id: string; boxStatus?: TeleBoxState }) => {\n                if (this.canOperate) {\n                    this.context.setBoxStatus(box.id, box.boxStatus);\n                }\n            }\n        );\n        this.teleBoxManager.events.on(\n            \"last_not_minimized_box_status\",\n            (box: { id: string; boxStatus?: NotMinimizedBoxState }) => {\n                if (this.canOperate) {\n                    this.context.setLastNotMinimizedBoxStatus(box.id, box.boxStatus);\n                }\n            }\n        );\n        emitter.on(\"playgroundSizeChange\", () => this.updateManagerRect());\n        emitter.on(\"updateManagerRect\", () => this.updateManagerRect());\n    }\n\n    private get mainView() {\n        return this.context.getMainView();\n    }\n\n    private get canOperate() {\n        return this.context.canOperate();\n    }\n\n    public get boxState() {\n        return this.teleBoxManager.state;\n    }\n\n    public get maximized() {\n        return this.teleBoxManager.maximized;\n    }\n\n    public get minimized() {\n        return this.teleBoxManager.minimized;\n    }\n\n    public get darkMode() {\n        return this.teleBoxManager.darkMode;\n    }\n\n    public get prefersColorScheme(): TeleBoxColorScheme {\n        return this.teleBoxManager.prefersColorScheme;\n    }\n\n    public get boxSize() {\n        return this.teleBoxManager.boxes.length;\n    }\n\n    public createBox(params: CreateBoxParams): void {\n        if (!this.teleBoxManager) return;\n        let { minwidth = MIN_WIDTH, minheight = MIN_HEIGHT } = params.app.config ?? {};\n        const { width, height } = params.app.config ?? {};\n        const title = params.options?.title || params.appId;\n        const rect = this.teleBoxManager.containerRect;\n\n        if (minwidth > 1) {\n            minwidth = minwidth / rect.width;\n        }\n\n        if (minheight > 1) {\n            minheight = minheight / rect.height;\n        }\n\n        const createBoxConfig: TeleBoxManagerCreateConfig = {\n            title,\n            minWidth: minwidth,\n            minHeight: minheight,\n            width,\n            height,\n            id: params.appId,\n            boxStatus: params.boxStatus,\n            forceTop: params.forceTop,\n            forceNormal: params.forceNormal,\n            isDragContent: params.isDragContent,\n        };\n        this.teleBoxManager.create(createBoxConfig, params.smartPosition);\n        this.context.emitter.emit(`${params.appId}${Events.WindowCreated}` as any);\n    }\n\n    public setBoxInitState(appId: string): void {\n        const box = this.teleBoxManager.queryOne({ id: appId });\n        if (box) {\n            if (box.state === TELE_BOX_STATE.Maximized) {\n                this.context.boxEmitter.emit(\"resize\", {\n                    appId: appId,\n                    x: box.x,\n                    y: box.y,\n                    width: box.intrinsicWidth,\n                    height: box.intrinsicHeight,\n                });\n            }\n        }\n    }\n    public setBoxesStatus(status?: Record<string, TeleBoxState>): void {\n        const map = new Map(Object.entries(status ?? {}));\n        this.teleBoxManager.setBoxesStatus(map, true);\n        this.context.callbacks.emit(\"onBoxesStatusChange\", map);\n        this.context.emitter.emit(\"boxesStatusChange\", map);\n    }\n\n    // public setBoxStatus(appId: string, status?: TeleBoxState, skipUpdate = false): void {\n    //     this.teleBoxManager.update(appId, { boxStatus: status }, true);\n    // }\n\n    public setLastNotMinimizedBoxesStatus(status?: Record<string, NotMinimizedBoxState>): void {\n        const map = new Map(Object.entries(status ?? {}));\n        this.teleBoxManager.setLastNotMinimizedBoxesStatus(map, true);\n        this.context.callbacks.emit(\"onLastNotMinimizedBoxesStatusChange\", map);\n        this.context.emitter.emit(\"lastNotMinimizedBoxesStatusChange\", map);\n    }\n\n    // public setLastNotMinimizedBoxStatus(appId: string, status?: NotMinimizedBoxState): void {\n    //     this.teleBoxManager.update(appId, { lastNotMinimizedBoxStatus: status }, true);\n    // }\n\n    public setupBoxManager(\n        createTeleBoxManagerConfig?: CreateTeleBoxManagerConfig\n    ): TeleBoxManager {\n        const root = WindowManager.wrapper ? WindowManager.wrapper : document.body;\n        const rect = root.getBoundingClientRect();\n        const initManagerState: TeleBoxManagerConfig = {\n            root: root,\n            containerRect: {\n                x: 0,\n                y: 0,\n                width: rect.width,\n                height: rect.height,\n            },\n            fence: false,\n            prefersColorScheme: createTeleBoxManagerConfig?.prefersColorScheme,\n            useBoxesStatus: createTeleBoxManagerConfig?.useBoxesStatus || false,\n        };\n\n        const TeleBoxManagerClass = getExtendClass(TeleBoxManager, WindowManager.extendClass);\n        const manager = new TeleBoxManagerClass(initManagerState);\n        if (this.teleBoxManager) {\n            this.teleBoxManager.destroy();\n        }\n        this.teleBoxManager = manager;\n        const container = createTeleBoxManagerConfig?.collectorContainer || WindowManager.wrapper;\n        if (container) {\n            this.setCollectorContainer(container);\n        }\n        return manager;\n    }\n\n    public setCollectorContainer(container: HTMLElement) {\n        const TeleBoxCollectorClass = getExtendClass(TeleBoxCollector, WindowManager.extendClass);\n        const collector = new TeleBoxCollectorClass({\n            styles: this.createTeleBoxManagerConfig?.collectorStyles,\n        }).mount(container);\n        this.teleBoxManager.setCollector(collector);\n    }\n\n    public getBox(appId: string): ReadonlyTeleBox | undefined {\n        return this.teleBoxManager.queryOne({ id: appId });\n    }\n\n    public closeBox(appId: string, skipUpdate = false): ReadonlyTeleBox | undefined {\n        return this.teleBoxManager.remove(appId, skipUpdate);\n    }\n\n    public boxIsFocus(appId: string): boolean | undefined {\n        const box = this.getBox(appId);\n        return box?.focus;\n    }\n\n    public getFocusBox(): ReadonlyTeleBox | undefined {\n        const boxes = this.teleBoxManager.query({ focus: true });\n        return boxes[0];\n    }\n\n    public getTopBox(): ReadonlyTeleBox | undefined {\n        return this.teleBoxManager.topBox;\n    }\n\n    public updateBoxState(state?: AppInitState): void {\n        if (!state) return;\n        const box = this.getBox(state.id);\n        if (box) {\n            this.teleBoxManager.update(\n                box.id,\n                {\n                    x: state.x,\n                    y: state.y,\n                    width: state.width || 0.5,\n                    height: state.height || 0.5,\n                    zIndex: state.zIndex,\n                    boxStatus: state.boxStatus,\n                    lastNotMinimizedBoxStatus: state.lastNotMinimizedBoxStatus,\n                    forceTop: state.forceTop,\n                    forceNormal: state.forceNormal,\n                    isDragContent: state.isDragContent,\n                },\n                true\n            );\n            setTimeout(() => {\n                if (state.focus) {\n                    this.teleBoxManager.focusBox(box.id, true);\n                }\n                if (state.maximized != null) {\n                    this.teleBoxManager.setMaximized(Boolean(state.maximized), true);\n                }\n                if (state.minimized != null) {\n                    this.teleBoxManager.setMinimized(Boolean(state.minimized), true);\n                }\n            }, 50);\n            if (!state.boxStatus) {\n                this.context.callbacks.emit(\"boxStateChange\", this.teleBoxManager.state);\n            }\n        }\n    }\n\n    public updateManagerRect(): void {\n        const rect = this.mainView.divElement?.getBoundingClientRect();\n        if (rect && rect.width > 0 && rect.height > 0) {\n            const containerRect = { x: 0, y: 0, width: rect.width, height: rect.height };\n            this.teleBoxManager.setContainerRect(containerRect);\n            this.context.notifyContainerRectUpdate(this.teleBoxManager.containerRect);\n        }\n    }\n\n    public moveBox({ appId, x, y }: MoveBoxParams): void {\n        this.teleBoxManager.update(appId, { x, y }, true);\n    }\n\n    public focusBox({ appId }: AppId, skipUpdate = true): void {\n        this.teleBoxManager.focusBox(appId, skipUpdate);\n    }\n\n    public resizeBox({ appId, width, height, skipUpdate }: ResizeBoxParams): void {\n        this.teleBoxManager.update(appId, { width, height }, skipUpdate);\n    }\n\n    public setBoxMinSize(params: SetBoxMinSizeParams): void {\n        this.teleBoxManager.update(\n            params.appId,\n            {\n                minWidth: params.minWidth,\n                minHeight: params.minHeight,\n            },\n            true\n        );\n    }\n\n    public setBoxTitle(params: SetBoxTitleParams): void {\n        this.teleBoxManager.update(params.appId, { title: params.title }, true);\n    }\n\n    public blurAllBox(): void {\n        this.teleBoxManager.blurAll();\n    }\n\n    public updateAll(config: TeleBoxManagerUpdateConfig): void {\n        this.teleBoxManager.updateAll(config);\n    }\n\n    public setMaximized(maximized: boolean, skipUpdate = true): void {\n        if (maximized !== this.maximized) {\n            this.teleBoxManager.setMaximized(maximized, skipUpdate);\n        }\n    }\n\n    public setMinimized(minimized: boolean, skipUpdate = true) {\n        this.teleBoxManager.setMinimized(minimized, skipUpdate);\n    }\n\n    public focusTopBox(): void {\n        const boxes = this.teleBoxManager.query();\n        if (boxes.length >= 1) {\n            const box = this.getTopBox();\n            if (box) {\n                this.focusBox({ appId: box.id }, false);\n            }\n        }\n    }\n\n    public updateBox(id: string, payload: TeleBoxConfig, skipUpdate = true): void {\n        this.teleBoxManager.update(id, payload, skipUpdate);\n    }\n\n    public setReadonly(readonly: boolean) {\n        this.teleBoxManager.setReadonly(readonly);\n    }\n\n    public setPrefersColorScheme(colorScheme: TeleBoxColorScheme) {\n        this.teleBoxManager.setPrefersColorScheme(colorScheme);\n    }\n\n    public setZIndex(id: string, zIndex: number, skipUpdate = true) {\n        this.teleBoxManager.update(id, { zIndex }, skipUpdate);\n    }\n\n    public destroy() {\n        this.teleBoxManager.destroy();\n    }\n}\n","/** 合法标识符形式的 key 省略引号，形如 `{aaa:undefined}` */\nfunction formatAttributesLogObjectKey(key: string): string {\n    return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key) ? key : JSON.stringify(key);\n}\n\n/**\n * attributes 调试日志：对象/数组会写成近似 JS 字面量（保留 `undefined`、数组空洞），避免 `[object Object]`；\n * 并处理 BigInt、循环引用等。\n */\nexport function stringifyForAttributesLog(value: unknown, seen?: WeakSet<object>): string {\n    if (value === undefined) {\n        return \"undefined\";\n    }\n    if (value === null) {\n        return \"null\";\n    }\n    const t = typeof value;\n    if (t === \"bigint\") {\n        return `${value}n`;\n    }\n    if (t === \"symbol\") {\n        return String(value);\n    }\n    if (t === \"function\") {\n        const fn = value as (...args: unknown[]) => unknown;\n        return `[Function ${fn.name || \"anonymous\"}]`;\n    }\n    if (t !== \"object\") {\n        return t === \"string\" ? JSON.stringify(value as string) : String(value);\n    }\n\n    const obj = value as object;\n    if (seen?.has(obj)) {\n        return \"[Circular]\";\n    }\n\n    const nextSeen = seen ?? new WeakSet<object>();\n    nextSeen.add(obj);\n    try {\n        if (Array.isArray(value)) {\n            return `[${Array.from(value as unknown[], (item) =>\n                stringifyForAttributesLog(item, nextSeen),\n            ).join(\",\")}]`;\n        }\n        if (value instanceof Date) {\n            return JSON.stringify(value.toISOString());\n        }\n        if (value instanceof RegExp) {\n            return String(value);\n        }\n        const keys = Object.keys(value as object);\n        const pairs = keys.map((k) => {\n            let v: unknown;\n            try {\n                v = (value as Record<string, unknown>)[k];\n            } catch {\n                return `${formatAttributesLogObjectKey(k)}:[Threw]`;\n            }\n            return `${formatAttributesLogObjectKey(k)}:${stringifyForAttributesLog(v, nextSeen)}`;\n        });\n        return `{${pairs.join(\",\")}}`;\n    } catch {\n        return \"[Unserializable]\";\n    } finally {\n        nextSeen.delete(obj);\n    }\n}\n\n/** 仅一层 key 合并：可作为 attributes 片段的「普通对象」（非数组、Date 等） */\nexport function isShallowMergeAttributesRecord(value: unknown): value is Record<string, unknown> {\n    return (\n        value !== null &&\n        typeof value === \"object\" &&\n        !Array.isArray(value) &&\n        !(value instanceof Date) &&\n        !(value instanceof RegExp)\n    );\n}\n","import type { Logger } from \"white-web-sdk\";\nimport { isShallowMergeAttributesRecord, stringifyForAttributesLog } from \"./attributesLogStringify\";\nimport { WindowManager } from \"../index\";\n\n/** ArgusLog 经 `logger.info` 上报的单条字符串上限（含前缀） */\nconst ARGUS_LOG_INFO_MAX_LENGTH = 1500;\n\nfunction truncateArgusLogInfoMessage(message: string): string {\n    if (message.length <= ARGUS_LOG_INFO_MAX_LENGTH) {\n        return message;\n    }\n    const ellipsis = \"…\";\n    return message.slice(0, ARGUS_LOG_INFO_MAX_LENGTH - ellipsis.length) + ellipsis;\n}\n\nfunction keysPathEqual(a: string[], b: string[]): boolean {\n    if (a.length !== b.length) {\n        return false;\n    }\n    for (let i = 0; i < a.length; i++) {\n        if (a[i] !== b[i]) {\n            return false;\n        }\n    }\n    return true;\n}\n\nexport const log = (...args: any[]): void => {\n    if (WindowManager.debug) {\n        console.log(`[WindowManager]:`, ...args);\n    }\n};\n\n/**\n * 按 `[window-manager][tagName]` 前缀输出。\n * 若传入 `debounceTime`（毫秒）：窗口内多次 `log` 不立即输出，只在连续停止调用满 `debounceTime` 后输出**最后一次**的参数（尾部 debounce）。\n */\nexport class LocalConsole {\n    private pendingArgs: unknown[] | null = null;\n    private flushTimer: ReturnType<typeof setTimeout> | null = null;\n\n    constructor(\n        private readonly name: string,\n        private readonly debounceTime?: number,\n    ) {}\n\n    private flush(): void {\n        this.flushTimer = null;\n        const args = this.pendingArgs;\n        this.pendingArgs = null;\n        if (args === null) {\n            return;\n        }\n        console.log(`[window-manager][${this.name}]: ${args.join(\", \")}`);\n    }\n\n    log(...args: unknown[]): void {\n        const ms = this.debounceTime;\n        if (ms != null && ms > 0) {\n            this.pendingArgs = args;\n            if (this.flushTimer != null) {\n                clearTimeout(this.flushTimer);\n            }\n            this.flushTimer = setTimeout(() => this.flush(), ms);\n            return;\n        }\n        console.log(`[window-manager][${this.name}]: ${args.join(\", \")}`);\n    }\n\n    /**\n     * 销毁：清除 debounce 定时器与未输出的暂存参数。\n     * 持有 LocalConsole 的类在销毁时应调用。\n     */\n    destroy(): void {\n        if (this.flushTimer != null) {\n            clearTimeout(this.flushTimer);\n            this.flushTimer = null;\n        }\n        this.pendingArgs = null;\n    }\n}\n\n/**\n * 按 `[WindowManager][tagName]` 前缀输出。\n * 若传入 `debounceTime`（毫秒）：窗口内多次 `log` 不立即输出，只在连续停止调用满 `debounceTime` 后输出**最后一次**的参数（尾部 debounce）。\n */\nexport class ArgusLog {\n    private pendingArgs: unknown[] | null = null;\n    private flushTimer: ReturnType<typeof setTimeout> | null = null;\n\n    /** debounce 窗口内按一层 key 合并；同 key 后者覆盖；非普通对象则整段待输出被本次值替换 */\n    private pendingShallowMerge:\n        | { kind: \"record\"; label: string; data: Record<string, unknown> }\n        | { kind: \"atom\"; label: string; value: unknown }\n        | null = null;\n    private shallowMergeTimer: ReturnType<typeof setTimeout> | null = null;\n\n    /** debounce 窗口内 safeUpdateAttributes：同 keys 数组则只更新 value，否则追加一段，flush 时拼成一条 */\n    private pendingUpdateSegments: { keys: string[]; value: unknown }[] | null = null;\n    private updateMergeTimer: ReturnType<typeof setTimeout> | null = null;\n\n    constructor(\n        private readonly logger: Logger,\n        private readonly name: string,\n        private readonly debounceTime?: number,\n    ) {}\n\n    private emitInfo(message: string): void {\n        this.logger.info(truncateArgusLogInfoMessage(message));\n    }\n\n    private flush(): void {\n        this.flushTimer = null;\n        const args = this.pendingArgs;\n        this.pendingArgs = null;\n        if (args === null) {\n            return;\n        }\n        this.emitInfo(`[WindowManager][${this.name}]: ${args.join(\", \")}`);\n    }\n\n    private flushShallowMerge(): void {\n        this.shallowMergeTimer = null;\n        const p = this.pendingShallowMerge;\n        this.pendingShallowMerge = null;\n        if (p === null) {\n            return;\n        }\n        const body =\n            p.kind === \"record\" ? stringifyForAttributesLog(p.data) : stringifyForAttributesLog(p.value);\n        this.emitInfo(`[WindowManager][${this.name}]: ${p.label} ${body}`);\n        // 输出后释放合并对象引用，避免长时间持有 attributes 快照\n        if (p.kind === \"record\") {\n            for (const k of Object.keys(p.data)) {\n                delete p.data[k];\n            }\n        }\n    }\n\n    log(...args: unknown[]): void {\n        const ms = this.debounceTime;\n        if (ms != null && ms > 0) {\n            this.pendingArgs = args;\n            if (this.flushTimer != null) {\n                clearTimeout(this.flushTimer);\n            }\n            this.flushTimer = setTimeout(() => this.flush(), ms);\n            return;\n        }\n        this.emitInfo(`[WindowManager][${this.name}]: ${args.join(\", \")}`);\n    }\n\n    /**\n     * 带 debounce 时：窗口内多次调用会把「一层 key」合并进同一条日志（不同 key 并存，同 key 取最后一次）。\n     * `payload` 为普通对象时做浅合并；否则视为原子值，覆盖当前待合并状态（丢弃此前累积的对象 key）。\n     * 无 debounce 或时间为 0 时立即输出。\n     */\n    logDebouncedShallowMerge(label: string, payload: unknown): void {\n        const ms = this.debounceTime;\n        const debounced = ms != null && ms > 0;\n\n        const emit = (text: string): void => {\n            this.emitInfo(`[WindowManager][${this.name}]: ${label} ${text}`);\n        };\n\n        if (!debounced) {\n            emit(stringifyForAttributesLog(payload));\n            return;\n        }\n\n        if (this.shallowMergeTimer != null) {\n            clearTimeout(this.shallowMergeTimer);\n            this.shallowMergeTimer = null;\n        }\n\n        if (isShallowMergeAttributesRecord(payload)) {\n            if (this.pendingShallowMerge?.kind === \"record\") {\n                this.pendingShallowMerge = {\n                    kind: \"record\",\n                    label,\n                    data: { ...this.pendingShallowMerge.data, ...payload },\n                };\n            } else {\n                this.pendingShallowMerge = { kind: \"record\", label, data: { ...payload } };\n            }\n        } else {\n            this.pendingShallowMerge = { kind: \"atom\", label, value: payload };\n        }\n\n        this.shallowMergeTimer = setTimeout(() => this.flushShallowMerge(), ms);\n    }\n\n    private flushUpdateAttributesMerge(): void {\n        this.updateMergeTimer = null;\n        const segments = this.pendingUpdateSegments;\n        this.pendingUpdateSegments = null;\n        if (segments === null || segments.length === 0) {\n            return;\n        }\n        const parts = segments.map(\n            (s) => `${s.keys.join(\", \")} ${stringifyForAttributesLog(s.value)}`,\n        );\n        this.emitInfo(`[WindowManager][${this.name}]: safeUpdateAttributes ${parts.join(\" | \")}`);\n        for (const s of segments) {\n            s.keys.length = 0;\n            s.value = undefined;\n        }\n        segments.length = 0;\n    }\n\n    /**\n     * 带 debounce 时：连续调用若 `keys` 与上一段完全相同则覆盖该段的 `value`；否则追加一段。\n     * flush 时输出一条日志，多段用 ` | ` 连接。\n     */\n    logDebouncedUpdateAttributes(keys: string[], value: unknown): void {\n        const ms = this.debounceTime;\n        const debounced = ms != null && ms > 0;\n        const keysCopy = [...keys];\n\n        if (!debounced) {\n            this.emitInfo(\n                `[WindowManager][${this.name}]: safeUpdateAttributes ${keysCopy.join(\", \")} ${stringifyForAttributesLog(value)}`,\n            );\n            return;\n        }\n\n        if (this.updateMergeTimer != null) {\n            clearTimeout(this.updateMergeTimer);\n            this.updateMergeTimer = null;\n        }\n\n        if (this.pendingUpdateSegments === null || this.pendingUpdateSegments.length === 0) {\n            this.pendingUpdateSegments = [{ keys: keysCopy, value }];\n        } else {\n            const last = this.pendingUpdateSegments[this.pendingUpdateSegments.length - 1];\n            if (keysPathEqual(last.keys, keysCopy)) {\n                last.value = value;\n            } else {\n                this.pendingUpdateSegments.push({ keys: keysCopy, value });\n            }\n        }\n\n        this.updateMergeTimer = setTimeout(() => this.flushUpdateAttributesMerge(), ms);\n    }\n\n    /**\n     * 销毁：清除所有 `setTimeout` debounce 定时器，并丢弃尚未输出的暂存日志（不补打日志）。\n     * WindowManager 销毁时应调用，避免泄漏与销毁后仍触发 `logger.info`。\n     */\n    destroy(): void {\n        if (this.flushTimer != null) {\n            clearTimeout(this.flushTimer);\n            this.flushTimer = null;\n        }\n        if (this.shallowMergeTimer != null) {\n            clearTimeout(this.shallowMergeTimer);\n            this.shallowMergeTimer = null;\n        }\n        if (this.updateMergeTimer != null) {\n            clearTimeout(this.updateMergeTimer);\n            this.updateMergeTimer = null;\n        }\n        this.pendingArgs = null;\n        this.pendingShallowMerge = null;\n        this.pendingUpdateSegments = null;\n    }\n\n    /** 与 `destroy()` 相同，保留旧名以兼容 */\n    dispose(): void {\n        this.destroy();\n    }\n}\n","import pRetry from \"p-retry\";\nimport type { Room, RoomMember } from \"white-web-sdk\";\nimport { WhiteVersion } from \"white-web-sdk\";\nimport { REQUIRE_VERSION } from \"./constants\";\nimport { WindowManager } from \"./index\";\nimport { getVersionNumber } from \"./Utils/Common\";\nimport { WhiteWebSDKInvalidError } from \"./Utils/error\";\nimport { log } from \"./Utils/log\";\n\nexport const setupWrapper = (\n    root: HTMLElement\n): {\n    playground: HTMLDivElement;\n    wrapper: HTMLDivElement;\n    sizer: HTMLDivElement;\n    mainViewElement: HTMLDivElement;\n} => {\n    const playground = document.createElement(\"div\");\n    playground.className = \"netless-window-manager-playground\";\n\n    const sizer = document.createElement(\"div\");\n    sizer.className = \"netless-window-manager-sizer\";\n\n    const wrapper = document.createElement(\"div\");\n    wrapper.className = \"netless-window-manager-wrapper\";\n\n    const mainViewElement = document.createElement(\"div\");\n    mainViewElement.className = \"netless-window-manager-main-view\";\n\n    playground.appendChild(sizer);\n    sizer.appendChild(wrapper);\n    wrapper.appendChild(mainViewElement);\n    root.appendChild(playground);\n    WindowManager.wrapper = wrapper;\n\n    return { playground, wrapper, sizer, mainViewElement };\n};\n\nexport const checkVersion = () => {\n    const version = getVersionNumber(WhiteVersion);\n    if (version < getVersionNumber(REQUIRE_VERSION)) {\n        throw new WhiteWebSDKInvalidError(REQUIRE_VERSION);\n    }\n};\n\nexport const findMemberByUid = (room: Room | undefined, uid: string) => {\n    const roomMembers = room?.state.roomMembers || [];\n    let maxMemberId = -1; // 第一个进入房间的用户 memberId 是 0\n    let result: RoomMember | undefined = undefined;\n    for (const member of roomMembers) {\n        if (member.payload?.uid === uid && maxMemberId < member.memberId) {\n            maxMemberId = member.memberId;\n            result = member;\n        }\n    }\n    return result;\n};\n\nexport const createInvisiblePlugin = async (room: Room): Promise<WindowManager> => {\n    let manager = room.getInvisiblePlugin(WindowManager.kind) as WindowManager;\n    if (manager) return manager;\n\n    let resolve!: (manager: WindowManager) => void;\n    const promise = new Promise<WindowManager>(r => {\n        // @ts-expect-error Set private property.\n        WindowManager._resolve = resolve = r;\n    });\n\n    let wasReadonly = false;\n    const canOperate = isRoomTokenWritable(room);\n    if (!room.isWritable && canOperate) {\n        wasReadonly = true;\n        await pRetry(\n            async count => {\n                log(`switching to writable (x${count})`);\n                await room.setWritable(true);\n            },\n            { retries: 10, maxTimeout: 5000 }\n        );\n    }\n    if (room.isWritable) {\n        log(\"creating InvisiblePlugin...\");\n        room.createInvisiblePlugin(WindowManager, {}).catch(console.warn);\n    } else {\n        if (canOperate) console.warn(\"[WindowManager]: failed to switch to writable\");\n        console.warn(\"[WindowManager]: waiting for others to create the plugin...\");\n    }\n\n    const timeout = setTimeout(() => {\n        console.warn(\"[WindowManager]: no one called createInvisiblePlugin() after 20 seconds\");\n    }, 20_000);\n\n    const abort = setTimeout(() => {\n        throw new Error(\"[WindowManager]: no one called createInvisiblePlugin() after 60 seconds\");\n    }, 60_000);\n\n    const interval = setInterval(() => {\n        manager = room.getInvisiblePlugin(WindowManager.kind) as WindowManager;\n        if (manager) {\n            clearTimeout(abort);\n            clearTimeout(timeout);\n            clearInterval(interval);\n            resolve(manager);\n            if (wasReadonly && room.isWritable) {\n                setTimeout(() => room.setWritable(false).catch(console.warn), 500);\n            }\n        }\n    }, 200);\n\n    return promise;\n};\n\nconst isRoomTokenWritable = (room: Room) => {\n    try {\n        const str = atob(room.roomToken.slice(\"NETLESSROOM_\".length));\n        const index = str.indexOf(\"&role=\");\n        const role = +str[index + \"&role=\".length];\n        return role < 2;\n    } catch (error) {\n        console.error(error);\n        return false;\n    }\n};\n","function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n    // @ts-ignore\n    for (const k in src)\n        tar[k] = src[k];\n    return tar;\n}\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\nfunction is_promise(value) {\n    return !!value && (typeof value === 'object' || typeof value === 'function') && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n    element.__svelte_meta = {\n        loc: { file, line, column, char }\n    };\n}\nfunction run(fn) {\n    return fn();\n}\nfunction blank_object() {\n    return Object.create(null);\n}\nfunction run_all(fns) {\n    fns.forEach(run);\n}\nfunction is_function(thing) {\n    return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n    return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n    if (!src_url_equal_anchor) {\n        src_url_equal_anchor = document.createElement('a');\n    }\n    src_url_equal_anchor.href = url;\n    return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n    return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n    return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n    if (store != null && typeof store.subscribe !== 'function') {\n        throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n    }\n}\nfunction subscribe(store, ...callbacks) {\n    if (store == null) {\n        return noop;\n    }\n    const unsub = store.subscribe(...callbacks);\n    return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n    let value;\n    subscribe(store, _ => value = _)();\n    return value;\n}\nfunction component_subscribe(component, store, callback) {\n    component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n    if (definition) {\n        const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n        return definition[0](slot_ctx);\n    }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n    return definition[1] && fn\n        ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n        : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n    if (definition[2] && fn) {\n        const lets = definition[2](fn(dirty));\n        if ($$scope.dirty === undefined) {\n            return lets;\n        }\n        if (typeof lets === 'object') {\n            const merged = [];\n            const len = Math.max($$scope.dirty.length, lets.length);\n            for (let i = 0; i < len; i += 1) {\n                merged[i] = $$scope.dirty[i] | lets[i];\n            }\n            return merged;\n        }\n        return $$scope.dirty | lets;\n    }\n    return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n    if (slot_changes) {\n        const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n        slot.p(slot_context, slot_changes);\n    }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n    const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n    update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n    if ($$scope.ctx.length > 32) {\n        const dirty = [];\n        const length = $$scope.ctx.length / 32;\n        for (let i = 0; i < length; i++) {\n            dirty[i] = -1;\n        }\n        return dirty;\n    }\n    return -1;\n}\nfunction exclude_internal_props(props) {\n    const result = {};\n    for (const k in props)\n        if (k[0] !== '$')\n            result[k] = props[k];\n    return result;\n}\nfunction compute_rest_props(props, keys) {\n    const rest = {};\n    keys = new Set(keys);\n    for (const k in props)\n        if (!keys.has(k) && k[0] !== '$')\n            rest[k] = props[k];\n    return rest;\n}\nfunction compute_slots(slots) {\n    const result = {};\n    for (const key in slots) {\n        result[key] = true;\n    }\n    return result;\n}\nfunction once(fn) {\n    let ran = false;\n    return function (...args) {\n        if (ran)\n            return;\n        ran = true;\n        fn.call(this, ...args);\n    };\n}\nfunction null_to_empty(value) {\n    return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n    store.set(value);\n    return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n    return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\nfunction split_css_unit(value) {\n    const split = typeof value === 'string' && value.match(/^\\s*(-?[\\d.]+)([^\\s]*)\\s*$/);\n    return split ? [parseFloat(split[1]), split[2] || 'px'] : [value, 'px'];\n}\nconst contenteditable_truthy_values = ['', true, 1, 'true', 'contenteditable'];\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n    ? () => window.performance.now()\n    : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n    now = fn;\n}\nfunction set_raf(fn) {\n    raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n    tasks.forEach(task => {\n        if (!task.c(now)) {\n            tasks.delete(task);\n            task.f();\n        }\n    });\n    if (tasks.size !== 0)\n        raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n    tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n    let task;\n    if (tasks.size === 0)\n        raf(run_tasks);\n    return {\n        promise: new Promise(fulfill => {\n            tasks.add(task = { c: callback, f: fulfill });\n        }),\n        abort() {\n            tasks.delete(task);\n        }\n    };\n}\n\nconst globals = (typeof window !== 'undefined'\n    ? window\n    : typeof globalThis !== 'undefined'\n        ? globalThis\n        : global);\n\n/**\n * Resize observer singleton.\n * One listener per element only!\n * https://groups.google.com/a/chromium.org/g/blink-dev/c/z6ienONUb5A/m/F5-VcUZtBAAJ\n */\nclass ResizeObserverSingleton {\n    constructor(options) {\n        this.options = options;\n        this._listeners = 'WeakMap' in globals ? new WeakMap() : undefined;\n    }\n    observe(element, listener) {\n        this._listeners.set(element, listener);\n        this._getObserver().observe(element, this.options);\n        return () => {\n            this._listeners.delete(element);\n            this._observer.unobserve(element); // this line can probably be removed\n        };\n    }\n    _getObserver() {\n        var _a;\n        return (_a = this._observer) !== null && _a !== void 0 ? _a : (this._observer = new ResizeObserver((entries) => {\n            var _a;\n            for (const entry of entries) {\n                ResizeObserverSingleton.entries.set(entry.target, entry);\n                (_a = this._listeners.get(entry.target)) === null || _a === void 0 ? void 0 : _a(entry);\n            }\n        }));\n    }\n}\n// Needs to be written like this to pass the tree-shake-test\nResizeObserverSingleton.entries = 'WeakMap' in globals ? new WeakMap() : undefined;\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n    is_hydrating = true;\n}\nfunction end_hydrating() {\n    is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n    // Return first index of value larger than input value in the range [low, high)\n    while (low < high) {\n        const mid = low + ((high - low) >> 1);\n        if (key(mid) <= value) {\n            low = mid + 1;\n        }\n        else {\n            high = mid;\n        }\n    }\n    return low;\n}\nfunction init_hydrate(target) {\n    if (target.hydrate_init)\n        return;\n    target.hydrate_init = true;\n    // We know that all children have claim_order values since the unclaimed have been detached if target is not <head>\n    let children = target.childNodes;\n    // If target is <head>, there may be children without claim_order\n    if (target.nodeName === 'HEAD') {\n        const myChildren = [];\n        for (let i = 0; i < children.length; i++) {\n            const node = children[i];\n            if (node.claim_order !== undefined) {\n                myChildren.push(node);\n            }\n        }\n        children = myChildren;\n    }\n    /*\n    * Reorder claimed children optimally.\n    * We can reorder claimed children optimally by finding the longest subsequence of\n    * nodes that are already claimed in order and only moving the rest. The longest\n    * subsequence of nodes that are claimed in order can be found by\n    * computing the longest increasing subsequence of .claim_order values.\n    *\n    * This algorithm is optimal in generating the least amount of reorder operations\n    * possible.\n    *\n    * Proof:\n    * We know that, given a set of reordering operations, the nodes that do not move\n    * always form an increasing subsequence, since they do not move among each other\n    * meaning that they must be already ordered among each other. Thus, the maximal\n    * set of nodes that do not move form a longest increasing subsequence.\n    */\n    // Compute longest increasing subsequence\n    // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n    const m = new Int32Array(children.length + 1);\n    // Predecessor indices + 1\n    const p = new Int32Array(children.length);\n    m[0] = -1;\n    let longest = 0;\n    for (let i = 0; i < children.length; i++) {\n        const current = children[i].claim_order;\n        // Find the largest subsequence length such that it ends in a value less than our current value\n        // upper_bound returns first greater value, so we subtract one\n        // with fast path for when we are on the current longest subsequence\n        const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n        p[i] = m[seqLen] + 1;\n        const newLen = seqLen + 1;\n        // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n        m[newLen] = i;\n        longest = Math.max(newLen, longest);\n    }\n    // The longest increasing subsequence of nodes (initially reversed)\n    const lis = [];\n    // The rest of the nodes, nodes that will be moved\n    const toMove = [];\n    let last = children.length - 1;\n    for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n        lis.push(children[cur - 1]);\n        for (; last >= cur; last--) {\n            toMove.push(children[last]);\n        }\n        last--;\n    }\n    for (; last >= 0; last--) {\n        toMove.push(children[last]);\n    }\n    lis.reverse();\n    // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n    toMove.sort((a, b) => a.claim_order - b.claim_order);\n    // Finally, we move the nodes\n    for (let i = 0, j = 0; i < toMove.length; i++) {\n        while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n            j++;\n        }\n        const anchor = j < lis.length ? lis[j] : null;\n        target.insertBefore(toMove[i], anchor);\n    }\n}\nfunction append(target, node) {\n    target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n    const append_styles_to = get_root_for_style(target);\n    if (!append_styles_to.getElementById(style_sheet_id)) {\n        const style = element('style');\n        style.id = style_sheet_id;\n        style.textContent = styles;\n        append_stylesheet(append_styles_to, style);\n    }\n}\nfunction get_root_for_style(node) {\n    if (!node)\n        return document;\n    const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n    if (root && root.host) {\n        return root;\n    }\n    return node.ownerDocument;\n}\nfunction append_empty_stylesheet(node) {\n    const style_element = element('style');\n    append_stylesheet(get_root_for_style(node), style_element);\n    return style_element.sheet;\n}\nfunction append_stylesheet(node, style) {\n    append(node.head || node, style);\n    return style.sheet;\n}\nfunction append_hydration(target, node) {\n    if (is_hydrating) {\n        init_hydrate(target);\n        if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentNode !== target))) {\n            target.actual_end_child = target.firstChild;\n        }\n        // Skip nodes of undefined ordering\n        while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n            target.actual_end_child = target.actual_end_child.nextSibling;\n        }\n        if (node !== target.actual_end_child) {\n            // We only insert if the ordering of this node should be modified or the parent node is not target\n            if (node.claim_order !== undefined || node.parentNode !== target) {\n                target.insertBefore(node, target.actual_end_child);\n            }\n        }\n        else {\n            target.actual_end_child = node.nextSibling;\n        }\n    }\n    else if (node.parentNode !== target || node.nextSibling !== null) {\n        target.appendChild(node);\n    }\n}\nfunction insert(target, node, anchor) {\n    target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n    if (is_hydrating && !anchor) {\n        append_hydration(target, node);\n    }\n    else if (node.parentNode !== target || node.nextSibling != anchor) {\n        target.insertBefore(node, anchor || null);\n    }\n}\nfunction detach(node) {\n    if (node.parentNode) {\n        node.parentNode.removeChild(node);\n    }\n}\nfunction destroy_each(iterations, detaching) {\n    for (let i = 0; i < iterations.length; i += 1) {\n        if (iterations[i])\n            iterations[i].d(detaching);\n    }\n}\nfunction element(name) {\n    return document.createElement(name);\n}\nfunction element_is(name, is) {\n    return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n    const target = {};\n    for (const k in obj) {\n        if (has_prop(obj, k)\n            // @ts-ignore\n            && exclude.indexOf(k) === -1) {\n            // @ts-ignore\n            target[k] = obj[k];\n        }\n    }\n    return target;\n}\nfunction svg_element(name) {\n    return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n    return document.createTextNode(data);\n}\nfunction space() {\n    return text(' ');\n}\nfunction empty() {\n    return text('');\n}\nfunction comment(content) {\n    return document.createComment(content);\n}\nfunction listen(node, event, handler, options) {\n    node.addEventListener(event, handler, options);\n    return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n    return function (event) {\n        event.preventDefault();\n        // @ts-ignore\n        return fn.call(this, event);\n    };\n}\nfunction stop_propagation(fn) {\n    return function (event) {\n        event.stopPropagation();\n        // @ts-ignore\n        return fn.call(this, event);\n    };\n}\nfunction stop_immediate_propagation(fn) {\n    return function (event) {\n        event.stopImmediatePropagation();\n        // @ts-ignore\n        return fn.call(this, event);\n    };\n}\nfunction self(fn) {\n    return function (event) {\n        // @ts-ignore\n        if (event.target === this)\n            fn.call(this, event);\n    };\n}\nfunction trusted(fn) {\n    return function (event) {\n        // @ts-ignore\n        if (event.isTrusted)\n            fn.call(this, event);\n    };\n}\nfunction attr(node, attribute, value) {\n    if (value == null)\n        node.removeAttribute(attribute);\n    else if (node.getAttribute(attribute) !== value)\n        node.setAttribute(attribute, value);\n}\n/**\n * List of attributes that should always be set through the attr method,\n * because updating them through the property setter doesn't work reliably.\n * In the example of `width`/`height`, the problem is that the setter only\n * accepts numeric values, but the attribute can also be set to a string like `50%`.\n * If this list becomes too big, rethink this approach.\n */\nconst always_set_through_set_attribute = ['width', 'height'];\nfunction set_attributes(node, attributes) {\n    // @ts-ignore\n    const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n    for (const key in attributes) {\n        if (attributes[key] == null) {\n            node.removeAttribute(key);\n        }\n        else if (key === 'style') {\n            node.style.cssText = attributes[key];\n        }\n        else if (key === '__value') {\n            node.value = node[key] = attributes[key];\n        }\n        else if (descriptors[key] && descriptors[key].set && always_set_through_set_attribute.indexOf(key) === -1) {\n            node[key] = attributes[key];\n        }\n        else {\n            attr(node, key, attributes[key]);\n        }\n    }\n}\nfunction set_svg_attributes(node, attributes) {\n    for (const key in attributes) {\n        attr(node, key, attributes[key]);\n    }\n}\nfunction set_custom_element_data_map(node, data_map) {\n    Object.keys(data_map).forEach((key) => {\n        set_custom_element_data(node, key, data_map[key]);\n    });\n}\nfunction set_custom_element_data(node, prop, value) {\n    if (prop in node) {\n        node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n    }\n    else {\n        attr(node, prop, value);\n    }\n}\nfunction set_dynamic_element_data(tag) {\n    return (/-/.test(tag)) ? set_custom_element_data_map : set_attributes;\n}\nfunction xlink_attr(node, attribute, value) {\n    node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n    const value = new Set();\n    for (let i = 0; i < group.length; i += 1) {\n        if (group[i].checked)\n            value.add(group[i].__value);\n    }\n    if (!checked) {\n        value.delete(__value);\n    }\n    return Array.from(value);\n}\nfunction init_binding_group(group) {\n    let _inputs;\n    return {\n        /* push */ p(...inputs) {\n            _inputs = inputs;\n            _inputs.forEach(input => group.push(input));\n        },\n        /* remove */ r() {\n            _inputs.forEach(input => group.splice(group.indexOf(input), 1));\n        }\n    };\n}\nfunction init_binding_group_dynamic(group, indexes) {\n    let _group = get_binding_group(group);\n    let _inputs;\n    function get_binding_group(group) {\n        for (let i = 0; i < indexes.length; i++) {\n            group = group[indexes[i]] = group[indexes[i]] || [];\n        }\n        return group;\n    }\n    function push() {\n        _inputs.forEach(input => _group.push(input));\n    }\n    function remove() {\n        _inputs.forEach(input => _group.splice(_group.indexOf(input), 1));\n    }\n    return {\n        /* update */ u(new_indexes) {\n            indexes = new_indexes;\n            const new_group = get_binding_group(group);\n            if (new_group !== _group) {\n                remove();\n                _group = new_group;\n                push();\n            }\n        },\n        /* push */ p(...inputs) {\n            _inputs = inputs;\n            push();\n        },\n        /* remove */ r: remove\n    };\n}\nfunction to_number(value) {\n    return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n    const array = [];\n    for (let i = 0; i < ranges.length; i += 1) {\n        array.push({ start: ranges.start(i), end: ranges.end(i) });\n    }\n    return array;\n}\nfunction children(element) {\n    return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n    if (nodes.claim_info === undefined) {\n        nodes.claim_info = { last_index: 0, total_claimed: 0 };\n    }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n    // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n    init_claim_info(nodes);\n    const resultNode = (() => {\n        // We first try to find an element after the previous one\n        for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n            const node = nodes[i];\n            if (predicate(node)) {\n                const replacement = processNode(node);\n                if (replacement === undefined) {\n                    nodes.splice(i, 1);\n                }\n                else {\n                    nodes[i] = replacement;\n                }\n                if (!dontUpdateLastIndex) {\n                    nodes.claim_info.last_index = i;\n                }\n                return node;\n            }\n        }\n        // Otherwise, we try to find one before\n        // We iterate in reverse so that we don't go too far back\n        for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n            const node = nodes[i];\n            if (predicate(node)) {\n                const replacement = processNode(node);\n                if (replacement === undefined) {\n                    nodes.splice(i, 1);\n                }\n                else {\n                    nodes[i] = replacement;\n                }\n                if (!dontUpdateLastIndex) {\n                    nodes.claim_info.last_index = i;\n                }\n                else if (replacement === undefined) {\n                    // Since we spliced before the last_index, we decrease it\n                    nodes.claim_info.last_index--;\n                }\n                return node;\n            }\n        }\n        // If we can't find any matching node, we create a new one\n        return createNode();\n    })();\n    resultNode.claim_order = nodes.claim_info.total_claimed;\n    nodes.claim_info.total_claimed += 1;\n    return resultNode;\n}\nfunction claim_element_base(nodes, name, attributes, create_element) {\n    return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n        const remove = [];\n        for (let j = 0; j < node.attributes.length; j++) {\n            const attribute = node.attributes[j];\n            if (!attributes[attribute.name]) {\n                remove.push(attribute.name);\n            }\n        }\n        remove.forEach(v => node.removeAttribute(v));\n        return undefined;\n    }, () => create_element(name));\n}\nfunction claim_element(nodes, name, attributes) {\n    return claim_element_base(nodes, name, attributes, element);\n}\nfunction claim_svg_element(nodes, name, attributes) {\n    return claim_element_base(nodes, name, attributes, svg_element);\n}\nfunction claim_text(nodes, data) {\n    return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n        const dataStr = '' + data;\n        if (node.data.startsWith(dataStr)) {\n            if (node.data.length !== dataStr.length) {\n                return node.splitText(dataStr.length);\n            }\n        }\n        else {\n            node.data = dataStr;\n        }\n    }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n    );\n}\nfunction claim_space(nodes) {\n    return claim_text(nodes, ' ');\n}\nfunction claim_comment(nodes, data) {\n    return claim_node(nodes, (node) => node.nodeType === 8, (node) => {\n        node.data = '' + data;\n        return undefined;\n    }, () => comment(data), true);\n}\nfunction find_comment(nodes, text, start) {\n    for (let i = start; i < nodes.length; i += 1) {\n        const node = nodes[i];\n        if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n            return i;\n        }\n    }\n    return nodes.length;\n}\nfunction claim_html_tag(nodes, is_svg) {\n    // find html opening tag\n    const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n    const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n    if (start_index === end_index) {\n        return new HtmlTagHydration(undefined, is_svg);\n    }\n    init_claim_info(nodes);\n    const html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n    detach(html_tag_nodes[0]);\n    detach(html_tag_nodes[html_tag_nodes.length - 1]);\n    const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n    for (const n of claimed_nodes) {\n        n.claim_order = nodes.claim_info.total_claimed;\n        nodes.claim_info.total_claimed += 1;\n    }\n    return new HtmlTagHydration(claimed_nodes, is_svg);\n}\nfunction set_data(text, data) {\n    data = '' + data;\n    if (text.data === data)\n        return;\n    text.data = data;\n}\nfunction set_data_contenteditable(text, data) {\n    data = '' + data;\n    if (text.wholeText === data)\n        return;\n    text.data = data;\n}\nfunction set_data_maybe_contenteditable(text, data, attr_value) {\n    if (~contenteditable_truthy_values.indexOf(attr_value)) {\n        set_data_contenteditable(text, data);\n    }\n    else {\n        set_data(text, data);\n    }\n}\nfunction set_input_value(input, value) {\n    input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n    try {\n        input.type = type;\n    }\n    catch (e) {\n        // do nothing\n    }\n}\nfunction set_style(node, key, value, important) {\n    if (value == null) {\n        node.style.removeProperty(key);\n    }\n    else {\n        node.style.setProperty(key, value, important ? 'important' : '');\n    }\n}\nfunction select_option(select, value, mounting) {\n    for (let i = 0; i < select.options.length; i += 1) {\n        const option = select.options[i];\n        if (option.__value === value) {\n            option.selected = true;\n            return;\n        }\n    }\n    if (!mounting || value !== undefined) {\n        select.selectedIndex = -1; // no option should be selected\n    }\n}\nfunction select_options(select, value) {\n    for (let i = 0; i < select.options.length; i += 1) {\n        const option = select.options[i];\n        option.selected = ~value.indexOf(option.__value);\n    }\n}\nfunction select_value(select) {\n    const selected_option = select.querySelector(':checked');\n    return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n    return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n    if (crossorigin === undefined) {\n        crossorigin = false;\n        try {\n            if (typeof window !== 'undefined' && window.parent) {\n                void window.parent.document;\n            }\n        }\n        catch (error) {\n            crossorigin = true;\n        }\n    }\n    return crossorigin;\n}\nfunction add_iframe_resize_listener(node, fn) {\n    const computed_style = getComputedStyle(node);\n    if (computed_style.position === 'static') {\n        node.style.position = 'relative';\n    }\n    const iframe = element('iframe');\n    iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n        'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n    iframe.setAttribute('aria-hidden', 'true');\n    iframe.tabIndex = -1;\n    const crossorigin = is_crossorigin();\n    let unsubscribe;\n    if (crossorigin) {\n        iframe.src = \"data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>\";\n        unsubscribe = listen(window, 'message', (event) => {\n            if (event.source === iframe.contentWindow)\n                fn();\n        });\n    }\n    else {\n        iframe.src = 'about:blank';\n        iframe.onload = () => {\n            unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n            // make sure an initial resize event is fired _after_ the iframe is loaded (which is asynchronous)\n            // see https://github.com/sveltejs/svelte/issues/4233\n            fn();\n        };\n    }\n    append(node, iframe);\n    return () => {\n        if (crossorigin) {\n            unsubscribe();\n        }\n        else if (unsubscribe && iframe.contentWindow) {\n            unsubscribe();\n        }\n        detach(iframe);\n    };\n}\nconst resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: 'content-box' });\nconst resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: 'border-box' });\nconst resize_observer_device_pixel_content_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: 'device-pixel-content-box' });\nfunction toggle_class(element, name, toggle) {\n    element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n    const e = document.createEvent('CustomEvent');\n    e.initCustomEvent(type, bubbles, cancelable, detail);\n    return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n    return Array.from(parent.querySelectorAll(selector));\n}\nfunction head_selector(nodeId, head) {\n    const result = [];\n    let started = 0;\n    for (const node of head.childNodes) {\n        if (node.nodeType === 8 /* comment node */) {\n            const comment = node.textContent.trim();\n            if (comment === `HEAD_${nodeId}_END`) {\n                started -= 1;\n                result.push(node);\n            }\n            else if (comment === `HEAD_${nodeId}_START`) {\n                started += 1;\n                result.push(node);\n            }\n        }\n        else if (started > 0) {\n            result.push(node);\n        }\n    }\n    return result;\n}\nclass HtmlTag {\n    constructor(is_svg = false) {\n        this.is_svg = false;\n        this.is_svg = is_svg;\n        this.e = this.n = null;\n    }\n    c(html) {\n        this.h(html);\n    }\n    m(html, target, anchor = null) {\n        if (!this.e) {\n            if (this.is_svg)\n                this.e = svg_element(target.nodeName);\n            /** #7364  target for <template> may be provided as #document-fragment(11) */\n            else\n                this.e = element((target.nodeType === 11 ? 'TEMPLATE' : target.nodeName));\n            this.t = target.tagName !== 'TEMPLATE' ? target : target.content;\n            this.c(html);\n        }\n        this.i(anchor);\n    }\n    h(html) {\n        this.e.innerHTML = html;\n        this.n = Array.from(this.e.nodeName === 'TEMPLATE' ? this.e.content.childNodes : this.e.childNodes);\n    }\n    i(anchor) {\n        for (let i = 0; i < this.n.length; i += 1) {\n            insert(this.t, this.n[i], anchor);\n        }\n    }\n    p(html) {\n        this.d();\n        this.h(html);\n        this.i(this.a);\n    }\n    d() {\n        this.n.forEach(detach);\n    }\n}\nclass HtmlTagHydration extends HtmlTag {\n    constructor(claimed_nodes, is_svg = false) {\n        super(is_svg);\n        this.e = this.n = null;\n        this.l = claimed_nodes;\n    }\n    c(html) {\n        if (this.l) {\n            this.n = this.l;\n        }\n        else {\n            super.c(html);\n        }\n    }\n    i(anchor) {\n        for (let i = 0; i < this.n.length; i += 1) {\n            insert_hydration(this.t, this.n[i], anchor);\n        }\n    }\n}\nfunction attribute_to_object(attributes) {\n    const result = {};\n    for (const attribute of attributes) {\n        result[attribute.name] = attribute.value;\n    }\n    return result;\n}\nfunction get_custom_elements_slots(element) {\n    const result = {};\n    element.childNodes.forEach((node) => {\n        result[node.slot || 'default'] = true;\n    });\n    return result;\n}\nfunction construct_svelte_component(component, props) {\n    return new component(props);\n}\n\n// we need to store the information for multiple documents because a Svelte application could also contain iframes\n// https://github.com/sveltejs/svelte/issues/3624\nconst managed_styles = new Map();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n    let hash = 5381;\n    let i = str.length;\n    while (i--)\n        hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n    return hash >>> 0;\n}\nfunction create_style_information(doc, node) {\n    const info = { stylesheet: append_empty_stylesheet(node), rules: {} };\n    managed_styles.set(doc, info);\n    return info;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n    const step = 16.666 / duration;\n    let keyframes = '{\\n';\n    for (let p = 0; p <= 1; p += step) {\n        const t = a + (b - a) * ease(p);\n        keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n    }\n    const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n    const name = `__svelte_${hash(rule)}_${uid}`;\n    const doc = get_root_for_style(node);\n    const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);\n    if (!rules[name]) {\n        rules[name] = true;\n        stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n    }\n    const animation = node.style.animation || '';\n    node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n    active += 1;\n    return name;\n}\nfunction delete_rule(node, name) {\n    const previous = (node.style.animation || '').split(', ');\n    const next = previous.filter(name\n        ? anim => anim.indexOf(name) < 0 // remove specific animation\n        : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n    );\n    const deleted = previous.length - next.length;\n    if (deleted) {\n        node.style.animation = next.join(', ');\n        active -= deleted;\n        if (!active)\n            clear_rules();\n    }\n}\nfunction clear_rules() {\n    raf(() => {\n        if (active)\n            return;\n        managed_styles.forEach(info => {\n            const { ownerNode } = info.stylesheet;\n            // there is no ownerNode if it runs on jsdom.\n            if (ownerNode)\n                detach(ownerNode);\n        });\n        managed_styles.clear();\n    });\n}\n\nfunction create_animation(node, from, fn, params) {\n    if (!from)\n        return noop;\n    const to = node.getBoundingClientRect();\n    if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n        return noop;\n    const { delay = 0, duration = 300, easing = identity, \n    // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n    start: start_time = now() + delay, \n    // @ts-ignore todo:\n    end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n    let running = true;\n    let started = false;\n    let name;\n    function start() {\n        if (css) {\n            name = create_rule(node, 0, 1, duration, delay, easing, css);\n        }\n        if (!delay) {\n            started = true;\n        }\n    }\n    function stop() {\n        if (css)\n            delete_rule(node, name);\n        running = false;\n    }\n    loop(now => {\n        if (!started && now >= start_time) {\n            started = true;\n        }\n        if (started && now >= end) {\n            tick(1, 0);\n            stop();\n        }\n        if (!running) {\n            return false;\n        }\n        if (started) {\n            const p = now - start_time;\n            const t = 0 + 1 * easing(p / duration);\n            tick(t, 1 - t);\n        }\n        return true;\n    });\n    start();\n    tick(0, 1);\n    return stop;\n}\nfunction fix_position(node) {\n    const style = getComputedStyle(node);\n    if (style.position !== 'absolute' && style.position !== 'fixed') {\n        const { width, height } = style;\n        const a = node.getBoundingClientRect();\n        node.style.position = 'absolute';\n        node.style.width = width;\n        node.style.height = height;\n        add_transform(node, a);\n    }\n}\nfunction add_transform(node, a) {\n    const b = node.getBoundingClientRect();\n    if (a.left !== b.left || a.top !== b.top) {\n        const style = getComputedStyle(node);\n        const transform = style.transform === 'none' ? '' : style.transform;\n        node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n    }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n    current_component = component;\n}\nfunction get_current_component() {\n    if (!current_component)\n        throw new Error('Function called outside component initialization');\n    return current_component;\n}\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`\n *\n * https://svelte.dev/docs#run-time-svelte-beforeupdate\n */\nfunction beforeUpdate(fn) {\n    get_current_component().$$.before_update.push(fn);\n}\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs#run-time-svelte-onmount\n */\nfunction onMount(fn) {\n    get_current_component().$$.on_mount.push(fn);\n}\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`\n */\nfunction afterUpdate(fn) {\n    get_current_component().$$.after_update.push(fn);\n}\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs#run-time-svelte-ondestroy\n */\nfunction onDestroy(fn) {\n    get_current_component().$$.on_destroy.push(fn);\n}\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * https://svelte.dev/docs#run-time-svelte-createeventdispatcher\n */\nfunction createEventDispatcher() {\n    const component = get_current_component();\n    return (type, detail, { cancelable = false } = {}) => {\n        const callbacks = component.$$.callbacks[type];\n        if (callbacks) {\n            // TODO are there situations where events could be dispatched\n            // in a server (non-DOM) environment?\n            const event = custom_event(type, detail, { cancelable });\n            callbacks.slice().forEach(fn => {\n                fn.call(component, event);\n            });\n            return !event.defaultPrevented;\n        }\n        return true;\n    };\n}\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-setcontext\n */\nfunction setContext(key, context) {\n    get_current_component().$$.context.set(key, context);\n    return context;\n}\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-getcontext\n */\nfunction getContext(key) {\n    return get_current_component().$$.context.get(key);\n}\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * https://svelte.dev/docs#run-time-svelte-getallcontexts\n */\nfunction getAllContexts() {\n    return get_current_component().$$.context;\n}\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-hascontext\n */\nfunction hasContext(key) {\n    return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n    const callbacks = component.$$.callbacks[event.type];\n    if (callbacks) {\n        // @ts-ignore\n        callbacks.slice().forEach(fn => fn.call(this, event));\n    }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nlet render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = /* @__PURE__ */ Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n    if (!update_scheduled) {\n        update_scheduled = true;\n        resolved_promise.then(flush);\n    }\n}\nfunction tick() {\n    schedule_update();\n    return resolved_promise;\n}\nfunction add_render_callback(fn) {\n    render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n    flush_callbacks.push(fn);\n}\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n//    for afterUpdates called during the initial onMount, which are called in\n//    reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n//    dirty_components array and will cause a reentrant call to flush(). Because\n//    the flush index is kept outside the function, the reentrant call will pick\n//    up where the earlier call left off and go through all dirty components. The\n//    current_component value is saved and restored so that the reentrant call will\n//    not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n//    callback called a second time; the seen_callbacks set, outside the flush()\n//    function, guarantees this behavior.\nconst seen_callbacks = new Set();\nlet flushidx = 0; // Do *not* move this inside the flush() function\nfunction flush() {\n    // Do not reenter flush while dirty components are updated, as this can\n    // result in an infinite loop. Instead, let the inner flush handle it.\n    // Reentrancy is ok afterwards for bindings etc.\n    if (flushidx !== 0) {\n        return;\n    }\n    const saved_component = current_component;\n    do {\n        // first, call beforeUpdate functions\n        // and update components\n        try {\n            while (flushidx < dirty_components.length) {\n                const component = dirty_components[flushidx];\n                flushidx++;\n                set_current_component(component);\n                update(component.$$);\n            }\n        }\n        catch (e) {\n            // reset dirty state to not end up in a deadlocked state and then rethrow\n            dirty_components.length = 0;\n            flushidx = 0;\n            throw e;\n        }\n        set_current_component(null);\n        dirty_components.length = 0;\n        flushidx = 0;\n        while (binding_callbacks.length)\n            binding_callbacks.pop()();\n        // then, once components are updated, call\n        // afterUpdate functions. This may cause\n        // subsequent updates...\n        for (let i = 0; i < render_callbacks.length; i += 1) {\n            const callback = render_callbacks[i];\n            if (!seen_callbacks.has(callback)) {\n                // ...so guard against infinite loops\n                seen_callbacks.add(callback);\n                callback();\n            }\n        }\n        render_callbacks.length = 0;\n    } while (dirty_components.length);\n    while (flush_callbacks.length) {\n        flush_callbacks.pop()();\n    }\n    update_scheduled = false;\n    seen_callbacks.clear();\n    set_current_component(saved_component);\n}\nfunction update($$) {\n    if ($$.fragment !== null) {\n        $$.update();\n        run_all($$.before_update);\n        const dirty = $$.dirty;\n        $$.dirty = [-1];\n        $$.fragment && $$.fragment.p($$.ctx, dirty);\n        $$.after_update.forEach(add_render_callback);\n    }\n}\n/**\n * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.\n */\nfunction flush_render_callbacks(fns) {\n    const filtered = [];\n    const targets = [];\n    render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c));\n    targets.forEach((c) => c());\n    render_callbacks = filtered;\n}\n\nlet promise;\nfunction wait() {\n    if (!promise) {\n        promise = Promise.resolve();\n        promise.then(() => {\n            promise = null;\n        });\n    }\n    return promise;\n}\nfunction dispatch(node, direction, kind) {\n    node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n    outros = {\n        r: 0,\n        c: [],\n        p: outros // parent group\n    };\n}\nfunction check_outros() {\n    if (!outros.r) {\n        run_all(outros.c);\n    }\n    outros = outros.p;\n}\nfunction transition_in(block, local) {\n    if (block && block.i) {\n        outroing.delete(block);\n        block.i(local);\n    }\n}\nfunction transition_out(block, local, detach, callback) {\n    if (block && block.o) {\n        if (outroing.has(block))\n            return;\n        outroing.add(block);\n        outros.c.push(() => {\n            outroing.delete(block);\n            if (callback) {\n                if (detach)\n                    block.d(1);\n                callback();\n            }\n        });\n        block.o(local);\n    }\n    else if (callback) {\n        callback();\n    }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n    const options = { direction: 'in' };\n    let config = fn(node, params, options);\n    let running = false;\n    let animation_name;\n    let task;\n    let uid = 0;\n    function cleanup() {\n        if (animation_name)\n            delete_rule(node, animation_name);\n    }\n    function go() {\n        const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n        if (css)\n            animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n        tick(0, 1);\n        const start_time = now() + delay;\n        const end_time = start_time + duration;\n        if (task)\n            task.abort();\n        running = true;\n        add_render_callback(() => dispatch(node, true, 'start'));\n        task = loop(now => {\n            if (running) {\n                if (now >= end_time) {\n                    tick(1, 0);\n                    dispatch(node, true, 'end');\n                    cleanup();\n                    return running = false;\n                }\n                if (now >= start_time) {\n                    const t = easing((now - start_time) / duration);\n                    tick(t, 1 - t);\n                }\n            }\n            return running;\n        });\n    }\n    let started = false;\n    return {\n        start() {\n            if (started)\n                return;\n            started = true;\n            delete_rule(node);\n            if (is_function(config)) {\n                config = config(options);\n                wait().then(go);\n            }\n            else {\n                go();\n            }\n        },\n        invalidate() {\n            started = false;\n        },\n        end() {\n            if (running) {\n                cleanup();\n                running = false;\n            }\n        }\n    };\n}\nfunction create_out_transition(node, fn, params) {\n    const options = { direction: 'out' };\n    let config = fn(node, params, options);\n    let running = true;\n    let animation_name;\n    const group = outros;\n    group.r += 1;\n    function go() {\n        const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n        if (css)\n            animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n        const start_time = now() + delay;\n        const end_time = start_time + duration;\n        add_render_callback(() => dispatch(node, false, 'start'));\n        loop(now => {\n            if (running) {\n                if (now >= end_time) {\n                    tick(0, 1);\n                    dispatch(node, false, 'end');\n                    if (!--group.r) {\n                        // this will result in `end()` being called,\n                        // so we don't need to clean up here\n                        run_all(group.c);\n                    }\n                    return false;\n                }\n                if (now >= start_time) {\n                    const t = easing((now - start_time) / duration);\n                    tick(1 - t, t);\n                }\n            }\n            return running;\n        });\n    }\n    if (is_function(config)) {\n        wait().then(() => {\n            // @ts-ignore\n            config = config(options);\n            go();\n        });\n    }\n    else {\n        go();\n    }\n    return {\n        end(reset) {\n            if (reset && config.tick) {\n                config.tick(1, 0);\n            }\n            if (running) {\n                if (animation_name)\n                    delete_rule(node, animation_name);\n                running = false;\n            }\n        }\n    };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n    const options = { direction: 'both' };\n    let config = fn(node, params, options);\n    let t = intro ? 0 : 1;\n    let running_program = null;\n    let pending_program = null;\n    let animation_name = null;\n    function clear_animation() {\n        if (animation_name)\n            delete_rule(node, animation_name);\n    }\n    function init(program, duration) {\n        const d = (program.b - t);\n        duration *= Math.abs(d);\n        return {\n            a: t,\n            b: program.b,\n            d,\n            duration,\n            start: program.start,\n            end: program.start + duration,\n            group: program.group\n        };\n    }\n    function go(b) {\n        const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n        const program = {\n            start: now() + delay,\n            b\n        };\n        if (!b) {\n            // @ts-ignore todo: improve typings\n            program.group = outros;\n            outros.r += 1;\n        }\n        if (running_program || pending_program) {\n            pending_program = program;\n        }\n        else {\n            // if this is an intro, and there's a delay, we need to do\n            // an initial tick and/or apply CSS animation immediately\n            if (css) {\n                clear_animation();\n                animation_name = create_rule(node, t, b, duration, delay, easing, css);\n            }\n            if (b)\n                tick(0, 1);\n            running_program = init(program, duration);\n            add_render_callback(() => dispatch(node, b, 'start'));\n            loop(now => {\n                if (pending_program && now > pending_program.start) {\n                    running_program = init(pending_program, duration);\n                    pending_program = null;\n                    dispatch(node, running_program.b, 'start');\n                    if (css) {\n                        clear_animation();\n                        animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n                    }\n                }\n                if (running_program) {\n                    if (now >= running_program.end) {\n                        tick(t = running_program.b, 1 - t);\n                        dispatch(node, running_program.b, 'end');\n                        if (!pending_program) {\n                            // we're done\n                            if (running_program.b) {\n                                // intro — we can tidy up immediately\n                                clear_animation();\n                            }\n                            else {\n                                // outro — needs to be coordinated\n                                if (!--running_program.group.r)\n                                    run_all(running_program.group.c);\n                            }\n                        }\n                        running_program = null;\n                    }\n                    else if (now >= running_program.start) {\n                        const p = now - running_program.start;\n                        t = running_program.a + running_program.d * easing(p / running_program.duration);\n                        tick(t, 1 - t);\n                    }\n                }\n                return !!(running_program || pending_program);\n            });\n        }\n    }\n    return {\n        run(b) {\n            if (is_function(config)) {\n                wait().then(() => {\n                    // @ts-ignore\n                    config = config(options);\n                    go(b);\n                });\n            }\n            else {\n                go(b);\n            }\n        },\n        end() {\n            clear_animation();\n            running_program = pending_program = null;\n        }\n    };\n}\n\nfunction handle_promise(promise, info) {\n    const token = info.token = {};\n    function update(type, index, key, value) {\n        if (info.token !== token)\n            return;\n        info.resolved = value;\n        let child_ctx = info.ctx;\n        if (key !== undefined) {\n            child_ctx = child_ctx.slice();\n            child_ctx[key] = value;\n        }\n        const block = type && (info.current = type)(child_ctx);\n        let needs_flush = false;\n        if (info.block) {\n            if (info.blocks) {\n                info.blocks.forEach((block, i) => {\n                    if (i !== index && block) {\n                        group_outros();\n                        transition_out(block, 1, 1, () => {\n                            if (info.blocks[i] === block) {\n                                info.blocks[i] = null;\n                            }\n                        });\n                        check_outros();\n                    }\n                });\n            }\n            else {\n                info.block.d(1);\n            }\n            block.c();\n            transition_in(block, 1);\n            block.m(info.mount(), info.anchor);\n            needs_flush = true;\n        }\n        info.block = block;\n        if (info.blocks)\n            info.blocks[index] = block;\n        if (needs_flush) {\n            flush();\n        }\n    }\n    if (is_promise(promise)) {\n        const current_component = get_current_component();\n        promise.then(value => {\n            set_current_component(current_component);\n            update(info.then, 1, info.value, value);\n            set_current_component(null);\n        }, error => {\n            set_current_component(current_component);\n            update(info.catch, 2, info.error, error);\n            set_current_component(null);\n            if (!info.hasCatch) {\n                throw error;\n            }\n        });\n        // if we previously had a then/catch block, destroy it\n        if (info.current !== info.pending) {\n            update(info.pending, 0);\n            return true;\n        }\n    }\n    else {\n        if (info.current !== info.then) {\n            update(info.then, 1, info.value, promise);\n            return true;\n        }\n        info.resolved = promise;\n    }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n    const child_ctx = ctx.slice();\n    const { resolved } = info;\n    if (info.current === info.then) {\n        child_ctx[info.value] = resolved;\n    }\n    if (info.current === info.catch) {\n        child_ctx[info.error] = resolved;\n    }\n    info.block.p(child_ctx, dirty);\n}\n\nfunction destroy_block(block, lookup) {\n    block.d(1);\n    lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n    transition_out(block, 1, 1, () => {\n        lookup.delete(block.key);\n    });\n}\nfunction fix_and_destroy_block(block, lookup) {\n    block.f();\n    destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n    block.f();\n    outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n    let o = old_blocks.length;\n    let n = list.length;\n    let i = o;\n    const old_indexes = {};\n    while (i--)\n        old_indexes[old_blocks[i].key] = i;\n    const new_blocks = [];\n    const new_lookup = new Map();\n    const deltas = new Map();\n    const updates = [];\n    i = n;\n    while (i--) {\n        const child_ctx = get_context(ctx, list, i);\n        const key = get_key(child_ctx);\n        let block = lookup.get(key);\n        if (!block) {\n            block = create_each_block(key, child_ctx);\n            block.c();\n        }\n        else if (dynamic) {\n            // defer updates until all the DOM shuffling is done\n            updates.push(() => block.p(child_ctx, dirty));\n        }\n        new_lookup.set(key, new_blocks[i] = block);\n        if (key in old_indexes)\n            deltas.set(key, Math.abs(i - old_indexes[key]));\n    }\n    const will_move = new Set();\n    const did_move = new Set();\n    function insert(block) {\n        transition_in(block, 1);\n        block.m(node, next);\n        lookup.set(block.key, block);\n        next = block.first;\n        n--;\n    }\n    while (o && n) {\n        const new_block = new_blocks[n - 1];\n        const old_block = old_blocks[o - 1];\n        const new_key = new_block.key;\n        const old_key = old_block.key;\n        if (new_block === old_block) {\n            // do nothing\n            next = new_block.first;\n            o--;\n            n--;\n        }\n        else if (!new_lookup.has(old_key)) {\n            // remove old block\n            destroy(old_block, lookup);\n            o--;\n        }\n        else if (!lookup.has(new_key) || will_move.has(new_key)) {\n            insert(new_block);\n        }\n        else if (did_move.has(old_key)) {\n            o--;\n        }\n        else if (deltas.get(new_key) > deltas.get(old_key)) {\n            did_move.add(new_key);\n            insert(new_block);\n        }\n        else {\n            will_move.add(old_key);\n            o--;\n        }\n    }\n    while (o--) {\n        const old_block = old_blocks[o];\n        if (!new_lookup.has(old_block.key))\n            destroy(old_block, lookup);\n    }\n    while (n)\n        insert(new_blocks[n - 1]);\n    run_all(updates);\n    return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n    const keys = new Set();\n    for (let i = 0; i < list.length; i++) {\n        const key = get_key(get_context(ctx, list, i));\n        if (keys.has(key)) {\n            throw new Error('Cannot have duplicate keys in a keyed each');\n        }\n        keys.add(key);\n    }\n}\n\nfunction get_spread_update(levels, updates) {\n    const update = {};\n    const to_null_out = {};\n    const accounted_for = { $$scope: 1 };\n    let i = levels.length;\n    while (i--) {\n        const o = levels[i];\n        const n = updates[i];\n        if (n) {\n            for (const key in o) {\n                if (!(key in n))\n                    to_null_out[key] = 1;\n            }\n            for (const key in n) {\n                if (!accounted_for[key]) {\n                    update[key] = n[key];\n                    accounted_for[key] = 1;\n                }\n            }\n            levels[i] = n;\n        }\n        else {\n            for (const key in o) {\n                accounted_for[key] = 1;\n            }\n        }\n    }\n    for (const key in to_null_out) {\n        if (!(key in update))\n            update[key] = undefined;\n    }\n    return update;\n}\nfunction get_spread_object(spread_props) {\n    return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\nconst _boolean_attributes = [\n    'allowfullscreen',\n    'allowpaymentrequest',\n    'async',\n    'autofocus',\n    'autoplay',\n    'checked',\n    'controls',\n    'default',\n    'defer',\n    'disabled',\n    'formnovalidate',\n    'hidden',\n    'inert',\n    'ismap',\n    'loop',\n    'multiple',\n    'muted',\n    'nomodule',\n    'novalidate',\n    'open',\n    'playsinline',\n    'readonly',\n    'required',\n    'reversed',\n    'selected'\n];\n/**\n * List of HTML boolean attributes (e.g. `<input disabled>`).\n * Source: https://html.spec.whatwg.org/multipage/indices.html\n */\nconst boolean_attributes = new Set([..._boolean_attributes]);\n\n/** regex of all html void element names */\nconst void_element_names = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;\nfunction is_void(name) {\n    return void_element_names.test(name) || name.toLowerCase() === '!doctype';\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, attrs_to_add) {\n    const attributes = Object.assign({}, ...args);\n    if (attrs_to_add) {\n        const classes_to_add = attrs_to_add.classes;\n        const styles_to_add = attrs_to_add.styles;\n        if (classes_to_add) {\n            if (attributes.class == null) {\n                attributes.class = classes_to_add;\n            }\n            else {\n                attributes.class += ' ' + classes_to_add;\n            }\n        }\n        if (styles_to_add) {\n            if (attributes.style == null) {\n                attributes.style = style_object_to_string(styles_to_add);\n            }\n            else {\n                attributes.style = style_object_to_string(merge_ssr_styles(attributes.style, styles_to_add));\n            }\n        }\n    }\n    let str = '';\n    Object.keys(attributes).forEach(name => {\n        if (invalid_attribute_name_character.test(name))\n            return;\n        const value = attributes[name];\n        if (value === true)\n            str += ' ' + name;\n        else if (boolean_attributes.has(name.toLowerCase())) {\n            if (value)\n                str += ' ' + name;\n        }\n        else if (value != null) {\n            str += ` ${name}=\"${value}\"`;\n        }\n    });\n    return str;\n}\nfunction merge_ssr_styles(style_attribute, style_directive) {\n    const style_object = {};\n    for (const individual_style of style_attribute.split(';')) {\n        const colon_index = individual_style.indexOf(':');\n        const name = individual_style.slice(0, colon_index).trim();\n        const value = individual_style.slice(colon_index + 1).trim();\n        if (!name)\n            continue;\n        style_object[name] = value;\n    }\n    for (const name in style_directive) {\n        const value = style_directive[name];\n        if (value) {\n            style_object[name] = value;\n        }\n        else {\n            delete style_object[name];\n        }\n    }\n    return style_object;\n}\nconst ATTR_REGEX = /[&\"]/g;\nconst CONTENT_REGEX = /[&<]/g;\n/**\n * Note: this method is performance sensitive and has been optimized\n * https://github.com/sveltejs/svelte/pull/5701\n */\nfunction escape(value, is_attr = false) {\n    const str = String(value);\n    const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX;\n    pattern.lastIndex = 0;\n    let escaped = '';\n    let last = 0;\n    while (pattern.test(str)) {\n        const i = pattern.lastIndex - 1;\n        const ch = str[i];\n        escaped += str.substring(last, i) + (ch === '&' ? '&amp;' : (ch === '\"' ? '&quot;' : '&lt;'));\n        last = i + 1;\n    }\n    return escaped + str.substring(last);\n}\nfunction escape_attribute_value(value) {\n    // keep booleans, null, and undefined for the sake of `spread`\n    const should_escape = typeof value === 'string' || (value && typeof value === 'object');\n    return should_escape ? escape(value, true) : value;\n}\nfunction escape_object(obj) {\n    const result = {};\n    for (const key in obj) {\n        result[key] = escape_attribute_value(obj[key]);\n    }\n    return result;\n}\nfunction each(items, fn) {\n    let str = '';\n    for (let i = 0; i < items.length; i += 1) {\n        str += fn(items[i], i);\n    }\n    return str;\n}\nconst missing_component = {\n    $$render: () => ''\n};\nfunction validate_component(component, name) {\n    if (!component || !component.$$render) {\n        if (name === 'svelte:component')\n            name += ' this={...}';\n        throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules. Otherwise you may need to fix a <${name}>.`);\n    }\n    return component;\n}\nfunction debug(file, line, column, values) {\n    console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n    console.log(values); // eslint-disable-line no-console\n    return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n    function $$render(result, props, bindings, slots, context) {\n        const parent_component = current_component;\n        const $$ = {\n            on_destroy,\n            context: new Map(context || (parent_component ? parent_component.$$.context : [])),\n            // these will be immediately discarded\n            on_mount: [],\n            before_update: [],\n            after_update: [],\n            callbacks: blank_object()\n        };\n        set_current_component({ $$ });\n        const html = fn(result, props, bindings, slots);\n        set_current_component(parent_component);\n        return html;\n    }\n    return {\n        render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n            on_destroy = [];\n            const result = { title: '', head: '', css: new Set() };\n            const html = $$render(result, props, {}, $$slots, context);\n            run_all(on_destroy);\n            return {\n                html,\n                css: {\n                    code: Array.from(result.css).map(css => css.code).join('\\n'),\n                    map: null // TODO\n                },\n                head: result.title + result.head\n            };\n        },\n        $$render\n    };\n}\nfunction add_attribute(name, value, boolean) {\n    if (value == null || (boolean && !value))\n        return '';\n    const assignment = (boolean && value === true) ? '' : `=\"${escape(value, true)}\"`;\n    return ` ${name}${assignment}`;\n}\nfunction add_classes(classes) {\n    return classes ? ` class=\"${classes}\"` : '';\n}\nfunction style_object_to_string(style_object) {\n    return Object.keys(style_object)\n        .filter(key => style_object[key])\n        .map(key => `${key}: ${escape_attribute_value(style_object[key])};`)\n        .join(' ');\n}\nfunction add_styles(style_object) {\n    const styles = style_object_to_string(style_object);\n    return styles ? ` style=\"${styles}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n    const index = component.$$.props[name];\n    if (index !== undefined) {\n        component.$$.bound[index] = callback;\n        callback(component.$$.ctx[index]);\n    }\n}\nfunction create_component(block) {\n    block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n    block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n    const { fragment, after_update } = component.$$;\n    fragment && fragment.m(target, anchor);\n    if (!customElement) {\n        // onMount happens before the initial afterUpdate\n        add_render_callback(() => {\n            const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n            // if the component was destroyed immediately\n            // it will update the `$$.on_destroy` reference to `null`.\n            // the destructured on_destroy may still reference to the old array\n            if (component.$$.on_destroy) {\n                component.$$.on_destroy.push(...new_on_destroy);\n            }\n            else {\n                // Edge case - component was destroyed immediately,\n                // most likely as a result of a binding initialising\n                run_all(new_on_destroy);\n            }\n            component.$$.on_mount = [];\n        });\n    }\n    after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n    const $$ = component.$$;\n    if ($$.fragment !== null) {\n        flush_render_callbacks($$.after_update);\n        run_all($$.on_destroy);\n        $$.fragment && $$.fragment.d(detaching);\n        // TODO null out other refs, including component.$$ (but need to\n        // preserve final state?)\n        $$.on_destroy = $$.fragment = null;\n        $$.ctx = [];\n    }\n}\nfunction make_dirty(component, i) {\n    if (component.$$.dirty[0] === -1) {\n        dirty_components.push(component);\n        schedule_update();\n        component.$$.dirty.fill(0);\n    }\n    component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n    const parent_component = current_component;\n    set_current_component(component);\n    const $$ = component.$$ = {\n        fragment: null,\n        ctx: [],\n        // state\n        props,\n        update: noop,\n        not_equal,\n        bound: blank_object(),\n        // lifecycle\n        on_mount: [],\n        on_destroy: [],\n        on_disconnect: [],\n        before_update: [],\n        after_update: [],\n        context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n        // everything else\n        callbacks: blank_object(),\n        dirty,\n        skip_bound: false,\n        root: options.target || parent_component.$$.root\n    };\n    append_styles && append_styles($$.root);\n    let ready = false;\n    $$.ctx = instance\n        ? instance(component, options.props || {}, (i, ret, ...rest) => {\n            const value = rest.length ? rest[0] : ret;\n            if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n                if (!$$.skip_bound && $$.bound[i])\n                    $$.bound[i](value);\n                if (ready)\n                    make_dirty(component, i);\n            }\n            return ret;\n        })\n        : [];\n    $$.update();\n    ready = true;\n    run_all($$.before_update);\n    // `false` as a special case of no DOM component\n    $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n    if (options.target) {\n        if (options.hydrate) {\n            start_hydrating();\n            const nodes = children(options.target);\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            $$.fragment && $$.fragment.l(nodes);\n            nodes.forEach(detach);\n        }\n        else {\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            $$.fragment && $$.fragment.c();\n        }\n        if (options.intro)\n            transition_in(component.$$.fragment);\n        mount_component(component, options.target, options.anchor, options.customElement);\n        end_hydrating();\n        flush();\n    }\n    set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n    SvelteElement = class extends HTMLElement {\n        constructor() {\n            super();\n            this.attachShadow({ mode: 'open' });\n        }\n        connectedCallback() {\n            const { on_mount } = this.$$;\n            this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n            // @ts-ignore todo: improve typings\n            for (const key in this.$$.slotted) {\n                // @ts-ignore todo: improve typings\n                this.appendChild(this.$$.slotted[key]);\n            }\n        }\n        attributeChangedCallback(attr, _oldValue, newValue) {\n            this[attr] = newValue;\n        }\n        disconnectedCallback() {\n            run_all(this.$$.on_disconnect);\n        }\n        $destroy() {\n            destroy_component(this, 1);\n            this.$destroy = noop;\n        }\n        $on(type, callback) {\n            // TODO should this delegate to addEventListener?\n            if (!is_function(callback)) {\n                return noop;\n            }\n            const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n            callbacks.push(callback);\n            return () => {\n                const index = callbacks.indexOf(callback);\n                if (index !== -1)\n                    callbacks.splice(index, 1);\n            };\n        }\n        $set($$props) {\n            if (this.$$set && !is_empty($$props)) {\n                this.$$.skip_bound = true;\n                this.$$set($$props);\n                this.$$.skip_bound = false;\n            }\n        }\n    };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n    $destroy() {\n        destroy_component(this, 1);\n        this.$destroy = noop;\n    }\n    $on(type, callback) {\n        if (!is_function(callback)) {\n            return noop;\n        }\n        const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n        callbacks.push(callback);\n        return () => {\n            const index = callbacks.indexOf(callback);\n            if (index !== -1)\n                callbacks.splice(index, 1);\n        };\n    }\n    $set($$props) {\n        if (this.$$set && !is_empty($$props)) {\n            this.$$.skip_bound = true;\n            this.$$set($$props);\n            this.$$.skip_bound = false;\n        }\n    }\n}\n\nfunction dispatch_dev(type, detail) {\n    document.dispatchEvent(custom_event(type, Object.assign({ version: '3.59.2' }, detail), { bubbles: true }));\n}\nfunction append_dev(target, node) {\n    dispatch_dev('SvelteDOMInsert', { target, node });\n    append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n    dispatch_dev('SvelteDOMInsert', { target, node });\n    append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n    dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n    insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n    dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n    insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n    dispatch_dev('SvelteDOMRemove', { node });\n    detach(node);\n}\nfunction detach_between_dev(before, after) {\n    while (before.nextSibling && before.nextSibling !== after) {\n        detach_dev(before.nextSibling);\n    }\n}\nfunction detach_before_dev(after) {\n    while (after.previousSibling) {\n        detach_dev(after.previousSibling);\n    }\n}\nfunction detach_after_dev(before) {\n    while (before.nextSibling) {\n        detach_dev(before.nextSibling);\n    }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation, has_stop_immediate_propagation) {\n    const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n    if (has_prevent_default)\n        modifiers.push('preventDefault');\n    if (has_stop_propagation)\n        modifiers.push('stopPropagation');\n    if (has_stop_immediate_propagation)\n        modifiers.push('stopImmediatePropagation');\n    dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n    const dispose = listen(node, event, handler, options);\n    return () => {\n        dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n        dispose();\n    };\n}\nfunction attr_dev(node, attribute, value) {\n    attr(node, attribute, value);\n    if (value == null)\n        dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n    else\n        dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n    node[property] = value;\n    dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n    node.dataset[property] = value;\n    dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n    data = '' + data;\n    if (text.data === data)\n        return;\n    dispatch_dev('SvelteDOMSetData', { node: text, data });\n    text.data = data;\n}\nfunction set_data_contenteditable_dev(text, data) {\n    data = '' + data;\n    if (text.wholeText === data)\n        return;\n    dispatch_dev('SvelteDOMSetData', { node: text, data });\n    text.data = data;\n}\nfunction set_data_maybe_contenteditable_dev(text, data, attr_value) {\n    if (~contenteditable_truthy_values.indexOf(attr_value)) {\n        set_data_contenteditable_dev(text, data);\n    }\n    else {\n        set_data_dev(text, data);\n    }\n}\nfunction validate_each_argument(arg) {\n    if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n        let msg = '{#each} only iterates over array-like objects.';\n        if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n            msg += ' You can use a spread to convert this iterable into an array.';\n        }\n        throw new Error(msg);\n    }\n}\nfunction validate_slots(name, slot, keys) {\n    for (const slot_key of Object.keys(slot)) {\n        if (!~keys.indexOf(slot_key)) {\n            console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n        }\n    }\n}\nfunction validate_dynamic_element(tag) {\n    const is_string = typeof tag === 'string';\n    if (tag && !is_string) {\n        throw new Error('<svelte:element> expects \"this\" attribute to be a string.');\n    }\n}\nfunction validate_void_dynamic_element(tag) {\n    if (tag && is_void(tag)) {\n        console.warn(`<svelte:element this=\"${tag}\"> is self-closing and cannot have content.`);\n    }\n}\nfunction construct_svelte_component_dev(component, props) {\n    const error_message = 'this={...} of <svelte:component> should specify a Svelte component.';\n    try {\n        const instance = new component(props);\n        if (!instance.$$ || !instance.$set || !instance.$on || !instance.$destroy) {\n            throw new Error(error_message);\n        }\n        return instance;\n    }\n    catch (err) {\n        const { message } = err;\n        if (typeof message === 'string' && message.indexOf('is not a constructor') !== -1) {\n            throw new Error(error_message);\n        }\n        else {\n            throw err;\n        }\n    }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n    constructor(options) {\n        if (!options || (!options.target && !options.$$inline)) {\n            throw new Error(\"'target' is a required option\");\n        }\n        super();\n    }\n    $destroy() {\n        super.$destroy();\n        this.$destroy = () => {\n            console.warn('Component was already destroyed'); // eslint-disable-line no-console\n        };\n    }\n    $capture_state() { }\n    $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * <script lang=\"ts\">\n * \timport { MyComponent } from \"component-library\";\n * </script>\n * <MyComponent foo={'bar'} />\n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n    constructor(options) {\n        super(options);\n    }\n}\nfunction loop_guard(timeout) {\n    const start = Date.now();\n    return () => {\n        if (Date.now() - start > timeout) {\n            throw new Error('Infinite loop detected');\n        }\n    };\n}\n\nexport { HtmlTag, HtmlTagHydration, ResizeObserverSingleton, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_iframe_resize_listener, add_location, add_render_callback, add_styles, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_comment, claim_component, claim_element, claim_html_tag, claim_space, claim_svg_element, claim_text, clear_loops, comment, component_subscribe, compute_rest_props, compute_slots, construct_svelte_component, construct_svelte_component_dev, contenteditable_truthy_values, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, flush_render_callbacks, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, head_selector, identity, init, init_binding_group, init_binding_group_dynamic, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, is_void, listen, listen_dev, loop, loop_guard, merge_ssr_styles, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, resize_observer_border_box, resize_observer_content_box, resize_observer_device_pixel_content_box, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_custom_element_data_map, set_data, set_data_contenteditable, set_data_contenteditable_dev, set_data_dev, set_data_maybe_contenteditable, set_data_maybe_contenteditable_dev, set_dynamic_element_data, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, split_css_unit, spread, src_url_equal, start_hydrating, stop_immediate_propagation, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_dynamic_element, validate_each_argument, validate_each_keys, validate_slots, validate_store, validate_void_dynamic_element, xlink_attr };\n","<script lang=\"ts\">\n    import { isEmpty } from \"lodash\";\n    import { ApplianceNames } from \"white-web-sdk\";\n\n    export let uid: string;\n    export let cursorName: string;\n    export let tagName: string | undefined;\n    export let backgroundColor: string;\n    export let appliance: string;\n    export let x: number;\n    export let y: number;\n    export let src: string | undefined;\n    export let visible: boolean;\n    export let avatar: string;\n    export let theme: string;\n    export let color: string;\n    export let cursorTagBackgroundColor: string;\n    export let opacity: number;\n    export let pencilEraserSize: number | undefined;\n    export let custom: boolean | undefined;\n\n    $: hasName = !isEmpty(cursorName);\n    $: hasTagName = !isEmpty(tagName);\n    $: hasAvatar = !isEmpty(avatar);\n    $: display = visible ? \"\" : \"none\";\n    $: isLaserPointer = appliance === ApplianceNames.laserPointer;\n    $: isLaserPointerPencilEraser = isLaserPointer || appliance === ApplianceNames.pencilEraser;\n    $: offset = isLaserPointerPencilEraser ? \"netless-window-manager-laserPointer-pencilEraser-offset\" : \"\";\n    $: pencilEraserSize3ImageOffset = pencilEraserSize === 3 ? \"netless-window-manager-pencilEraser-3-offset\" : \"\";\n\n    const computedAvatarStyle = () => {\n        return Object.entries({\n            width: (hasName ? 19 : 28) + \"px\",\n            height: (hasName ? 19 : 28) + \"px\",\n            position: hasName ? \"initial\" : \"absolute\",\n            \"border-color\": hasName ? \"white\" : backgroundColor,\n            \"margin-right\": (hasName ? 4 : 0) + \"px\",\n        })\n            .map(([key, v]) => `${key}: ${v}`)\n            .join(\";\");\n    };\n</script>\n\n<div\n    class={\"netless-window-manager-cursor-mid\" + (custom ? \" netless-window-manager-cursor-custom\" : \"\")}\n    style=\"transform: translateX({x}px) translateY({y}px);display: {display}\"\n    data-cursor-uid={uid}\n>\n    {#if !isLaserPointer}\n        <div class=\"netless-window-manager-cursor-name {offset} {pencilEraserSize3ImageOffset}\">\n            <div\n                class={theme}\n                style=\"background-color: {backgroundColor};color: {color};opacity: {opacity}\"\n            >\n                {#if hasAvatar}\n                    <img\n                        class=\"netless-window-manager-cursor-selector-avatar\"\n                        style={computedAvatarStyle()}\n                        src={avatar}\n                        alt=\"avatar\"\n                    />\n                {/if}\n                <span style=\"overflow: hidden;white-space: nowrap;text-overflow: ellipsis;max-width: 80px\">{cursorName}</span>\n                {#if hasTagName}\n                    <span class=\"netless-window-manager-cursor-tag-name\" style=\"background-color: {cursorTagBackgroundColor}\">\n                        {tagName}\n                    </span>\n                {/if}\n            </div>\n        </div>\n    {/if}\n    <div class=\"cursor-image-wrapper\">\n        <img\n            class=\"netless-window-manager-cursor-{appliance}-image {pencilEraserSize3ImageOffset}\"\n            {src}\n            alt={appliance}\n        />\n    </div>\n</div>\n","import type { MemberState } from \"white-web-sdk\";\nimport { ApplianceNames } from \"white-web-sdk\";\n\ntype Color = string;\n\nconst staticCircle = `data:image/svg+xml,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='12' cy='12' r='2.5' stroke='%23000' stroke-linejoin='square'/%3E%3Ccircle cx='12' cy='12' r='3.5' stroke='%23FFF'/%3E%3C/g%3E%3C/svg%3E`;\n\nfunction circleUrl(color: Color): string {\n    return `data:image/svg+xml,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='12' cy='12' r='2.5' stroke='%23${color}' stroke-linejoin='square'/%3E%3Ccircle cx='12' cy='12' r='3.5' stroke='%23${color}'/%3E%3C/g%3E%3C/svg%3E`;\n}\n\nfunction crossUrl(color: Color): string {\n    return `data:image/svg+xml,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg' fill='none'%3E%3Cpath d='M5 12H19' stroke='%23${color}' stroke-linejoin='round'/%3E%3Cpath d='M12 5V19' stroke='%23${color}' stroke-linejoin='round'/%3E%3C/svg%3E`;\n}\n\nfunction cssCursor(url: string): string {\n    return `url(\"${url}\") 12 12, auto`;\n}\n\nfunction makeStyleContent(config: { [cursor: string]: string }): string {\n    let result = \"\";\n    for (const cursor in config) {\n        result += `.netless-whiteboard.${cursor} {cursor: ${config[cursor]}}\\n`;\n    }\n    return result;\n}\n\nconst $style = document.createElement(\"style\");\n\nexport function enableLocal(memberState: MemberState): () => void {\n    const [r, g, b] = memberState.strokeColor;\n    const hex = ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n    $style.textContent = makeStyleContent({\n        \"cursor-pencil\": cssCursor(circleUrl(hex)),\n        \"cursor-eraser\": cssCursor(staticCircle),\n        \"cursor-rectangle\": cssCursor(crossUrl(hex)),\n        \"cursor-ellipse\": cssCursor(crossUrl(hex)),\n        \"cursor-straight\": cssCursor(crossUrl(hex)),\n        \"cursor-arrow\": cssCursor(crossUrl(hex)),\n        \"cursor-shape\": cssCursor(crossUrl(hex)),\n    });\n    document.head.appendChild($style);\n\n    return () => {\n        if ($style.parentNode == null) return;\n        document.head.removeChild($style);\n    };\n}\n\nconst shapeAppliances: Set<ApplianceNames> = new Set([\n    ApplianceNames.rectangle,\n    ApplianceNames.ellipse,\n    ApplianceNames.straight,\n    ApplianceNames.arrow,\n    ApplianceNames.shape,\n]);\n\nexport function remoteIcon(applianceName: ApplianceNames, hex: string): string | undefined {\n    if (applianceName === ApplianceNames.pencil) {\n        return circleUrl(hex);\n    } else if (applianceName === ApplianceNames.eraser) {\n        return staticCircle;\n    } else if (shapeAppliances.has(applianceName)) {\n        return crossUrl(hex);\n    }\n}\n","import type { RoomMember } from \"white-web-sdk\";\nimport type { CursorOptions } from \"../index\";\nimport type { AppManager } from \"../AppManager\";\nimport type { Position } from \"../AttributesDelegate\";\nimport type { CursorManager } from \"./index\";\n\nimport { omit } from \"lodash\";\nimport { ApplianceNames } from \"white-web-sdk\";\n\nimport { findMemberByUid } from \"../Helper\";\nimport App from \"./Cursor.svelte\";\nimport { remoteIcon } from \"./icons2\";\n\nexport type Payload = {\n    [key: string]: any;\n};\n\nexport class Cursor {\n    private member?: RoomMember;\n    private timer?: number;\n    private component?: App;\n    private style: CursorOptions[\"style\"] & string = \"default\";\n\n    constructor(\n        private manager: AppManager,\n        private memberId: string,\n        private cursorManager: CursorManager,\n        private wrapper?: HTMLElement\n    ) {\n        this.updateMember();\n        this.createCursor();\n        this.autoHidden();\n        this.setStyle(cursorManager.style);\n    }\n\n    public move = (position: Position) => {\n        if (position.type === \"main\") {\n            const rect = this.cursorManager.wrapperRect;\n            if (this.component && rect) {\n                this.autoHidden();\n                this.moveCursor(position, rect, this.manager.mainView);\n            }\n        } else {\n            const focusView = this.cursorManager.focusView;\n            const viewRect = focusView?.divElement?.getBoundingClientRect();\n            const viewCamera = focusView?.camera;\n            if (focusView && viewRect && viewCamera && this.component) {\n                this.autoHidden();\n                this.moveCursor(position, viewRect, focusView);\n            }\n        }\n    };\n\n    public setStyle = (style: typeof this.style) => {\n        this.style = style;\n        if (this.component) {\n            this.component.$set({\n                src: this.getIcon(),\n                custom: this.isCustomIcon(),\n            });\n        }\n    };\n\n    public leave = () => {\n        this.hide();\n    };\n\n    private moveCursor(cursor: Position, rect: DOMRect, view: any) {\n        const { x, y, type } = cursor;\n        const point = view?.screen.convertPointToScreen(x, y);\n        if (point) {\n            let translateX = point.x - 2;\n            let translateY = point.y - 18;\n            if (this.isCustomIcon()) {\n                translateX -= 11;\n                translateY += 4;\n            }\n            if (type === \"app\") {\n                const wrapperRect = this.cursorManager.wrapperRect;\n                if (wrapperRect) {\n                    translateX = translateX + rect.x - wrapperRect.x;\n                    translateY = translateY + rect.y - wrapperRect.y;\n                }\n            }\n            if (point.x < 0 || point.x > rect.width || point.y < 0 || point.y > rect.height) {\n                this.component?.$set({ visible: false, x: translateX, y: translateY });\n            } else {\n                this.component?.$set({ visible: true, x: translateX, y: translateY });\n            }\n        }\n    }\n\n    public get memberApplianceName() {\n        return this.member?.memberState?.currentApplianceName;\n    }\n\n    public get memberColor() {\n        const rgb = this.member?.memberState?.strokeColor.join(\",\");\n        return `rgb(${rgb})`;\n    }\n\n    public get memberColorHex(): string {\n        const [r, g, b] = this.member?.memberState?.strokeColor || [236, 52, 85];\n        return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n    }\n\n    private get payload(): Payload | undefined {\n        return this.member?.payload;\n    }\n\n    public get memberCursorName() {\n        return this.payload?.nickName || this.payload?.cursorName || this.memberId;\n    }\n\n    private get memberTheme() {\n        if (this.payload?.theme) {\n            return \"netless-window-manager-cursor-inner-mellow\";\n        } else {\n            return \"netless-window-manager-cursor-inner\";\n        }\n    }\n\n    private get memberCursorTextColor() {\n        return this.payload?.cursorTextColor || \"#FFFFFF\";\n    }\n\n    private get memberCursorTagBackgroundColor() {\n        return this.payload?.cursorTagBackgroundColor || this.memberColor;\n    }\n\n    private get memberAvatar() {\n        return this.payload?.avatar;\n    }\n\n    private get memberOpacity() {\n        if (!this.memberCursorName && !this.memberAvatar) {\n            return 0;\n        } else {\n            return 1;\n        }\n    }\n\n    private get memberTagName(): string | undefined {\n        return this.payload?.cursorTagName;\n    }\n\n    private autoHidden() {\n        if (this.timer) {\n            clearTimeout(this.timer);\n        }\n        this.timer = window.setTimeout(() => {\n            this.hide();\n        }, 1000 * 10); // 10 秒钟自动隐藏\n    }\n\n    private async createCursor() {\n        if (this.member && this.wrapper) {\n            this.component = new App({\n                target: this.wrapper,\n                props: this.initProps(),\n            });\n        }\n    }\n\n    private initProps() {\n        return {\n            uid: this.memberId,\n            x: 0,\n            y: 0,\n            appliance: this.memberApplianceName as string,\n            avatar: this.memberAvatar,\n            src: this.getIcon(),\n            custom: this.isCustomIcon(),\n            visible: false,\n            backgroundColor: this.memberColor,\n            cursorName: this.memberCursorName,\n            theme: this.memberTheme,\n            color: this.memberCursorTextColor,\n            cursorTagBackgroundColor: this.memberCursorTagBackgroundColor,\n            opacity: this.memberOpacity,\n            tagName: this.memberTagName,\n            pencilEraserSize: this.member?.memberState.pencilEraserSize,\n        };\n    }\n\n    private getIcon(): string | undefined {\n        if (!this.member) return;\n\n        const { memberApplianceName, memberColorHex } = this;\n        const { userApplianceIcons, applianceIcons } = this.cursorManager;\n\n        let iconsKey: string | undefined = this.memberApplianceName;\n        if (iconsKey === ApplianceNames.pencilEraser) {\n            iconsKey = `${iconsKey}${this.member?.memberState.pencilEraserSize || 1}`;\n        }\n\n        const userApplianceSrc = iconsKey && userApplianceIcons[iconsKey];\n        if (userApplianceSrc) return userApplianceSrc;\n\n        if (this.style === \"custom\" && memberApplianceName) {\n            const customApplianceSrc = remoteIcon(memberApplianceName, memberColorHex);\n            if (customApplianceSrc) return customApplianceSrc;\n        }\n\n        const applianceSrc = applianceIcons[iconsKey || ApplianceNames.shape];\n        return applianceSrc || applianceIcons[ApplianceNames.shape];\n    }\n\n    private isCustomIcon(): boolean {\n        if (!this.member) return false;\n\n        const { memberApplianceName, memberColorHex } = this;\n        const { userApplianceIcons } = this.cursorManager;\n\n        let iconsKey: string | undefined = this.memberApplianceName;\n        if (iconsKey === ApplianceNames.pencilEraser) {\n            iconsKey = `${iconsKey}${this.member?.memberState.pencilEraserSize || 1}`;\n        }\n\n        const userApplianceSrc = iconsKey && userApplianceIcons[iconsKey];\n        if (userApplianceSrc) return false;\n\n        if (this.style === \"custom\" && memberApplianceName) {\n            const customApplianceSrc = remoteIcon(memberApplianceName, memberColorHex);\n            if (customApplianceSrc) return true;\n        }\n\n        return false;\n    }\n\n    public updateMember() {\n        this.member = findMemberByUid(this.manager.room, this.memberId);\n        this.updateComponent();\n        return this.member;\n    }\n\n    private updateComponent() {\n        this.component?.$set(omit(this.initProps(), [\"x\", \"y\"]));\n    }\n\n    public destroy() {\n        if (this.component) {\n            this.component.$destroy();\n        }\n        this.cursorManager.cursorInstances.delete(this.memberId);\n        if (this.timer) {\n            clearTimeout(this.timer);\n        }\n    }\n\n    public hide() {\n        if (this.component) {\n            this.component.$set({ visible: false });\n            this.destroy();\n        }\n    }\n}\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDBweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDAgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zaGFwZS1jdXJzb3I8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0icGF0aC0xIj48L3BhdGg+CiAgICAgICAgPGZpbHRlciB4PSItNjQuNiUiIHk9Ii01OS41JSIgd2lkdGg9IjIyOS4zJSIgaGVpZ2h0PSIyNDYuMSUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0yIj4KICAgICAgICAgICAgPGZlTW9ycGhvbG9neSByYWRpdXM9IjEiIG9wZXJhdG9yPSJkaWxhdGUiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dTcHJlYWRPdXRlcjEiPjwvZmVNb3JwaG9sb2d5PgogICAgICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSIyIiBpbj0ic2hhZG93U3ByZWFkT3V0ZXIxIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSI+PC9mZU9mZnNldD4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgaW49InNoYWRvd09mZnNldE91dGVyMSIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW49InNoYWRvd0JsdXJPdXRlcjEiIGluMj0iU291cmNlQWxwaGEiIG9wZXJhdG9yPSJvdXQiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbXBvc2l0ZT4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMTYgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPGcgaWQ9Iumhtemdoi00IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2hpdGVib2FyZC1HdWlkZWxpbmVzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzQ0LjAwMDAwMCwgLTc1MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9InNoYXBlLWN1cnNvciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQ0LjAwMDAwMCwgNzUxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9ouWkh+S7vS00NCIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMC4wMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiByeD0iMiI+PC9yZWN0PgogICAgICAgICAgICAgICAgPGcgaWQ9IuW9oueKtue7k+WQiCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICA8dXNlIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjEiIGZpbHRlcj0idXJsKCNmaWx0ZXItMikiIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0iI0ZGRkZGRiIgc3Ryb2tlLXdpZHRoPSIxIiBkPSJNMjAsMjEgQzIwLjQ4NTQxMDMsMjEgMjAuODk4MDg1LDIxLjM0Nzk5OTMgMjAuOTg5OTQ3OSwyMS44NjU0ODc3IEwyMSwyMiBMMjEsMjcgQzIxLDI3LjU1MjI4NDcgMjAuNTUyMjg0NywyOCAyMCwyOCBDMTkuNTE0NTg5NywyOCAxOS4xMDE5MTUsMjcuNjUyMDAwNyAxOS4wMTAwNTIxLDI3LjEzNDUxMjMgTDE5LDI3IEwxOSwyMiBDMTksMjEuNDQ3NzE1MyAxOS40NDc3MTUzLDIxIDIwLDIxIFogTTI3LDE5IEMyNy41NTIyODQ3LDE5IDI4LDE5LjQ0NzcxNTMgMjgsMjAgQzI4LDIwLjQ4NTQxMDMgMjcuNjUyMDAwNywyMC44OTgwODUgMjcuMTM0NTEyMywyMC45ODk5NDc5IEwyNywyMSBMMjIsMjEgQzIxLjQ0NzcxNTMsMjEgMjEsMjAuNTUyMjg0NyAyMSwyMCBDMjEsMTkuNTE0NTg5NyAyMS4zNDc5OTkzLDE5LjEwMTkxNSAyMS44NjU0ODc3LDE5LjAxMDA1MjEgTDIyLDE5IEwyNywxOSBaIE0xOCwxOSBDMTguNTUyMjg0NywxOSAxOSwxOS40NDc3MTUzIDE5LDIwIEMxOSwyMC40ODU0MTAzIDE4LjY1MjAwMDcsMjAuODk4MDg1IDE4LjEzNDUxMjMsMjAuOTg5OTQ3OSBMMTgsMjEgTDEzLDIxIEMxMi40NDc3MTUzLDIxIDEyLDIwLjU1MjI4NDcgMTIsMjAgQzEyLDE5LjUxNDU4OTcgMTIuMzQ3OTk5MywxOS4xMDE5MTUgMTIuODY1NDg3NywxOS4wMTAwNTIxIEwxMywxOSBMMTgsMTkgWiBNMjAsMTIgQzIwLjQ4NTQxMDMsMTIgMjAuODk4MDg1LDEyLjM0Nzk5OTMgMjAuOTg5OTQ3OSwxMi44NjU0ODc3IEwyMSwxMyBMMjEsMTggQzIxLDE4LjU1MjI4NDcgMjAuNTUyMjg0NywxOSAyMCwxOSBDMTkuNTE0NTg5NywxOSAxOS4xMDE5MTUsMTguNjUyMDAwNyAxOS4wMTAwNTIxLDE4LjEzNDUxMjMgTDE5LDE4IEwxOSwxMyBDMTksMTIuNDQ3NzE1MyAxOS40NDc3MTUzLDEyIDIwLDEyIFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iI0ZGRkZGRiIgeD0iMTguNSIgeT0iMTciIHdpZHRoPSIzIiBoZWlnaHQ9IjYiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIGZpbGw9IiNGRkZGRkYiIHg9IjE3IiB5PSIxOC41IiB3aWR0aD0iNiIgaGVpZ2h0PSIzIj48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsPSIjMjEyMzI0IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDdweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDcgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT50ZXh0LWN1cnNvcjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0xNiwyNi41IEMxNS43MjM4NTc2LDI2LjUgMTUuNSwyNi4yNzYxNDI0IDE1LjUsMjYgQzE1LjUsMjUuNzU0NTQwMSAxNS42NzY4NzUyLDI1LjU1MDM5MTYgMTUuOTEwMTI0NCwyNS41MDgwNTU3IEwxNiwyNS41IEwxOS41LDI1LjUgTDE5LjUsMTQuNSBMMTYsMTQuNSBDMTUuNzIzODU3NiwxNC41IDE1LjUsMTQuMjc2MTQyNCAxNS41LDE0IEMxNS41LDEzLjc1NDU0MDEgMTUuNjc2ODc1MiwxMy41NTAzOTE2IDE1LjkxMDEyNDQsMTMuNTA4MDU1NyBMMTYsMTMuNSBMMjQsMTMuNSBDMjQuMjc2MTQyNCwxMy41IDI0LjUsMTMuNzIzODU3NiAyNC41LDE0IEMyNC41LDE0LjI0NTQ1OTkgMjQuMzIzMTI0OCwxNC40NDk2MDg0IDI0LjA4OTg3NTYsMTQuNDkxOTQ0MyBMMjQsMTQuNSBMMjAuNSwxNC41IEwyMC41LDI1LjUgTDI0LDI1LjUgQzI0LjI3NjE0MjQsMjUuNSAyNC41LDI1LjcyMzg1NzYgMjQuNSwyNiBDMjQuNSwyNi4yNDU0NTk5IDI0LjMyMzEyNDgsMjYuNDQ5NjA4NCAyNC4wODk4NzU2LDI2LjQ5MTk0NDMgTDI0LDI2LjUgTDE2LDI2LjUgWiIgaWQ9InBhdGgtMSI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTI4NC4wJSIgeT0iLTgxLjUlIiB3aWR0aD0iNjY4LjElIiBoZWlnaHQ9IjI5My45JSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0iZmlsdGVyLTIiPgogICAgICAgICAgICA8ZmVNb3JwaG9sb2d5IHJhZGl1cz0iMSIgb3BlcmF0b3I9ImRpbGF0ZSIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd1NwcmVhZE91dGVyMSI+PC9mZU1vcnBob2xvZ3k+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjIiIGluPSJzaGFkb3dTcHJlYWRPdXRlcjEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbj0ic2hhZG93Qmx1ck91dGVyMSIgaW4yPSJTb3VyY2VBbHBoYSIgb3BlcmF0b3I9Im91dCIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29tcG9zaXRlPgogICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgMCAwIDAgMC4xNiAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgPC9maWx0ZXI+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iLTQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXaGl0ZWJvYXJkLUd1aWRlbGluZXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zODguMDAwMDAwLCAtNjcyLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0idGV4dC1jdXJzb3IiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5Mi4wMDAwMDAsIDY3Mi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tNDAiIGZpbGw9IiNGRkZGRkYiIG9wYWNpdHk9IjAuMDEiIHg9IjAiIHk9IjAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSLlvaLnirbnu5PlkIgiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTIpIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMSIgZD0iTTE5LDI1IEwxOSwxNSBMMTYsMTUgQzE1LjQ0NzcxNTMsMTUgMTUsMTQuNTUyMjg0NyAxNSwxNCBDMTUsMTMuNTE0NTg5NyAxNS4zNDc5OTkzLDEzLjEwMTkxNSAxNS44NjU0ODc3LDEzLjAxMDA1MjEgTDE2LDEzIEwyNCwxMyBDMjQuNTUyMjg0NywxMyAyNSwxMy40NDc3MTUzIDI1LDE0IEMyNSwxNC40ODU0MTAzIDI0LjY1MjAwMDcsMTQuODk4MDg1IDI0LjEzNDUxMjMsMTQuOTg5OTQ3OSBMMjQsMTUgTDIxLDE1IEwyMSwyNSBMMjQsMjUgQzI0LjU1MjI4NDcsMjUgMjUsMjUuNDQ3NzE1MyAyNSwyNiBDMjUsMjYuNDg1NDEwMyAyNC42NTIwMDA3LDI2Ljg5ODA4NSAyNC4xMzQ1MTIzLDI2Ljk4OTk0NzkgTDI0LDI3IEwxNiwyNyBDMTUuNDQ3NzE1MywyNyAxNSwyNi41NTIyODQ3IDE1LDI2IEMxNSwyNS41MTQ1ODk3IDE1LjM0Nzk5OTMsMjUuMTAxOTE1IDE1Ljg2NTQ4NzcsMjUuMDEwMDUyMSBMMTYsMjUgTDE5LDI1IFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\"","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjhweCIgaGVpZ2h0PSIyOHB4IiB2aWV3Qm94PSIwIDAgMjggMjgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDU1LjEgKDc4MTM2KSAtIGh0dHBzOi8vc2tldGNoYXBwLmNvbSAtLT4KICAgIDx0aXRsZT7nvJbnu4QgMjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxmaWx0ZXIgeD0iLTEyMC4wJSIgeT0iLTEyMC4wJSIgd2lkdGg9IjM0MC4wJSIgaGVpZ2h0PSIzNDAuMCUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0xIj4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNCIgaW49IlNvdXJjZUdyYXBoaWMiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgPC9maWx0ZXI+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Iue8lue7hC0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5LjAwMDAwMCwgOS4wMDAwMDApIiBmaWxsPSIjRkYwMTAwIj4KICAgICAgICAgICAgPGNpcmNsZSBpZD0i5qSt5ZyG5b2iIiBmaWx0ZXI9InVybCgjZmlsdGVyLTEpIiBjeD0iNSIgY3k9IjUiIHI9IjUiPjwvY2lyY2xlPgogICAgICAgICAgICA8cGF0aCBkPSJNNSw4IEM2LjY1Njg1NDI1LDggOCw2LjY1Njg1NDI1IDgsNSBDOCwzLjM0MzE0NTc1IDYuNjU2ODU0MjUsMiA1LDIgQzMuMzQzMTQ1NzUsMiAyLDMuMzQzMTQ1NzUgMiw1IEMyLDYuNjU2ODU0MjUgMy4zNDMxNDU3NSw4IDUsOCBaIE01LDYuMjg1NzE0MjkgQzQuMjg5OTE5NjEsNi4yODU3MTQyOSAzLjcxNDI4NTcxLDUuNzEwMDgwMzkgMy43MTQyODU3MSw1IEMzLjcxNDI4NTcxLDQuMjg5OTE5NjEgNC4yODk5MTk2MSwzLjcxNDI4NTcxIDUsMy43MTQyODU3MSBDNS43MTAwODAzOSwzLjcxNDI4NTcxIDYuMjg1NzE0MjksNC4yODk5MTk2MSA2LjI4NTcxNDI5LDUgQzYuMjg1NzE0MjksNS43MTAwODAzOSA1LjcxMDA4MDM5LDYuMjg1NzE0MjkgNSw2LjI4NTcxNDI5IFoiIGlkPSLmpK3lnIblvaIiIGZpbGwtcnVsZT0ibm9uemVybyI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAxOCAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSIxNyIgaGVpZ2h0PSIyNSIgcng9IjMuNSIgZmlsbD0iYmxhY2siIGZpbGwtb3BhY2l0eT0iMC4zNSIgc3Ryb2tlPSJ3aGl0ZSIvPgo8L3N2Zz4K\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMzQiIHZpZXdCb3g9IjAgMCAyNiAzNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIzMyIgcng9IjMuNSIgZmlsbD0iYmxhY2siIGZpbGwtb3BhY2l0eT0iMC4zNSIgc3Ryb2tlPSJ3aGl0ZSIvPgo8L3N2Zz4K\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzQiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCAzNCA1MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSIzMyIgaGVpZ2h0PSI0OSIgcng9IjMuNSIgZmlsbD0iYmxhY2siIGZpbGwtb3BhY2l0eT0iMC4zNSIgc3Ryb2tlPSJ3aGl0ZSIvPgo8L3N2Zz4K\"","import { ApplianceNames } from \"white-web-sdk\";\nimport pencil from \"../image/pencil-cursor.png\";\nimport selector from \"../image/selector-cursor.png\";\nimport eraser from \"../image/eraser-cursor.png\";\nimport shape from \"../image/shape-cursor.svg\";\nimport text from \"../image/text-cursor.svg\";\nimport laser from \"../image/laser-pointer-cursor.svg\";\nimport pencilEraser1 from \"../image/pencil-eraser-1.svg\";\nimport pencilEraser2 from \"../image/pencil-eraser-2.svg\";\nimport pencilEraser3 from \"../image/pencil-eraser-3.svg\";\n\nexport const ApplianceMap: {\n    [key: string]: string;\n} = {\n    [ApplianceNames.pencil]: pencil,\n    [ApplianceNames.selector]: selector,\n    [ApplianceNames.eraser]: eraser,\n    [ApplianceNames.shape]: shape,\n    [ApplianceNames.text]: text,\n    [ApplianceNames.laserPointer]: laser,\n    [\"pencilEraser1\"]: pencilEraser1,\n    [\"pencilEraser2\"]: pencilEraser2,\n    [\"pencilEraser3\"]: pencilEraser3,\n};\n","import { ApplianceNames, isRoom } from \"white-web-sdk\";\nimport { Cursor } from \"./Cursor\";\nimport { CursorState, Events } from \"../constants\";\nimport { internalEmitter } from \"../InternalEmitter\";\nimport { SideEffectManager } from \"side-effect-manager\";\nimport { WindowManager } from \"../index\";\nimport type { CursorMovePayload, ApplianceIcons, CursorOptions } from \"../index\";\nimport type { PositionType } from \"../AttributesDelegate\";\nimport type { Point, Room, RoomMember, RoomState, View } from \"white-web-sdk\";\nimport type { AppManager } from \"../AppManager\";\nimport { ApplianceMap } from \"./icons\";\nimport { findMemberByUid } from \"../Helper\";\nimport { enableLocal } from \"./icons2\";\n\nexport type EventType = {\n    type: PositionType;\n    id?: string;\n};\n\nexport type MoveCursorParams = {\n    uid: string;\n    x: number;\n    y: number;\n};\n\nconst LocalCursorSideEffectId = \"local-cursor\";\n\nexport class CursorManager {\n    static readonly kind = \"CursorManager\";\n    public containerRect?: DOMRect;\n    public wrapperRect?: DOMRect;\n    public cursorInstances: Map<string, Cursor> = new Map();\n    public roomMembers?: readonly RoomMember[];\n    public userApplianceIcons: ApplianceIcons = {};\n\n    private mainViewElement?: HTMLDivElement;\n    private sideEffectManager = new SideEffectManager();\n    private store = this.manager.store;\n    private leaveFlag = true;\n    private _style: CursorOptions[\"style\"] & string = \"default\";\n\n    constructor(\n        private manager: AppManager,\n        private enableCursor: boolean,\n        cursorOptions?: CursorOptions,\n        applianceIcons?: ApplianceIcons\n    ) {\n        this.roomMembers = this.manager.room?.state.roomMembers;\n        const wrapper = WindowManager.wrapper;\n        if (wrapper) {\n            this.setupWrapper(wrapper);\n        }\n        this.sideEffectManager.add(() => {\n            return internalEmitter.on(\"cursorMove\", this.onCursorMove);\n        });\n        this.sideEffectManager.add(() => {\n            return internalEmitter.on(\"playgroundSizeChange\", () => this.updateContainerRect());\n        });\n        const room = this.manager.room;\n        if (room) {\n            this.sideEffectManager.add(() => {\n                const update = (state: RoomState) => {\n                    if (this.style === \"custom\" && state.memberState) this.enableCustomCursor();\n                };\n                room.callbacks.on(\"onRoomStateChanged\", update);\n                return () => room.callbacks.off(\"onRoomStateChanged\", update);\n            });\n        }\n        if (applianceIcons) {\n            this.userApplianceIcons = applianceIcons;\n        }\n        this.style = cursorOptions?.style || \"default\";\n    }\n\n    public get applianceIcons(): ApplianceIcons {\n        return { ...ApplianceMap, ...this.userApplianceIcons };\n    }\n\n    public get style() {\n        return this._style;\n    }\n\n    public set style(value) {\n        if (this._style !== value) {\n            this._style = value;\n            this.cursorInstances.forEach(cursor => {\n                cursor.setStyle(value);\n            });\n            if (value === \"custom\") {\n                this.enableCustomCursor();\n            } else {\n                this.sideEffectManager.flush(LocalCursorSideEffectId);\n            }\n        }\n    }\n\n    private onCursorMove = (payload: CursorMovePayload) => {\n        const cursorInstance = this.initCursorInstance(payload.uid);\n        if (payload.state === CursorState.Leave) {\n            cursorInstance.leave();\n        } else {\n            const member = cursorInstance.updateMember();\n            if (this.canMoveCursor(member)) {\n                cursorInstance.move(payload.position);\n            }\n        }\n    };\n\n    private initCursorInstance = (uid: string) => {\n        let cursorInstance = this.cursorInstances.get(uid);\n        if (!cursorInstance) {\n            cursorInstance = new Cursor(this.manager, uid, this, WindowManager.wrapper);\n            this.cursorInstances.set(uid, cursorInstance);\n        }\n        return cursorInstance;\n    };\n\n    private enableCustomCursor() {\n        this.sideEffectManager.add(\n            () => enableLocal(this.manager.getMemberState()),\n            LocalCursorSideEffectId\n        );\n    }\n\n    private canMoveCursor(member: RoomMember | undefined) {\n        const isLaserPointer =\n            member?.memberState.currentApplianceName === ApplianceNames.laserPointer;\n        // 激光笔教具在不开启光标的情况下也要显示\n        return this.enableCursor || isLaserPointer;\n    }\n\n    public setupWrapper(wrapper: HTMLElement) {\n        this.sideEffectManager.add(() => {\n            wrapper.addEventListener(\"pointerenter\", this.mouseMoveListener);\n            wrapper.addEventListener(\"pointermove\", this.mouseMoveListener);\n            wrapper.addEventListener(\"pointerleave\", this.mouseLeaveListener);\n            return () => {\n                wrapper.removeEventListener(\"pointerenter\", this.mouseMoveListener);\n                wrapper.removeEventListener(\"pointermove\", this.mouseMoveListener);\n                wrapper.removeEventListener(\"pointerleave\", this.mouseLeaveListener);\n            };\n        });\n\n        this.wrapperRect = wrapper.getBoundingClientRect();\n    }\n\n    public setMainViewDivElement(div: HTMLDivElement) {\n        this.mainViewElement = div;\n    }\n\n    public get boxState() {\n        return this.store.getBoxState();\n    }\n\n    public get focusView() {\n        return this.manager.focusApp?.view;\n    }\n\n    private mouseMoveListener_ = (event: PointerEvent, isTouch: boolean) => {\n        const type = this.getType(event);\n        this.updateCursor(type, event.clientX, event.clientY);\n        isTouch && this.showPencilEraserIfNeeded(type, event.clientX, event.clientY);\n    };\n\n    private mouseMoveTimer = 0;\n    private mouseMoveListener = (event: PointerEvent) => {\n        const isTouch = event.pointerType === \"touch\";\n        if (isTouch && !event.isPrimary) return;\n        const now = Date.now();\n        if (now - this.mouseMoveTimer > 48) {\n            this.mouseMoveTimer = now;\n            if (\n                WindowManager.supportAppliancePlugin &&\n                isRoom(WindowManager.displayer) &&\n                (WindowManager.displayer as Room).disableDeviceInputs\n            ) {\n                if (this.leaveFlag) {\n                    this.manager.dispatchInternalEvent(Events.CursorMove, {\n                        uid: this.manager.uid,\n                        state: CursorState.Leave,\n                    } as CursorMovePayload);\n                    this.leaveFlag = false;\n                }\n                return;\n            }\n            this.mouseMoveListener_(event, isTouch);\n            this.leaveFlag = true;\n        }\n    };\n\n    private mouseLeaveListener = () => {\n        this.hideCursor(this.manager.uid);\n    };\n\n    private showPencilEraserIfNeeded(event: EventType, clientX: number, clientY: number) {\n        const self = findMemberByUid(this.manager.room, this.manager.uid);\n        const isPencilEraser =\n            self?.memberState.currentApplianceName === ApplianceNames.pencilEraser;\n        if (\n            this.wrapperRect &&\n            this.manager.canOperate &&\n            this.canMoveCursor(self) &&\n            isPencilEraser\n        ) {\n            const view = event.type === \"main\" ? this.manager.mainView : this.focusView;\n            const point = this.getPoint(view, clientX, clientY);\n            if (point) {\n                this.onCursorMove({\n                    uid: this.manager.uid,\n                    position: {\n                        x: point.x,\n                        y: point.y,\n                        type: event.type,\n                    },\n                });\n            }\n        }\n    }\n\n    private updateCursor(event: EventType, clientX: number, clientY: number) {\n        const self = findMemberByUid(this.manager.room, this.manager.uid);\n        if (this.wrapperRect && this.manager.canOperate && this.canMoveCursor(self)) {\n            const view = event.type === \"main\" ? this.manager.mainView : this.focusView;\n            const point = this.getPoint(view, clientX, clientY);\n            if (point) {\n                this.manager.dispatchInternalEvent(Events.CursorMove, {\n                    uid: this.manager.uid,\n                    position: {\n                        x: point.x,\n                        y: point.y,\n                        type: event.type,\n                    },\n                } as CursorMovePayload);\n            }\n        }\n    }\n\n    private getPoint = (\n        view: View | undefined,\n        clientX: number,\n        clientY: number\n    ): Point | undefined => {\n        const rect = view?.divElement?.getBoundingClientRect();\n        if (rect) {\n            const point = view?.convertToPointInWorld({\n                x: clientX - rect.x,\n                y: clientY - rect.y,\n            });\n            return point;\n        }\n    };\n\n    /**\n     *  因为窗口内框在不同分辨率下的大小不一样，所以这里通过来鼠标事件的 target 来判断是在主白板还是在 APP 中\n     */\n    private getType = (event: MouseEvent | Touch): EventType => {\n        const target = event.target as HTMLElement;\n        const focusApp = this.manager.focusApp;\n        switch (target.parentElement) {\n            case this.mainViewElement: {\n                return { type: \"main\" };\n            }\n            case focusApp?.view?.divElement: {\n                return { type: \"app\" };\n            }\n            default: {\n                return { type: \"main\" };\n            }\n        }\n    };\n\n    public updateContainerRect() {\n        this.containerRect = WindowManager.container?.getBoundingClientRect();\n        this.wrapperRect = WindowManager.wrapper?.getBoundingClientRect();\n    }\n\n    public deleteCursor(uid: string) {\n        this.store.cleanCursor(uid);\n        const cursor = this.cursorInstances.get(uid);\n        if (cursor) {\n            cursor.destroy();\n        }\n    }\n\n    public hideCursor(uid: string) {\n        const cursor = this.cursorInstances.get(uid);\n        if (cursor) {\n            cursor.hide();\n        }\n    }\n\n    public destroy() {\n        this.sideEffectManager.flushAll();\n        if (this.cursorInstances.size) {\n            this.cursorInstances.forEach(cursor => {\n                cursor.destroy();\n            });\n            this.cursorInstances.clear();\n        }\n    }\n}\n","import { AppContext, AppProxy } from \"../App\";\nimport { AppManager } from \"../AppManager\";\nimport { AttributesDelegate } from \"../AttributesDelegate\";\nimport { BoxManager } from \"../BoxManager\";\nimport { CursorManager } from \"../Cursor\";\nimport { TeleBoxManager, TeleBoxCollector } from \"@netless/telebox-insider\";\n\nexport { AppManager } from \"../AppManager\";\nexport { AppContext, AppProxy } from \"../App\";\nexport { BoxManager } from \"../BoxManager\";\nexport { AttributesDelegate } from \"../AttributesDelegate\";\nexport { CursorManager } from \"../Cursor\";\nexport { TeleBoxManager, TeleBoxCollector } from \"@netless/telebox-insider\";\n\nexport type ExtendClassAble =\n    | typeof AppManager\n    | typeof AppProxy\n    | typeof AppContext\n    | typeof BoxManager\n    | typeof AttributesDelegate\n    | typeof CursorManager\n    | typeof TeleBoxManager\n    | typeof TeleBoxCollector;\n\nexport type ExtendClass = {\n    AppManager?: typeof AppManager;\n    BoxManager?: typeof BoxManager;\n    AttributesDelegate?: typeof AttributesDelegate;\n    CursorManager?: typeof CursorManager;\n    AppProxy?: typeof AppProxy;\n    AppContext?: typeof AppContext;\n    TeleBoxManager?: typeof TeleBoxManager;\n    TeleBoxCollector?: typeof TeleBoxCollector;\n};\nexport function getExtendClass<T extends ExtendClassAble>(\n    baseClass: T,\n    extendClass?: ExtendClass\n): T {\n    if (baseClass.kind && extendClass && Object.keys(extendClass).includes(baseClass.kind)) {\n        switch (baseClass.kind) {\n            case \"AppManager\":\n                return (extendClass?.AppManager || AppManager) as T;\n            case \"BoxManager\":\n                return (extendClass?.BoxManager || BoxManager) as T;\n            case \"AttributesDelegate\":\n                return (extendClass?.AttributesDelegate || AttributesDelegate) as T;\n            case \"CursorManager\":\n                return (extendClass?.CursorManager || CursorManager) as T;\n            case \"AppProxy\":\n                return (extendClass?.AppProxy || AppProxy) as T;\n            case \"AppContext\":\n                return (extendClass?.AppContext || AppContext) as T;\n            case \"TeleBoxManager\":\n                return (extendClass?.TeleBoxManager || TeleBoxManager) as T;\n            case \"TeleBoxCollector\":\n                return (extendClass?.TeleBoxCollector || TeleBoxCollector) as T;\n            default:\n                return baseClass;\n        }\n    }\n    return baseClass;\n}\n","import { AppAttributes } from \"./constants\";\nimport { get, isObject, pick } from \"lodash\";\nimport { setViewFocusScenePath } from \"./Utils/Common\";\nimport type { AddAppParams, AppSyncAttributes } from \"./index\";\nimport type { Camera, Size, View } from \"white-web-sdk\";\nimport type { Cursor } from \"./Cursor/Cursor\";\nimport { getExtendClass } from \"./Utils/extendClass\";\nimport type { ExtendClass } from \"./Utils/extendClass\";\nimport type { NotMinimizedBoxState, TeleBoxState } from \"@netless/telebox-insider\";\n\nexport enum Fields {\n    Apps = \"apps\",\n    Focus = \"focus\",\n    State = \"state\",\n    /** 默认窗口状态, (用于窗口状态的统一管理) */\n    BoxState = \"boxState\",\n    MainViewCamera = \"mainViewCamera\",\n    MainViewSize = \"mainViewSize\",\n    Broadcaster = \"broadcaster\",\n    Cursors = \"cursors\",\n    Position = \"position\",\n    CursorState = \"cursorState\",\n    FullPath = \"fullPath\",\n    Registered = \"registered\",\n    IframeBridge = \"iframeBridge\",\n    /** 所有窗口状态, (用于窗口状态的单独管理) */\n    BoxesStatus = \"boxesStatus\",\n    /** 上次非最小化窗口状态 */\n    LastNotMinimizedBoxesStatus = \"lastNotMinimizedBoxesStatus\",\n}\n\nexport type Apps = {\n    [key: string]: AppSyncAttributes;\n};\n\nexport type Position = {\n    x: number;\n    y: number;\n    type: PositionType;\n    id?: string;\n};\n\nexport type PositionType = \"main\" | \"app\";\n\nexport type StoreContext = {\n    getAttributes: () => any;\n    safeUpdateAttributes: (keys: string[], value: any) => void;\n    safeSetAttributes: (attributes: any) => void;\n};\n\nexport type ICamera = Camera & { id: string };\n\nexport type ISize = Size & { id: string };\n\nexport class AttributesDelegate {\n    static readonly kind = \"AttributesDelegate\";\n    constructor(private context: StoreContext) {}\n\n    public setContext(context: StoreContext) {\n        this.context = context;\n    }\n\n    public get attributes() {\n        return this.context.getAttributes();\n    }\n\n    public apps(): Apps {\n        return get(this.attributes, [Fields.Apps]);\n    }\n\n    public get focus(): string | undefined {\n        return get(this.attributes, [Fields.Focus]);\n    }\n\n    public getAppAttributes(id: string): AppSyncAttributes {\n        return get(this.apps(), [id]);\n    }\n\n    public getAppState(id: string) {\n        return get(this.apps(), [id, Fields.State]);\n    }\n\n    public getMaximized() {\n        return get(this.attributes, [\"maximized\"]);\n    }\n\n    public getMinimized() {\n        return get(this.attributes, [\"minimized\"]);\n    }\n\n    public getBoxesStatus(): Record<string, TeleBoxState> | undefined {\n        return get(this.attributes, [Fields.BoxesStatus]);\n    }\n\n    public getBoxStatus(id: string): TeleBoxState | undefined {\n        return get(this.attributes, [Fields.BoxesStatus, id]);\n    }\n\n    public setBoxStatus(id: string, status?: TeleBoxState) {\n        const attributes = this.attributes;\n        if (!attributes.boxesStatus) {\n            this.context.safeSetAttributes({ boxesStatus: {} });\n        }\n        if (this.getBoxStatus(id) !== status) {\n            this.context.safeUpdateAttributes([Fields.BoxesStatus, id], status);\n        }\n    }\n\n    public getLastNotMinimizedBoxesStatus(): Record<string, NotMinimizedBoxState> | undefined {\n        return get(this.attributes, [Fields.LastNotMinimizedBoxesStatus]);\n    }\n\n    public getLastNotMinimizedBoxStatus(id: string): NotMinimizedBoxState | undefined {\n        return get(this.attributes, [Fields.LastNotMinimizedBoxesStatus, id]);\n    }\n\n    public setLastNotMinimizedBoxStatus(id: string, status?: NotMinimizedBoxState) {\n        const attributes = this.attributes;\n        if (!attributes.lastNotMinimizedBoxesStatus) {\n            this.context.safeSetAttributes({ lastNotMinimizedBoxesStatus: {} });\n        }\n        if (this.getLastNotMinimizedBoxStatus(id) !== status) {\n            this.context.safeUpdateAttributes([Fields.LastNotMinimizedBoxesStatus, id], status);\n        }\n    }\n\n    public setupAppAttributes(params: AddAppParams, id: string, isDynamicPPT: boolean) {\n        const attributes = this.attributes;\n        if (!attributes.apps) {\n            this.context.safeSetAttributes({ apps: {} });\n        }\n        const attrNames = [\"scenePath\", \"title\"];\n        if (!isDynamicPPT) {\n            attrNames.push(\"scenes\");\n        }\n        const options = pick(params.options, attrNames);\n        const attrs: AppSyncAttributes = {\n            kind: params.kind,\n            options,\n            isDynamicPPT,\n            forceTop: params.forceTop,\n            forceNormal: params.forceNormal,\n            isDragContent: params.isDragContent,\n        };\n        if (typeof params.src === \"string\") {\n            attrs.src = params.src;\n        }\n        attrs.createdAt = Date.now();\n        this.context.safeUpdateAttributes([Fields.Apps, id], attrs);\n        this.context.safeUpdateAttributes([Fields.Apps, id, Fields.State], {\n            [AppAttributes.Size]: {},\n            [AppAttributes.Position]: {},\n            [AppAttributes.SceneIndex]: 0,\n        });\n    }\n\n    public updateAppState(appId: string, stateName: AppAttributes, state: any) {\n        if (get(this.attributes, [Fields.Apps, appId, Fields.State])) {\n            this.context.safeUpdateAttributes([Fields.Apps, appId, Fields.State, stateName], state);\n        }\n    }\n\n    public cleanAppAttributes(id: string) {\n        this.context.safeUpdateAttributes([Fields.Apps, id], undefined);\n        this.context.safeSetAttributes({ [id]: undefined });\n        const focus = this.attributes[Fields.Focus];\n        if (focus === id) {\n            this.cleanFocus();\n        }\n    }\n\n    public cleanFocus() {\n        this.context.safeSetAttributes({ [Fields.Focus]: undefined });\n    }\n\n    public getAppSceneIndex(id: string) {\n        return this.getAppState(id)?.[AppAttributes.SceneIndex];\n    }\n\n    public getAppScenePath(id: string) {\n        return this.getAppAttributes(id)?.options?.scenePath;\n    }\n\n    public getMainViewScenePath(): string | undefined {\n        return this.attributes[\"_mainScenePath\"];\n    }\n\n    public getMainViewSceneIndex() {\n        return this.attributes[\"_mainSceneIndex\"];\n    }\n\n    public getBoxState() {\n        return this.attributes[Fields.BoxState];\n    }\n\n    public setMainViewScenePath(scenePath: string) {\n        this.context.safeSetAttributes({ _mainScenePath: scenePath });\n    }\n\n    public setMainViewSceneIndex(index: number) {\n        this.context.safeSetAttributes({ _mainSceneIndex: index });\n    }\n\n    public getMainViewCamera(): MainViewCamera {\n        return get(this.attributes, [Fields.MainViewCamera]);\n    }\n\n    public getMainViewSize(): MainViewSize {\n        return get(this.attributes, [Fields.MainViewSize]);\n    }\n\n    public setMainViewCamera(camera: ICamera) {\n        this.context.safeSetAttributes({ [Fields.MainViewCamera]: { ...camera } });\n    }\n\n    public setMainViewSize(size: ISize) {\n        if (size.width === 0 || size.height === 0) return;\n        this.context.safeSetAttributes({ [Fields.MainViewSize]: { ...size } });\n    }\n\n    public setMainViewCameraAndSize(camera: ICamera, size: ISize) {\n        if (size.width === 0 || size.height === 0) return;\n        this.context.safeSetAttributes({\n            [Fields.MainViewCamera]: { ...camera },\n            [Fields.MainViewSize]: { ...size },\n        });\n    }\n\n    public setAppFocus = (appId: string, focus: boolean) => {\n        if (focus) {\n            this.context.safeSetAttributes({ [Fields.Focus]: appId });\n        } else {\n            this.context.safeSetAttributes({ [Fields.Focus]: undefined });\n        }\n    };\n\n    public updateCursor(uid: string, position: Position) {\n        if (!get(this.attributes, [Fields.Cursors])) {\n            this.context.safeUpdateAttributes([Fields.Cursors], {});\n        }\n        if (!get(this.attributes, [Fields.Cursors, uid])) {\n            this.context.safeUpdateAttributes([Fields.Cursors, uid], {});\n        }\n        this.context.safeUpdateAttributes([Fields.Cursors, uid, Fields.Position], position);\n    }\n\n    public updateCursorState(uid: string, cursorState: string | undefined) {\n        if (!get(this.attributes, [Fields.Cursors, uid])) {\n            this.context.safeUpdateAttributes([Fields.Cursors, uid], {});\n        }\n        this.context.safeUpdateAttributes([Fields.Cursors, uid, Fields.CursorState], cursorState);\n    }\n\n    public getCursorState(uid: string) {\n        return get(this.attributes, [Fields.Cursors, uid, Fields.CursorState]);\n    }\n\n    public cleanCursor(uid: string) {\n        this.context.safeUpdateAttributes([Fields.Cursors, uid], undefined);\n    }\n\n    // TODO 状态中保存一个 SceneName 优化性能\n    public setMainViewFocusPath(mainView: View) {\n        const scenePath = this.getMainViewScenePath();\n        if (scenePath) {\n            setViewFocusScenePath(mainView, scenePath);\n        }\n    }\n\n    public getIframeBridge() {\n        return get(this.attributes, [Fields.IframeBridge]);\n    }\n\n    public setIframeBridge(data: any) {\n        if (isObject(data)) {\n            const oldState = this.getIframeBridge();\n            for (const key in data) {\n                const value = (data as any)[key];\n                if (oldState[key] !== value) {\n                    this.context.safeUpdateAttributes([Fields.IframeBridge, key], value);\n                }\n            }\n        }\n    }\n}\n\nexport type MainViewSize = {\n    id: string;\n    width: number;\n    height: number;\n};\n\nexport type MainViewCamera = {\n    id: string;\n    centerX: number;\n    centerY: number;\n    scale: number;\n};\n\nexport type Cursors = {\n    [key: string]: Cursor;\n};\n\n// export const store = new AttributesDelegate({\n//     getAttributes: () => {\n//         throw new Error(\"getAttributes not implemented\");\n//     },\n//     safeSetAttributes: () => {\n//         throw new Error(\"safeSetAttributes not implemented\");\n//     },\n//     safeUpdateAttributes: () => {\n//         throw new Error(\"safeUpdateAttributes not implemented\");\n//     },\n// });\n\nexport const createAttributesDelegate = (\n    extendClass?: ExtendClass,\n    context: StoreContext = {\n        getAttributes: () => {\n            throw new Error(\"getAttributes not implemented\");\n        },\n        safeSetAttributes: () => {\n            throw new Error(\"safeSetAttributes not implemented\");\n        },\n        safeUpdateAttributes: () => {\n            throw new Error(\"safeUpdateAttributes not implemented\");\n        },\n    }\n) => {\n    const AttributesDelegateClass = getExtendClass(AttributesDelegate, extendClass);\n    return new AttributesDelegateClass(context);\n};\n","import type { PageState } from \"./PageController\";\n\nexport * from \"./PageController\";\n\nexport const calculateNextIndex = (index: number, pageState: PageState) => {\n    let nextIndex = 0;\n    const maxIndex = pageState.length - 1;\n    if (index === pageState.index) {\n        if (index === maxIndex) {\n            nextIndex = index - 1;\n        } else {\n            nextIndex = pageState.index + 1;\n        }\n    } else {\n        nextIndex = pageState.index;\n    }\n    return nextIndex;\n};\n","import type { TELE_BOX_STATE } from \"@netless/telebox-insider\";\nimport Emittery from \"emittery\";\n\nexport type BoxMovePayload = { appId: string; x: number; y: number };\nexport type BoxFocusPayload = { appId: string };\nexport type BoxBlurredPayload = { appId: string };\nexport type BoxResizePayload = {\n    appId: string;\n    width: number;\n    height: number;\n    x?: number;\n    y?: number;\n};\nexport type BoxClosePayload = { appId: string; error?: Error };\nexport type BoxStateChangePayload = { appId: string; state: TELE_BOX_STATE };\n\nexport type BoxEvent = {\n    move: BoxMovePayload;\n    focus: BoxFocusPayload;\n    resize: BoxResizePayload;\n    close: BoxClosePayload;\n    boxStateChange: BoxStateChangePayload;\n    blurred: BoxBlurredPayload;\n};\n\nexport type BoxEmitterType = Emittery<BoxEvent>;\nexport const boxEmitter: BoxEmitterType = new Emittery();\n","import Emittery from \"emittery\";\nimport { AppAttributes, AppEvents, Events, SETUP_APP_DELAY } from \"../constants\";\nimport { AppContext } from \"./AppContext\";\nimport { AppPageStateImpl } from \"./AppPageStateImpl\";\nimport { appRegister } from \"../Register\";\nimport { autorun } from \"white-web-sdk\";\nimport { BoxManagerNotFoundError } from \"../Utils/error\";\nimport { debounce, get } from \"lodash\";\nimport { internalEmitter } from \"../InternalEmitter\";\nimport { Fields } from \"../AttributesDelegate\";\nimport { log } from \"../Utils/log\";\nimport {\n    entireScenes,\n    getScenePath,\n    removeScenes,\n    setScenePath,\n    setViewFocusScenePath,\n} from \"../Utils/Common\";\nimport type {\n    AppEmitterEvent,\n    AppInitState,\n    BaseInsertParams,\n    setAppOptions,\n    AppListenerKeys,\n} from \"../index\";\nimport { WindowManager } from \"../index\";\nimport type { SceneState, View, SceneDefinition } from \"white-web-sdk\";\nimport type { AppManager } from \"../AppManager\";\nimport type { NetlessApp } from \"../typings\";\nimport { TELE_BOX_STATE } from \"@netless/telebox-insider\";\nimport type { ReadonlyTeleBox, TeleBoxState } from \"@netless/telebox-insider\";\nimport type { PageRemoveService, PageState } from \"../Page\";\nimport { calculateNextIndex } from \"../Page\";\nimport { boxEmitter } from \"../BoxEmitter\";\nimport { callbacks } from \"../callback\";\nimport { getExtendClass } from \"../Utils/extendClass\";\n\nexport type AppEmitter = Emittery<AppEmitterEvent>;\n\nexport class AppProxy implements PageRemoveService {\n    static readonly kind = \"AppProxy\";\n    public kind: string;\n    public id: string;\n    public scenePath?: string;\n    public appEmitter: AppEmitter;\n    public scenes?: SceneDefinition[];\n\n    private appListener: any;\n    private boxManager = this.manager.boxManager;\n    private appProxies = this.manager.appProxies;\n    private viewManager = this.manager.viewManager;\n    private store = this.manager.store;\n\n    public isAddApp: boolean;\n    private status: \"normal\" | \"destroyed\" = \"normal\";\n    private stateKey: string;\n    private _pageState: AppPageStateImpl;\n    private _prevFullPath: string | undefined;\n\n    public appResult?: NetlessApp<any>;\n    public appContext?: AppContext<any, any>;\n\n    constructor(\n        private params: BaseInsertParams,\n        private manager: AppManager,\n        appId: string,\n        isAddApp: boolean\n    ) {\n        this.kind = params.kind;\n        this.id = appId;\n        this.stateKey = `${this.id}_state`;\n        this.appProxies.set(this.id, this);\n        this.appEmitter = new Emittery();\n        this.appListener = this.makeAppEventListener(this.id);\n        this.isAddApp = isAddApp;\n\n        this.initScenes();\n\n        if (this.params.options?.scenePath) {\n            // 只有传入了 scenePath 的 App 才会创建 View\n            this.createView();\n        }\n        this._pageState = new AppPageStateImpl({\n            displayer: this.manager.displayer,\n            scenePath: this.scenePath,\n            view: this.view,\n            notifyPageStateChange: this.notifyPageStateChange,\n        });\n    }\n\n    private initScenes() {\n        const options = this.params.options;\n        if (options) {\n            this.scenePath = options.scenePath;\n            if (this.appAttributes?.isDynamicPPT && this.scenePath) {\n                this.scenes = entireScenes(this.manager.displayer)[this.scenePath];\n            } else {\n                this.scenes = options.scenes;\n            }\n        }\n    }\n\n    public get view(): View | undefined {\n        return this.manager.viewManager.getView(this.id);\n    }\n\n    public get viewIndex(): number | undefined {\n        return this.view?.focusSceneIndex;\n    }\n\n    public get isWritable(): boolean {\n        return this.manager.canOperate && !this.box?.readonly;\n    }\n\n    public get attributes() {\n        return this.manager.attributes[this.id];\n    }\n\n    public get appAttributes() {\n        return this.store.getAppAttributes(this.id);\n    }\n\n    public get Logger() {\n        return this.manager.windowManger.Logger;\n    }\n\n    public getFullScenePath(): string | undefined {\n        if (this.scenePath) {\n            return get(this.appAttributes, [Fields.FullPath]) || this.getFullScenePathFromScenes();\n        }\n    }\n\n    private getFullScenePathFromScenes() {\n        const sceneIndex = get(this.appAttributes, [\"state\", \"SceneIndex\"], 0);\n        const fullPath = getScenePath(this.manager.room, this.scenePath, sceneIndex);\n        if (fullPath) {\n            this.setFullPath(fullPath);\n        }\n        return fullPath;\n    }\n\n    public setFullPath(path: string) {\n        this.manager.safeUpdateAttributes([\"apps\", this.id, Fields.FullPath], path);\n    }\n\n    public async baseInsertApp(\n        skipUpdate = false,\n        boxStatus: TeleBoxState = TELE_BOX_STATE.Normal\n    ): Promise<{ appId: string; app: NetlessApp }> {\n        const params = this.params;\n        if (!params.kind) {\n            this.Logger && this.Logger.error(`[WindowManager]: kind require`);\n            throw new Error(\"[WindowManager]: kind require\");\n        }\n        const appImpl = await appRegister.appClasses.get(params.kind)?.();\n        const appParams = appRegister.registered.get(params.kind);\n        if (appImpl) {\n            await this.setupApp(\n                this.id,\n                skipUpdate,\n                appImpl,\n                params.options,\n                appParams?.appOptions,\n                this.manager.useBoxesStatus ? boxStatus : undefined,\n                params.forceTop,\n                params.forceNormal,\n                params.isDragContent\n            );\n        } else {\n            this.Logger && this.Logger.error(`[WindowManager]: app load failed ${params.kind} ${params.src}`);\n            throw new Error(`[WindowManager]: app load failed ${params.kind} ${params.src}`);\n        }\n        internalEmitter.emit(\"updateManagerRect\");\n        return {\n            appId: this.id,\n            app: appImpl,\n        };\n    }\n\n    public get box(): ReadonlyTeleBox | undefined {\n        return this.boxManager?.getBox(this.id);\n    }\n\n    private async setupApp(\n        appId: string,\n        skipUpdate: boolean,\n        app: NetlessApp,\n        options?: setAppOptions,\n        appOptions?: any,\n        boxStatus?: TeleBoxState,\n        forceTop?: boolean,\n        forceNormal?: boolean,\n        isDragContent?: boolean\n    ) {\n        log(\"setupApp\", appId, app, options, boxStatus, forceTop, forceNormal, isDragContent);\n        if (!this.boxManager) {\n            throw new BoxManagerNotFoundError();\n        }\n        const AppContextClass = getExtendClass(AppContext, WindowManager.extendClass);\n        const context = new AppContextClass(this.manager, this.boxManager, appId, this, appOptions);\n        this.appContext = context;\n        try {\n            internalEmitter.once(`${appId}${Events.WindowCreated}` as any).then(async () => {\n                let boxInitState: AppInitState | undefined;\n                if (!skipUpdate) {\n                    boxInitState = this.getAppInitState(appId);\n                    this.boxManager?.updateBoxState(boxInitState);\n                }\n                this.appEmitter.onAny(this.appListener);\n                this.appAttributesUpdateListener(appId);\n                this.setViewFocusScenePath();\n                // 如果当前是回放模式, 则需要记录当前主视图的场景路径, 以便在 app 创建后恢复\n                let currentMainViewScenePath: string | undefined;\n                if (this.manager.isReplay) {\n                    currentMainViewScenePath = (this.manager.mainView as any).scenePath as string;\n                }\n                setTimeout(async () => {\n                    // 延迟执行 setup, 防止初始化的属性没有更新成功\n                    this.Logger && this.Logger.info(`[WindowManager]: setup app ${this.kind}, appId: ${appId}`);\n                    const result = await app.setup(context);\n                    this.appResult = result;\n                    appRegister.notifyApp(this.kind, \"created\", { appId, result });\n                    this.afterSetupApp(boxInitState);\n                    this.fixMobileSize();\n                    if (currentMainViewScenePath) {\n                        this.manager.mainViewProxy.setFocusScenePath(currentMainViewScenePath);\n                    }\n                    callbacks.emit(\"onAppSetup\", appId);\n                }, SETUP_APP_DELAY);\n            });\n            this.boxManager?.createBox({\n                appId: appId,\n                app,\n                options,\n                canOperate: this.manager.canOperate,\n                smartPosition: this.isAddApp,\n                boxStatus,\n                forceTop,\n                forceNormal,\n                isDragContent,\n            });\n            if (this.isAddApp && this.box) {\n                if (boxStatus) {\n                    this.store.setBoxStatus(appId, boxStatus);\n                }\n                this.store.updateAppState(appId, AppAttributes.ZIndex, this.box.zIndex);\n                this.store.updateAppState(appId, AppAttributes.Size, {\n                    width: this.box.intrinsicWidth,\n                    height: this.box.intrinsicHeight,\n                });\n                this.boxManager.focusBox({ appId }, false);\n            }\n        } catch (error: any) {\n            this.Logger && this.Logger.error(`[WindowManager]: app setup error: ${error.message}`);\n            throw new Error(`[WindowManager]: app setup error: ${error.message}`);\n        }\n    }\n\n    // 兼容移动端创建时会出现 PPT 不适配的问题\n    private fixMobileSize() {\n        const box = this.boxManager?.getBox(this.id);\n        if (box) {\n            this.boxManager?.resizeBox({\n                appId: this.id,\n                width: box.intrinsicWidth + 0.001,\n                height: box.intrinsicHeight + 0.001,\n                skipUpdate: true,\n            });\n        }\n    }\n\n    private afterSetupApp(boxInitState: AppInitState | undefined): void {\n        if (boxInitState) {\n            if (!boxInitState?.x || !boxInitState.y) {\n                this.boxManager?.setBoxInitState(this.id);\n            }\n        }\n    }\n\n    public async onSeek(time: number) {\n        this.appEmitter.emit(\"seek\", time).catch(err => {\n            console.log(`[WindowManager]: emit seek error: ${err.message}`);\n        });\n        const boxInitState = this.getAppInitState(this.id);\n        this.boxManager?.updateBoxState(boxInitState);\n    }\n\n    public async onReconnected() {\n        const isExist = Boolean(this.manager.attributes.apps[this.id]);\n        if (!isExist) {\n            await this.destroy(true, false, true);\n            return;\n        }\n        this.appEmitter.emit(\"reconnected\", undefined);\n        const currentAppState = this.getAppInitState(this.id);\n        await this.destroy(true, false, true);\n        const params = this.params;\n        const AppProxyClass = getExtendClass(AppProxy, WindowManager.extendClass);\n        const appProxy = new AppProxyClass(params, this.manager, this.id, this.isAddApp);\n        await appProxy.baseInsertApp(true, currentAppState?.boxStatus);\n        this.boxManager?.updateBoxState(currentAppState);\n    }\n\n    public async onRemoveScene(scenePath: string) {\n        if (this.scenePath && scenePath.startsWith(this.scenePath + \"/\")) {\n            let nextIndex = this.pageState.index;\n            let fullPath = this._pageState.getFullPath(nextIndex);\n            if (!fullPath) {\n                nextIndex = 0;\n                fullPath = this._pageState.getFullPath(nextIndex);\n            }\n            if (fullPath) {\n                this.setFullPath(fullPath);\n            }\n            this.setViewFocusScenePath();\n            if (this.view) {\n                this.view.focusSceneIndex = nextIndex;\n            }\n        }\n    }\n\n    public getAppInitState = (id: string) => {\n        const attrs = this.store.getAppState(id);\n        if (!attrs) return;\n        const position = attrs?.[AppAttributes.Position];\n        const focus = this.store.focus;\n        const size = attrs?.[AppAttributes.Size];\n        const sceneIndex = attrs?.[AppAttributes.SceneIndex];\n        const maximized = this.attributes?.[\"maximized\"];\n        const minimized = this.attributes?.[\"minimized\"];\n        const boxStatus = this.store.getBoxStatus(id) ?? undefined;\n        const lastNotMinimizedBoxStatus = this.store.getLastNotMinimizedBoxStatus(id) ?? undefined;\n        const { forceTop, forceNormal, isDragContent } = this.store.getAppAttributes(id);\n        const zIndex = attrs?.zIndex;\n        let payload = { maximized, minimized, zIndex } as AppInitState;\n        if (position) {\n            payload = { ...payload, id: id, x: position.x, y: position.y };\n        }\n        if (focus === id) {\n            payload = { ...payload, focus: true };\n        }\n        if (size) {\n            payload = { ...payload, width: size.width, height: size.height };\n        }\n        if (sceneIndex) {\n            payload = { ...payload, sceneIndex };\n        }\n        if (boxStatus) {\n            payload = { ...payload, boxStatus };\n        }\n        if (lastNotMinimizedBoxStatus) {\n            payload = { ...payload, lastNotMinimizedBoxStatus };\n        }\n        if (forceTop) {\n            payload = { ...payload, forceTop };\n        }\n        if (forceNormal) {\n            payload = { ...payload, forceNormal };\n        }\n        if (isDragContent) {\n            payload = { ...payload, isDragContent };\n        }\n        return payload;\n    };\n\n    public emitAppSceneStateChange(sceneState: SceneState) {\n        this.appEmitter.emit(\"sceneStateChange\", sceneState);\n    }\n\n    public emitAppIsWritableChange() {\n        this.appEmitter.emit(\"writableChange\", this.isWritable);\n    }\n\n    private makeAppEventListener(appId: string) {\n        return (eventName: AppListenerKeys, data: any) => {\n            if (!this.manager.canOperate) return;\n            switch (eventName) {\n                case \"setBoxSize\": {\n                    this.boxManager?.resizeBox({\n                        appId,\n                        width: data.width,\n                        height: data.height,\n                        skipUpdate: false,\n                    });\n                    break;\n                }\n                case \"setBoxMinSize\": {\n                    this.boxManager?.setBoxMinSize({\n                        appId,\n                        minWidth: data.minwidth,\n                        minHeight: data.minheight,\n                    });\n                    break;\n                }\n                case \"setBoxTitle\": {\n                    this.boxManager?.setBoxTitle({ appId, title: data.title });\n                    break;\n                }\n                case AppEvents.destroy: {\n                    if (this.status === \"destroyed\") return;\n                    this.destroy(true, false, true, data?.error);\n                    if (data?.error) {\n                        console.error(data?.error);\n                    }\n                    break;\n                }\n                case \"focus\": {\n                    this.boxManager?.focusBox({ appId: this.id });\n                    boxEmitter.emit(\"focus\", { appId: this.id });\n                    break;\n                }\n                default: {\n                    break;\n                }\n            }\n        };\n    }\n\n    private appAttributesUpdateListener = (appId: string) => {\n        this.manager.refresher.add(appId, () => {\n            return autorun(() => {\n                const attrs = this.manager.attributes[appId];\n                if (attrs) {\n                    this.appEmitter.emit(\"attributesUpdate\", attrs);\n                }\n            });\n        });\n        this.manager.refresher.add(this.stateKey, () => {\n            return autorun(() => {\n                const appState = this.appAttributes?.state;\n                if (appState?.zIndex > 0 && appState.zIndex !== this.box?.zIndex) {\n                    this.boxManager?.setZIndex(appId, appState.zIndex);\n                    this.boxManager?.focusBox({ appId });\n                }\n            });\n        });\n        this.manager.refresher.add(`${appId}-fullPath`, () => {\n            return autorun(() => {\n                const fullPath = this.appAttributes?.fullPath;\n                this.setFocusScenePathHandler(fullPath);\n                if (this._prevFullPath !== fullPath) {\n                    this.notifyPageStateChange();\n                    this._prevFullPath = fullPath;\n                }\n            });\n        });\n    };\n\n    private setFocusScenePathHandler = debounce((fullPath: string | undefined) => {\n        if (this.view && fullPath && fullPath !== this.view?.focusScenePath) {\n            setViewFocusScenePath(this.view, fullPath);\n            callbacks.emit(\"onAppScenePathChange\", { appId: this.id, view: this.view });\n        }\n    }, 50);\n\n    public setScenePath(): void {\n        if (!this.manager.canOperate) return;\n        const fullScenePath = this.getFullScenePath();\n        if (this.manager.room && fullScenePath && this.view) {\n            setScenePath(this.manager.room, fullScenePath);\n        }\n    }\n\n    public setViewFocusScenePath() {\n        const fullPath = this.getFullScenePath();\n        if (fullPath && this.view) {\n            setViewFocusScenePath(this.view, fullPath);\n        }\n        return fullPath;\n    }\n\n    private async createView(): Promise<View> {\n        const view = await this.viewManager.createView(this.id);\n        this.setViewFocusScenePath();\n        return view;\n    }\n\n    public notifyPageStateChange = debounce(() => {\n        this.appEmitter.emit(\"pageStateChange\", this.pageState);\n    }, 50);\n\n    public notifyBoxStatusChange = (status: TeleBoxState) => {\n        this.appEmitter.emit(\"boxStatusChange\", { appId: this.id, status });\n    };\n\n    public get pageState(): PageState {\n        return this._pageState.toObject();\n    }\n\n    // PageRemoveService\n    public async removeSceneByIndex(index: number) {\n        const scenePath = this._pageState.getFullPath(index);\n        if (scenePath) {\n            const nextIndex = calculateNextIndex(index, this.pageState);\n            // 只修改 focus path 不修改 FullPath\n            this.setSceneIndexWithoutSync(nextIndex);\n            this.manager.dispatchInternalEvent(Events.SetAppFocusIndex, {\n                type: \"app\",\n                appID: this.id,\n                index: nextIndex,\n            });\n            // 手动添加一个延迟, 让 app 切换场景后再删除以避免闪烁\n            setTimeout(() => {\n                removeScenes(this.manager.room, scenePath, index);\n            }, 100);\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    public setSceneIndexWithoutSync(index: number) {\n        if (this.view) {\n            this.view.focusSceneIndex = index;\n        }\n    }\n    // PageRemoveService end\n\n    public setSceneIndex(index: number) {\n        if (this.view) {\n            this.view.focusSceneIndex = index;\n            const fullPath = this._pageState.getFullPath(index);\n            if (fullPath) {\n                this.setFullPath(fullPath);\n            }\n        }\n    }\n\n    public async destroy(\n        needCloseBox: boolean,\n        cleanAttrs: boolean,\n        skipUpdate: boolean,\n        error?: Error\n    ) {\n        if (this.status === \"destroyed\") return;\n        this.status = \"destroyed\";\n        try {\n            await appRegister.notifyApp(this.kind, \"destroy\", { appId: this.id });\n            await this.appEmitter.emit(\"destroy\", { error });\n        } catch (error) {\n            this.Logger && this.Logger.error(`[WindowManager]: notifyApp error: ${error.message}`);\n            console.error(\"[WindowManager]: notifyApp error\", error.message, error.stack);\n        }\n        this.appEmitter.clearListeners();\n        internalEmitter.emit(`destroy-${this.id}` as any, { error });\n        if (needCloseBox) {\n            this.boxManager?.closeBox(this.id, skipUpdate);\n        }\n        if (cleanAttrs) {\n            this.store.cleanAppAttributes(this.id);\n            if (this.scenePath) {\n                removeScenes(this.manager.room, this.scenePath);\n            }\n        }\n        this.appProxies.delete(this.id);\n        this._pageState.destroy();\n\n        this.viewManager.destroyView(this.id);\n        this.manager.appStatus.delete(this.id);\n        this.manager.refresher.remove(this.id);\n        this.manager.refresher.remove(this.stateKey);\n        this.manager.refresher.remove(`${this.id}-fullPath`);\n        this._prevFullPath = undefined;\n        this.Logger && this.Logger.info(`[WindowManager]: destroy app ${this.kind} appId: ${this.id}`);\n    }\n\n    public close(): Promise<void> {\n        return this.destroy(true, true, false);\n    }\n}\n","import type { View, Displayer } from \"white-web-sdk\";\n\nexport class ViewManager {\n    public views: Map<string, View> = new Map();\n\n    constructor(private displayer: Displayer) {}\n\n    public createView(id: string): View {\n        const view = createView(this.displayer);\n        this.views.set(id, view);\n        return view;\n    }\n\n    public getView(id: string): View | undefined {\n        return this.views.get(id);\n    }\n\n    public destroyView(id: string): void {\n        const view = this.views.get(id);\n        if (view) {\n            try {\n                view.release();\n            } catch {\n                // ignore\n            }\n            this.views.delete(id);\n        }\n    }\n\n    public setViewScenePath(id: string, scenePath: string): void {\n        const view = this.views.get(id);\n        if (view) {\n            view.focusScenePath = scenePath;\n        }\n    }\n\n    public destroy() {\n        this.views.forEach(view => {\n            try {\n                view.release();\n            } catch {\n                // ignore\n            }\n        });\n        this.views.clear();\n    }\n}\n\nexport const createView = (displayer: Displayer): View => {\n    const view = displayer.views.createView();\n    setDefaultCameraBound(view);\n    return view;\n};\n\nexport const setDefaultCameraBound = (view: View) => {\n    view.setCameraBound({\n        maxContentMode: () => 10,\n        minContentMode: () => 0.1,\n    });\n};\n","import { AnimationMode, reaction, ViewMode } from \"white-web-sdk\";\nimport { callbacks } from \"../callback\";\nimport { createView } from \"./ViewManager\";\nimport { debounce, get, isEmpty, isEqual } from \"lodash\";\nimport { internalEmitter } from \"../InternalEmitter\";\nimport { Fields, type MainViewCamera } from \"../AttributesDelegate\";\nimport { setViewFocusScenePath } from \"../Utils/Common\";\nimport { SideEffectManager } from \"side-effect-manager\";\nimport type { Camera, Room, Size, View } from \"white-web-sdk\";\nimport type { AppManager } from \"../AppManager\";\nimport { Events } from \"../constants\";\nimport { LocalConsole } from \"../Utils/log\";\n\ntype MainViewScreenLike = {\n    refreshSize?: (width: number, height: number) => void;\n    resizeObserver?: {\n        disconnect?: () => void;\n        observe?: (target: Element) => void;\n    };\n};\n\nexport class MainViewProxy {\n    /** Refresh the view's camera in an interval of 1.5s. */\n    public polling = false;\n\n    private scale?: number;\n    private started = false;\n    private mainViewIsAddListener = false;\n    private isForcingMainViewDivElement = false;\n    private wrapperRectWorkaroundFrame = 0;\n    private pendingWrapperRectChange?: { width: number; height: number; origin?: string };\n    private mainView: View;\n    private store = this.manager.store;\n    private viewMode = this.manager.windowManger.viewMode;\n\n    private sideEffectManager = new SideEffectManager();\n\n    private playgroundSizeChangeListenerLocalConsole = new LocalConsole(\"playgroundSizeChangeListener\", 100);\n    private sizeUpdatedLocalConsole = new LocalConsole(\"sizeUpdated\", 100);\n    private cameraUpdatedLocalConsole = new LocalConsole(\"cameraUpdated\", 100);\n    private cameraReactionLocalConsole = new LocalConsole(\"cameraReaction\", 100);\n\n    constructor(private manager: AppManager) {\n        this.mainView = this.createMainView();\n        this.moveCameraSizeByAttributes();\n        internalEmitter.once(\"mainViewMounted\").then(() => {\n            this.addMainViewListener();\n            this.start();\n            this.ensureCameraAndSize();\n            this.startListenWritableChange();\n        });\n        const playgroundSizeChangeListener = () => {\n            this.playgroundSizeChangeListenerLocalConsole.log(\n                JSON.stringify(this.mainView.camera),\n                JSON.stringify(this.mainView.size), \n                JSON.stringify(this.mainViewSize), \n                JSON.stringify(this.mainViewCamera),\n                window.outerHeight, window.outerWidth, \n                window.visualViewport?.width ?? \"null\", window.visualViewport?.height ?? \"null\",\n                window.visualViewport?.offsetLeft ?? \"null\", window.visualViewport?.offsetTop ?? \"null\",\n            );\n            this.sizeChangeHandler(this.mainViewSize);\n        };\n        this.sideEffectManager.add(() => {\n            return internalEmitter.on(\"playgroundSizeChange\", playgroundSizeChangeListener);\n        });\n        this.sideEffectManager.add(() => {\n            return internalEmitter.on(\"containerSizeRatioUpdate\", this.onUpdateContainerSizeRatio);\n        });\n        this.sideEffectManager.add(() => {\n            return internalEmitter.on(\"wrapperRectChange\", this.onWrapperRectChange);\n        });\n        this.sideEffectManager.add(() => {\n            return internalEmitter.on(\"startReconnect\", () => {\n                if (!this.didRelease) {\n                    this.mainView.release();\n                }\n            });\n        });\n        this.sideEffectManager.setInterval(this.syncCamera, 1500);\n    }\n\n    // Guard function when the camera is not synced\n    private syncCamera = () => {\n        if (!this.polling || this.viewMode !== ViewMode.Broadcaster) return;\n        const { mainViewCamera } = this;\n        if (mainViewCamera && mainViewCamera.id !== this.manager.uid) {\n            this.moveCameraSizeByAttributes();\n        }\n    };\n\n    private startListenWritableChange = () => {\n        this.sideEffectManager.add(() => {\n            return internalEmitter.on(\"writableChange\", isWritable => {\n                if (isWritable) {\n                    this.ensureCameraAndSize();\n                }\n                if (this.manager.room) this.syncMainView(this.manager.room);\n            });\n        });\n    };\n\n    public ensureCameraAndSize() {\n        if (this.viewMode !== ViewMode.Broadcaster) return;\n        if (!this.mainViewCamera || !this.mainViewSize) {\n            this.manager.dispatchInternalEvent(Events.InitMainViewCamera);\n            this.setCameraAndSize();\n        }\n    }\n\n    private get mainViewCamera() {\n        return this.store.getMainViewCamera();\n    }\n\n    private get mainViewSize() {\n        return this.store.getMainViewSize();\n    }\n\n    private get didRelease(): boolean {\n        return get(this.view, [\"didRelease\"]);\n    }\n\n    private moveCameraSizeByAttributes() {\n        this.moveCameraToContian(this.mainViewSize);\n        this.moveCamera(this.mainViewCamera);\n    }\n\n    private onWrapperRectChange = (payload: { width: number; height: number; origin?: string }) => {\n        this.pendingWrapperRectChange = payload;\n        if (this.wrapperRectWorkaroundFrame) {\n            cancelAnimationFrame(this.wrapperRectWorkaroundFrame);\n        }\n        this.wrapperRectWorkaroundFrame = requestAnimationFrame(this.runWrapperRectWorkaround);\n    };\n\n    private runWrapperRectWorkaround = () => {\n        this.wrapperRectWorkaroundFrame = 0;\n        const payload = this.pendingWrapperRectChange;\n        const element = this.mainView.divElement;\n        this.pendingWrapperRectChange = undefined;\n        if (!payload || !element) return;\n\n        const rect = element.getBoundingClientRect();\n        const observedSize = { width: rect.width, height: rect.height };\n        const wrapperMatchesDom =\n            Math.abs(payload.width - observedSize.width) <= 0.5 &&\n            Math.abs(payload.height - observedSize.height) <= 0.5;\n        const viewIsStale =\n            Math.abs(this.mainView.size.width - observedSize.width) > 0.5 ||\n            Math.abs(this.mainView.size.height - observedSize.height) > 0.5;\n\n        if (wrapperMatchesDom && viewIsStale) {\n            this.forceSyncMainViewDivElement(\n                `wrapperRectChange:${payload.origin || \"unknown\"}`,\n                observedSize,\n                element\n            );\n        }\n    };\n\n    private forceSyncMainViewDivElement(\n        reason: string,\n        observedSize: Pick<Size, \"width\" | \"height\">,\n        element: HTMLDivElement\n    ) {\n        const { width: viewWidth, height: viewHeight } = this.mainView.size;\n        let targetElement = element;\n        if (\n            Math.abs(viewWidth - observedSize.width) <= 0.5 &&\n            Math.abs(viewHeight - observedSize.height) <= 0.5\n        ) {\n            return;\n        }\n        if (this.isForcingMainViewDivElement) {\n            console.log(\"[window-manager] skipForceSyncMainViewDivElement \" + JSON.stringify({\n                reason,\n                observedSize,\n                viewSize: this.mainView.size,\n            }));\n            return;\n        }\n        this.isForcingMainViewDivElement = true;\n        try {\n            const mainView = this.mainView as View & { screen?: MainViewScreenLike };\n            const screen = mainView.screen;\n            const resizeObserver = screen?.resizeObserver;\n            if (typeof screen?.refreshSize === \"function\") {\n                console.log(\n                    \"[window-manager] forceSyncMainViewDivElement observerReset \" +\n                        JSON.stringify({\n                            reason,\n                            viewSize: this.mainView.size,\n                            observedSize,\n                        })\n                );\n                // Reset the observer queue so we sync against the current DOM box,\n                // not a stale ResizeObserver entry from a rapid resize burst.\n                resizeObserver?.disconnect?.();\n                screen.refreshSize(observedSize.width, observedSize.height);\n                resizeObserver?.observe?.(element);\n            }\n        } finally {\n            queueMicrotask(() => {\n                const rect = targetElement.getBoundingClientRect();\n                console.log(\"[window-manager] forceSyncMainViewDivElementResult \" + JSON.stringify({\n                    reason,\n                    viewSize: this.mainView.size,\n                    rect: { width: rect.width, height: rect.height },\n                }));\n                this.isForcingMainViewDivElement = false;\n            });\n        }\n    }\n\n    public start() {\n        console.log(\"[window-manager] start attributes size:\" + JSON.stringify(this.mainViewSize));\n        this.sizeChangeHandler(this.mainViewSize);\n        if (this.started) return;\n        this.addCameraListener();\n        this.addCameraReaction();\n        if (this.manager.room) this.syncMainView(this.manager.room);\n        this.started = true;\n        if(this.mainView.focusScenePath) {\n            this.manager.windowManger.onMainViewScenePathChangeHandler(this.mainView.focusScenePath);\n        }\n        console.log(\"[window-manager] start end mainView size:\" + JSON.stringify(this.mainView.size));\n    }\n\n    public addCameraReaction = () => {\n        this.manager.refresher.add(Fields.MainViewCamera, this.cameraReaction);\n    };\n\n    public setCameraAndSize(): void {\n        const camera = { ...this.mainView.camera, id: this.manager.uid };\n        const size = { ...this.mainView.size, id: this.manager.uid };\n        this.store.setMainViewCameraAndSize(camera, size);\n    }\n\n    private cameraReaction = () => {\n        return reaction(\n            () => this.mainViewCamera,\n            (camera: MainViewCamera | undefined) => {\n                if (camera && camera.id !== this.manager.uid) {\n                    this.moveCameraToContian(this.mainViewSize);\n                    this.moveCamera(camera);\n                    this.cameraReactionLocalConsole.log(`camera: ${JSON.stringify(camera)}, current size: ${JSON.stringify(this.mainViewSize)}`);\n                }\n            },\n            { fireImmediately: true }\n        );\n    };\n\n    public sizeChangeHandler = debounce((size: Size) => {\n        if (size) {\n            this.moveCameraToContian(size);\n            this.moveCamera(this.mainViewCamera);\n            console.log(\"[window-manager] sizeChangeHandler current size and camera\" + JSON.stringify(size) + JSON.stringify(this.mainViewCamera) +\n            JSON.stringify(this.mainView.camera) + JSON.stringify(this.mainView.size));\n        }\n        this.ensureMainViewSize();\n    }, 30);\n\n    public onUpdateContainerSizeRatio = () => {\n        const size = this.store.getMainViewSize();\n        console.log(\"[window-manager] onUpdateContainerSizeRatio  \" + JSON.stringify(size));\n        this.sizeChangeHandler(size);\n    };\n\n    public get view(): View {\n        return this.mainView;\n    }\n\n    public get cameraState() {\n        return { ...this.view.camera, ...this.view.size };\n    }\n\n    public createMainView(): View {\n        const mainView = createView(this.manager.displayer);\n        const mainViewScenePath = this.store.getMainViewScenePath();\n        if (mainViewScenePath) {\n            setViewFocusScenePath(mainView, mainViewScenePath);\n        }\n        return mainView;\n    }\n\n    public onReconnect(): void {\n        if (this.didRelease) {\n            this.rebind();\n        } else {\n            const mainViewScenePath = this.store.getMainViewScenePath();\n            this.setFocusScenePath(mainViewScenePath);\n        }\n    }\n\n    public setFocusScenePath(path: string | undefined) {\n        if (path) {\n            return setViewFocusScenePath(this.view, path);\n        }\n    }\n\n    public rebind(): void {\n        const divElement = this.mainView.divElement;\n        const disableCameraTransform = this.mainView.disableCameraTransform;\n        this.stop();\n        if (!this.didRelease) {\n            this.mainView.release();\n        }\n        this.removeMainViewListener();\n        this.mainView = this.createMainView();\n        this.mainView.disableCameraTransform = disableCameraTransform;\n        this.mainView.divElement = divElement;\n        this.addMainViewListener();\n        this.start();\n        callbacks.emit(\"onMainViewRebind\", this.mainView);\n    }\n\n    private onCameraUpdatedByDevice = (camera: Camera) => {\n        if (this.viewMode === ViewMode.Follower) return;\n        this.store.setMainViewCamera({ ...camera, id: this.manager.uid });\n        if (!isEqual(this.mainViewSize, { ...this.mainView.size, id: this.manager.uid })) {\n            this.setMainViewSize(this.view.size);\n        }\n    };\n\n    public addMainViewListener(): void {\n        if (this.mainViewIsAddListener) return;\n        if (this.view.divElement) {\n            this.view.divElement.addEventListener(\"click\", this.mainViewClickListener);\n            this.view.divElement.addEventListener(\"touchend\", this.mainViewClickListener);\n            this.mainViewIsAddListener = true;\n        }\n    }\n\n    public removeMainViewListener(): void {\n        if (this.view.divElement) {\n            this.view.divElement.removeEventListener(\"click\", this.mainViewClickListener);\n            this.view.divElement.removeEventListener(\"touchend\", this.mainViewClickListener);\n        }\n        this.mainViewIsAddListener = false;\n    }\n\n    private mainViewClickListener = () => {\n        this.mainViewClickHandler();\n    };\n\n    public async mainViewClickHandler(): Promise<void> {\n        if (!this.manager.canOperate) return;\n        this.store.cleanFocus();\n        this.manager.boxManager?.blurAllBox();\n    }\n\n    public setMainViewSize = debounce((size: Size) => {\n        this.store.setMainViewSize({ ...size, id: this.manager.uid });\n    }, 50);\n\n    private addCameraListener() {\n        this.view.callbacks.on(\"onCameraUpdatedByDevice\", this.onCameraUpdatedByDevice);\n        this.view.callbacks.on(\"onCameraUpdated\", this.onCameraUpdated);\n        this.view.callbacks.on(\"onSizeUpdated\", this.onSizeUpdated);\n    }\n\n    private removeCameraListener() {\n        this.view.callbacks.off(\"onCameraUpdatedByDevice\", this.onCameraUpdatedByDevice);\n        this.view.callbacks.off(\"onCameraUpdated\", this.onCameraUpdated);\n        this.view.callbacks.off(\"onSizeUpdated\", this.onSizeUpdated);\n    }\n\n    private _syncMainViewTimer = 0;\n    private handleCameraOrSizeUpdated = () => {\n        callbacks.emit(\"cameraStateChange\", this.cameraState);\n        // sdk >= 2.16.43 的 syncMainView() 可以写入当前 main view 的 camera, 以修复复制粘贴元素的位置\n        // 注意到这个操作会发送信令，应当避免频繁调用\n        if (this.manager.room && (this.manager.room as any).syncMainView) {\n            clearTimeout(this._syncMainViewTimer);\n            this._syncMainViewTimer = setTimeout(this.syncMainView, 100, this.manager.room);\n        }\n        this.ensureMainViewSize();\n    };\n\n    private onCameraUpdated = (camera: Camera) => {\n        this.cameraUpdatedLocalConsole.log(JSON.stringify(camera));\n        this.handleCameraOrSizeUpdated();\n    };\n\n    private onSizeUpdated = (size: Size) => {\n        this.sizeUpdatedLocalConsole.log(JSON.stringify(size));\n        this.handleCameraOrSizeUpdated();\n    };\n\n    private ensureMainViewSize() {\n        if (\n            (!this.mainViewSize ||\n                this.mainViewSize.width === 0 ||\n                this.mainViewSize.height === 0) &&\n            this.mainView.size.width > 0 &&\n            this.mainView.size.height > 0\n        ) {\n            this.setMainViewSize(this.mainView.size);\n        }\n    }\n\n    private syncMainView = (room: Room) => {\n        if (room.isWritable) {\n            room.syncMainView(this.mainView);\n        }\n    };\n\n    public moveCameraToContian(size: Size): void {\n        if (!isEmpty(size)) {\n            this.view.moveCameraToContain({\n                width: size.width,\n                height: size.height,\n                originX: -size.width / 2,\n                originY: -size.height / 2,\n                animationMode: AnimationMode.Immediately,\n            });\n            this.scale = this.view.camera.scale;\n        }\n    }\n\n    public moveCamera(camera: Camera): void {\n        if (!isEmpty(camera)) {\n            if (isEqual(camera, this.view.camera)) return;\n            const { centerX, centerY, scale } = camera;\n            const needScale = scale * (this.scale || 1);\n            this.view.moveCamera({\n                centerX: centerX,\n                centerY: centerY,\n                scale: needScale,\n                animationMode: AnimationMode.Immediately,\n            });\n        }\n    }\n\n    public stop() {\n        this.removeCameraListener();\n        this.manager.refresher.remove(Fields.MainViewCamera);\n        this.manager.refresher.remove(Fields.MainViewSize);\n        this.started = false;\n    }\n\n    public setViewMode = (mode: ViewMode) => {\n        this.viewMode = mode;\n    };\n\n    public destroy() {\n        console.log(\"[window-manager] destroy  \");\n        if (this.wrapperRectWorkaroundFrame) {\n            cancelAnimationFrame(this.wrapperRectWorkaroundFrame);\n            this.wrapperRectWorkaroundFrame = 0;\n        }\n        this.playgroundSizeChangeListenerLocalConsole.destroy();\n        this.sizeUpdatedLocalConsole.destroy();\n        this.cameraUpdatedLocalConsole.destroy();\n        this.cameraReactionLocalConsole.destroy();\n        this.removeMainViewListener();\n        this.stop();\n        this.sideEffectManager.flushAll();\n    }\n}\n","import { callbacks } from \"./callback\";\nimport { internalEmitter } from \"./InternalEmitter\";\nimport type { View } from \"white-web-sdk\";\nimport type { AppProxy } from \"./App\";\n\nexport type RedoUndoContext = {\n    mainView: () => View;\n    focus: () => string | undefined;\n    getAppProxy: (id: string) => AppProxy | undefined;\n};\n\nexport class RedoUndo {\n    constructor(private context: RedoUndoContext) {\n        internalEmitter.on(\"focusedChange\", changed => {\n            this.disposePrevFocusViewRedoUndoListeners(changed.prev);\n            setTimeout(() => {\n                this.addRedoUndoListeners(changed.focused);\n            }, 0);\n        });\n        internalEmitter.on(\"rootDirRemoved\", () => {\n            this.disposePrevFocusViewRedoUndoListeners(context.focus());\n            this.addRedoUndoListeners(context.focus());\n        });\n        this.addRedoUndoListeners(context.focus());\n    }\n\n    private addRedoUndoListeners = (focused: string | undefined) => {\n        if (focused === undefined) {\n            this.addViewCallbacks(\n                this.context.mainView(),\n                this.onCanRedoStepsUpdate,\n                this.onCanUndoStepsUpdate\n            );\n        } else {\n            const focusApp = this.context.getAppProxy(focused);\n            if (focusApp && focusApp.view) {\n                this.addViewCallbacks(\n                    focusApp.view,\n                    this.onCanRedoStepsUpdate,\n                    this.onCanUndoStepsUpdate\n                );\n            }\n        }\n    };\n\n    private addViewCallbacks = (\n        view: View,\n        redoListener: (steps: number) => void,\n        undoListener: (steps: number) => void\n    ) => {\n        redoListener(view.canRedoSteps);\n        undoListener(view.canUndoSteps);\n        view.callbacks.on(\"onCanRedoStepsUpdate\", redoListener);\n        view.callbacks.on(\"onCanUndoStepsUpdate\", undoListener);\n    };\n\n    private disposeViewCallbacks = (view: View) => {\n        view.callbacks.off(\"onCanRedoStepsUpdate\", this.onCanRedoStepsUpdate);\n        view.callbacks.off(\"onCanUndoStepsUpdate\", this.onCanUndoStepsUpdate);\n    };\n\n    private onCanRedoStepsUpdate = (steps: number) => {\n        callbacks.emit(\"canRedoStepsChange\", steps);\n    };\n\n    private onCanUndoStepsUpdate = (steps: number) => {\n        callbacks.emit(\"canUndoStepsChange\", steps);\n    };\n\n    private disposePrevFocusViewRedoUndoListeners = (prevFocused: string | undefined) => {\n        let view: View | undefined = undefined;\n        if (prevFocused === undefined) {\n            view = this.context.mainView();\n        } else {\n            const appProxy = this.context.getAppProxy(prevFocused);\n            if (appProxy && appProxy.view) {\n                view = appProxy.view;\n            }\n        }\n        if (view) {\n            this.disposeViewCallbacks(view);\n        }\n    };\n\n    public destroy() {\n        this.disposePrevFocusViewRedoUndoListeners(this.context.focus());\n    }\n}\n","import { AppAttributes, AppStatus, Events, INIT_DIR, MagixEventName, ROOT_DIR } from \"./constants\";\nimport { AppCreateQueue } from \"./Utils/AppCreateQueue\";\nimport { AppListeners } from \"./AppListener\";\nimport { AppProxy } from \"./App\";\nimport { appRegister } from \"./Register\";\nimport { autorun, isPlayer, isRoom, ScenePathType, UpdateEventKind } from \"white-web-sdk\";\nimport { boxEmitter } from \"./BoxEmitter\";\nimport { calculateNextIndex } from \"./Page\";\nimport { callbacks } from \"./callback\";\nimport { debounce, get, isInteger, orderBy } from \"lodash\";\nimport { internalEmitter } from \"./InternalEmitter\";\nimport { createAttributesDelegate, Fields } from \"./AttributesDelegate\";\nimport type { AttributesDelegate } from \"./AttributesDelegate\";\nimport { log } from \"./Utils/log\";\nimport { MainViewProxy } from \"./View/MainView\";\nimport { safeListenPropsUpdated } from \"./Utils/Reactive\";\nimport { reconnectRefresher, WindowManager } from \"./index\";\nimport { RedoUndo } from \"./RedoUndo\";\nimport { SideEffectManager } from \"side-effect-manager\";\nimport { ViewManager } from \"./View/ViewManager\";\nimport type { SyncRegisterAppPayload } from \"./Register\";\nimport type { RemoveSceneParams } from \"./InternalEmitter\";\nimport {\n    entireScenes,\n    genAppId,\n    isRootDirPage,\n    makeValidScenePath,\n    parseSceneDir,\n    removeScenes,\n    setScenePath,\n    setViewFocusScenePath,\n} from \"./Utils/Common\";\nimport type { ReconnectRefresher } from \"./ReconnectRefresher\";\nimport type { BoxManager } from \"./BoxManager\";\nimport type {\n    Displayer,\n    Room,\n    ScenesCallbacksNode,\n    SceneState,\n    RoomState,\n    MemberState,\n} from \"white-web-sdk\";\nimport type { AddAppParams, BaseInsertParams, TeleBoxRect } from \"./index\";\nimport type {\n    BoxBlurredPayload,\n    BoxClosePayload,\n    BoxFocusPayload,\n    BoxMovePayload,\n    BoxResizePayload,\n    BoxStateChangePayload,\n} from \"./BoxEmitter\";\nimport { getExtendClass } from \"./Utils/extendClass\";\nimport type { TeleBoxState } from \"@netless/telebox-insider\";\n\nexport class AppManager {\n    static readonly kind = \"AppManager\";\n    public displayer: Displayer;\n    public viewManager: ViewManager;\n    public appProxies: Map<string, AppProxy> = new Map();\n    public appStatus: Map<string, AppStatus> = new Map();\n    public store!: AttributesDelegate;\n    public mainViewProxy: MainViewProxy;\n    public refresher: ReconnectRefresher;\n    public isReplay = this.windowManger.isReplay;\n    public mainViewScenesLength = 0;\n\n    private appListeners: AppListeners;\n    public boxManager?: BoxManager;\n\n    private _prevSceneIndex: number | undefined;\n    private _prevFocused: string | undefined;\n    private callbacksNode: ScenesCallbacksNode | null = null;\n    private appCreateQueue = new AppCreateQueue();\n\n    private _focusAppCreatedResolve?: (appProxy?: AppProxy) => void;\n    private _focusAppId: string | undefined;\n    private _resolveTimer: number | undefined;\n\n    private sideEffectManager = new SideEffectManager();\n\n    public sceneState: SceneState | null = null;\n\n    public rootDirRemoving = false;\n\n    private _useBoxesStatus = false;\n\n    public get useBoxesStatus() {\n        return this._useBoxesStatus;\n    }\n\n    public set useBoxesStatus(value: boolean) {\n        this._useBoxesStatus = value;\n    }\n\n    constructor(public windowManger: WindowManager) {\n        this.displayer = windowManger.displayer;\n        this.store = createAttributesDelegate(WindowManager.extendClass, {\n            getAttributes: () => this.attributes,\n            safeSetAttributes: attributes => this.safeSetAttributes(attributes),\n            safeUpdateAttributes: (keys, val) => this.safeUpdateAttributes(keys, val),\n        });\n\n        this.mainViewProxy = new MainViewProxy(this);\n        this.viewManager = new ViewManager(this.displayer);\n        this.appListeners = new AppListeners(this);\n        this.displayer.callbacks.on(this.eventName, this.displayerStateListener);\n        this.appListeners.addListeners();\n\n        this.refresher = reconnectRefresher;\n        this.refresher.setRoom(this.room);\n        this.refresher.setContext({ emitter: internalEmitter });\n\n        this.sideEffectManager.addDisposer(() => {\n            this.appCreateQueue.destroy();\n            this.mainViewProxy.destroy();\n            this.refresher.destroy();\n            this.viewManager.destroy();\n            this.boxManager?.destroy();\n            this.callbacksNode?.dispose();\n        });\n\n        internalEmitter.once(\"onCreated\").then(() => this.onCreated());\n        internalEmitter.on(\"onReconnected\", () => this.onReconnected());\n\n        if (isPlayer(this.displayer)) {\n            internalEmitter.on(\"seekStart\", this.onPlayerSeekStart);\n            internalEmitter.on(\"seek\", this.onPlayerSeekDone);\n        }\n\n        internalEmitter.on(\"removeScenes\", this.onRemoveScenes);\n        internalEmitter.on(\"setReadonly\", this.onReadonlyChanged);\n\n        this.createRootDirScenesCallback();\n\n        appRegister.setSyncRegisterApp(payload => {\n            this.safeUpdateAttributes([Fields.Registered, payload.kind], payload);\n        });\n    }\n\n    public getMemberState(): MemberState {\n        return this.room?.state.memberState || ({ strokeColor: [0, 0, 0] } as MemberState);\n    }\n\n    private onRemoveScenes = async (params: RemoveSceneParams) => {\n        const { scenePath } = params;\n        // 如果移除根目录就把 scenePath 设置为初始值\n        if (scenePath === ROOT_DIR) {\n            console.log(\"[window-manager] onRemoveScenes ROOT_DIR\");\n            await this.onRootDirRemoved();\n            this.dispatchInternalEvent(Events.RootDirRemoved);\n            return;\n        }\n        if (isRootDirPage(scenePath)) {\n            let nextIndex = this.mainView.focusSceneIndex || 0;\n            let sceneName = this.callbacksNode?.scenes[nextIndex];\n            if (!sceneName) {\n                nextIndex = 0;\n                sceneName = this.callbacksNode?.scenes[nextIndex];\n            }\n            if (sceneName) {\n                console.log(`[window-manager] onRemoveScenes  setMainViewScenePath ${ROOT_DIR}${sceneName}`);\n                this.setMainViewScenePath(`${ROOT_DIR}${sceneName}`);\n            }\n            await this.setMainViewSceneIndex(nextIndex);\n        } else {\n            this.appProxies.forEach(app => {\n                app.onRemoveScene(scenePath);\n            });\n        }\n    };\n\n    /**\n     * 根目录被删除时所有的 scene 都会被删除.\n     * 所以需要关掉所有开启了 view 的 app\n     */\n    public async onRootDirRemoved(needClose = true) {\n        this.setMainViewScenePath(INIT_DIR);\n        this.createRootDirScenesCallback();\n\n        for (const [id, appProxy] of this.appProxies.entries()) {\n            if (appProxy.view) {\n                await this.closeApp(id, needClose);\n            }\n        }\n        // 删除了根目录的 scenes 之后 mainview 需要重新绑定, 否则主白板会不能渲染\n        this.mainViewProxy.rebind();\n        internalEmitter.emit(\"rootDirRemoved\");\n        this.updateRootDirRemoving(false);\n    }\n\n    private onReadonlyChanged = () => {\n        this.appProxies.forEach(appProxy => {\n            appProxy.emitAppIsWritableChange();\n        });\n    };\n\n    private onPlayerSeekStart = async () => {\n        await this.closeAll();\n    };\n\n    private onPlayerSeekDone = async (time: number) => {\n        await this._attributesUpdateCallback(this.attributes.apps);\n        this.appProxies.forEach(appProxy => {\n            appProxy.onSeek(time);\n        });\n    };\n\n    public createRootDirScenesCallback = () => {\n        let isRecreate = false;\n        if (this.callbacksNode) {\n            this.callbacksNode.dispose();\n            isRecreate = true;\n        }\n        this.callbacksNode = this.displayer.createScenesCallback(ROOT_DIR, {\n            onAddScene: this.onSceneChange,\n            onRemoveScene: async (node, name) => {\n                await this.onSceneChange(node);\n                internalEmitter.emit(\"rootDirSceneRemoved\", name);\n            },\n        });\n        if (this.callbacksNode) {\n            this.updateSceneState(this.callbacksNode);\n            this.mainViewScenesLength = this.callbacksNode.scenes.length;\n            if (isRecreate) {\n                this.emitMainViewScenesChange(this.callbacksNode.scenes.length);\n            }\n        }\n    };\n\n    public removeSceneByIndex = async (index: number) => {\n        const nextIndex = calculateNextIndex(index, this.windowManger.pageState);\n        this.setSceneIndexWithoutSync(nextIndex);\n        this.dispatchInternalEvent(Events.SetAppFocusIndex, { type: \"main\", index: nextIndex });\n        const scene = this.callbacksNode?.scenes[index];\n        setTimeout(() => {\n            if (scene) {\n                removeScenes(this.room, `${ROOT_DIR}${scene}`, index);\n            }\n        }, 100);\n        return new Promise<boolean>((resolve, reject) => {\n            internalEmitter\n                .once(\"rootDirSceneRemoved\")\n                .then(name => {\n                    if (name === scene) {\n                        resolve(true);\n                    }\n                })\n                .catch(e => {\n                    console.log(`[WindowManager]: removePage error: ${e}`);\n                    reject(false);\n                });\n        });\n    };\n\n    public setSceneIndexWithoutSync = (index: number) => {\n        const sceneName = this.callbacksNode?.scenes[index];\n        if (sceneName) {\n            this.mainViewProxy.setFocusScenePath(`${ROOT_DIR}${sceneName}`);\n        }\n    };\n\n    private onSceneChange = (node: ScenesCallbacksNode) => {\n        this.mainViewScenesLength = node.scenes.length;\n        this.updateSceneState(node);\n        return this.emitMainViewScenesChange(this.mainViewScenesLength);\n    };\n\n    private emitMainViewScenesChange = (length: number) => {\n        return Promise.all([\n            callbacks.emit(\"mainViewScenesLengthChange\", length),\n            internalEmitter.emit(\"changePageState\"),\n        ]);\n    };\n\n    private updateSceneState = (node: ScenesCallbacksNode) => {\n        const currentIndex = this.store.getMainViewSceneIndex() || 0;\n        let sceneName = node.scenes[currentIndex];\n        if (!sceneName) {\n            sceneName = node.scenes[this.mainView.focusSceneIndex || 0];\n        }\n        this.sceneState = {\n            scenePath: `${ROOT_DIR}${sceneName}`,\n            contextPath: node.path,\n            index: currentIndex,\n            scenes: node.scenes.map(scene => {\n                return {\n                    name: scene,\n                };\n            }),\n            sceneName: sceneName,\n        };\n        callbacks.emit(\"sceneStateChange\", this.sceneState);\n    };\n\n    private get eventName() {\n        return isRoom(this.displayer) ? \"onRoomStateChanged\" : \"onPlayerStateChanged\";\n    }\n\n    public get attributes() {\n        return this.windowManger.attributes;\n    }\n\n    public get canOperate() {\n        return this.windowManger.canOperate;\n    }\n\n    public get room() {\n        return isRoom(this.displayer) ? (this.displayer as Room) : undefined;\n    }\n\n    public get mainView() {\n        return this.mainViewProxy.view;\n    }\n\n    public get polling() {\n        return this.mainViewProxy.polling;\n    }\n\n    public set polling(b: boolean) {\n        this.mainViewProxy.polling = b;\n    }\n\n    public get focusApp() {\n        if (this.store.focus) {\n            return this.appProxies.get(this.store.focus);\n        }\n    }\n\n    public get uid() {\n        return this.room?.uid || \"\";\n    }\n\n    public get Logger() {\n        return this.windowManger.Logger;\n    }\n\n    public getMainViewSceneDir() {\n        const scenePath = this.store.getMainViewScenePath();\n        if (scenePath) {\n            return parseSceneDir(scenePath);\n        } else {\n            throw new Error(\"[WindowManager]: mainViewSceneDir not found\");\n        }\n    }\n\n    private async onCreated() {\n        if (Object.keys(this.attributes.apps).length && this.store.focus) {\n            this._focusAppId = this.store.focus;\n            await new Promise<AppProxy | undefined>(resolve => {\n                this._focusAppCreatedResolve = resolve;\n                this._resolveTimer = setTimeout(() => {\n                    resolve(this.appProxies.get(this._focusAppId || \"\"));\n                }, 500);\n            }).then(() => {\n                this._resolveTimer = undefined;\n                this._focusAppCreatedResolve = undefined;\n                this.focusByAttributes(this.attributes.apps);\n            });\n        }\n        await this._attributesUpdateCallback(this.attributes.apps);\n        internalEmitter.emit(\"updateManagerRect\");\n        boxEmitter.on(\"move\", this.onBoxMove);\n        boxEmitter.on(\"resize\", this.onBoxResize);\n        boxEmitter.on(\"focus\", this.onBoxFocus);\n        boxEmitter.on(\"close\", this.onBoxClose);\n        boxEmitter.on(\"boxStateChange\", this.onBoxStateChange);\n        boxEmitter.on(\"blurred\", this.onBoxBlurred);\n\n        this.addAppsChangeListener();\n        this.addAppCloseListener();\n        this.addBoxesStatusChangeListener();\n        this.refresher.add(\"maximized\", () => {\n            return autorun(() => {\n                const maximized = this.attributes.maximized;\n                this.boxManager?.setMaximized(Boolean(maximized));\n            });\n        });\n        this.refresher.add(\"minimized\", () => {\n            return autorun(() => {\n                const minimized = this.attributes.minimized;\n                this.onMinimized(minimized);\n            });\n        });\n        this.refresher.add(\"mainViewIndex\", () => {\n            return autorun(() => {\n                const mainSceneIndex = get(this.attributes, \"_mainSceneIndex\");\n                this.onMainViewIndexChange(mainSceneIndex);\n            });\n        });\n        this.refresher.add(\"focusedChange\", () => {\n            return autorun(() => {\n                const focused = get(this.attributes, \"focus\");\n                this.onFocusChange(focused);\n            });\n        });\n        this.refresher.add(\"registeredChange\", () => {\n            return autorun(() => {\n                const registered = get(this.attributes, Fields.Registered);\n                this.onRegisteredChange(registered);\n            });\n        });\n        if (!this.attributes.apps || Object.keys(this.attributes.apps).length === 0) {\n            const mainScenePath = this.store.getMainViewScenePath();\n            if (!mainScenePath) return;\n            this.resetScenePath(mainScenePath);\n        }\n        this.displayerWritableListener(!this.room?.isWritable);\n        this.displayer.callbacks.on(\"onEnableWriteNowChanged\", this.displayerWritableListener);\n        this.focusByAttributes(this.attributes.apps);\n        this._prevFocused = this.attributes.focus;\n\n        if (!WindowManager.supportAppliancePlugin) {\n            this.sideEffectManager.add(() => {\n                const redoUndo = new RedoUndo({\n                    mainView: () => this.mainViewProxy.view,\n                    focus: () => this.attributes.focus,\n                    getAppProxy: id => this.appProxies.get(id),\n                });\n                return () => redoUndo.destroy();\n            });\n        }\n    }\n\n    private onBoxMove = (payload: BoxMovePayload) => {\n        this.dispatchInternalEvent(Events.AppMove, payload);\n        this.store.updateAppState(payload.appId, AppAttributes.Position, {\n            x: payload.x,\n            y: payload.y,\n        });\n        callbacks.emit(\"onBoxMove\", payload);\n    };\n\n    private onBoxResize = (payload: BoxResizePayload) => {\n        if (payload.width && payload.height) {\n            this.dispatchInternalEvent(Events.AppResize, payload);\n            this.store.updateAppState(payload.appId, AppAttributes.Size, {\n                width: payload.width,\n                height: payload.height,\n            });\n            callbacks.emit(\"onBoxResize\", payload);\n        }\n    };\n\n    private onBoxFocus = (payload: BoxFocusPayload) => {\n        this.windowManger.safeSetAttributes({ focus: payload.appId });\n        callbacks.emit(\"onBoxFocus\", payload);\n    };\n\n    private onBoxBlurred = (payload: BoxBlurredPayload) => {\n        const focus = this.attributes.focus;\n        if (focus === payload.appId) {\n            this.windowManger.safeSetAttributes({ focus: undefined });\n            callbacks.emit(\"onBoxBlurred\", payload);\n        }\n    };\n\n    private onBoxClose = (payload: BoxClosePayload) => {\n        const appProxy = this.appProxies.get(payload.appId);\n        if (appProxy) {\n            appProxy.destroy(false, true, true, payload.error);\n        }\n        callbacks.emit(\"onBoxClose\", payload);\n    };\n\n    private onBoxStateChange = (payload: BoxStateChangePayload) => {\n        this.dispatchInternalEvent(Events.AppBoxStateChange, payload);\n        callbacks.emit(\"onBoxStateChange\", payload);\n    };\n\n    private notifyBoxesStatusChange = debounce(() => {\n        this.boxManager?.setBoxesStatus(this.attributes.boxesStatus);\n        const entries = Object.entries(this.attributes.boxesStatus);\n        if (entries.length > 0) {\n            entries.forEach(([appId, status]) => {\n                const appProxy = this.appProxies.get(appId);\n                if (appProxy) {\n                    appProxy.notifyBoxStatusChange(status as TeleBoxState);\n                }\n            });\n        }\n    }, 100);\n\n    public addBoxesStatusChangeListener = () => {\n        this.refresher.add(\"boxesStatus\", () => {\n            return safeListenPropsUpdated(\n                () => this.attributes.boxesStatus,\n                () => {\n                    this.notifyBoxesStatusChange();\n                }\n            );\n        });\n        this.refresher.add(\"lastNotMinimizedBoxesStatus\", () => {\n            return safeListenPropsUpdated(\n                () => this.attributes.lastNotMinimizedBoxesStatus,\n                () => {\n                    this.boxManager?.setLastNotMinimizedBoxesStatus(\n                        this.attributes.lastNotMinimizedBoxesStatus\n                    );\n                }\n            );\n        });\n    };\n    public addAppsChangeListener = () => {\n        this.refresher.add(\"apps\", () => {\n            return safeListenPropsUpdated(\n                () => this.attributes.apps,\n                () => {\n                    this.attributesUpdateCallback(this.attributes.apps);\n                }\n            );\n        });\n    };\n\n    public addAppCloseListener = () => {\n        // this.refresher.add(\"appsClose\", () => {\n        //     return onObjectRemoved(this.attributes.apps, () => {\n        //         this.onAppDelete(this.attributes.apps);\n        //     });\n        // });\n        this.refresher.add(\"appsClose\", () => {\n            return safeListenPropsUpdated(\n                () => this.attributes.apps,\n                events => {\n                    if (events.some(e => e.kind === UpdateEventKind.Removed)) {\n                        this.onAppDelete(this.attributes.apps);\n                    }\n                }\n            );\n        });\n    };\n\n    private onMainViewIndexChange = (index: number) => {\n        if (index !== undefined && this._prevSceneIndex !== index) {\n            callbacks.emit(\"mainViewSceneIndexChange\", index);\n            internalEmitter.emit(\"changePageState\");\n            if (this.callbacksNode) {\n                this.updateSceneState(this.callbacksNode);\n            }\n            this._prevSceneIndex = index;\n        }\n    };\n\n    private onFocusChange = (focused: string | undefined) => {\n        if (this._prevFocused !== focused) {\n            callbacks.emit(\"focusedChange\", focused);\n            internalEmitter.emit(\"focusedChange\", { focused, prev: this._prevFocused });\n            this._prevFocused = focused;\n            if (focused !== undefined) {\n                this.boxManager?.focusBox({ appId: focused });\n                // 确保 focus 修改的时候, appProxy 已经创建\n                setTimeout(() => {\n                    const appProxy = this.appProxies.get(focused);\n                    if (appProxy) {\n                        appRegister.notifyApp(appProxy.kind, \"focus\", { appId: focused });\n                    }\n                }, 0);\n            }\n        }\n    };\n\n    public attributesUpdateCallback = debounce(\n        (apps: any) => this._attributesUpdateCallback(apps),\n        100\n    );\n\n    private _appIds: string[] = [];\n    public notifyAppsChange(appIds: string[]): void {\n        if (\n            this._appIds.length !== appIds.length ||\n            !this._appIds.every(id => appIds.includes(id))\n        ) {\n            this._appIds = appIds;\n            callbacks.emit(\"appsChange\", appIds);\n        }\n    }\n\n    /**\n     * 插件更新 attributes 时的回调\n     *\n     * @param {*} attributes\n     * @memberof WindowManager\n     */\n    public async _attributesUpdateCallback(apps: any) {\n        if (apps && WindowManager.container) {\n            const appIds = Object.keys(apps);\n            if (appIds.length === 0) {\n                this.appCreateQueue.emitReady();\n            }\n            const appsWithCreatedAt = orderBy(\n                appIds.map(appId => {\n                    return {\n                        id: appId,\n                        createdAt: apps[appId].createdAt,\n                    };\n                }),\n                \"createdAt\",\n                \"asc\"\n            );\n            const orderedAppIds = appsWithCreatedAt.map(({ id }) => id);\n            this.notifyAppsChange(orderedAppIds);\n            for (const id of orderedAppIds) {\n                if (!this.appProxies.has(id) && !this.appStatus.has(id)) {\n                    const app = apps[id];\n                    try {\n                        const appAttributes = this.attributes[id];\n                        if (!appAttributes) {\n                            this.Logger && this.Logger.error(\n                                `[WindowManager]: appAttributes is undefined, appId: ${id}`\n                            );\n                            throw new Error(\"appAttributes is undefined\");\n                        }\n\n                        this.appCreateQueue.push<AppProxy>(async () => {\n                            this.appStatus.set(id, AppStatus.StartCreate);\n                            const appProxy = await this.baseInsertApp(\n                                {\n                                    kind: app.kind,\n                                    options: app.options,\n                                    isDynamicPPT: app.isDynamicPPT,\n                                    forceNormal: app.forceNormal,\n                                    forceTop: app.forceTop,\n                                    isDragContent: app.isDragContent,\n                                },\n                                id,\n                                false\n                            );\n                            if (\n                                appProxy &&\n                                this._focusAppId === id &&\n                                this._focusAppCreatedResolve\n                            ) {\n                                if (this._resolveTimer) {\n                                    clearTimeout(this._resolveTimer);\n                                }\n                                this._focusAppCreatedResolve(appProxy);\n                            }\n                            return appProxy;\n                        });\n                        this.focusByAttributes(apps);\n                    } catch (error) {\n                        console.warn(`[WindowManager]: Insert App Error`, error);\n                    }\n                }\n            }\n        }\n    }\n\n    private onRegisteredChange = (registered: Record<string, SyncRegisterAppPayload>) => {\n        if (!registered) return;\n        Object.entries(registered).forEach(([kind, payload]) => {\n            if (!appRegister.appClasses.has(kind)) {\n                appRegister.register({\n                    kind,\n                    src: payload.src,\n                    name: payload.name,\n                });\n            }\n        });\n    };\n\n    private onMinimized = (minimized: boolean | undefined) => {\n        if (this.boxManager?.minimized !== minimized) {\n            if (minimized === true) {\n                this.boxManager?.blurAllBox();\n            }\n            setTimeout(() => {\n                this.boxManager?.setMinimized(Boolean(minimized));\n            }, 0);\n        }\n    };\n\n    public refresh() {\n        this.attributesUpdateCallback(this.attributes.apps);\n    }\n\n    public setBoxManager(boxManager: BoxManager) {\n        this.boxManager = boxManager;\n    }\n\n    public resetMaximized() {\n        this.boxManager?.setMaximized(Boolean(this.store.getMaximized()));\n    }\n\n    public resetMinimized() {\n        this.boxManager?.setMinimized(Boolean(this.store.getMinimized()));\n    }\n\n    private onAppDelete = async (apps: any) => {\n        const ids = Object.keys(apps);\n        for (const [id, appProxy] of this.appProxies.entries()) {\n            if (!ids.includes(id)) {\n                await appProxy.destroy(true, false, true);\n            }\n        }\n    };\n\n    private closeAll = async () => {\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        for (const [_, appProxy] of this.appProxies.entries()) {\n            await appProxy.destroy(true, false, true);\n        }\n    };\n\n    public bindMainView(divElement: HTMLDivElement, disableCameraTransform: boolean) {\n        const mainView = this.mainViewProxy.view;\n        mainView.disableCameraTransform = disableCameraTransform;\n        mainView.divElement = divElement;\n        if (!mainView.focusScenePath) {\n            this.setMainViewFocusPath();\n        }\n        internalEmitter.emit(\"mainViewMounted\");\n        callbacks.emit(\"onMainViewMounted\", mainView);\n        const hasRoot = this.hasRoot(mainView.divElement);\n        const rect = this.getRectByDivElement(mainView.divElement);\n        let log = `[window-manager] bindMainView hasRoot:${hasRoot}, rect:${JSON.stringify(rect)}, outerHeight:${window.outerHeight}, outerWidth:${window.outerWidth}`;\n        const visualViewport = window.visualViewport;\n        if (visualViewport) {\n            log += `, visualViewportWidth:${visualViewport.width}, visualViewportHeight:${visualViewport.height}, visualViewportOffsetLeft:${visualViewport.offsetLeft}, visualViewportOffsetTop:${visualViewport.offsetTop}`;\n        }\n        console.log(log);\n    }\n\n    private hasRoot(divElement: HTMLDivElement){\n        let current = divElement;\n        while (current) {\n            if (current.parentElement === document.body) {\n                return true;\n            }\n            current = current.parentElement as HTMLDivElement;\n        }\n        return false;\n    }\n\n    private getRectByDivElement(divElement: HTMLDivElement){\n        // 获取当前divElement的矩形区域\n        const rect = divElement.getBoundingClientRect();\n        return rect;\n    }\n\n    public setMainViewFocusPath(scenePath?: string) {\n        const focusScenePath = scenePath || this.store.getMainViewScenePath();\n        if (focusScenePath) {\n            setViewFocusScenePath(this.mainView, focusScenePath);\n            return this.mainView?.focusScenePath === focusScenePath;\n        }\n    }\n\n    private resetScenePath(scenePath: string) {\n        const sceneState = this.displayer.state.sceneState;\n        if (sceneState.scenePath !== scenePath) {\n            setScenePath(this.room, scenePath);\n        }\n    }\n\n    public async addApp(params: AddAppParams, isDynamicPPT: boolean): Promise<string | undefined> {\n        log(\"addApp\", params);\n        this.windowManger.Logger?.info(\n            `[WindowManager]: addApp ${params.kind}, isDynamicPPT: ${isDynamicPPT}`\n        );\n        const { appId, needFocus } = await this.beforeAddApp(params, isDynamicPPT);\n        const appProxy = await this.baseInsertApp(params, appId, true, needFocus);\n        this.afterAddApp(appProxy);\n        return appProxy?.id;\n    }\n\n    private async beforeAddApp(params: AddAppParams, isDynamicPPT: boolean) {\n        const appId = await genAppId(params.kind);\n        this.appStatus.set(appId, AppStatus.StartCreate);\n        const attrs = params.attributes ?? {};\n        this.safeUpdateAttributes([appId], attrs);\n        this.store.setupAppAttributes(params, appId, isDynamicPPT);\n        const needFocus = !this.boxManager?.minimized;\n        if (needFocus) {\n            this.store.setAppFocus(appId, true);\n        }\n        return { appId, needFocus };\n    }\n\n    private afterAddApp(appProxy: AppProxy | undefined) {\n        if (appProxy && appProxy.box) {\n            const box = appProxy.box;\n            boxEmitter.emit(\"move\", {\n                appId: appProxy.id,\n                x: box?.intrinsicX,\n                y: box?.intrinsicY,\n            });\n            this.store.updateAppState(appProxy.id, AppAttributes.ZIndex, box.zIndex);\n        }\n        if (this.boxManager?.minimized) {\n            this.boxManager?.setMinimized(false, false);\n        }\n    }\n\n    public async closeApp(appId: string, needClose = true) {\n        const appProxy = this.appProxies.get(appId);\n        if (appProxy) {\n            await appProxy.destroy(true, needClose, false);\n        }\n    }\n\n    private async baseInsertApp(\n        params: BaseInsertParams,\n        appId: string,\n        isAddApp: boolean,\n        focus?: boolean\n    ) {\n        if (this.appProxies.has(appId)) {\n            this.windowManger.Logger?.warn(\n                `[WindowManager]: app duplicate exists and cannot be created again, appId: ${appId}`\n            );\n            return;\n        }\n        const AppProxyClass = getExtendClass(AppProxy, WindowManager.extendClass);\n        const appProxy = new AppProxyClass(params, this, appId, isAddApp);\n        if (appProxy) {\n            await appProxy.baseInsertApp(focus);\n            this.appStatus.delete(appId);\n            return appProxy;\n        } else {\n            this.appStatus.delete(appId);\n            this.Logger && this.Logger.error(`[WindowManager]: initialize AppProxy failed, appId: ${appId}`);\n            throw new Error(\"[WindowManger]: initialize AppProxy failed\");\n        }\n    }\n\n    private displayerStateListener = (state: Partial<RoomState>) => {\n        this.appProxies.forEach(appProxy => {\n            appProxy.appEmitter.emit(\"roomStateChange\", state);\n        });\n        internalEmitter.emit(\"observerIdChange\", this.displayer.observerId);\n    };\n\n    public displayerWritableListener = (isReadonly: boolean) => {\n        const isWritable = !isReadonly;\n        const isManualWritable =\n            this.windowManger.readonly === undefined || this.windowManger.readonly === false;\n        if (this.windowManger.readonly === undefined) {\n            this.boxManager?.setReadonly(isReadonly);\n        } else {\n            this.boxManager?.setReadonly(!(isWritable && isManualWritable));\n        }\n        this.appProxies.forEach(appProxy => {\n            appProxy.emitAppIsWritableChange();\n        });\n        internalEmitter.emit(\"writableChange\", isWritable);\n    };\n\n    public safeSetAttributes(attributes: any) {\n        this.windowManger.safeSetAttributes(attributes);\n    }\n\n    public safeUpdateAttributes(keys: string[], value: any) {\n        this.windowManger.safeUpdateAttributes(keys, value);\n    }\n\n    public async setMainViewScenePath(scenePath: string) {\n        if (this.room) {\n            const scenePathType = this.displayer.scenePathType(scenePath);\n            const sceneDir = parseSceneDir(scenePath);\n            if (sceneDir !== ROOT_DIR) {\n                this.Logger && this.Logger.error(`[WindowManager]: main view scenePath must in root dir \"/\"`);\n                throw new Error(`[WindowManager]: main view scenePath must in root dir \"/\"`);\n            }\n            if (scenePathType === ScenePathType.None) {\n                this.Logger && this.Logger.error(`[WindowManager]: ${scenePath} not valid scene`);\n                throw new Error(`[WindowManager]: ${scenePath} not valid scene`);\n            } else if (scenePathType === ScenePathType.Page) {\n                await this._setMainViewScenePath(scenePath);\n\n            } else if (scenePathType === ScenePathType.Dir) {\n                const validScenePath = makeValidScenePath(this.displayer, scenePath);\n                if (validScenePath) {\n                    await this._setMainViewScenePath(validScenePath);\n                }\n            }\n        }\n    }\n\n    private async _setMainViewScenePath(scenePath: string) {\n        const success = this.setMainViewFocusPath(scenePath);\n        if (success) {\n            this.safeSetAttributes({ _mainScenePath: scenePath });\n            this.store.setMainViewFocusPath(this.mainView);\n            this.updateSceneIndex();\n            this.dispatchSetMainViewScenePath(scenePath);\n        }\n    }\n\n    private updateSceneIndex = () => {\n        const scenePath = this.store.getMainViewScenePath() as string;\n        const sceneDir = parseSceneDir(scenePath);\n        const scenes = entireScenes(this.displayer)[sceneDir];\n        if (scenes.length) {\n            // \"/ppt3/1\" -> \"1\"\n            const pageName = scenePath.replace(sceneDir, \"\").replace(\"/\", \"\");\n            const index = scenes.findIndex(scene => scene.name === pageName);\n            if (isInteger(index) && index >= 0) {\n                this.safeSetAttributes({ _mainSceneIndex: index });\n            }\n        }\n    };\n\n    public async setMainViewSceneIndex(index: number) {\n        if (this.room) {\n            if (this.store.getMainViewSceneIndex() === index) return;\n            const sceneName = this.callbacksNode?.scenes[index];\n            const scenePath = `${ROOT_DIR}${sceneName}`;\n            if (sceneName) {\n                const success = this.setMainViewFocusPath(scenePath);\n                if (success) {\n                    this.store.setMainViewScenePath(scenePath);\n                    this.store.setMainViewSceneIndex(index);\n                    this.dispatchSetMainViewScenePath(scenePath);\n                }\n            } else {\n                this.Logger && this.Logger.error(`[WindowManager]: ${index} not valid index`);\n                throw new Error(`[WindowManager]: ${index} not valid index`);\n            }\n        }\n    }\n\n    private dispatchSetMainViewScenePath(scenePath: string): void {\n        this.dispatchInternalEvent(Events.SetMainViewScenePath, { nextScenePath: scenePath });\n        callbacks.emit(\"mainViewScenePathChange\", scenePath);\n        // 兼容 15 的 SDK, 需要 room 的当前 ScenePath\n        setScenePath(this.room, scenePath);\n    }\n\n    public getAppInitPath(appId: string): string | undefined {\n        const attrs = this.store.getAppAttributes(appId);\n        if (attrs) {\n            return attrs?.options?.scenePath;\n        }\n    }\n\n    public safeDispatchMagixEvent(event: string, payload: any) {\n        if (this.canOperate) {\n            (this.displayer as Room).dispatchMagixEvent(event, payload);\n        }\n    }\n\n    public focusByAttributes(apps: any) {\n        if (apps && Object.keys(apps).length === this.boxManager?.boxSize) {\n            const focusAppId = this.store.focus;\n            if (focusAppId) {\n                this.boxManager.focusBox({ appId: focusAppId });\n            }\n        }\n    }\n\n    public async onReconnected() {\n        await this._attributesUpdateCallback(this.attributes.apps);\n        const appProxies = Array.from(this.appProxies.values());\n        const reconnected = appProxies.map(appProxy => {\n            return appProxy.onReconnected();\n        });\n        this.mainViewProxy.onReconnect();\n        await Promise.all(reconnected);\n        if (this.callbacksNode) {\n            this.onSceneChange(this.callbacksNode);\n        }\n    }\n\n    public notifyContainerRectUpdate(rect: TeleBoxRect) {\n        this.appProxies.forEach(appProxy => {\n            appProxy.appEmitter.emit(\"containerRectUpdate\", rect);\n        });\n    }\n\n    public updateRootDirRemoving = (removing: boolean) => {\n        this.rootDirRemoving = removing;\n    };\n\n    public dispatchInternalEvent(event: Events, payload?: any) {\n        this.safeDispatchMagixEvent(MagixEventName, {\n            eventName: event,\n            payload: payload,\n        });\n    }\n\n    public destroy() {\n        this.displayer.callbacks.off(this.eventName, this.displayerStateListener);\n        this.displayer.callbacks.off(\"onEnableWriteNowChanged\", this.displayerWritableListener);\n        this.appListeners.removeListeners();\n        boxEmitter.clearListeners();\n        internalEmitter.clearListeners();\n        if (this.appProxies.size) {\n            this.appProxies.forEach(appProxy => {\n                appProxy.destroy(true, false, true);\n            });\n        }\n        callbacks.clearListeners();\n        this.sideEffectManager.flushAll();\n        this._prevFocused = undefined;\n        this._prevSceneIndex = undefined;\n        if (this._resolveTimer) {\n            clearTimeout(this._resolveTimer);\n        }\n        this._focusAppCreatedResolve = undefined;\n        this._resolveTimer = undefined;\n    }\n}\n\n","import { ResizeObserver as ResizeObserverPolyfill } from \"@juggle/resize-observer\";\nimport { WindowManager } from \"./index\";\nimport type { EmitterType } from \"./InternalEmitter\";\nimport type { UnsubscribeFn } from \"emittery\";\nimport { LocalConsole } from \"./Utils/log\";\n\nconst ResizeObserver = window.ResizeObserver || ResizeObserverPolyfill;\n\nexport class ContainerResizeObserver {\n    private containerResizeObserver?: ResizeObserver;\n    private disposer?: UnsubscribeFn;\n    \n    private updateSizerLocalConsole = new LocalConsole(\"updateSizer\", 100);\n\n    constructor(private emitter: EmitterType) {}\n\n    public static create(\n        container: HTMLElement,\n        sizer: HTMLElement,\n        wrapper: HTMLDivElement,\n        emitter: EmitterType\n    ) {\n        const containerResizeObserver = new ContainerResizeObserver(emitter);\n        containerResizeObserver.observePlaygroundSize(container, sizer, wrapper);\n        return containerResizeObserver;\n    }\n\n    public observePlaygroundSize(\n        container: HTMLElement,\n        sizer: HTMLElement,\n        wrapper: HTMLDivElement\n    ) {\n        this.updateSizer(container.getBoundingClientRect(), sizer, wrapper, 'observePlaygroundSize');\n\n        this.containerResizeObserver = new ResizeObserver(entries => {\n            const containerRect = entries[0]?.contentRect;\n            if (containerRect) {\n                this.updateSizer(containerRect, sizer, wrapper, 'containerResizeObserver');\n                this.emitter.emit(\"playgroundSizeChange\", containerRect);\n            }\n        });\n\n        this.disposer = this.emitter.on(\"containerSizeRatioUpdate\", () => {\n            const containerRect = container.getBoundingClientRect();\n            this.updateSizer(containerRect, sizer, wrapper, 'containerSizeRatioUpdate');\n            this.emitter.emit(\"playgroundSizeChange\", containerRect);\n        });\n\n        this.containerResizeObserver.observe(container);\n    }\n\n    public updateSizer(\n        { width, height }: DOMRectReadOnly,\n        sizer: HTMLElement,\n        wrapper: HTMLDivElement,\n        origin?: string\n    ) {\n        if (width && height) {\n            if (height / width > WindowManager.containerSizeRatio) {\n                height = width * WindowManager.containerSizeRatio;\n                sizer.classList.toggle(\"netless-window-manager-sizer-horizontal\", true);\n            } else {\n                width = height / WindowManager.containerSizeRatio;\n                sizer.classList.toggle(\"netless-window-manager-sizer-horizontal\", false);\n            }\n            wrapper.style.width = `${width}px`;\n            wrapper.style.height = `${height}px`;\n            const wrapperRect = wrapper.getBoundingClientRect();\n            this.updateSizerLocalConsole.log(`from ${origin}, traget size: ${JSON.stringify({ width, height })}, wrapperRect: ${wrapperRect.width} ${wrapperRect.height}`);\n            this.emitter.emit(\"wrapperRectChange\", {\n                width: wrapperRect.width,\n                height: wrapperRect.height,\n                origin,\n            });\n        }\n    }\n\n    public disconnect() {\n        this.updateSizerLocalConsole.destroy();\n        this.containerResizeObserver?.disconnect();\n        this.disposer?.();\n        this.disposer = undefined;\n    }\n}\n","import type { AppManager } from \"./AppManager\";\nimport type { PageState } from \"./Page\";\n\nimport { internalEmitter } from \"./InternalEmitter\";\nimport { callbacks } from \"./callback\";\n\nexport class PageStateImpl {\n    constructor(private manager: AppManager) {\n        internalEmitter.on(\"changePageState\", () => {\n            callbacks.emit(\"pageStateChange\", this.toObject());\n        });\n    }\n\n    public get index(): number {\n        return this.manager.store.getMainViewSceneIndex() || 0;\n    }\n\n    public get length(): number {\n        return this.manager.mainViewScenesLength || 0;\n    }\n\n    public toObject(): PageState {\n        const index = this.index >= this.length ? this.length - 1 : this.index;\n        return {\n            index,\n            length: this.length,\n        };\n    }\n}\n","import { debounce, isFunction } from \"lodash\";\nimport { log } from \"./Utils/log\";\nimport { RoomPhase } from \"white-web-sdk\";\nimport type { Room } from \"white-web-sdk\";\nimport type { EmitterType } from \"./InternalEmitter\";\nimport { EnsureReconnectEvent } from \"./constants\";\nimport { wait } from \"./Utils/Common\";\n\nexport type ReconnectRefresherContext = {\n    emitter: EmitterType;\n};\n\n// 白板重连之后会刷新所有的对象，导致 listener 失效, 所以这里在重连之后重新对所有对象进行监听\nexport class ReconnectRefresher {\n    private phase?: RoomPhase;\n    private room: Room | undefined;\n    private reactors: Map<string, any> = new Map();\n    private disposers: Map<string, any> = new Map();\n\n    constructor(private ctx: ReconnectRefresherContext) {}\n\n    public setRoom(room: Room | undefined) {\n        this.room = room;\n        this.phase = room?.phase;\n        if (room) {\n            room.callbacks.off(\"onPhaseChanged\", this.onPhaseChanged);\n            room.callbacks.on(\"onPhaseChanged\", this.onPhaseChanged);\n            // 重连成功之后向服务发送一次消息, 确认当前的状态是最新的\n            room.addMagixEventListener(\n                EnsureReconnectEvent,\n                payload => {\n                    if (payload.authorId === room.observerId) {\n                        this.onReconnected();\n                    }\n                },\n                { fireSelfEventAfterCommit: true }\n            );\n        }\n    }\n\n    public setContext(ctx: ReconnectRefresherContext) {\n        this.ctx = ctx;\n    }\n\n    private onPhaseChanged = async (phase: RoomPhase) => {\n        if (phase === RoomPhase.Reconnecting) {\n            this.ctx.emitter.emit(\"startReconnect\");\n        }\n        if (phase === RoomPhase.Connected && this.phase === RoomPhase.Reconnecting) {\n            if (this.room?.isWritable) {\n                this.room?.dispatchMagixEvent(EnsureReconnectEvent, {});\n            } else {\n                await wait(500);\n                this.onReconnected();\n            }\n        }\n        this.phase = phase;\n    };\n\n    private onReconnected = debounce(() => {\n        this._onReconnected();\n    }, 1000);\n\n    private _onReconnected = () => {\n        log(\"onReconnected refresh reactors\");\n        this.releaseDisposers();\n        this.reactors.forEach((func, id) => {\n            if (isFunction(func)) {\n                this.disposers.set(id, func());\n            }\n        });\n        this.ctx.emitter.emit(\"onReconnected\");\n    };\n\n    private releaseDisposers() {\n        this.disposers.forEach(disposer => {\n            if (isFunction(disposer)) {\n                disposer();\n            }\n        });\n        this.disposers.clear();\n    }\n\n    public refresh() {\n        this._onReconnected();\n    }\n\n    public add(id: string, func: any) {\n        const disposer = this.disposers.get(id);\n        if (disposer && isFunction(disposer)) {\n            disposer();\n        }\n        if (isFunction(func)) {\n            this.reactors.set(id, func);\n            this.disposers.set(id, func());\n        }\n    }\n\n    public remove(id: string) {\n        if (this.reactors.has(id)) {\n            this.reactors.delete(id);\n        }\n        const disposer = this.disposers.get(id);\n        if (disposer) {\n            if (isFunction(disposer)) {\n                disposer();\n            }\n            this.disposers.delete(id);\n        }\n    }\n\n    public hasReactor(id: string) {\n        return this.reactors.has(id);\n    }\n\n    public destroy() {\n        this.room?.callbacks.off(\"onPhaseChanged\", this.onPhaseChanged);\n        this.room?.removeMagixEventListener(EnsureReconnectEvent, this.onReconnected);\n        this.releaseDisposers();\n    }\n}\n","import { internalEmitter } from \"../InternalEmitter\";\nimport { isPlayer } from \"white-web-sdk\";\nimport type { WindowManager } from \"../index\";\nimport type { Camera, Room, Player, PlayerSeekingResult } from \"white-web-sdk\";\nimport { ROOT_DIR } from \"../constants\";\n\n// 修改多窗口状态下一些失效的方法实现到 manager 的 mainview 上, 降低迁移成本\nexport const replaceRoomFunction = (room: Room | Player, manager: WindowManager) => {\n    if (isPlayer(room)) {\n        const player = room as unknown as Player;\n        delegateSeekToProgressTime(player);\n    } else {\n        room = room as unknown as Room;\n        const descriptor = Object.getOwnPropertyDescriptor(room, \"disableCameraTransform\");\n        if (descriptor) return;\n        Object.defineProperty(room, \"disableCameraTransform\", {\n            get() {\n                return manager.mainView.disableCameraTransform;\n            },\n            set(disable: boolean) {\n                manager.mainView.disableCameraTransform = disable;\n            },\n        });\n\n        Object.defineProperty(room, \"canUndoSteps\", {\n            get() {\n                return manager.canUndoSteps;\n            },\n        });\n\n        Object.defineProperty(room, \"canRedoSteps\", {\n            get() {\n                return manager.canRedoSteps;\n            },\n        });\n        const _scalePptToFit = room.scalePptToFit;\n        room.scalePptToFit = (...args) => {\n            _scalePptToFit.call(room, ...args);\n            if (manager.appManager?.mainViewProxy) {\n                manager.appManager.mainViewProxy.setCameraAndSize();\n            }\n        };\n        const _putScenes = room.putScenes;\n        room.putScenes = (...args) => {\n            const [path, scenes] = args;\n            const currentScenePath = manager.mainView.focusScenePath;\n            if (currentScenePath && path && scenes) {\n                console.log(\"[window-manager] putScenes \" + JSON.stringify(args));\n                for (const scene of scenes) {\n                    if (`${path}${scene.name}` === currentScenePath) {\n                        console.error(`[window-manager] putScenes: scene name can not be the same as the current scene path: ${currentScenePath}`);\n                        return;\n                    }\n                }\n            }\n            return _putScenes.call(room, ...args);\n        };\n        room.moveCamera = (camera: Camera) => manager.moveCamera(camera);\n        room.moveCameraToContain = (...args) => manager.moveCameraToContain(...args);\n        room.convertToPointInWorld = (...args) => manager.mainView.convertToPointInWorld(...args);\n        room.setCameraBound = (...args) => manager.mainView.setCameraBound(...args);\n        room.scenePreview = (...args) => manager.mainView.scenePreview(...args);\n        room.fillSceneSnapshot = (...args) => manager.mainView.fillSceneSnapshot(...args);\n        room.generateScreenshot = (...args) => manager.mainView.generateScreenshot(...args);\n        room.setMemberState = (...args) => manager.mainView.setMemberState(...args);\n        room.redo = () => manager.redo();\n        room.undo = () => manager.undo();\n        room.cleanCurrentScene = () => manager.cleanCurrentScene();\n        room.delete = () => manager.delete();\n        room.copy = () => manager.copy();\n        room.paste = () => manager.paste();\n        room.duplicate = () => manager.duplicate();\n        room.insertImage = (...args) => manager.insertImage(...args);\n        room.completeImageUpload = (...args) => manager.completeImageUpload(...args);\n        room.insertText = (...args) => manager.insertText(...args);\n        room.lockImage = (...args) => manager.lockImage(...args);\n        room.lockImages = (...args) => manager.lockImages(...args);\n\n        delegateRemoveScenes(room, manager);\n    }\n};\n\nconst delegateRemoveScenes = (room: Room, manager: WindowManager) => {\n    const originRemoveScenes = room.removeScenes;\n    room.removeScenes = (scenePath: string, index?: number) => {\n        if (scenePath === ROOT_DIR) {\n            manager.appManager?.updateRootDirRemoving(true);\n        }\n        const result = originRemoveScenes.call(room, scenePath);\n        internalEmitter.emit(\"removeScenes\", { scenePath, index });\n        return result;\n    };\n};\n\nconst delegateSeekToProgressTime = (player: Player) => {\n    const originSeek = player.seekToProgressTime;\n    // eslint-disable-next-line no-inner-declarations\n    async function newSeek(time: number): Promise<PlayerSeekingResult> {\n        // seek 时需要先关闭所有的 app 防止内部使用的 mobx 出现错误\n        await internalEmitter.emit(\"seekStart\");\n        const seekResult = await originSeek.call(player, time);\n        internalEmitter.emit(\"seek\", time);\n        return seekResult;\n    }\n    player.seekToProgressTime = newSeek;\n};\n","var styles = \".netless-app-docs-viewer-content{position:relative;height:100%;overflow:hidden}.netless-app-docs-viewer-preview-mask{display:none;position:absolute;z-index:200;top:0;left:0;width:100%;height:100%}.netless-app-docs-viewer-preview{display:flex;flex-direction:column;align-items:center;position:absolute;z-index:300;top:0;left:0;width:33%;max-width:200px;height:100%;padding-top:10px;transform:translate(-100%);background:rgba(237,237,240,.9);box-shadow:inset -1px 0 #0000001c;transition:transform .4s}.netless-app-docs-viewer-preview-active .netless-app-docs-viewer-preview-mask{display:block}.netless-app-docs-viewer-preview-active .netless-app-docs-viewer-preview{transform:translate(0)}.netless-app-docs-viewer-preview-page{position:relative;display:block;width:55%;margin-bottom:10px;font-size:0;color:transparent;outline:none;border:7px solid transparent;border-radius:4px;transition:border-color .3s;user-select:none}.netless-app-docs-viewer-preview-page:hover,.netless-app-docs-viewer-preview-page.netless-app-docs-viewer-preview-page-active{border-color:#444e601a}.netless-app-docs-viewer-preview-page>img{width:100%;height:auto;box-sizing:border-box;border:1px solid rgba(0,0,0,.5);border-radius:1px;background-color:#fff;box-shadow:0 2px 8px #0000004d}.netless-app-docs-viewer-preview-page-name{position:absolute;top:1px;left:-10px;transform:translate(-100%);text-align:right;font-size:12px;color:#5f5f5f;user-select:none}.netless-app-docs-viewer-footer{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #eeeef7;color:#191919}.netless-app-docs-viewer-float-footer{width:100%;min-height:26px;position:absolute;left:0;bottom:0;z-index:2000;background:rgba(249,249,252,.9);transition:opacity .4s}.netless-app-docs-viewer-footer-btn{box-sizing:border-box;width:26px;height:26px;font-size:0;margin:0;padding:3px;border:none;border-radius:1px;outline:none;color:currentColor;background:transparent;transition:background .4s;cursor:pointer;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-docs-viewer-footer-btn:hover{background:rgba(237,237,240,.9)}@media (hover: none){.netless-app-docs-viewer-footer-btn:hover{background:transparent!important}}.netless-app-docs-viewer-footer-btn>svg{width:100%;height:100%}.netless-app-docs-viewer-footer-btn>svg:nth-of-type(2){display:none}.netless-app-docs-viewer-footer-btn.netless-app-docs-viewer-footer-btn-playing>svg:nth-of-type(1){display:none}.netless-app-docs-viewer-footer-btn.netless-app-docs-viewer-footer-btn-playing>svg:nth-of-type(2){display:initial}.netless-app-docs-viewer-footer-btn~.netless-app-docs-viewer-footer-btn{margin-left:15px}.netless-app-docs-viewer-page-jumps{flex:1;display:flex;justify-content:center;align-items:center}.netless-app-docs-viewer-page-number{margin-left:auto;font-size:13px;user-select:none;white-space:nowrap;word-break:keep-all}.netless-app-docs-viewer-page-number-input{border:none;outline:none;width:3em;margin:0;padding:0 2px;text-align:right;font-size:13px;line-height:1;font-weight:400;font-family:inherit;border-radius:2px;color:currentColor;background:transparent;transition:background .4s;user-select:text;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-docs-viewer-page-number-input:hover,.netless-app-docs-viewer-page-number-input:focus,.netless-app-docs-viewer-page-number-input:active{background:#fff;box-shadow:#63636333 0 2px 8px}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-footer-btn{cursor:not-allowed}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-footer-btn:hover{background:transparent}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input{cursor:not-allowed}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:hover,.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:focus,.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:active{background:transparent;box-shadow:none}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-page-number-input:disabled{color:inherit}.netless-app-docs-viewer-readonly.netless-app-docs-viewer-float-footer{display:none}.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input{color:#a6a6a8}.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:active,.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:focus,.telebox-color-scheme-dark .netless-app-docs-viewer-page-number-input:hover{color:#222}.telebox-color-scheme-dark .netless-app-docs-viewer-footer{color:#a6a6a8;background:#2d2d33;border-top:none}.telebox-color-scheme-dark .netless-app-docs-viewer-footer-btn:hover{background:#212126}.telebox-color-scheme-dark .netless-app-docs-viewer-preview{background:rgba(50,50,50,.9)}.netless-app-docs-viewer-static-scrollbar{position:absolute;top:0;right:0;z-index:2147483647;width:8px;min-height:30px;margin:0;padding:0;border:none;outline:none;border-radius:4px;background:rgba(68,78,96,.4);box-shadow:1px 1px 8px #ffffffb3;opacity:0;transition:background .4s,opacity .4s 3s,transform .2s;user-select:none}.netless-app-docs-viewer-static-scrollbar.netless-app-docs-viewer-static-scrollbar-dragging{background:rgba(68,78,96,.6);opacity:1;transition:background .4s,opacity .4s 3s!important}.netless-app-docs-viewer-static-scrollbar:hover,.netless-app-docs-viewer-static-scrollbar:focus{background:rgba(68,78,96,.5)}.netless-app-docs-viewer-static-scrollbar:active{background:rgba(68,78,96,.6)}.netless-app-docs-viewer-content:hover .netless-app-docs-viewer-static-scrollbar{opacity:1;transition:background .4s,opacity .4s,transform .2s}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-static-scrollbar{display:none}.netless-app-docs-viewer-static-pages:hover .netless-app-docs-viewer-static-scrollbar{opacity:1;transition:background .4s,opacity .4s,transform .2s}.page-renderer-pages-container{position:relative;overflow:hidden}.page-renderer-page{position:absolute;top:0;left:0;background-position:center;background-size:cover;background-repeat:no-repeat}.page-renderer-pages-container.is-hwa .page-renderer-page{will-change:transform}.page-renderer-page-img{display:block;width:100%;height:auto;user-select:none}.netless-app-docs-viewer-static-pages{overflow:hidden;position:relative;height:100%;user-select:none}.netless-app-docs-viewer-static-page{display:block;width:100%;height:auto;user-select:none}.netless-app-docs-viewer-static-wb-view,.netless-app-docs-viewer-dynamic-wb-view{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;overflow:hidden}.netless-app-docs-viewer-dynamic-wb-view .cursor-clicker .ppt-event-source{cursor:pointer}\\n\";\nconst copyProperty = (to, from, property, ignoreNonConfigurable) => {\n  if (property === \"length\" || property === \"prototype\") {\n    return;\n  }\n  if (property === \"arguments\" || property === \"caller\") {\n    return;\n  }\n  const toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n  const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n  if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n    return;\n  }\n  Object.defineProperty(to, property, fromDescriptor);\n};\nconst canCopyProperty = function(toDescriptor, fromDescriptor) {\n  return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);\n};\nconst changePrototype = (to, from) => {\n  const fromPrototype = Object.getPrototypeOf(from);\n  if (fromPrototype === Object.getPrototypeOf(to)) {\n    return;\n  }\n  Object.setPrototypeOf(to, fromPrototype);\n};\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\n${fromBody}`;\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, \"toString\");\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, \"name\");\nconst changeToString = (to, from, name) => {\n  const withName = name === \"\" ? \"\" : `with ${name.trim()}() `;\n  const newToString = wrappedToString.bind(null, withName, from.toString());\n  Object.defineProperty(newToString, \"name\", toStringName);\n  Object.defineProperty(to, \"toString\", { ...toStringDescriptor, value: newToString });\n};\nfunction mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {\n  const { name } = to;\n  for (const property of Reflect.ownKeys(from)) {\n    copyProperty(to, from, property, ignoreNonConfigurable);\n  }\n  changePrototype(to, from);\n  changeToString(to, from, name);\n  return to;\n}\nconst debounceFn = (inputFunction, options = {}) => {\n  if (typeof inputFunction !== \"function\") {\n    throw new TypeError(`Expected the first argument to be a function, got \\`${typeof inputFunction}\\``);\n  }\n  const {\n    wait = 0,\n    maxWait = Number.POSITIVE_INFINITY,\n    before = false,\n    after = true\n  } = options;\n  if (!before && !after) {\n    throw new Error(\"Both `before` and `after` are false, function wouldn't be called.\");\n  }\n  let timeout;\n  let maxTimeout;\n  let result;\n  const debouncedFunction = function(...arguments_) {\n    const context = this;\n    const later = () => {\n      timeout = void 0;\n      if (maxTimeout) {\n        clearTimeout(maxTimeout);\n        maxTimeout = void 0;\n      }\n      if (after) {\n        result = inputFunction.apply(context, arguments_);\n      }\n    };\n    const maxLater = () => {\n      maxTimeout = void 0;\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = void 0;\n      }\n      if (after) {\n        result = inputFunction.apply(context, arguments_);\n      }\n    };\n    const shouldCallNow = before && !timeout;\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n    if (maxWait > 0 && maxWait !== Number.POSITIVE_INFINITY && !maxTimeout) {\n      maxTimeout = setTimeout(maxLater, maxWait);\n    }\n    if (shouldCallNow) {\n      result = inputFunction.apply(context, arguments_);\n    }\n    return result;\n  };\n  mimicFunction(debouncedFunction, inputFunction);\n  debouncedFunction.cancel = () => {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = void 0;\n    }\n    if (maxTimeout) {\n      clearTimeout(maxTimeout);\n      maxTimeout = void 0;\n    }\n  };\n  return debouncedFunction;\n};\nvar SOUP = \"!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\nvar SOUP_LEN = 87;\nvar ID_LEN = 20;\nvar reusedIdCarrier = [];\nvar genUID = () => {\n  for (let i = 0; i < ID_LEN; i++) {\n    reusedIdCarrier[i] = SOUP.charAt(Math.random() * SOUP_LEN);\n  }\n  return reusedIdCarrier.join(\"\");\n};\nfunction invoke(fn) {\n  try {\n    return fn();\n  } catch (e) {\n    console.error(e);\n  }\n}\nvar SideEffectManager = class {\n  constructor() {\n    this.push = this.addDisposer;\n    this.disposers = /* @__PURE__ */ new Map();\n  }\n  addDisposer(disposer, disposerID = this.genUID()) {\n    this.flush(disposerID);\n    this.disposers.set(\n      disposerID,\n      Array.isArray(disposer) ? joinDisposers(disposer) : disposer\n    );\n    return disposerID;\n  }\n  add(executor, disposerID = this.genUID()) {\n    const disposers = executor();\n    return disposers ? this.addDisposer(disposers, disposerID) : disposerID;\n  }\n  addEventListener(el, type, listener, options, disposerID = this.genUID()) {\n    el.addEventListener(type, listener, options);\n    this.addDisposer(\n      () => el.removeEventListener(type, listener, options),\n      disposerID\n    );\n    return disposerID;\n  }\n  setTimeout(handler, timeout, disposerID = this.genUID()) {\n    const ticket = window.setTimeout(() => {\n      this.remove(disposerID);\n      handler();\n    }, timeout);\n    return this.addDisposer(() => window.clearTimeout(ticket), disposerID);\n  }\n  setInterval(handler, timeout, disposerID = this.genUID()) {\n    const ticket = window.setInterval(handler, timeout);\n    return this.addDisposer(() => window.clearInterval(ticket), disposerID);\n  }\n  remove(disposerID) {\n    const disposer = this.disposers.get(disposerID);\n    this.disposers.delete(disposerID);\n    return disposer;\n  }\n  flush(disposerID) {\n    const disposer = this.remove(disposerID);\n    if (disposer) {\n      disposer();\n    }\n  }\n  flushAll() {\n    this.disposers.forEach(invoke);\n    this.disposers.clear();\n  }\n  genUID() {\n    let uid;\n    do {\n      uid = genUID();\n    } while (this.disposers.has(uid));\n    return uid;\n  }\n};\nfunction joinDisposers(disposers) {\n  return () => disposers.forEach(invoke);\n}\nvar resizeObservers = [];\nvar hasActiveObservations = function() {\n  return resizeObservers.some(function(ro) {\n    return ro.activeTargets.length > 0;\n  });\n};\nvar hasSkippedObservations = function() {\n  return resizeObservers.some(function(ro) {\n    return ro.skippedTargets.length > 0;\n  });\n};\nvar msg = \"ResizeObserver loop completed with undelivered notifications.\";\nvar deliverResizeLoopError = function() {\n  var event;\n  if (typeof ErrorEvent === \"function\") {\n    event = new ErrorEvent(\"error\", {\n      message: msg\n    });\n  } else {\n    event = document.createEvent(\"Event\");\n    event.initEvent(\"error\", false, false);\n    event.message = msg;\n  }\n  window.dispatchEvent(event);\n};\nvar ResizeObserverBoxOptions;\n(function(ResizeObserverBoxOptions2) {\n  ResizeObserverBoxOptions2[\"BORDER_BOX\"] = \"border-box\";\n  ResizeObserverBoxOptions2[\"CONTENT_BOX\"] = \"content-box\";\n  ResizeObserverBoxOptions2[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nvar freeze = function(obj) {\n  return Object.freeze(obj);\n};\nvar ResizeObserverSize = function() {\n  function ResizeObserverSize2(inlineSize, blockSize) {\n    this.inlineSize = inlineSize;\n    this.blockSize = blockSize;\n    freeze(this);\n  }\n  return ResizeObserverSize2;\n}();\nvar DOMRectReadOnly = function() {\n  function DOMRectReadOnly2(x, y, width, height) {\n    this.x = x;\n    this.y = y;\n    this.width = width;\n    this.height = height;\n    this.top = this.y;\n    this.left = this.x;\n    this.bottom = this.top + this.height;\n    this.right = this.left + this.width;\n    return freeze(this);\n  }\n  DOMRectReadOnly2.prototype.toJSON = function() {\n    var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n    return { x, y, top, right, bottom, left, width, height };\n  };\n  DOMRectReadOnly2.fromRect = function(rectangle) {\n    return new DOMRectReadOnly2(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n  };\n  return DOMRectReadOnly2;\n}();\nvar isSVG = function(target) {\n  return target instanceof SVGElement && \"getBBox\" in target;\n};\nvar isHidden = function(target) {\n  if (isSVG(target)) {\n    var _a = target.getBBox(), width = _a.width, height = _a.height;\n    return !width && !height;\n  }\n  var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n  return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function(obj) {\n  var _a;\n  if (obj instanceof Element) {\n    return true;\n  }\n  var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n  return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function(target) {\n  switch (target.tagName) {\n    case \"INPUT\":\n      if (target.type !== \"image\") {\n        break;\n      }\n    case \"VIDEO\":\n    case \"AUDIO\":\n    case \"EMBED\":\n    case \"OBJECT\":\n    case \"CANVAS\":\n    case \"IFRAME\":\n    case \"IMG\":\n      return true;\n  }\n  return false;\n};\nvar global = typeof window !== \"undefined\" ? window : {};\nvar cache = /* @__PURE__ */ new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = /msie|trident/i.test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function(pixel) {\n  return parseFloat(pixel || \"0\");\n};\nvar size = function(inlineSize, blockSize, switchSizes) {\n  if (inlineSize === void 0) {\n    inlineSize = 0;\n  }\n  if (blockSize === void 0) {\n    blockSize = 0;\n  }\n  if (switchSizes === void 0) {\n    switchSizes = false;\n  }\n  return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n  devicePixelContentBoxSize: size(),\n  borderBoxSize: size(),\n  contentBoxSize: size(),\n  contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function(target, forceRecalculation) {\n  if (forceRecalculation === void 0) {\n    forceRecalculation = false;\n  }\n  if (cache.has(target) && !forceRecalculation) {\n    return cache.get(target);\n  }\n  if (isHidden(target)) {\n    cache.set(target, zeroBoxes);\n    return zeroBoxes;\n  }\n  var cs = getComputedStyle(target);\n  var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n  var removePadding = !IE && cs.boxSizing === \"border-box\";\n  var switchSizes = verticalRegexp.test(cs.writingMode || \"\");\n  var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || \"\");\n  var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || \"\");\n  var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n  var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n  var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n  var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n  var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n  var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n  var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n  var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n  var horizontalPadding = paddingLeft + paddingRight;\n  var verticalPadding = paddingTop + paddingBottom;\n  var horizontalBorderArea = borderLeft + borderRight;\n  var verticalBorderArea = borderTop + borderBottom;\n  var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n  var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n  var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n  var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n  var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n  var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n  var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n  var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n  var boxes = freeze({\n    devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n    borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n    contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n    contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n  });\n  cache.set(target, boxes);\n  return boxes;\n};\nvar calculateBoxSize = function(target, observedBox, forceRecalculation) {\n  var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n  switch (observedBox) {\n    case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n      return devicePixelContentBoxSize;\n    case ResizeObserverBoxOptions.BORDER_BOX:\n      return borderBoxSize;\n    default:\n      return contentBoxSize;\n  }\n};\nvar ResizeObserverEntry = function() {\n  function ResizeObserverEntry2(target) {\n    var boxes = calculateBoxSizes(target);\n    this.target = target;\n    this.contentRect = boxes.contentRect;\n    this.borderBoxSize = freeze([boxes.borderBoxSize]);\n    this.contentBoxSize = freeze([boxes.contentBoxSize]);\n    this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n  }\n  return ResizeObserverEntry2;\n}();\nvar calculateDepthForNode = function(node) {\n  if (isHidden(node)) {\n    return Infinity;\n  }\n  var depth = 0;\n  var parent = node.parentNode;\n  while (parent) {\n    depth += 1;\n    parent = parent.parentNode;\n  }\n  return depth;\n};\nvar broadcastActiveObservations = function() {\n  var shallowestDepth = Infinity;\n  var callbacks2 = [];\n  resizeObservers.forEach(function processObserver(ro) {\n    if (ro.activeTargets.length === 0) {\n      return;\n    }\n    var entries = [];\n    ro.activeTargets.forEach(function processTarget(ot) {\n      var entry = new ResizeObserverEntry(ot.target);\n      var targetDepth = calculateDepthForNode(ot.target);\n      entries.push(entry);\n      ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n      if (targetDepth < shallowestDepth) {\n        shallowestDepth = targetDepth;\n      }\n    });\n    callbacks2.push(function resizeObserverCallback() {\n      ro.callback.call(ro.observer, entries, ro.observer);\n    });\n    ro.activeTargets.splice(0, ro.activeTargets.length);\n  });\n  for (var _i = 0, callbacks_1 = callbacks2; _i < callbacks_1.length; _i++) {\n    var callback = callbacks_1[_i];\n    callback();\n  }\n  return shallowestDepth;\n};\nvar gatherActiveObservationsAtDepth = function(depth) {\n  resizeObservers.forEach(function processObserver(ro) {\n    ro.activeTargets.splice(0, ro.activeTargets.length);\n    ro.skippedTargets.splice(0, ro.skippedTargets.length);\n    ro.observationTargets.forEach(function processTarget(ot) {\n      if (ot.isActive()) {\n        if (calculateDepthForNode(ot.target) > depth) {\n          ro.activeTargets.push(ot);\n        } else {\n          ro.skippedTargets.push(ot);\n        }\n      }\n    });\n  });\n};\nvar process = function() {\n  var depth = 0;\n  gatherActiveObservationsAtDepth(depth);\n  while (hasActiveObservations()) {\n    depth = broadcastActiveObservations();\n    gatherActiveObservationsAtDepth(depth);\n  }\n  if (hasSkippedObservations()) {\n    deliverResizeLoopError();\n  }\n  return depth > 0;\n};\nvar trigger;\nvar callbacks = [];\nvar notify = function() {\n  return callbacks.splice(0).forEach(function(cb) {\n    return cb();\n  });\n};\nvar queueMicroTask = function(callback) {\n  if (!trigger) {\n    var toggle_1 = 0;\n    var el_1 = document.createTextNode(\"\");\n    var config = { characterData: true };\n    new MutationObserver(function() {\n      return notify();\n    }).observe(el_1, config);\n    trigger = function() {\n      el_1.textContent = \"\".concat(toggle_1 ? toggle_1-- : toggle_1++);\n    };\n  }\n  callbacks.push(callback);\n  trigger();\n};\nvar queueResizeObserver = function(cb) {\n  queueMicroTask(function ResizeObserver2() {\n    requestAnimationFrame(cb);\n  });\n};\nvar watching = 0;\nvar isWatching = function() {\n  return !!watching;\n};\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n  \"resize\",\n  \"load\",\n  \"transitionend\",\n  \"animationend\",\n  \"animationstart\",\n  \"animationiteration\",\n  \"keyup\",\n  \"keydown\",\n  \"mouseup\",\n  \"mousedown\",\n  \"mouseover\",\n  \"mouseout\",\n  \"blur\",\n  \"focus\"\n];\nvar time = function(timeout) {\n  if (timeout === void 0) {\n    timeout = 0;\n  }\n  return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = function() {\n  function Scheduler2() {\n    var _this = this;\n    this.stopped = true;\n    this.listener = function() {\n      return _this.schedule();\n    };\n  }\n  Scheduler2.prototype.run = function(timeout) {\n    var _this = this;\n    if (timeout === void 0) {\n      timeout = CATCH_PERIOD;\n    }\n    if (scheduled) {\n      return;\n    }\n    scheduled = true;\n    var until = time(timeout);\n    queueResizeObserver(function() {\n      var elementsHaveResized = false;\n      try {\n        elementsHaveResized = process();\n      } finally {\n        scheduled = false;\n        timeout = until - time();\n        if (!isWatching()) {\n          return;\n        }\n        if (elementsHaveResized) {\n          _this.run(1e3);\n        } else if (timeout > 0) {\n          _this.run(timeout);\n        } else {\n          _this.start();\n        }\n      }\n    });\n  };\n  Scheduler2.prototype.schedule = function() {\n    this.stop();\n    this.run();\n  };\n  Scheduler2.prototype.observe = function() {\n    var _this = this;\n    var cb = function() {\n      return _this.observer && _this.observer.observe(document.body, observerConfig);\n    };\n    document.body ? cb() : global.addEventListener(\"DOMContentLoaded\", cb);\n  };\n  Scheduler2.prototype.start = function() {\n    var _this = this;\n    if (this.stopped) {\n      this.stopped = false;\n      this.observer = new MutationObserver(this.listener);\n      this.observe();\n      events.forEach(function(name) {\n        return global.addEventListener(name, _this.listener, true);\n      });\n    }\n  };\n  Scheduler2.prototype.stop = function() {\n    var _this = this;\n    if (!this.stopped) {\n      this.observer && this.observer.disconnect();\n      events.forEach(function(name) {\n        return global.removeEventListener(name, _this.listener, true);\n      });\n      this.stopped = true;\n    }\n  };\n  return Scheduler2;\n}();\nvar scheduler = new Scheduler();\nvar updateCount = function(n) {\n  !watching && n > 0 && scheduler.start();\n  watching += n;\n  !watching && scheduler.stop();\n};\nvar skipNotifyOnElement = function(target) {\n  return !isSVG(target) && !isReplacedElement(target) && getComputedStyle(target).display === \"inline\";\n};\nvar ResizeObservation = function() {\n  function ResizeObservation2(target, observedBox) {\n    this.target = target;\n    this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n    this.lastReportedSize = {\n      inlineSize: 0,\n      blockSize: 0\n    };\n  }\n  ResizeObservation2.prototype.isActive = function() {\n    var size2 = calculateBoxSize(this.target, this.observedBox, true);\n    if (skipNotifyOnElement(this.target)) {\n      this.lastReportedSize = size2;\n    }\n    if (this.lastReportedSize.inlineSize !== size2.inlineSize || this.lastReportedSize.blockSize !== size2.blockSize) {\n      return true;\n    }\n    return false;\n  };\n  return ResizeObservation2;\n}();\nvar ResizeObserverDetail = function() {\n  function ResizeObserverDetail2(resizeObserver, callback) {\n    this.activeTargets = [];\n    this.skippedTargets = [];\n    this.observationTargets = [];\n    this.observer = resizeObserver;\n    this.callback = callback;\n  }\n  return ResizeObserverDetail2;\n}();\nvar observerMap = /* @__PURE__ */ new WeakMap();\nvar getObservationIndex = function(observationTargets, target) {\n  for (var i = 0; i < observationTargets.length; i += 1) {\n    if (observationTargets[i].target === target) {\n      return i;\n    }\n  }\n  return -1;\n};\nvar ResizeObserverController = function() {\n  function ResizeObserverController2() {\n  }\n  ResizeObserverController2.connect = function(resizeObserver, callback) {\n    var detail = new ResizeObserverDetail(resizeObserver, callback);\n    observerMap.set(resizeObserver, detail);\n  };\n  ResizeObserverController2.observe = function(resizeObserver, target, options) {\n    var detail = observerMap.get(resizeObserver);\n    var firstObservation = detail.observationTargets.length === 0;\n    if (getObservationIndex(detail.observationTargets, target) < 0) {\n      firstObservation && resizeObservers.push(detail);\n      detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n      updateCount(1);\n      scheduler.schedule();\n    }\n  };\n  ResizeObserverController2.unobserve = function(resizeObserver, target) {\n    var detail = observerMap.get(resizeObserver);\n    var index = getObservationIndex(detail.observationTargets, target);\n    var lastObservation = detail.observationTargets.length === 1;\n    if (index >= 0) {\n      lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n      detail.observationTargets.splice(index, 1);\n      updateCount(-1);\n    }\n  };\n  ResizeObserverController2.disconnect = function(resizeObserver) {\n    var _this = this;\n    var detail = observerMap.get(resizeObserver);\n    detail.observationTargets.slice().forEach(function(ot) {\n      return _this.unobserve(resizeObserver, ot.target);\n    });\n    detail.activeTargets.splice(0, detail.activeTargets.length);\n  };\n  return ResizeObserverController2;\n}();\nvar ResizeObserver$1 = function() {\n  function ResizeObserver2(callback) {\n    if (arguments.length === 0) {\n      throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n    }\n    if (typeof callback !== \"function\") {\n      throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n    }\n    ResizeObserverController.connect(this, callback);\n  }\n  ResizeObserver2.prototype.observe = function(target, options) {\n    if (arguments.length === 0) {\n      throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n    }\n    if (!isElement(target)) {\n      throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n    }\n    ResizeObserverController.observe(this, target, options);\n  };\n  ResizeObserver2.prototype.unobserve = function(target) {\n    if (arguments.length === 0) {\n      throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n    }\n    if (!isElement(target)) {\n      throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n    }\n    ResizeObserverController.unobserve(this, target);\n  };\n  ResizeObserver2.prototype.disconnect = function() {\n    ResizeObserverController.disconnect(this);\n  };\n  ResizeObserver2.toString = function() {\n    return \"function ResizeObserver () { [polyfill code] }\";\n  };\n  return ResizeObserver2;\n}();\nfunction sidebarSVG(namespace) {\n  const NS = \"http://www.w3.org/2000/svg\";\n  const $svg = document.createElementNS(NS, \"svg\");\n  $svg.setAttribute(\"class\", `${namespace}-footer-icon-sidebar`);\n  $svg.setAttribute(\"viewBox\", \"0 0 64 64\");\n  const $path = document.createElementNS(NS, \"path\");\n  $path.setAttribute(\"fill\", \"currentColor\");\n  $path.setAttribute(\n    \"d\",\n    \"M50 8H14c-3.309 0-6 2.691-6 6v36c0 3.309 2.691 6 6 6h36c3.309 0 6-2.691 6-6V14c0-3.309-2.691-6-6-6zM12 50V14c0-1.103.897-2 2-2h8v40h-8c-1.103 0-2-.897-2-2zm40 0c0 1.103-.897 2-2 2H26V12h24c1.103 0 2 .897 2 2z\"\n  );\n  $svg.appendChild($path);\n  return $svg;\n}\nfunction arrowLeftSVG(namespace) {\n  const NS = \"http://www.w3.org/2000/svg\";\n  const $svg = document.createElementNS(NS, \"svg\");\n  $svg.setAttribute(\"class\", `${namespace}-footer-icon-arrow-left`);\n  $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n  const $path = document.createElementNS(NS, \"path\");\n  $path.setAttribute(\"fill\", \"currentColor\");\n  $path.setAttribute(\n    \"d\",\n    \"M177.81 249.959L337.473 90.295c2.722-2.865 2.651-7.378-.143-10.1-2.793-2.65-7.163-2.65-9.956 0l-164.75 164.75c-2.793 2.793-2.793 7.306 0 10.1l164.75 164.75c2.865 2.722 7.378 2.65 10.099-.143 2.651-2.794 2.651-7.163 0-9.957L177.809 249.959z\"\n  );\n  $svg.appendChild($path);\n  return $svg;\n}\nfunction arrowRightSVG(namespace) {\n  const NS = \"http://www.w3.org/2000/svg\";\n  const $svg = document.createElementNS(NS, \"svg\");\n  $svg.setAttribute(\"class\", `${namespace}-footer-icon-arrow-right`);\n  $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n  const $path = document.createElementNS(NS, \"path\");\n  $path.setAttribute(\"fill\", \"currentColor\");\n  $path.setAttribute(\n    \"d\",\n    \"M322.19 250.041L162.527 409.705c-2.722 2.865-2.651 7.378.143 10.1 2.793 2.65 7.163 2.65 9.956 0l164.75-164.75c2.793-2.793 2.793-7.306 0-10.1l-164.75-164.75c-2.865-2.722-7.378-2.65-10.099.143-2.651 2.794-2.651 7.163 0 9.957l159.664 159.736z\"\n  );\n  $svg.appendChild($path);\n  return $svg;\n}\nfunction playSVG(namespace) {\n  const NS = \"http://www.w3.org/2000/svg\";\n  const $svg = document.createElementNS(NS, \"svg\");\n  $svg.setAttribute(\"class\", `${namespace}-footer-icon-play`);\n  $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n  const $path = document.createElementNS(NS, \"path\");\n  $path.setAttribute(\"fill\", \"currentColor\");\n  $path.setAttribute(\n    \"d\",\n    \"M418.158 257.419L174.663 413.33c-6.017 3.919-15.708 3.772-21.291-.29-2.791-2.018-4.295-4.483-4.295-7.084V94.109c0-5.65 6.883-10.289 15.271-10.289 4.298 0 8.391 1.307 11.181 3.332l242.629 155.484c6.016 3.917 6.451 10.292.649 14.491-.216.154-.432.154-.649.292zM170.621 391.288l223.116-141.301L170.71 107.753l-.089 283.535z\"\n  );\n  $svg.appendChild($path);\n  return $svg;\n}\nfunction pauseSVG(namespace) {\n  const NS = \"http://www.w3.org/2000/svg\";\n  const $svg = document.createElementNS(NS, \"svg\");\n  $svg.setAttribute(\"class\", `${namespace}-footer-icon-pause`);\n  $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n  const $path = document.createElementNS(NS, \"path\");\n  $path.setAttribute(\"fill\", \"currentColor\");\n  $path.setAttribute(\n    \"d\",\n    \"M312.491 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261zM165.257 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261z\"\n  );\n  $svg.appendChild($path);\n  return $svg;\n}\nconst runningOnBrowser = typeof window !== \"undefined\";\nconst isBot = runningOnBrowser && !(\"onscroll\" in window) || typeof navigator !== \"undefined\" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent);\nconst supportsIntersectionObserver = runningOnBrowser && \"IntersectionObserver\" in window;\nconst supportsClassList = runningOnBrowser && \"classList\" in document.createElement(\"p\");\nconst isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;\nconst defaultSettings = {\n  elements_selector: \".lazy\",\n  container: isBot || runningOnBrowser ? document : null,\n  threshold: 300,\n  thresholds: null,\n  data_src: \"src\",\n  data_srcset: \"srcset\",\n  data_sizes: \"sizes\",\n  data_bg: \"bg\",\n  data_bg_hidpi: \"bg-hidpi\",\n  data_bg_multi: \"bg-multi\",\n  data_bg_multi_hidpi: \"bg-multi-hidpi\",\n  data_bg_set: \"bg-set\",\n  data_poster: \"poster\",\n  class_applied: \"applied\",\n  class_loading: \"loading\",\n  class_loaded: \"loaded\",\n  class_error: \"error\",\n  class_entered: \"entered\",\n  class_exited: \"exited\",\n  unobserve_completed: true,\n  unobserve_entered: false,\n  cancel_on_exit: true,\n  callback_enter: null,\n  callback_exit: null,\n  callback_applied: null,\n  callback_loading: null,\n  callback_loaded: null,\n  callback_error: null,\n  callback_finish: null,\n  callback_cancel: null,\n  use_native: false,\n  restore_on_error: false\n};\nconst getExtendedSettings = (customSettings) => {\n  return Object.assign({}, defaultSettings, customSettings);\n};\nconst createInstance = function(classObj, options) {\n  let event;\n  const eventString = \"LazyLoad::Initialized\";\n  const instance = new classObj(options);\n  try {\n    event = new CustomEvent(eventString, { detail: { instance } });\n  } catch (err) {\n    event = document.createEvent(\"CustomEvent\");\n    event.initCustomEvent(eventString, false, false, { instance });\n  }\n  window.dispatchEvent(event);\n};\nconst autoInitialize = (classObj, options) => {\n  if (!options) {\n    return;\n  }\n  if (!options.length) {\n    createInstance(classObj, options);\n  } else {\n    for (let i = 0, optionsItem; optionsItem = options[i]; i += 1) {\n      createInstance(classObj, optionsItem);\n    }\n  }\n};\nconst SRC = \"src\";\nconst SRCSET = \"srcset\";\nconst SIZES = \"sizes\";\nconst POSTER = \"poster\";\nconst ORIGINALS = \"llOriginalAttrs\";\nconst DATA = \"data\";\nconst statusLoading = \"loading\";\nconst statusLoaded = \"loaded\";\nconst statusApplied = \"applied\";\nconst statusEntered = \"entered\";\nconst statusError = \"error\";\nconst statusNative = \"native\";\nconst dataPrefix = \"data-\";\nconst statusDataName = \"ll-status\";\nconst getData = (element, attribute) => {\n  return element.getAttribute(dataPrefix + attribute);\n};\nconst setData = (element, attribute, value) => {\n  const attrName = dataPrefix + attribute;\n  if (value === null) {\n    element.removeAttribute(attrName);\n    return;\n  }\n  element.setAttribute(attrName, value);\n};\nconst getStatus = (element) => getData(element, statusDataName);\nconst setStatus = (element, status) => setData(element, statusDataName, status);\nconst resetStatus = (element) => setStatus(element, null);\nconst hasEmptyStatus = (element) => getStatus(element) === null;\nconst hasStatusLoading = (element) => getStatus(element) === statusLoading;\nconst hasStatusError = (element) => getStatus(element) === statusError;\nconst hasStatusNative = (element) => getStatus(element) === statusNative;\nconst statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];\nconst hadStartedLoading = (element) => statusesAfterLoading.indexOf(getStatus(element)) >= 0;\nconst safeCallback = (callback, arg1, arg2, arg3) => {\n  if (!callback || typeof callback !== \"function\") {\n    return;\n  }\n  if (arg3 !== void 0) {\n    callback(arg1, arg2, arg3);\n    return;\n  }\n  if (arg2 !== void 0) {\n    callback(arg1, arg2);\n    return;\n  }\n  callback(arg1);\n};\nconst addClass = (element, className) => {\n  if (className === \"\") {\n    return;\n  }\n  if (supportsClassList) {\n    element.classList.add(className);\n    return;\n  }\n  element.className += (element.className ? \" \" : \"\") + className;\n};\nconst removeClass = (element, className) => {\n  if (className === \"\") {\n    return;\n  }\n  if (supportsClassList) {\n    element.classList.remove(className);\n    return;\n  }\n  element.className = element.className.replace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").replace(/^\\s+/, \"\").replace(/\\s+$/, \"\");\n};\nconst addTempImage = (element) => {\n  element.llTempImage = document.createElement(\"IMG\");\n};\nconst deleteTempImage = (element) => {\n  delete element.llTempImage;\n};\nconst getTempImage = (element) => element.llTempImage;\nconst unobserve = (element, instance) => {\n  if (!instance)\n    return;\n  const observer = instance._observer;\n  if (!observer)\n    return;\n  observer.unobserve(element);\n};\nconst resetObserver = (observer) => {\n  observer.disconnect();\n};\nconst unobserveEntered = (element, settings, instance) => {\n  if (settings.unobserve_entered)\n    unobserve(element, instance);\n};\nconst updateLoadingCount = (instance, delta) => {\n  if (!instance)\n    return;\n  instance.loadingCount += delta;\n};\nconst decreaseToLoadCount = (instance) => {\n  if (!instance)\n    return;\n  instance.toLoadCount -= 1;\n};\nconst setToLoadCount = (instance, value) => {\n  if (!instance)\n    return;\n  instance.toLoadCount = value;\n};\nconst isSomethingLoading = (instance) => instance.loadingCount > 0;\nconst haveElementsToLoad = (instance) => instance.toLoadCount > 0;\nconst getSourceTags = (parentTag) => {\n  let sourceTags = [];\n  for (let i = 0, childTag; childTag = parentTag.children[i]; i += 1) {\n    if (childTag.tagName === \"SOURCE\") {\n      sourceTags.push(childTag);\n    }\n  }\n  return sourceTags;\n};\nconst forEachPictureSource = (element, fn) => {\n  const parent = element.parentNode;\n  if (!parent || parent.tagName !== \"PICTURE\") {\n    return;\n  }\n  let sourceTags = getSourceTags(parent);\n  sourceTags.forEach(fn);\n};\nconst forEachVideoSource = (element, fn) => {\n  let sourceTags = getSourceTags(element);\n  sourceTags.forEach(fn);\n};\nconst attrsSrc = [SRC];\nconst attrsSrcPoster = [SRC, POSTER];\nconst attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];\nconst attrsData = [DATA];\nconst hasOriginalAttrs = (element) => !!element[ORIGINALS];\nconst getOriginalAttrs = (element) => element[ORIGINALS];\nconst deleteOriginalAttrs = (element) => delete element[ORIGINALS];\nconst setOriginalsObject = (element, attributes) => {\n  if (hasOriginalAttrs(element)) {\n    return;\n  }\n  const originals = {};\n  attributes.forEach((attribute) => {\n    originals[attribute] = element.getAttribute(attribute);\n  });\n  element[ORIGINALS] = originals;\n};\nconst saveOriginalBackgroundStyle = (element) => {\n  if (hasOriginalAttrs(element)) {\n    return;\n  }\n  element[ORIGINALS] = { backgroundImage: element.style.backgroundImage };\n};\nconst setOrResetAttribute = (element, attrName, value) => {\n  if (!value) {\n    element.removeAttribute(attrName);\n    return;\n  }\n  element.setAttribute(attrName, value);\n};\nconst restoreOriginalAttrs = (element, attributes) => {\n  if (!hasOriginalAttrs(element)) {\n    return;\n  }\n  const originals = getOriginalAttrs(element);\n  attributes.forEach((attribute) => {\n    setOrResetAttribute(element, attribute, originals[attribute]);\n  });\n};\nconst restoreOriginalBgImage = (element) => {\n  if (!hasOriginalAttrs(element)) {\n    return;\n  }\n  const originals = getOriginalAttrs(element);\n  element.style.backgroundImage = originals.backgroundImage;\n};\nconst manageApplied = (element, settings, instance) => {\n  addClass(element, settings.class_applied);\n  setStatus(element, statusApplied);\n  if (!instance)\n    return;\n  if (settings.unobserve_completed) {\n    unobserve(element, settings);\n  }\n  safeCallback(settings.callback_applied, element, instance);\n};\nconst manageLoading = (element, settings, instance) => {\n  addClass(element, settings.class_loading);\n  setStatus(element, statusLoading);\n  if (!instance)\n    return;\n  updateLoadingCount(instance, 1);\n  safeCallback(settings.callback_loading, element, instance);\n};\nconst setAttributeIfValue = (element, attrName, value) => {\n  if (!value) {\n    return;\n  }\n  element.setAttribute(attrName, value);\n};\nconst setImageAttributes = (element, settings) => {\n  setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));\n  setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));\n  setAttributeIfValue(element, SRC, getData(element, settings.data_src));\n};\nconst setSourcesImg = (imgEl, settings) => {\n  forEachPictureSource(imgEl, (sourceTag) => {\n    setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);\n    setImageAttributes(sourceTag, settings);\n  });\n  setOriginalsObject(imgEl, attrsSrcSrcsetSizes);\n  setImageAttributes(imgEl, settings);\n};\nconst setSourcesIframe = (iframe, settings) => {\n  setOriginalsObject(iframe, attrsSrc);\n  setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));\n};\nconst setSourcesVideo = (videoEl, settings) => {\n  forEachVideoSource(videoEl, (sourceEl) => {\n    setOriginalsObject(sourceEl, attrsSrc);\n    setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));\n  });\n  setOriginalsObject(videoEl, attrsSrcPoster);\n  setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));\n  setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));\n  videoEl.load();\n};\nconst setSourcesObject = (object, settings) => {\n  setOriginalsObject(object, attrsData);\n  setAttributeIfValue(object, DATA, getData(object, settings.data_src));\n};\nconst setBackground = (element, settings, instance) => {\n  const bg1xValue = getData(element, settings.data_bg);\n  const bgHiDpiValue = getData(element, settings.data_bg_hidpi);\n  const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n  if (!bgDataValue)\n    return;\n  element.style.backgroundImage = `url(\"${bgDataValue}\")`;\n  getTempImage(element).setAttribute(SRC, bgDataValue);\n  manageLoading(element, settings, instance);\n};\nconst setMultiBackground = (element, settings, instance) => {\n  const bg1xValue = getData(element, settings.data_bg_multi);\n  const bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi);\n  const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n  if (!bgDataValue) {\n    return;\n  }\n  element.style.backgroundImage = bgDataValue;\n  manageApplied(element, settings, instance);\n};\nconst setImgsetBackground = (element, settings, instance) => {\n  const bgImgSetDataValue = getData(element, settings.data_bg_set);\n  if (!bgImgSetDataValue) {\n    return;\n  }\n  const imgSetValues = bgImgSetDataValue.split(\"|\");\n  let bgImageValues = imgSetValues.map((value) => `image-set(${value})`);\n  element.style.backgroundImage = bgImageValues.join();\n  if (element.style.backgroundImage === \"\") {\n    bgImageValues = imgSetValues.map((value) => `-webkit-image-set(${value})`);\n    element.style.backgroundImage = bgImageValues.join();\n  }\n  manageApplied(element, settings, instance);\n};\nconst setSourcesFunctions = {\n  IMG: setSourcesImg,\n  IFRAME: setSourcesIframe,\n  VIDEO: setSourcesVideo,\n  OBJECT: setSourcesObject\n};\nconst setSourcesNative = (element, settings) => {\n  const setSourcesFunction = setSourcesFunctions[element.tagName];\n  if (!setSourcesFunction) {\n    return;\n  }\n  setSourcesFunction(element, settings);\n};\nconst setSources = (element, settings, instance) => {\n  const setSourcesFunction = setSourcesFunctions[element.tagName];\n  if (!setSourcesFunction) {\n    return;\n  }\n  setSourcesFunction(element, settings);\n  manageLoading(element, settings, instance);\n};\nconst elementsWithLoadEvent = [\"IMG\", \"IFRAME\", \"VIDEO\", \"OBJECT\"];\nconst hasLoadEvent = (element) => elementsWithLoadEvent.indexOf(element.tagName) > -1;\nconst checkFinish = (settings, instance) => {\n  if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {\n    safeCallback(settings.callback_finish, instance);\n  }\n};\nconst addEventListener = (element, eventName, handler) => {\n  element.addEventListener(eventName, handler);\n  element.llEvLisnrs[eventName] = handler;\n};\nconst removeEventListener = (element, eventName, handler) => {\n  element.removeEventListener(eventName, handler);\n};\nconst hasEventListeners = (element) => {\n  return !!element.llEvLisnrs;\n};\nconst addEventListeners = (element, loadHandler2, errorHandler2) => {\n  if (!hasEventListeners(element))\n    element.llEvLisnrs = {};\n  const loadEventName = element.tagName === \"VIDEO\" ? \"loadeddata\" : \"load\";\n  addEventListener(element, loadEventName, loadHandler2);\n  addEventListener(element, \"error\", errorHandler2);\n};\nconst removeEventListeners = (element) => {\n  if (!hasEventListeners(element)) {\n    return;\n  }\n  const eventListeners = element.llEvLisnrs;\n  for (let eventName in eventListeners) {\n    const handler = eventListeners[eventName];\n    removeEventListener(element, eventName, handler);\n  }\n  delete element.llEvLisnrs;\n};\nconst doneHandler = (element, settings, instance) => {\n  deleteTempImage(element);\n  updateLoadingCount(instance, -1);\n  decreaseToLoadCount(instance);\n  removeClass(element, settings.class_loading);\n  if (settings.unobserve_completed) {\n    unobserve(element, instance);\n  }\n};\nconst loadHandler = (event, element, settings, instance) => {\n  const goingNative = hasStatusNative(element);\n  doneHandler(element, settings, instance);\n  addClass(element, settings.class_loaded);\n  setStatus(element, statusLoaded);\n  safeCallback(settings.callback_loaded, element, instance);\n  if (!goingNative)\n    checkFinish(settings, instance);\n};\nconst errorHandler = (event, element, settings, instance) => {\n  const goingNative = hasStatusNative(element);\n  doneHandler(element, settings, instance);\n  addClass(element, settings.class_error);\n  setStatus(element, statusError);\n  safeCallback(settings.callback_error, element, instance);\n  if (settings.restore_on_error)\n    restoreOriginalAttrs(element, attrsSrcSrcsetSizes);\n  if (!goingNative)\n    checkFinish(settings, instance);\n};\nconst addOneShotEventListeners = (element, settings, instance) => {\n  const elementToListenTo = getTempImage(element) || element;\n  if (hasEventListeners(elementToListenTo)) {\n    return;\n  }\n  const _loadHandler = (event) => {\n    loadHandler(event, element, settings, instance);\n    removeEventListeners(elementToListenTo);\n  };\n  const _errorHandler = (event) => {\n    errorHandler(event, element, settings, instance);\n    removeEventListeners(elementToListenTo);\n  };\n  addEventListeners(elementToListenTo, _loadHandler, _errorHandler);\n};\nconst loadBackground = (element, settings, instance) => {\n  addTempImage(element);\n  addOneShotEventListeners(element, settings, instance);\n  saveOriginalBackgroundStyle(element);\n  setBackground(element, settings, instance);\n  setMultiBackground(element, settings, instance);\n  setImgsetBackground(element, settings, instance);\n};\nconst loadRegular = (element, settings, instance) => {\n  addOneShotEventListeners(element, settings, instance);\n  setSources(element, settings, instance);\n};\nconst load = (element, settings, instance) => {\n  if (hasLoadEvent(element)) {\n    loadRegular(element, settings, instance);\n  } else {\n    loadBackground(element, settings, instance);\n  }\n};\nconst loadNative = (element, settings, instance) => {\n  element.setAttribute(\"loading\", \"lazy\");\n  addOneShotEventListeners(element, settings, instance);\n  setSourcesNative(element, settings);\n  setStatus(element, statusNative);\n};\nconst removeImageAttributes = (element) => {\n  element.removeAttribute(SRC);\n  element.removeAttribute(SRCSET);\n  element.removeAttribute(SIZES);\n};\nconst resetSourcesImg = (element) => {\n  forEachPictureSource(element, (sourceTag) => {\n    removeImageAttributes(sourceTag);\n  });\n  removeImageAttributes(element);\n};\nconst restoreImg = (imgEl) => {\n  forEachPictureSource(imgEl, (sourceEl) => {\n    restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);\n  });\n  restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);\n};\nconst restoreVideo = (videoEl) => {\n  forEachVideoSource(videoEl, (sourceEl) => {\n    restoreOriginalAttrs(sourceEl, attrsSrc);\n  });\n  restoreOriginalAttrs(videoEl, attrsSrcPoster);\n  videoEl.load();\n};\nconst restoreIframe = (iframeEl) => {\n  restoreOriginalAttrs(iframeEl, attrsSrc);\n};\nconst restoreObject = (objectEl) => {\n  restoreOriginalAttrs(objectEl, attrsData);\n};\nconst restoreFunctions = {\n  IMG: restoreImg,\n  IFRAME: restoreIframe,\n  VIDEO: restoreVideo,\n  OBJECT: restoreObject\n};\nconst restoreAttributes = (element) => {\n  const restoreFunction = restoreFunctions[element.tagName];\n  if (!restoreFunction) {\n    restoreOriginalBgImage(element);\n    return;\n  }\n  restoreFunction(element);\n};\nconst resetClasses = (element, settings) => {\n  if (hasEmptyStatus(element) || hasStatusNative(element)) {\n    return;\n  }\n  removeClass(element, settings.class_entered);\n  removeClass(element, settings.class_exited);\n  removeClass(element, settings.class_applied);\n  removeClass(element, settings.class_loading);\n  removeClass(element, settings.class_loaded);\n  removeClass(element, settings.class_error);\n};\nconst restore = (element, settings) => {\n  restoreAttributes(element);\n  resetClasses(element, settings);\n  resetStatus(element);\n  deleteOriginalAttrs(element);\n};\nconst cancelLoading = (element, entry, settings, instance) => {\n  if (!settings.cancel_on_exit)\n    return;\n  if (!hasStatusLoading(element))\n    return;\n  if (element.tagName !== \"IMG\")\n    return;\n  removeEventListeners(element);\n  resetSourcesImg(element);\n  restoreImg(element);\n  removeClass(element, settings.class_loading);\n  updateLoadingCount(instance, -1);\n  resetStatus(element);\n  safeCallback(settings.callback_cancel, element, entry, instance);\n};\nconst onEnter = (element, entry, settings, instance) => {\n  const dontLoad = hadStartedLoading(element);\n  setStatus(element, statusEntered);\n  addClass(element, settings.class_entered);\n  removeClass(element, settings.class_exited);\n  unobserveEntered(element, settings, instance);\n  safeCallback(settings.callback_enter, element, entry, instance);\n  if (dontLoad)\n    return;\n  load(element, settings, instance);\n};\nconst onExit = (element, entry, settings, instance) => {\n  if (hasEmptyStatus(element))\n    return;\n  addClass(element, settings.class_exited);\n  cancelLoading(element, entry, settings, instance);\n  safeCallback(settings.callback_exit, element, entry, instance);\n};\nconst tagsWithNativeLazy = [\"IMG\", \"IFRAME\", \"VIDEO\"];\nconst shouldUseNative = (settings) => settings.use_native && \"loading\" in HTMLImageElement.prototype;\nconst loadAllNative = (elements, settings, instance) => {\n  elements.forEach((element) => {\n    if (tagsWithNativeLazy.indexOf(element.tagName) === -1) {\n      return;\n    }\n    loadNative(element, settings, instance);\n  });\n  setToLoadCount(instance, 0);\n};\nconst isIntersecting = (entry) => entry.isIntersecting || entry.intersectionRatio > 0;\nconst getObserverSettings = (settings) => ({\n  root: settings.container === document ? null : settings.container,\n  rootMargin: settings.thresholds || settings.threshold + \"px\"\n});\nconst intersectionHandler = (entries, settings, instance) => {\n  entries.forEach(\n    (entry) => isIntersecting(entry) ? onEnter(entry.target, entry, settings, instance) : onExit(entry.target, entry, settings, instance)\n  );\n};\nconst observeElements = (observer, elements) => {\n  elements.forEach((element) => {\n    observer.observe(element);\n  });\n};\nconst updateObserver = (observer, elementsToObserve) => {\n  resetObserver(observer);\n  observeElements(observer, elementsToObserve);\n};\nconst setObserver = (settings, instance) => {\n  if (!supportsIntersectionObserver || shouldUseNative(settings)) {\n    return;\n  }\n  instance._observer = new IntersectionObserver((entries) => {\n    intersectionHandler(entries, settings, instance);\n  }, getObserverSettings(settings));\n};\nconst toArray = (nodeSet) => Array.prototype.slice.call(nodeSet);\nconst queryElements = (settings) => settings.container.querySelectorAll(settings.elements_selector);\nconst excludeManagedElements = (elements) => toArray(elements).filter(hasEmptyStatus);\nconst hasError = (element) => hasStatusError(element);\nconst filterErrorElements = (elements) => toArray(elements).filter(hasError);\nconst getElementsToLoad = (elements, settings) => excludeManagedElements(elements || queryElements(settings));\nconst retryLazyLoad = (settings, instance) => {\n  const errorElements = filterErrorElements(queryElements(settings));\n  errorElements.forEach((element) => {\n    removeClass(element, settings.class_error);\n    resetStatus(element);\n  });\n  instance.update();\n};\nconst setOnlineCheck = (settings, instance) => {\n  if (!runningOnBrowser) {\n    return;\n  }\n  instance._onlineHandler = () => {\n    retryLazyLoad(settings, instance);\n  };\n  window.addEventListener(\"online\", instance._onlineHandler);\n};\nconst resetOnlineCheck = (instance) => {\n  if (!runningOnBrowser) {\n    return;\n  }\n  window.removeEventListener(\"online\", instance._onlineHandler);\n};\nconst LazyLoad = function(customSettings, elements) {\n  const settings = getExtendedSettings(customSettings);\n  this._settings = settings;\n  this.loadingCount = 0;\n  setObserver(settings, this);\n  setOnlineCheck(settings, this);\n  this.update(elements);\n};\nLazyLoad.prototype = {\n  update: function(givenNodeset) {\n    const settings = this._settings;\n    const elementsToLoad = getElementsToLoad(givenNodeset, settings);\n    setToLoadCount(this, elementsToLoad.length);\n    if (isBot || !supportsIntersectionObserver) {\n      this.loadAll(elementsToLoad);\n      return;\n    }\n    if (shouldUseNative(settings)) {\n      loadAllNative(elementsToLoad, settings, this);\n      return;\n    }\n    updateObserver(this._observer, elementsToLoad);\n  },\n  destroy: function() {\n    if (this._observer) {\n      this._observer.disconnect();\n    }\n    resetOnlineCheck(this);\n    queryElements(this._settings).forEach((element) => {\n      deleteOriginalAttrs(element);\n    });\n    delete this._observer;\n    delete this._settings;\n    delete this._onlineHandler;\n    delete this.loadingCount;\n    delete this.toLoadCount;\n  },\n  loadAll: function(elements) {\n    const settings = this._settings;\n    const elementsToLoad = getElementsToLoad(elements, settings);\n    elementsToLoad.forEach((element) => {\n      unobserve(element, this);\n      load(element, settings, this);\n    });\n  },\n  restoreAll: function() {\n    const settings = this._settings;\n    queryElements(settings).forEach((element) => {\n      restore(element, settings);\n    });\n  }\n};\nLazyLoad.load = (element, customSettings) => {\n  const settings = getExtendedSettings(customSettings);\n  load(element, settings);\n};\nLazyLoad.resetStatus = (element) => {\n  resetStatus(element);\n};\nif (runningOnBrowser) {\n  autoInitialize(LazyLoad, window.lazyLoadOptions);\n}\nclass DocsViewer {\n  constructor({ readonly, box, pages, onNewPageIndex, onPlay }) {\n    this.pageIndex = 0;\n    this.namespace = \"netless-app-docs-viewer\";\n    this.isShowPreview = false;\n    this.isSmallBox = false;\n    this.sideEffect = new SideEffectManager();\n    if (pages.length <= 0) {\n      throw new Error(\"[DocsViewer] Empty pages.\");\n    }\n    this.readonly = readonly;\n    this.box = box;\n    this.pages = pages;\n    this.onNewPageIndex = onNewPageIndex;\n    this.onPlay = onPlay;\n    this.onPageIndexChanged = () => void 0;\n    this.render();\n  }\n  mount() {\n    this.box.mountContent(this.$content);\n    this.box.mountFooter(this.$footer);\n    this.sideEffect.add(() => {\n      const previewLazyLoad = new LazyLoad({\n        container: this.$preview,\n        elements_selector: `.${this.wrapClassName(\"preview-page>img\")}`\n      });\n      return () => previewLazyLoad.destroy();\n    }, \"preview-lazyload\");\n  }\n  unmount() {\n    this.$content.remove();\n    this.$footer.remove();\n  }\n  setReadonly(readonly) {\n    if (this.readonly !== readonly) {\n      this.readonly = readonly;\n      this.$content.classList.toggle(this.wrapClassName(\"readonly\"), readonly);\n      this.$footer.classList.toggle(this.wrapClassName(\"readonly\"), readonly);\n      this.$pageNumberInput.disabled = readonly;\n    }\n  }\n  destroy() {\n    this.sideEffect.flushAll();\n    this.unmount();\n  }\n  setPageIndex(pageIndex) {\n    if (!Number.isNaN(pageIndex)) {\n      this.pageIndex = pageIndex;\n      this.$pageNumberInput.value = String(pageIndex + 1);\n      this.onPageIndexChanged(pageIndex);\n    }\n  }\n  setSmallBox(isSmallBox) {\n    if (this.isSmallBox !== isSmallBox) {\n      this.isSmallBox = isSmallBox;\n      this.$footer.classList.toggle(this.wrapClassName(\"float-footer\"), isSmallBox);\n    }\n  }\n  render() {\n    this.renderContent();\n    this.renderFooter();\n    return this.$content;\n  }\n  renderContent() {\n    if (!this.$content) {\n      const $content = document.createElement(\"div\");\n      $content.className = this.wrapClassName(\"content\");\n      this.$content = $content;\n      if (this.readonly) {\n        $content.classList.add(this.wrapClassName(\"readonly\"));\n      }\n      $content.appendChild(this.renderPreviewMask());\n      $content.appendChild(this.renderPreview());\n    }\n    return this.$content;\n  }\n  renderPreview() {\n    if (!this.$preview) {\n      const $preview = document.createElement(\"div\");\n      $preview.className = this.wrapClassName(\"preview\") + \" tele-fancy-scrollbar\";\n      this.$preview = $preview;\n      const pageClassName = this.wrapClassName(\"preview-page\");\n      const pageNameClassName = this.wrapClassName(\"preview-page-name\");\n      this.pages.forEach((page, i) => {\n        var _a;\n        const previewSRC = (_a = page.thumbnail) != null ? _a : page.src.startsWith(\"ppt\") ? void 0 : page.src;\n        if (!previewSRC) {\n          return;\n        }\n        const pageIndex = String(i);\n        const $page = document.createElement(\"a\");\n        $page.className = pageClassName + \" \" + this.wrapClassName(`preview-page-${i}`);\n        $page.setAttribute(\"href\", \"#\");\n        $page.dataset.pageIndex = pageIndex;\n        const $name = document.createElement(\"span\");\n        $name.className = pageNameClassName;\n        $name.textContent = String(i + 1);\n        $name.dataset.pageIndex = pageIndex;\n        const $img = document.createElement(\"img\");\n        $img.width = page.width;\n        $img.height = page.height;\n        $img.dataset.src = previewSRC;\n        $img.dataset.pageIndex = pageIndex;\n        $page.appendChild($img);\n        $page.appendChild($name);\n        $preview.appendChild($page);\n      });\n      this.sideEffect.addEventListener($preview, \"click\", (ev) => {\n        var _a;\n        if (this.readonly) {\n          return;\n        }\n        const pageIndex = (_a = ev.target.dataset) == null ? void 0 : _a.pageIndex;\n        if (pageIndex) {\n          ev.preventDefault();\n          ev.stopPropagation();\n          ev.stopImmediatePropagation();\n          this.onNewPageIndex(Number(pageIndex));\n          this.togglePreview(false);\n        }\n      });\n    }\n    return this.$preview;\n  }\n  renderPreviewMask() {\n    if (!this.$previewMask) {\n      this.$previewMask = document.createElement(\"div\");\n      this.$previewMask.className = this.wrapClassName(\"preview-mask\");\n      this.sideEffect.addEventListener(this.$previewMask, \"click\", (ev) => {\n        if (this.readonly) {\n          return;\n        }\n        if (ev.target === this.$previewMask) {\n          this.togglePreview(false);\n        }\n      });\n    }\n    return this.$previewMask;\n  }\n  renderFooter() {\n    if (!this.$footer) {\n      const $footer = document.createElement(\"div\");\n      $footer.className = this.wrapClassName(\"footer\");\n      this.$footer = $footer;\n      if (this.readonly) {\n        $footer.classList.add(this.wrapClassName(\"readonly\"));\n      }\n      if (this.isSmallBox) {\n        $footer.classList.add(this.wrapClassName(\"float-footer\"));\n      }\n      if (this.pages.some((page) => page.thumbnail || !page.src.startsWith(\"ppt\"))) {\n        const $btnSidebar = this.renderFooterBtn(\"btn-sidebar\", sidebarSVG(this.namespace));\n        this.sideEffect.addEventListener($btnSidebar, \"click\", () => {\n          if (this.readonly) {\n            return;\n          }\n          this.togglePreview();\n        });\n        this.$footer.appendChild($btnSidebar);\n      }\n      const $pageJumps = document.createElement(\"div\");\n      $pageJumps.className = this.wrapClassName(\"page-jumps\");\n      const $btnPageBack = this.renderFooterBtn(\"btn-page-back\", arrowLeftSVG(this.namespace));\n      this.sideEffect.addEventListener($btnPageBack, \"click\", () => {\n        if (this.readonly) {\n          return;\n        }\n        this.onNewPageIndex(this.pageIndex - 1);\n      });\n      $pageJumps.appendChild($btnPageBack);\n      if (this.onPlay) {\n        const $btnPlay = this.renderFooterBtn(\n          \"btn-page-play\",\n          playSVG(this.namespace),\n          pauseSVG(this.namespace)\n        );\n        const returnPlay = () => {\n          this.sideEffect.setTimeout(\n            () => {\n              $btnPlay.classList.toggle(this.wrapClassName(\"footer-btn-playing\"), false);\n            },\n            500,\n            \"returnPlay\"\n          );\n        };\n        this.sideEffect.addEventListener($btnPlay, \"click\", () => {\n          if (this.readonly) {\n            return;\n          }\n          $btnPlay.classList.toggle(this.wrapClassName(\"footer-btn-playing\"), true);\n          if (this.onPlay) {\n            this.onPlay();\n          }\n          returnPlay();\n        });\n        $pageJumps.appendChild($btnPlay);\n      }\n      const $btnPageNext = this.renderFooterBtn(\"btn-page-next\", arrowRightSVG(this.namespace));\n      this.sideEffect.addEventListener($btnPageNext, \"click\", () => {\n        if (this.readonly) {\n          return;\n        }\n        this.onNewPageIndex(this.pageIndex + 1);\n      });\n      $pageJumps.appendChild($btnPageNext);\n      const $pageNumber = document.createElement(\"div\");\n      $pageNumber.className = this.wrapClassName(\"page-number\");\n      const $pageNumberInput = document.createElement(\"input\");\n      $pageNumberInput.className = this.wrapClassName(\"page-number-input\");\n      $pageNumberInput.value = String(this.pageIndex + 1);\n      if (this.readonly) {\n        $pageNumberInput.disabled = true;\n      }\n      this.$pageNumberInput = $pageNumberInput;\n      this.sideEffect.addEventListener($pageNumberInput, \"focus\", () => {\n        $pageNumberInput.select();\n      });\n      this.sideEffect.addEventListener($pageNumberInput, \"change\", () => {\n        if (this.readonly) {\n          return;\n        }\n        if ($pageNumberInput.value) {\n          this.onNewPageIndex(Number($pageNumberInput.value) - 1);\n        }\n      });\n      const $totalPage = document.createElement(\"span\");\n      $totalPage.textContent = \" / \" + this.pages.length;\n      $pageNumber.appendChild($pageNumberInput);\n      $pageNumber.appendChild($totalPage);\n      this.$footer.appendChild($pageJumps);\n      this.$footer.appendChild($pageNumber);\n    }\n    return this.$footer;\n  }\n  renderFooterBtn(className, $icon, $iconActive) {\n    const $btn = document.createElement(\"button\");\n    $btn.className = this.wrapClassName(\"footer-btn\") + \" \" + this.wrapClassName(className);\n    $btn.appendChild($icon);\n    if ($iconActive) {\n      $btn.appendChild($iconActive);\n    }\n    return $btn;\n  }\n  togglePreview(isShowPreview) {\n    this.isShowPreview = isShowPreview != null ? isShowPreview : !this.isShowPreview;\n    this.$content.classList.toggle(this.wrapClassName(\"preview-active\"), this.isShowPreview);\n    if (this.isShowPreview) {\n      const $previewPage = this.$preview.querySelector(\n        \".\" + this.wrapClassName(`preview-page-${this.pageIndex}`)\n      );\n      if ($previewPage) {\n        this.$preview.scrollTo({\n          top: $previewPage.offsetTop - 16\n        });\n      }\n    }\n  }\n  wrapClassName(className) {\n    return `${this.namespace}-${className}`;\n  }\n}\nfunction clamp(value, min, max) {\n  return Math.min(Math.max(value, min), max);\n}\nfunction flattenEvent(ev) {\n  return ev.touches ? ev.touches[0] : ev;\n}\nfunction preventEvent(ev) {\n  ev.stopPropagation();\n  if (ev.cancelable) {\n    ev.preventDefault();\n  }\n}\nfunction isEditable(el) {\n  if (!el)\n    return false;\n  const tagName = el.tagName;\n  return tagName === \"INPUT\" || tagName === \"TEXTAREA\" || tagName === \"SELECT\";\n}\nclass Stepper {\n  constructor(config) {\n    var _a, _b, _c;\n    this.velocity = 0;\n    this.paused = true;\n    this._animationFrameID = null;\n    this._loopTimestamp = 0;\n    this.looper = (timestamp) => {\n      if (this.paused) {\n        return;\n      }\n      let frames = Math.floor((timestamp - this._loopTimestamp) / 1e3 * 60) + 1;\n      this._loopTimestamp = timestamp;\n      while (frames-- > 0) {\n        this.stepper();\n      }\n      this.onStep(this.current, this);\n      if (!this.paused && this.current !== this.target) {\n        window.requestAnimationFrame(this.looper);\n      }\n    };\n    this.current = (_a = config.start) != null ? _a : 0;\n    this.target = this.current;\n    this.stiffness = (_b = config.stiffness) != null ? _b : 170;\n    this.damping = (_c = config.damping) != null ? _c : 26;\n    this.onStep = config.onStep;\n  }\n  stepTo(target, start) {\n    if (this.paused && start != null) {\n      this.current = start;\n    }\n    this.paused = false;\n    this.target = target;\n    this.onStep(this.current, this);\n    this._loopTimestamp = Date.now();\n    window.requestAnimationFrame(this.looper);\n  }\n  pause() {\n    this.paused = true;\n  }\n  destroy() {\n    this.pause();\n  }\n  stepper() {\n    const fSpring = -this.stiffness * (this.current - this.target);\n    const fDamper = -this.damping * this.velocity;\n    const newVelocity = this.velocity + (fSpring + fDamper) / 60;\n    const newCurrent = this.current + newVelocity / 60;\n    if (Math.abs(newVelocity - 0) < 0.01 && Math.abs(newCurrent - this.target) < 0.01) {\n      this.current = this.target;\n      this.velocity = 0;\n    } else {\n      this.current = newCurrent;\n      this.velocity = newVelocity;\n    }\n  }\n}\nclass PageEl {\n  constructor(index, page, scale, pagesIntrinsicWidth) {\n    this.scale = 1;\n    this.lastVisit = Date.now();\n    this.pageOffsetY = 0;\n    this.pageOffsetX = 0;\n    this.visible = true;\n    this.index = index;\n    this.page = page;\n    this.scale = scale;\n    this.pageOffsetX = (pagesIntrinsicWidth - page.width) / 2;\n    const $page = document.createElement(\"div\");\n    $page.className = \"page-renderer-page\";\n    $page.dataset.index = `${index}`;\n    $page.style.width = `${page.width * scale}px`;\n    $page.style.height = `${page.height * scale}px`;\n    if (page.thumbnail) {\n      $page.style.backgroundImage = `url(\"${page.thumbnail}\")`;\n    }\n    const $img = document.createElement(\"img\");\n    $img.className = \"page-renderer-page-img\";\n    $img.width = page.width;\n    $img.height = page.height;\n    $img.src = page.src;\n    $page.appendChild($img);\n    this.$page = $page;\n  }\n  translateY(pageOffsetY) {\n    if (Math.abs(pageOffsetY - this.pageOffsetY) >= 1e-3) {\n      this.pageOffsetY = pageOffsetY;\n      this.$page.style.transform = `translate(${this.pageOffsetX * this.scale}px, ${this.pageOffsetY * this.scale}px)`;\n    }\n  }\n  setScale(scale) {\n    if (Math.abs(scale - this.scale) >= 1e-3) {\n      this.scale = scale;\n      this.$page.style.width = `${this.page.width * this.scale}px`;\n      this.$page.style.height = `${this.page.height * this.scale}px`;\n      this.$page.style.transform = `translate(${this.pageOffsetX * this.scale}px, ${this.pageOffsetY * this.scale}px)`;\n    }\n  }\n  setVisible(visible) {\n    if (visible !== this.visible) {\n      this.visible = visible;\n      this.$page.style.opacity = visible ? \"1\" : \"0\";\n    }\n  }\n}\nconst schedule = window.requestIdleCallback || ((handler) => window.setTimeout(handler, 5e3));\nconst cancelSchedule = window.cancelIdleCallback || window.clearTimeout;\nclass PageElManager {\n  constructor(pages, pagesIntrinsicWidth, scale) {\n    this.pages = pages;\n    this.pagesIntrinsicWidth = pagesIntrinsicWidth;\n    this.scale = scale;\n    this.els = /* @__PURE__ */ new Map();\n    this.maxElCount = 200;\n    this.gcTimer = null;\n    this.gc = () => {\n      this.gcTimer = null;\n      if (this.els.size > this.maxElCount) {\n        const sortedEls = [...this.els.values()].sort((x, y) => y.lastVisit - x.lastVisit);\n        for (let i = Math.floor(this.maxElCount / 4); i < sortedEls.length; i++) {\n          this.els.delete(sortedEls[i].index);\n        }\n      }\n    };\n  }\n  getEl(index) {\n    let el = this.els.get(index);\n    if (!el) {\n      el = new PageEl(index, this.pages[index], this.scale, this.pagesIntrinsicWidth);\n      this.els.set(index, el);\n    }\n    el.lastVisit = Date.now();\n    if (this.els.size > this.maxElCount && this.gcTimer === null) {\n      this.gcTimer = schedule(this.gc);\n    }\n    return el;\n  }\n  setScale(scale) {\n    if (scale !== this.scale) {\n      this.scale = scale;\n      this.els.forEach((pageEl) => pageEl.setScale(scale));\n    }\n  }\n  destroy() {\n    this.els.clear();\n    if (this.gcTimer !== null) {\n      cancelSchedule(this.gcTimer);\n      this.gcTimer = null;\n    }\n  }\n}\nclass PageRenderer {\n  constructor(config) {\n    this._hwaTimeout = NaN;\n    this._turnOffHWA = () => {\n      window.clearTimeout(this._hwaTimeout);\n      this._hwaTimeout = NaN;\n      this.$pages.classList.toggle(\"is-hwa\", false);\n    };\n    this.pagesScrollTop = config.pagesScrollTop || 0;\n    this.containerWidth = config.containerWidth || 1;\n    this.containerHeight = config.containerHeight || 1;\n    this.pages = config.pages.map((page) => {\n      if (page.thumbnail) {\n        return page;\n      }\n      try {\n        const url = new URL(page.src);\n        url.searchParams.set(\"x-oss-process\", \"image/resize,l_50\");\n        return { ...page, thumbnail: url.toString() };\n      } catch (e) {\n        console.error(e);\n        return page;\n      }\n    });\n    const pagesIntrinsicYs = Array(this.pages.length);\n    let pagesMinHeight = Infinity;\n    let pagesIntrinsicWidth = 0;\n    this.pagesIntrinsicHeight = this.pages.reduce((pageY, page, i) => {\n      pagesIntrinsicYs[i] = pageY;\n      if (page.width > pagesIntrinsicWidth) {\n        pagesIntrinsicWidth = page.width;\n      }\n      if (page.height <= pagesMinHeight) {\n        pagesMinHeight = page.height;\n      }\n      return pageY + page.height;\n    }, 0);\n    this.pagesIntrinsicWidth = pagesIntrinsicWidth;\n    this.pagesMinHeight = pagesMinHeight;\n    this.pagesIntrinsicYs = pagesIntrinsicYs;\n    this.scale = this._calcScale();\n    this.threshold = this._calcThreshold();\n    this.onPageIndexChanged = config.onPageIndexChanged;\n    this.pageScrollIndex = 0;\n    if (this.pagesScrollTop !== 0) {\n      this.pageScrollIndex = this.findScrollPageIndex();\n      if (this.onPageIndexChanged && this.pageScrollIndex > 0) {\n        this.onPageIndexChanged(this.pageScrollIndex);\n      }\n    }\n    this.pageElManager = new PageElManager(this.pages, pagesIntrinsicWidth, this.scale);\n    this.$pages = this.renderPages();\n  }\n  setContainerSize(width, height) {\n    if (width > 0 && height > 0) {\n      if (width !== this.containerWidth || height !== this.containerHeight) {\n        this.containerWidth = width;\n        this.containerHeight = height;\n        this.$pages.style.width = `${this.containerWidth}px`;\n        this.$pages.style.height = `${this.containerHeight}px`;\n        this.scale = this._calcScale();\n        this.threshold = this._calcThreshold();\n        this.pageElManager.setScale(this.scale);\n        if (this.$pages.parentElement) {\n          this.pagesScrollTo(this.pagesScrollTop, true);\n        }\n      }\n    }\n  }\n  renderPages() {\n    const $pages = document.createElement(\"div\");\n    $pages.className = \"page-renderer-pages-container\";\n    $pages.style.width = `${this.containerWidth}px`;\n    $pages.style.height = `${this.containerHeight}px`;\n    return $pages;\n  }\n  pagesScrollTo(pagesScrollTop, force) {\n    pagesScrollTop = clamp(\n      pagesScrollTop,\n      0,\n      this.pagesIntrinsicHeight - this.containerHeight / this.scale\n    );\n    if (force || Math.abs(pagesScrollTop - this.pagesScrollTop) >= 1e-3) {\n      this._turnOnHWA();\n      this.pagesScrollTop = pagesScrollTop;\n      const pageScrollIndex = this.findScrollPageIndex();\n      const startIndex = Math.max(pageScrollIndex - this.threshold, 0);\n      const endIndex = Math.min(pageScrollIndex + this.threshold, this.pages.length - 1);\n      for (let i = 0; i < this.$pages.children.length; i++) {\n        const $page = this.$pages.children[i];\n        const index = Number($page.dataset.index);\n        if (!(index >= startIndex && index <= endIndex)) {\n          $page.remove();\n          i--;\n        }\n      }\n      for (let i = startIndex; i <= endIndex; i++) {\n        const pageEl = this.pageElManager.getEl(i);\n        if (pageEl.$page.parentElement !== this.$pages) {\n          this.$pages.appendChild(pageEl.$page);\n        }\n        pageEl.translateY(this.pagesIntrinsicYs[i] - this.pagesScrollTop);\n      }\n      if (pageScrollIndex !== this.pageScrollIndex) {\n        this.pageScrollIndex = pageScrollIndex;\n        if (this.onPageIndexChanged) {\n          this.onPageIndexChanged(pageScrollIndex);\n        }\n      }\n    }\n  }\n  findScrollPageIndex() {\n    for (let i = 0; i < this.pagesIntrinsicYs.length; i++) {\n      if (this.pagesIntrinsicYs[i] + this.pages[i].height - this.pagesScrollTop >= 1e-3) {\n        return i;\n      }\n    }\n    return this.pagesIntrinsicYs.length - 1;\n  }\n  mount($parent) {\n    $parent.appendChild(this.$pages);\n    this.pagesScrollTo(this.pagesScrollTop, true);\n  }\n  unmount() {\n    this.$pages.remove();\n  }\n  destroy() {\n    this.unmount();\n    this.onPageIndexChanged = void 0;\n    this.pageElManager.destroy();\n    if (this._hwaTimeout) {\n      window.clearTimeout(this._hwaTimeout);\n      this._hwaTimeout = NaN;\n    }\n  }\n  _calcScale() {\n    return this.containerWidth / this.pagesIntrinsicWidth || 1;\n  }\n  _calcThreshold() {\n    return clamp(\n      Math.ceil(this.containerHeight / this.scale / this.pagesMinHeight / 2),\n      1,\n      this.pages.length\n    );\n  }\n  _turnOnHWA() {\n    if (this._hwaTimeout) {\n      window.clearTimeout(this._hwaTimeout);\n    } else {\n      this.$pages.classList.toggle(\"is-hwa\", true);\n    }\n    this._hwaTimeout = window.setTimeout(this._turnOffHWA, 1e3);\n  }\n}\nconst SCROLLBAR_DEFAULT_MIN_HEIGHT = 30;\nclass ScrollBar {\n  constructor(config) {\n    this.sideEffect = new SideEffectManager();\n    this.pagesScrollTop = config.pagesScrollTop || 0;\n    this.containerWidth = config.containerWidth || 1;\n    this.containerHeight = config.containerHeight || 1;\n    this.pagesWidth = config.pagesWidth || 1;\n    this.pagesHeight = config.pagesHeight || 1;\n    this.scale = this._calcScale();\n    this.scrollbarMinHeight = config.scrollbarMinHeight || SCROLLBAR_DEFAULT_MIN_HEIGHT;\n    this.scrollbarHeight = this._calcScrollbarHeight();\n    this.readonly = config.readonly;\n    this.wrapClassName = config.wrapClassName;\n    this.onDragScroll = config.onDragScroll;\n    this.$scrollbar = this.renderScrollbar();\n  }\n  mount($parent) {\n    $parent.appendChild(this.$scrollbar);\n    this.pagesScrollTo(this.pagesScrollTop, true);\n  }\n  unmount() {\n    this.$scrollbar.remove();\n  }\n  setReadonly(readonly) {\n    this.readonly = readonly;\n  }\n  setContainerSize(width, height) {\n    if (width > 0 && height > 0) {\n      if (width !== this.containerWidth || height !== this.containerHeight) {\n        this.containerWidth = width;\n        this.containerHeight = height;\n        this.scale = this._calcScale();\n        this._updateScrollbarHeight();\n        if (this.$scrollbar.parentElement) {\n          this.pagesScrollTo(this.pagesScrollTop, true);\n        }\n      }\n    }\n  }\n  pagesScrollTo(pagesScrollTop, force) {\n    pagesScrollTop = clamp(pagesScrollTop, 0, this.pagesHeight - this.containerHeight / this.scale);\n    if (force || Math.abs(pagesScrollTop - this.pagesScrollTop) >= 1e-3) {\n      this.pagesScrollTop = pagesScrollTop;\n      const elScrollTop = this.pagesScrollTop * this.scale;\n      const elPagesHeight = this.pagesHeight * this.scale;\n      const translateY = elScrollTop / (elPagesHeight - this.containerHeight) * (this.containerHeight - this.scrollbarHeight);\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(() => {\n          this.$scrollbar.style.transform = `translateY(${translateY}px)`;\n        });\n      } else {\n        this.$scrollbar.style.transform = `translateY(${translateY}px)`;\n      }\n    }\n  }\n  destroy() {\n    this.unmount();\n    this.onDragScroll = void 0;\n    this.sideEffect.flushAll();\n  }\n  renderScrollbar() {\n    const $scrollbar = document.createElement(\"button\");\n    $scrollbar.className = this.wrapClassName(\"scrollbar\");\n    $scrollbar.style.minHeight = `${this.scrollbarMinHeight}px`;\n    $scrollbar.style.height = `${this.scrollbarHeight}px`;\n    const trackStart = (ev) => {\n      if (this.readonly) {\n        return;\n      }\n      if (ev.button != null && ev.button !== 0) {\n        return;\n      }\n      preventEvent(ev);\n      const draggingClassName = this.wrapClassName(\"scrollbar-dragging\");\n      $scrollbar.classList.toggle(draggingClassName, true);\n      const startTop = this.pagesScrollTop;\n      const { clientY: startY } = flattenEvent(ev);\n      const tracking = (ev2) => {\n        if (this.readonly) {\n          return;\n        }\n        const { clientY } = flattenEvent(ev2);\n        const offsetY = (clientY - startY) / this.scale;\n        if (Math.abs(offsetY) > 0 && this.onDragScroll) {\n          this.onDragScroll(\n            startTop + offsetY * (this.pagesHeight * this.scale / this.containerHeight)\n          );\n        }\n      };\n      const trackEnd = () => {\n        $scrollbar.classList.toggle(draggingClassName, false);\n        window.removeEventListener(\"mousemove\", tracking, true);\n        window.removeEventListener(\"touchmove\", tracking, true);\n        window.removeEventListener(\"mouseup\", trackEnd, true);\n        window.removeEventListener(\"touchend\", trackEnd, true);\n        window.removeEventListener(\"touchcancel\", trackEnd, true);\n      };\n      window.addEventListener(\"mousemove\", tracking, true);\n      window.addEventListener(\"touchmove\", tracking, true);\n      window.addEventListener(\"mouseup\", trackEnd, true);\n      window.addEventListener(\"touchend\", trackEnd, true);\n      window.addEventListener(\"touchcancel\", trackEnd, true);\n    };\n    this.sideEffect.addEventListener($scrollbar, \"mousedown\", trackStart);\n    this.sideEffect.addEventListener($scrollbar, \"touchstart\", trackStart);\n    return $scrollbar;\n  }\n  _calcScale() {\n    return this.containerWidth / this.pagesWidth || 1;\n  }\n  _calcScrollbarHeight() {\n    return clamp(\n      this.containerHeight / (this.pagesHeight * this.scale) * this.containerHeight,\n      this.scrollbarMinHeight,\n      this.containerHeight\n    );\n  }\n  _updateScrollbarHeight() {\n    const newHeight = this._calcScrollbarHeight();\n    if (Math.abs(newHeight - this.scrollbarHeight) > 1e-3) {\n      this.scrollbarHeight = newHeight;\n      this.$scrollbar.style.height = `${newHeight}px`;\n    }\n  }\n}\nconst ResizeObserver = window.ResizeObserver || ResizeObserver$1;\nconst RATIO_BASE_CONTAINER_HEIGHT = 640;\nclass StaticDocsViewer {\n  constructor({\n    context,\n    whiteboardView,\n    readonly,\n    box,\n    pages,\n    pageScrollTop = 0,\n    mountWhiteboard,\n    onUserScroll,\n    baseScenePath,\n    appId\n  }) {\n    this.sideEffect = new SideEffectManager();\n    this.userScrolling = false;\n    this.docsViewReadonly = false;\n    this.onNewPageIndex = (index) => {\n      this.scrollToPage(index);\n    };\n    this.toPdf = async () => {\n      const whiteSnapshotCanvas = document.createElement(\"canvas\");\n      const whiteCtx = whiteSnapshotCanvas.getContext(\"2d\");\n      if (!whiteCtx || !this.baseScenePath) {\n        this.reportProgress(100, null);\n        return;\n      }\n      const scenePath = this.whiteboardView.focusScenePath || `${this.baseScenePath}/1`;\n      const firstPage = this.pages[0];\n      const { jsPDF } = await import(\"jspdf\");\n      const pdf = new jsPDF({\n        format: [firstPage.width, firstPage.height],\n        orientation: firstPage.width > firstPage.height ? \"l\" : \"p\",\n        compress: true\n      });\n      for (const [index, page] of this.pages.entries()) {\n        const { width, height, src } = page;\n        whiteSnapshotCanvas.width = width;\n        whiteSnapshotCanvas.height = height;\n        const orientation = width > height ? \"l\" : \"p\";\n        if (index > 0) {\n          pdf.addPage([width, height], orientation);\n        }\n        const pdfPageSrc = await this.getBase64FromUrl(src);\n        const img = document.createElement(\"img\");\n        img.src = pdfPageSrc;\n        await new Promise((resolve) => img.onload = resolve);\n        whiteCtx.drawImage(img, 0, 0);\n        const pdfPageBase64 = whiteSnapshotCanvas.toDataURL(\"image/png\");\n        whiteCtx.clearRect(0, 0, width, height);\n        const camera = {\n          centerX: width / 2,\n          centerY: height / 2 + index * height,\n          scale: 1\n        };\n        const windowManger = this.context.manager.windowManger;\n        if (windowManger._appliancePlugin) {\n          await windowManger._appliancePlugin.screenshotToCanvasAsync(\n            whiteCtx,\n            scenePath,\n            width,\n            height,\n            camera\n          );\n        } else {\n          this.whiteboardView.screenshotToCanvas(whiteCtx, scenePath, width, height, camera);\n        }\n        const snapshot = whiteSnapshotCanvas.toDataURL(\"image/png\");\n        pdf.addImage(pdfPageBase64, \"PNG\", 0, 0, width, height, \"\", \"FAST\");\n        pdf.addImage(snapshot, \"PNG\", 0, 0, width, height, \"\", \"FAST\");\n        whiteCtx.clearRect(0, 0, width, height);\n        const progress = Math.ceil((index + 1) / this.pages.length * 100);\n        if (progress < 100) {\n          this.reportProgress(Math.ceil((index + 1) / this.pages.length * 100), null);\n        }\n      }\n      const dataUrl = pdf.output(\"arraybuffer\");\n      this.reportProgress(100, { pdf: dataUrl, title: this.box.title });\n    };\n    this.context = context;\n    this.whiteboardView = whiteboardView;\n    this.readonly = readonly;\n    this.box = box;\n    this.pages = pages;\n    this.baseScenePath = baseScenePath;\n    this.appId = appId;\n    this.mountWhiteboard = mountWhiteboard;\n    this._onUserScroll = onUserScroll;\n    const debouncedOnUserScroll = this.debounce(\n      () => {\n        this.userScrolling = false;\n        if (this._onUserScroll) {\n          this._onUserScroll(this.pageRenderer.pagesScrollTop);\n        }\n      },\n      { wait: 80 },\n      \"debounce-updateUserScroll\"\n    );\n    this.updateUserScroll = () => {\n      this.userScrolling = true;\n      debouncedOnUserScroll();\n    };\n    this.viewer = new DocsViewer({\n      readonly,\n      box,\n      pages,\n      onNewPageIndex: this.onNewPageIndex\n    });\n    const { width: containerWidth, height: containerHeight } = this.whiteboardView.size;\n    this.pageRenderer = new PageRenderer({\n      pagesScrollTop: pageScrollTop,\n      pages: this.pages,\n      containerWidth,\n      containerHeight,\n      onPageIndexChanged: this.viewer.setPageIndex.bind(this.viewer)\n    });\n    this.scrollbar = new ScrollBar({\n      pagesScrollTop: this.pageRenderer.pagesScrollTop,\n      containerWidth,\n      containerHeight,\n      pagesWidth: this.pageRenderer.pagesIntrinsicWidth,\n      pagesHeight: this.pageRenderer.pagesIntrinsicHeight,\n      readonly: this.readonly,\n      wrapClassName: this.wrapClassName.bind(this),\n      onDragScroll: (pageScrollTop2) => {\n        this.pageScrollTo(pageScrollTop2);\n        this.updateUserScroll();\n      }\n    });\n    this.pageScrollStepper = new Stepper({\n      start: this.pageRenderer.pagesScrollTop,\n      onStep: (pageScrollTop2) => {\n        this.pageScrollTo(pageScrollTop2);\n      }\n    });\n    this.render();\n  }\n  setDocsViewReadonly(isReadonly) {\n    this.docsViewReadonly = isReadonly;\n  }\n  mount() {\n    this.viewer.mount();\n    this.setupScrollListener();\n    const debouncedRenderRatioHeight = this.debounce(this.renderRatioHeight.bind(this), {\n      wait: 80\n    });\n    this.sideEffect.add(() => {\n      const observer = new ResizeObserver(debouncedRenderRatioHeight);\n      observer.observe(this.viewer.$content);\n      return () => observer.disconnect();\n    });\n    this.sideEffect.setTimeout(() => {\n      if (!this.userScrolling) {\n        this.pageScrollTo(this.pageRenderer.pagesScrollTop);\n      }\n    }, 100);\n    this.sideEffect.add(() => {\n      const handleDownloadPdf = (evt) => {\n        if (evt.data.type === \"@netless/_request_save_pdf_\" && evt.data.appId === this.appId) {\n          this.toPdf().catch(() => this.reportProgress(100, null));\n        }\n      };\n      window.addEventListener(\"message\", handleDownloadPdf);\n      return () => {\n        window.removeEventListener(\"message\", handleDownloadPdf);\n      };\n    });\n    return this;\n  }\n  unmount() {\n    this.viewer.unmount();\n    return this;\n  }\n  setReadonly(readonly) {\n    if (this.readonly !== readonly) {\n      this.readonly = readonly;\n      this.viewer.setReadonly(readonly);\n      this.scrollbar.setReadonly(readonly);\n    }\n  }\n  destroy() {\n    this.sideEffect.flushAll();\n    this.pageScrollStepper.destroy();\n    this._onUserScroll = void 0;\n    this.unmount();\n    this.viewer.destroy();\n    this.pageRenderer.destroy();\n    this.scrollbar.destroy();\n  }\n  syncPageScrollTop(pageScrollTop) {\n    if (!this.userScrolling && pageScrollTop >= 0 && Math.abs(this.pageRenderer.pagesScrollTop - pageScrollTop) > 0.01) {\n      this.pageScrollStepper.stepTo(pageScrollTop, this.pageRenderer.pagesScrollTop);\n    }\n  }\n  render() {\n    this.pageRenderer.mount(this.viewer.$content);\n    this.viewer.$content.appendChild(this.renderWhiteboardView());\n    this.scrollbar.mount(this.viewer.$content);\n    this.renderRatioHeight();\n  }\n  renderRatioHeight() {\n    const boxHeight = this.box.absoluteHeight;\n    const isSmallBox = boxHeight <= RATIO_BASE_CONTAINER_HEIGHT;\n    this.viewer.setSmallBox(isSmallBox);\n    if (isSmallBox) {\n      const titleBarSupposedHeight = 26 / RATIO_BASE_CONTAINER_HEIGHT;\n      const titleBarActualHeight = 26 / boxHeight;\n      const footerSupposedHeight = 26 / RATIO_BASE_CONTAINER_HEIGHT;\n      const footerActualHeight = 0;\n      const emptySpace = Math.max(\n        (titleBarSupposedHeight + footerSupposedHeight - (titleBarActualHeight + footerActualHeight)) / 2,\n        0\n      );\n      if (this.box.$titleBar) {\n        const titleBarHeight = titleBarActualHeight + emptySpace;\n        this.box.$titleBar.style.height = `${titleBarHeight * 100}%`;\n      }\n      if (this.box.$footer) {\n        const footerHeight = footerActualHeight + emptySpace;\n        this.box.$footer.style.height = `${footerHeight * 100}%`;\n      }\n    } else {\n      if (this.box.$titleBar) {\n        const titleBarHeight = Math.max(26 / RATIO_BASE_CONTAINER_HEIGHT, 26 / boxHeight);\n        this.box.$titleBar.style.height = `${titleBarHeight * 100}%`;\n      }\n      if (this.box.$footer) {\n        const footerHeight = Math.max(26 / RATIO_BASE_CONTAINER_HEIGHT, 26 / boxHeight);\n        this.box.$footer.style.height = `${footerHeight * 100}%`;\n      }\n    }\n  }\n  renderWhiteboardView() {\n    if (!this.$whiteboardView) {\n      this.$whiteboardView = document.createElement(\"div\");\n      this.$whiteboardView.className = this.wrapClassName(\"wb-view\");\n      this.mountWhiteboard(this.$whiteboardView);\n      this.sideEffect.addEventListener(\n        this.$whiteboardView,\n        \"wheel\",\n        (ev) => {\n          preventEvent(ev);\n          if (!this.readonly) {\n            this.pageScrollTo(this.pageRenderer.pagesScrollTop + ev.deltaY);\n            this.updateUserScroll();\n          }\n        },\n        { passive: false, capture: true }\n      );\n      this.sideEffect.addEventListener(\n        this.$whiteboardView,\n        \"touchmove\",\n        (ev) => {\n          if (this.readonly || ev.touches.length <= 1) {\n            return;\n          }\n          this.updateUserScroll();\n        },\n        { passive: true, capture: true }\n      );\n    }\n    return this.$whiteboardView;\n  }\n  scrollTopPageToEl(pageScrollTop) {\n    return pageScrollTop * this.pageRenderer.scale;\n  }\n  scrollTopElToPage(elScrollTop) {\n    return elScrollTop / this.pageRenderer.scale;\n  }\n  elScrollTo(elScrollTop) {\n    this.pageScrollTo(this.scrollTopElToPage(elScrollTop));\n  }\n  pageScrollTo(pageScrollTop) {\n    const halfWbHeight = this.scrollTopElToPage(this.whiteboardView.size.height / 2);\n    this.whiteboardView.moveCamera({\n      centerY: clamp(\n        pageScrollTop + halfWbHeight,\n        halfWbHeight,\n        this.pageRenderer.pagesIntrinsicHeight - halfWbHeight\n      ),\n      animationMode: \"immediately\"\n    });\n  }\n  scrollToPage(index) {\n    if (!this.readonly && !Number.isNaN(index)) {\n      const offsetY = this.pageRenderer.pagesIntrinsicYs[index];\n      if (offsetY >= 0) {\n        this.pageScrollTo(offsetY + 5 / this.pageRenderer.scale);\n        this.updateUserScroll();\n      }\n    }\n  }\n  setupScrollListener() {\n    this.sideEffect.add(() => {\n      const handleCameraUpdate = (camera) => {\n        const { width: wbWidth, height: wbHeight } = this.whiteboardView.size;\n        if (wbWidth <= 0 || wbHeight <= 0) {\n          return;\n        }\n        const pagesScrollTop = camera.centerY - this.pageRenderer.containerHeight / this.pageRenderer.scale / 2;\n        this.pageRenderer.pagesScrollTo(pagesScrollTop);\n        this.scrollbar.pagesScrollTo(pagesScrollTop);\n      };\n      this.whiteboardView.callbacks.on(\"onCameraUpdated\", handleCameraUpdate);\n      return () => this.whiteboardView.callbacks.off(\"onCameraUpdated\", handleCameraUpdate);\n    });\n    this.sideEffect.add(() => {\n      const { updateUserScroll } = this;\n      this.whiteboardView.callbacks.on(\"onCameraUpdatedByDevice\", updateUserScroll);\n      return () => this.whiteboardView.callbacks.off(\"onCameraUpdatedByDevice\", updateUserScroll);\n    });\n    this.sideEffect.add(() => {\n      const handleSizeUpdate = ({ width: wbWidth, height: wbHeight }) => {\n        if (wbWidth <= 0 || wbHeight <= 0) {\n          return;\n        }\n        this.pageRenderer.setContainerSize(wbWidth, wbHeight);\n        this.scrollbar.setContainerSize(wbWidth, wbHeight);\n        const { pagesIntrinsicWidth, pagesIntrinsicHeight } = this.pageRenderer;\n        this.whiteboardView.moveCameraToContain({\n          originX: 0,\n          originY: this.pageRenderer.pagesScrollTop,\n          width: pagesIntrinsicWidth,\n          height: wbHeight / this.pageRenderer.scale,\n          animationMode: \"immediately\"\n        });\n        this.whiteboardView.setCameraBound({\n          damping: 1,\n          maxContentMode: () => this.pageRenderer.scale,\n          minContentMode: () => this.pageRenderer.scale,\n          centerX: pagesIntrinsicWidth / 2,\n          centerY: pagesIntrinsicHeight / 2,\n          width: pagesIntrinsicWidth,\n          height: pagesIntrinsicHeight\n        });\n      };\n      this.whiteboardView.callbacks.on(\"onSizeUpdated\", handleSizeUpdate);\n      return () => {\n        this.whiteboardView.callbacks.off(\"onSizeUpdated\", handleSizeUpdate);\n      };\n    }, \"whiteboard-size-update\");\n    this.sideEffect.addEventListener(\n      window,\n      \"keyup\",\n      (ev) => {\n        if (this.readonly || !this.box.focus || this.box.minimized || isEditable(ev.target)) {\n          return;\n        }\n        if (this.docsViewReadonly) {\n          return;\n        }\n        let newPageScrollTop = null;\n        switch (ev.key) {\n          case \"PageDown\": {\n            newPageScrollTop = this.pageRenderer.pagesScrollTop + this.pageRenderer.containerHeight / this.pageRenderer.scale;\n            break;\n          }\n          case \"PageUp\": {\n            newPageScrollTop = this.pageRenderer.pagesScrollTop - this.pageRenderer.containerHeight / this.pageRenderer.scale;\n            break;\n          }\n          case \"ArrowDown\": {\n            newPageScrollTop = this.pageRenderer.pagesScrollTop + this.pageRenderer.containerHeight / 4 / this.pageRenderer.scale;\n            break;\n          }\n          case \"ArrowUp\": {\n            newPageScrollTop = this.pageRenderer.pagesScrollTop - this.pageRenderer.containerHeight / 4 / this.pageRenderer.scale;\n            break;\n          }\n        }\n        if (newPageScrollTop !== null) {\n          if (this._onUserScroll) {\n            this._onUserScroll(newPageScrollTop);\n          } else {\n            this.pageScrollTo(newPageScrollTop);\n            this.updateUserScroll();\n          }\n        }\n      },\n      { capture: true }\n    );\n  }\n  debounce(fn, options, disposerID) {\n    const dFn = debounceFn(fn, options);\n    this.sideEffect.addDisposer(() => dFn.cancel(), disposerID);\n    return dFn;\n  }\n  wrapClassName(className) {\n    return \"netless-app-docs-viewer-static-\" + className;\n  }\n  async getBase64FromUrl(url) {\n    const data = await fetch(this._invalidate(url));\n    const blob = await data.blob();\n    return new Promise((resolve) => {\n      const reader = new FileReader();\n      reader.readAsDataURL(blob);\n      reader.onloadend = () => {\n        const base64data = reader.result;\n        resolve(base64data);\n      };\n    });\n  }\n  _invalidate(url) {\n    try {\n      const a = new URL(url);\n      a.searchParams.set(\"t\", Date.now().toString());\n      return a.toString();\n    } catch {\n      return url;\n    }\n  }\n  reportProgress(progress, result) {\n    window.postMessage({\n      type: \"@netless/_result_save_pdf_\",\n      appId: this.appId,\n      progress,\n      result\n    });\n  }\n}\nclass DynamicDocsViewer {\n  constructor({ context, whiteboardView, box, pages }) {\n    this.sideEffect = new SideEffectManager();\n    this.docsViewReadonly = false;\n    this.onPlayPPT = () => {\n      const room = this.context.getRoom();\n      if (room) {\n        room.pptNextStep();\n      }\n    };\n    this._scaleDocsToFitImpl = () => {\n      const page = this.pages[this.getPageIndex()];\n      if (page) {\n        this.whiteboardView.moveCameraToContain({\n          originX: -page.width / 2,\n          originY: -page.height / 2,\n          width: page.width,\n          height: page.height,\n          animationMode: \"immediately\"\n        });\n        this.whiteboardView.setCameraBound({\n          damping: 1,\n          maxContentMode: () => this.whiteboardView.camera.scale,\n          minContentMode: () => this.whiteboardView.camera.scale,\n          centerX: 0,\n          centerY: 0,\n          width: page.width,\n          height: page.height\n        });\n      }\n    };\n    this._scaleDocsToFitDebounced = () => {\n      this.sideEffect.setTimeout(this._scaleDocsToFitImpl, 1e3, \"_scaleDocsToFitDebounced\");\n    };\n    this.scaleDocsToFit = () => {\n      this._scaleDocsToFitImpl();\n      this._scaleDocsToFitDebounced();\n    };\n    this.onNewPageIndex = (index) => {\n      this.jumpToPage(index, true);\n    };\n    this.context = context;\n    this.whiteboardView = whiteboardView;\n    this.box = box;\n    this.pages = pages;\n    this.displayer = context.getDisplayer();\n    this.viewer = new DocsViewer({\n      readonly: !context.getIsWritable(),\n      box,\n      pages,\n      onNewPageIndex: this.onNewPageIndex,\n      onPlay: this.onPlayPPT\n    });\n    this.render();\n    this.sideEffect.add(() => {\n      const handler = (isWritable) => {\n        this.viewer.setReadonly(!isWritable);\n      };\n      this.context.emitter.on(\"writableChange\", handler);\n      return () => this.context.emitter.off(\"writableChange\", handler);\n    });\n    this.sideEffect.add(() => {\n      const handler = (sceneState) => {\n        this.jumpToPage(sceneState.index);\n      };\n      this.context.emitter.on(\"sceneStateChange\", handler);\n      return () => this.context.emitter.off(\"sceneStateChange\", handler);\n    });\n  }\n  setDocsViewReadonly(isReadonly) {\n    this.docsViewReadonly = isReadonly;\n  }\n  mount() {\n    this.viewer.mount();\n    const pageIndex = this.getPageIndex();\n    if (pageIndex !== 0) {\n      this.jumpToPage(pageIndex);\n    }\n    this.scaleDocsToFit();\n    this.sideEffect.add(() => {\n      this.whiteboardView.callbacks.on(\"onSizeUpdated\", this.scaleDocsToFit);\n      return () => {\n        this.whiteboardView.callbacks.off(\"onSizeUpdated\", this.scaleDocsToFit);\n      };\n    });\n    return this;\n  }\n  unmount() {\n    this.viewer.unmount();\n    return this;\n  }\n  destroy() {\n    this.sideEffect.flushAll();\n    this.unmount();\n    this.viewer.destroy();\n  }\n  getPageIndex() {\n    return this.displayer.state.sceneState.index;\n  }\n  jumpToPage(index, reset) {\n    var _a, _b;\n    index = clamp(index, 0, this.pages.length - 1);\n    if (index !== this.getPageIndex()) {\n      if (this.context.getIsWritable()) {\n        const initScenePath = this.context.getInitScenePath();\n        const scene = (_b = (_a = this.context.getScenes()) == null ? void 0 : _a[index]) == null ? void 0 : _b.name;\n        if (initScenePath && scene) {\n          this.context.setScenePath(`${initScenePath}/${scene}`);\n        }\n        this.scaleDocsToFit();\n      }\n    }\n    if (index !== this.viewer.pageIndex) {\n      this.viewer.setPageIndex(index);\n    }\n    if (reset) {\n      const room = this.context.getRoom();\n      if (room) {\n        const pptState = room.state.globalState.__pptState;\n        room.setGlobalState({\n          __pptState: pptState && {\n            uuid: pptState.uuid,\n            pageIndex: index,\n            disableAutoPlay: pptState.disableAutoPlay\n          }\n        });\n      }\n    }\n  }\n  render() {\n    this.viewer.$content.appendChild(this.renderMask());\n    this.viewer.$content.appendChild(this.renderWhiteboardView());\n    this.sideEffect.addEventListener(window, \"keydown\", (ev) => {\n      var _a;\n      if (this.docsViewReadonly) {\n        return;\n      }\n      if (this.box.focus && !isEditable(ev.target)) {\n        switch (ev.key) {\n          case \"ArrowUp\":\n          case \"ArrowLeft\": {\n            this.jumpToPage(this.getPageIndex() - 1, true);\n            break;\n          }\n          case \"ArrowRight\":\n          case \"ArrowDown\": {\n            (_a = this.context.getRoom()) == null ? void 0 : _a.pptNextStep();\n            break;\n          }\n        }\n      }\n    });\n  }\n  renderMask() {\n    if (!this.$mask) {\n      const $mask = document.createElement(\"div\");\n      $mask.className = this.wrapClassName(\"mask\");\n      this.$mask = $mask;\n      const $back = document.createElement(\"button\");\n      $back.className = this.wrapClassName(\"back\");\n      const $next = document.createElement(\"button\");\n      $next.className = this.wrapClassName(\"next\");\n    }\n    return this.$mask;\n  }\n  renderWhiteboardView() {\n    if (!this.$whiteboardView) {\n      this.$whiteboardView = document.createElement(\"div\");\n      this.$whiteboardView.className = this.wrapClassName(\"wb-view\");\n      this.sideEffect.addEventListener(this.$whiteboardView, \"click\", (ev) => {\n        var _a;\n        const room = this.context.getRoom();\n        if (room && room.state.memberState.currentApplianceName === \"clicker\") {\n          for (let el = ev.target; el; el = el.parentElement) {\n            if ((_a = el.classList) == null ? void 0 : _a.contains(\"ppt-event-source\")) {\n              return;\n            }\n          }\n          room.pptNextStep();\n        }\n      });\n      this.context.mountView(this.$whiteboardView);\n    }\n    return this.$whiteboardView;\n  }\n  wrapClassName(className) {\n    return \"netless-app-docs-viewer-dynamic-\" + className;\n  }\n}\nconst kind = \"DocsViewer\";\nconst NetlessAppDocsViewer = {\n  kind,\n  setup(context) {\n    const box = context.getBox();\n    const scenes = context.getScenes();\n    if (!scenes) {\n      throw new Error(\"[Docs Viewer]: scenes not found.\");\n    }\n    const whiteboardView = context.getView();\n    if (!whiteboardView) {\n      throw new Error(\"[Docs Viewer]: no whiteboard view.\");\n    }\n    const pages = scenes.map(\n      ({ ppt }) => ppt ? {\n        width: ppt.width,\n        height: ppt.height,\n        src: ppt.src,\n        thumbnail: ppt.previewURL\n      } : null\n    ).filter((page) => Boolean(page));\n    if (pages.length <= 0) {\n      throw new Error(\"[Docs Viewer]: empty scenes.\");\n    }\n    box.mountStyles(styles);\n    let docsViewer = null;\n    if (pages[0].src.startsWith(\"ppt\")) {\n      docsViewer = setupDynamicDocsViewer(\n        context,\n        whiteboardView,\n        box,\n        pages\n      );\n    } else {\n      docsViewer = setupStaticDocsViewer(\n        context,\n        whiteboardView,\n        box,\n        pages\n      );\n    }\n    const appOptions = context.getAppOptions() || {};\n    if (appOptions.justDocsViewReadonly) {\n      docsViewer.setDocsViewReadonly(true);\n    }\n    return {\n      setDocsViewReadonly: (bol) => {\n        docsViewer == null ? void 0 : docsViewer.setDocsViewReadonly(bol);\n      }\n    };\n  }\n};\nfunction setupStaticDocsViewer(context, whiteboardView, box, pages) {\n  var _a;\n  whiteboardView.disableCameraTransform = !context.getIsWritable();\n  const docsViewer = new StaticDocsViewer({\n    context,\n    whiteboardView,\n    readonly: !context.getIsWritable(),\n    box,\n    pages,\n    pageScrollTop: (_a = context.getAttributes()) == null ? void 0 : _a.pageScrollTop,\n    mountWhiteboard: context.mountView.bind(context),\n    onUserScroll: (pageScrollTop) => {\n      var _a2;\n      if (((_a2 = context.getAttributes()) == null ? void 0 : _a2.pageScrollTop) !== pageScrollTop && !box.readonly) {\n        context.updateAttributes([\"pageScrollTop\"], pageScrollTop);\n      }\n    },\n    baseScenePath: context.getInitScenePath(),\n    appId: context.appId\n  }).mount();\n  docsViewer.viewer.onPageIndexChanged = (index) => {\n    context.dispatchAppEvent(\"pageStateChange\", { index, length: pages.length });\n  };\n  context.dispatchAppEvent(\"pageStateChange\", {\n    index: docsViewer.viewer.pageIndex,\n    length: pages.length\n  });\n  context.emitter.on(\"attributesUpdate\", (attributes) => {\n    if (attributes) {\n      if (attributes.pageScrollTop != null) {\n        docsViewer.syncPageScrollTop(attributes.pageScrollTop);\n      }\n    }\n  });\n  context.emitter.on(\"writableChange\", (isWritable) => {\n    docsViewer.setReadonly(!isWritable);\n    whiteboardView.disableCameraTransform = !isWritable;\n  });\n  return docsViewer;\n}\nfunction setupDynamicDocsViewer(context, whiteboardView, box, pages) {\n  whiteboardView.disableCameraTransform = true;\n  const docsViewer = new DynamicDocsViewer({\n    context,\n    whiteboardView,\n    box,\n    pages\n  }).mount();\n  docsViewer.viewer.onPageIndexChanged = (index) => {\n    context.dispatchAppEvent(\"pageStateChange\", { index, length: pages.length });\n  };\n  context.dispatchAppEvent(\"pageStateChange\", {\n    index: docsViewer.getPageIndex(),\n    length: pages.length\n  });\n  context.mountView(docsViewer.$whiteboardView);\n  if (context.isAddApp) {\n    whiteboardView.callbacks.once(\n      \"onSizeUpdated\",\n      ({ width: contentWidth, height: contentHeight }) => {\n        if (pages.length > 0 && box.state !== \"maximized\") {\n          const { width: pageWidth, height: pageHeight } = pages[0];\n          const preferHeight = pageHeight / pageWidth * contentWidth;\n          const diff = preferHeight - contentHeight;\n          if (diff !== 0 && context.getIsWritable()) {\n            context.emitter.emit(\"setBoxSize\", {\n              width: box.width,\n              height: box.height + diff / box.containerRect.height\n            });\n          }\n        }\n      }\n    );\n  }\n  return docsViewer;\n}\nexport { NetlessAppDocsViewer as default };\n//# sourceMappingURL=main.es.js.map\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v16.14.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=null,qa={};\nfunction ra(){if(pa)for(var a in qa){var b=qa[a],c=pa.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!sa[c]){if(!b.extractEvents)throw Error(u(97,a));sa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(ta.hasOwnProperty(h))throw Error(u(99,h));ta[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ua(k[e],g,h);e=!0}else f.registrationName?(ua(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction ua(a,b,c){if(va[a])throw Error(u(100,a));va[a]=b;wa[a]=b.eventTypes[c].dependencies}var sa=[],ta={},va={},wa={};function xa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!qa.hasOwnProperty(c)||qa[c]!==d){if(qa[c])throw Error(u(102,c));qa[c]=d;b=!0}}b&&ra()}var ya=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),za=null,Aa=null,Ba=null;\nfunction Ca(a){if(a=ma(a)){if(\"function\"!==typeof za)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),za(a.stateNode,a.type,b))}}function Da(a){Aa?Ba?Ba.push(a):Ba=[a]:Aa=a}function Ea(){if(Aa){var a=Aa,b=Ba;Ba=Aa=null;Ca(a);if(b)for(a=0;a<b.length;a++)Ca(b[a])}}function Fa(a,b){return a(b)}function Ga(a,b,c,d,e){return a(b,c,d,e)}function Ha(){}var Ia=Fa,Ja=!1,Ka=!1;function La(){if(null!==Aa||null!==Ba)Ha(),Ea()}\nfunction Ma(a,b,c){if(Ka)return a(b,c);Ka=!0;try{return Ia(a,b,c)}finally{Ka=!1,La()}}var Na=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Oa=Object.prototype.hasOwnProperty,Pa={},Qa={};\nfunction Ra(a){if(Oa.call(Qa,a))return!0;if(Oa.call(Pa,a))return!1;if(Na.test(a))return Qa[a]=!0;Pa[a]=!0;return!1}function Sa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction Ta(a,b,c,d){if(null===b||\"undefined\"===typeof b||Sa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(Ta(b,c,e,d)&&(c=null),d||null===e?Ra(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar Ya=/^(.*)[\\\\\\/]/,E=\"function\"===typeof Symbol&&Symbol.for,Za=E?Symbol.for(\"react.element\"):60103,$a=E?Symbol.for(\"react.portal\"):60106,ab=E?Symbol.for(\"react.fragment\"):60107,bb=E?Symbol.for(\"react.strict_mode\"):60108,cb=E?Symbol.for(\"react.profiler\"):60114,db=E?Symbol.for(\"react.provider\"):60109,eb=E?Symbol.for(\"react.context\"):60110,fb=E?Symbol.for(\"react.concurrent_mode\"):60111,gb=E?Symbol.for(\"react.forward_ref\"):60112,hb=E?Symbol.for(\"react.suspense\"):60113,ib=E?Symbol.for(\"react.suspense_list\"):\n60120,jb=E?Symbol.for(\"react.memo\"):60115,kb=E?Symbol.for(\"react.lazy\"):60116,lb=E?Symbol.for(\"react.block\"):60121,mb=\"function\"===typeof Symbol&&Symbol.iterator;function nb(a){if(null===a||\"object\"!==typeof a)return null;a=mb&&a[mb]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function ob(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction pb(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ab:return\"Fragment\";case $a:return\"Portal\";case cb:return\"Profiler\";case bb:return\"StrictMode\";case hb:return\"Suspense\";case ib:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case eb:return\"Context.Consumer\";case db:return\"Context.Provider\";case gb:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case jb:return pb(a.type);case lb:return pb(a.render);case kb:if(a=1===a._status?a._result:null)return pb(a)}return null}function qb(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=pb(a.type);c=null;d&&(c=pb(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ya,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n    in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&Xa(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!ya)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<sa.length;k++){var l=sa[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){Ja||Ha();var e=id,f=Ja;Ja=!0;try{Ga(e,a,b,c,d)}finally{(Ja=f)||La()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{Ma(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{Ma(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=wa[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Da(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;ya&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),Ja)mc(a);else{Ja=!0;try{Fa(Ce,a)}finally{Ja=!1,La()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=ya&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(pa)throw Error(u(101));pa=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ra();var xf=Nc;la=Qd;ma=xf;na=Pd;xa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=Wa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Za:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case $a:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nnb(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Za:return c.key===e?c.type===ab?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case $a:return c.key===e?l(a,b,c,d):null}if(Og(c)||nb(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Za:return a=a.get(null===d.key?c:d.key)||null,d.type===ab?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case $a:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||nb(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=nb(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Wa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(va.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(va.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):va.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(va.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&Xa(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:qb(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=qb(c));null!==c&&pb(c.type);b=b.value;null!==a&&1===a.tag&&pb(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):Xa(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=Wa.ReactCurrentDispatcher,dj=Wa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.updateQueue=l.updateQueue,g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):(g.updateQueue=\nnull,g.memoizedState=null)}var m=0!==(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;\nbreak a}h=void 0;g=b;var A=e.pingCache;null===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((pb(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gb)return 11;if(a===jb)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ab:return Wg(c.children,e,f,b);case fb:g=8;e|=7;break;case bb:g=8;e|=1;break;case cb:return a=Sh(12,c,b,e|8),a.elementType=cb,a.type=cb,a.expirationTime=f,a;case hb:return a=Sh(13,c,b,e),a.type=hb,a.elementType=hb,a.expirationTime=f,a;case ib:return a=Sh(19,c,b,e),a.elementType=ib,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case db:g=\n10;break a;case eb:g=9;break a;case gb:g=11;break a;case jb:g=14;break a;case kb:g=16;d=null;break a;case lb:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$a,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nza=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};Fa=Mj;\nGa=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};Ha=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};Ia=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,xa,ta,Xd,function(a){jc(a,Wd)},Da,Ea,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Wa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.14.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.14.0\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","var e=Object.defineProperty,t=Object.defineProperties,i=Object.getOwnPropertyDescriptors,s=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,n=(t,i,s)=>i in t?e(t,i,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[i]=s,a=(e,t)=>{for(var i in t||(t={}))r.call(t,i)&&n(e,i,t[i]);if(s)for(var i of s(t))o.call(t,i)&&n(e,i,t[i]);return e};import l,{Component as c}from\"react\";import d from\"react-dom\";import u from\"video.js\";const p=\"0.1.0-alpha.5\",h={src:\"\",currentTime:0,hostTime:0,muted:!1,paused:!0,volume:1},m={currentTimeMaxError:1,syncInterval:1e3,retryInterval:15e3,verbose:!1,log:console.log.bind(console)};let g=m;function v(e){g=a(a({},m),e)}function f(e,t){if(e.paused)return e.currentTime;const i=function(e){if(e.player)return e.player.beginTimestamp+e.player.progressTime;if(e.room)return e.room.calibrationTimestamp}(t);return i?e.currentTime+(i-e.hostTime)/1e3:e.currentTime}const y=navigator.userAgent.includes(\"Safari\"),A=navigator.userAgent.includes(\"iPhone\")||navigator.userAgent.includes(\"iPad\"),b=[\".aac\",\".mid\",\".midi\",\".mp3\",\".ogg\",\".oga\",\".wav\",\".weba\"];var I=\"object\"==typeof global&&global&&global.Object===Object&&global,S=\"object\"==typeof self&&self&&self.Object===Object&&self,T=I||S||Function(\"return this\")(),C=T.Symbol,E=Object.prototype,k=E.hasOwnProperty,P=E.toString,j=C?C.toStringTag:void 0;var B=Object.prototype.toString;var w=C?C.toStringTag:void 0;function x(e){return null==e?void 0===e?\"[object Undefined]\":\"[object Null]\":w&&w in Object(e)?function(e){var t=k.call(e,j),i=e[j];try{e[j]=void 0;var s=!0}catch(o){}var r=P.call(e);return s&&(t?e[j]=i:delete e[j]),r}(e):function(e){return B.call(e)}(e)}var H=/\\s/;var Q=/^\\s+/;function M(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&H.test(e.charAt(t)););return t}(e)+1).replace(Q,\"\"):e}function L(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)}var N=/^[-+]0x[0-9a-f]+$/i,W=/^0b[01]+$/i,V=/^0o[0-7]+$/i,O=parseInt;function z(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return null!=e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==x(e)}(e))return NaN;if(L(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=L(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=M(e);var i=W.test(e);return i||V.test(e)?O(e.slice(2),i?2:8):N.test(e)?NaN:+e}var D=function(){return T.Date.now()},Z=Math.max,R=Math.min;function U(e,t,i){var s,r,o,n,a,l,c=0,d=!1,u=!1,p=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function h(t){var i=s,o=r;return s=r=void 0,c=t,n=e.apply(o,i)}function m(e){return c=e,a=setTimeout(v,t),d?h(e):n}function g(e){var i=e-l;return void 0===l||i>=t||i<0||u&&e-c>=o}function v(){var e=D();if(g(e))return f(e);a=setTimeout(v,function(e){var i=t-(e-l);return u?R(i,o-(e-c)):i}(e))}function f(e){return a=void 0,p&&s?h(e):(s=r=void 0,n)}function y(){var e=D(),i=g(e);if(s=arguments,r=this,l=e,i){if(void 0===a)return m(l);if(u)return clearTimeout(a),a=setTimeout(v,t),h(l)}return void 0===a&&(a=setTimeout(v,t)),n}return t=z(t)||0,L(i)&&(d=!!i.leading,o=(u=\"maxWait\"in i)?Z(z(i.maxWait)||0,t):o,p=\"trailing\"in i?!!i.trailing:p),y.cancel=function(){void 0!==a&&clearTimeout(a),c=0,s=l=r=a=void 0},y.flush=function(){return void 0===a?n:f(D())},y}class F extends c{constructor(e){super(e),this.seeking=!1,this.mobileSeeking=!1,this.track=null,this.hoverTime=null,this.offset=0,this.secondsPrefix=\"00:00:\",this.minutesPrefix=\"00:\",this.seekPause=!1,this.handleTouchSeeking=e=>{let t=0;for(let i=0;i<e.changedTouches.length;i++)t=e.changedTouches[i].pageX;t=t<0?0:t,this.mobileSeeking&&this.changeCurrentTimePosition(t)},this.handleSeeking=e=>{this.seeking&&this.changeCurrentTimePosition(e.pageX)},this.setTrackWidthState=()=>{this.track&&this.setState({trackWidth:this.track.offsetWidth})},this.handleTrackHover=(e,t)=>{if(this.track){const i=this.props.scale||1;let s;s=e?0:(t.pageX-this.track.getBoundingClientRect().left)/i,this.setState({seekHoverPosition:s,trackWidth:this.track.offsetWidth})}},this.mouseSeekingHandler=e=>{this.setSeeking(!1,e),this.onMouseUp()},this.setSeeking=(e,t)=>{t.preventDefault(),this.handleSeeking(t),this.seeking=e,this.setState({seekHoverPosition:e?this.state.seekHoverPosition:0})},this.mobileTouchSeekingHandler=()=>{this.setMobileSeeking(!1)},this.setMobileSeeking=e=>{this.mobileSeeking=e,this.setState({seekHoverPosition:e?this.state.seekHoverPosition:0})},this.renderBufferProgress=()=>{if(this.props.buffered){const e=a(a({},this.getPositionStyle(this.props.buffered)),this.props.bufferColor&&{backgroundColor:this.props.bufferColor});return l.createElement(\"div\",{className:\"buffered\",style:e})}return null},this.renderProgress=()=>{const e=a(a({},this.getPositionStyle(this.props.current)),this.props.sliderColor&&{backgroundColor:this.props.sliderColor});return l.createElement(\"div\",{className:\"connect\",style:e})},this.renderHoverProgress=()=>{const e=a(a({},this.getSeekHoverPosition()),this.props.sliderHoverColor&&{backgroundColor:this.props.sliderHoverColor});return l.createElement(\"div\",{className:\"seek-hover\",style:e})},this.renderThumb=()=>l.createElement(\"div\",{className:this.isThumbActive()?\"thumb active\":\"thumb\",style:this.getThumbHandlerPosition()},l.createElement(\"div\",{style:{backgroundColor:this.props.thumbColor},className:\"handler\"})),this.onMouseDown=e=>{var t,i;this.props.pause&&!this.props.paused&&(this.props.pause(),this.seekPause=!0),this.setSeeking(!0,e),null==(i=(t=this.props).onSeekStart)||i.call(t)},this.onMouseUp=()=>{var e,t;this.props.play&&this.seekPause&&(this.props.play(),this.seekPause=!1),null==(t=(e=this.props).onSeekEnd)||t.call(e)},this.props.secondsPrefix&&(this.secondsPrefix=this.props.secondsPrefix),this.props.minutesPrefix&&(this.minutesPrefix=this.props.minutesPrefix),this.state={ready:!1,trackWidth:0,seekHoverPosition:0}}componentDidMount(){this.setTrackWidthState(),window.addEventListener(\"resize\",this.setTrackWidthState),window.addEventListener(\"mousemove\",this.handleSeeking),window.addEventListener(\"mouseup\",this.mouseSeekingHandler),window.addEventListener(\"touchmove\",this.handleTouchSeeking),window.addEventListener(\"touchend\",this.mobileTouchSeekingHandler)}componentWillUnmount(){window.removeEventListener(\"resize\",this.setTrackWidthState),window.removeEventListener(\"mousemove\",this.handleSeeking),window.removeEventListener(\"mouseup\",this.mouseSeekingHandler),window.removeEventListener(\"touchmove\",this.handleTouchSeeking),window.removeEventListener(\"touchend\",this.mobileTouchSeekingHandler)}changeCurrentTimePosition(e){if(this.track){const t=this.props.scale||1;let i=(e-this.track.getBoundingClientRect().left)/t;i=Math.min(this.state.trackWidth,Math.max(0,i)),this.setState({seekHoverPosition:i});const s=+(i/this.state.trackWidth*this.props.total).toFixed(0);this.props.onChange(s)}}getPositionStyle(e){return{transform:`scaleX(${100*e/this.props.total/100})`}}getThumbHandlerPosition(){return{transform:`translateX(${this.state.trackWidth/(this.props.total/this.props.current)}px)`}}getSeekHoverPosition(){return{transform:`scaleX(${100*this.state.seekHoverPosition/this.state.trackWidth/100})`}}getHoverTimePosition(){let e=0;return this.hoverTime&&(e=this.state.seekHoverPosition-this.hoverTime.offsetWidth/2,this.props.limitTimeTooltipBySides&&(e<0?e=0:e+this.hoverTime.offsetWidth>this.state.trackWidth&&(e=this.state.trackWidth-this.hoverTime.offsetWidth))),{transform:`translateX(${e}px)`}}secondsToTime(e){e=Math.round(e+this.offset);const t=Math.floor(e/3600),i=e%3600,s=Math.floor(i/60),r=Math.ceil(i%60);return{hh:t.toString(),mm:s<10?\"0\"+s:s.toString(),ss:r<10?\"0\"+r:r.toString()}}getHoverTime(){const e=100*this.state.seekHoverPosition/this.state.trackWidth,t=Math.floor(+e*(this.props.total/100)),i=this.secondsToTime(t);return this.props.total+this.offset<60?this.secondsPrefix+i.ss:this.props.total+this.offset<3600?this.minutesPrefix+i.mm+\":\"+i.ss:i.hh+\":\"+i.mm+\":\"+i.ss}isThumbActive(){return this.state.seekHoverPosition>0||this.seeking}drawHoverTime(){return this.props.hideHoverTime?null:l.createElement(\"div\",{className:this.isThumbActive()?\"hover-time active\":\"hover-time\",style:this.getHoverTimePosition(),ref:e=>this.hoverTime=e},this.getHoverTime())}render(){return l.createElement(\"div\",{className:\"seek-slider\"},l.createElement(\"div\",{className:\"track\",ref:e=>this.track=e,onMouseMove:e=>this.handleTrackHover(!1,e),onMouseLeave:e=>this.handleTrackHover(!0,e),onMouseDown:this.onMouseDown,onTouchStart:e=>{this.setMobileSeeking(!0),this.onMouseDown(e)},onMouseUp:this.onMouseUp,onTouchEnd:this.onMouseUp},l.createElement(\"div\",{className:\"main\"},this.renderBufferProgress(),this.renderHoverProgress(),this.renderProgress())),this.drawHoverTime(),this.renderThumb())}}class X extends c{constructor(e){super(e),this.stageVolume=0,this.updateVolumeTimer=0,this.onVolumeSeeking=!1,this.onClickOperationButton=()=>{const{paused:e}=this.props;e?this.props.play():this.props.pause()},this.operationButton=()=>{const{paused:e}=this.props;return e?l.createElement(\"img\",{src:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIiBjbGFzcz0iaWNvbmlmeSBpY29uaWZ5LS1tZGkiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOCA1LjE0djE0bDExLTdsLTExLTd6IiBmaWxsPSIjZmZmIj48L3BhdGg+PC9zdmc+Cg==\"}):l.createElement(\"img\",{src:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIiBjbGFzcz0iaWNvbmlmeSBpY29uaWZ5LS1tZGkiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTQgMTloNFY1aC00TTYgMTloNFY1SDZ2MTR6IiBmaWxsPSIjZmZmIj48L3BhdGg+PC9zdmc+Cg==\"})},this.operationVolumeButton=()=>this.props.volume>.9?l.createElement(\"img\",{src:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIiBjbGFzcz0iaWNvbmlmeSBpY29uaWZ5LS1tZGkiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTQgMy4yM3YyLjA2YzIuODkuODYgNSAzLjU0IDUgNi43MXMtMi4xMSA1Ljg0LTUgNi43djIuMDdjNC0uOTEgNy00LjQ5IDctOC43N2MwLTQuMjgtMy03Ljg2LTctOC43N00xNi41IDEyYzAtMS43Ny0xLTMuMjktMi41LTQuMDNWMTZjMS41LS43MSAyLjUtMi4yNCAyLjUtNE0zIDl2Nmg0bDUgNVY0TDcgOUgzeiIgZmlsbD0iI2ZmZiI+PC9wYXRoPjwvc3ZnPgo=\"}):0===this.props.volume?l.createElement(\"img\",{src:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIiBjbGFzcz0iaWNvbmlmeSBpY29uaWZ5LS1tZGkiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNyA5djZoNGw1IDVWNGwtNSA1SDd6IiBmaWxsPSIjZmZmIj48L3BhdGg+PC9zdmc+Cg==\"}):l.createElement(\"img\",{src:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIiBjbGFzcz0iaWNvbmlmeSBpY29uaWZ5LS1tZGkiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNSA5djZoNGw1IDVWNEw5IDltOS41IDNjMC0xLjc3LTEtMy4yOS0yLjUtNC4wM1YxNmMxLjUtLjcxIDIuNS0yLjI0IDIuNS00eiIgZmlsbD0iI2ZmZiI+PC9wYXRoPjwvc3ZnPgo=\"}),this.handleClickVolume=()=>{0===this.props.volume?0!==this.stageVolume?this.props.setVolume(this.stageVolume):this.props.setVolume(1):(this.stageVolume=this.props.volume,this.props.setVolume(0))},this.onChange=e=>{this.setState({currentTime:e}),e&&this.changeTime(e)},this.changeTime=U((e=>{this.props.setCurrentTime(e)}),50),this.onVolumeChange=e=>{this.changeVolume(e),this.setState({seekVolume:e/100})},this.changeVolume=U((e=>{this.props.setVolume(e/100)}),50),this.onVolumeSeekStart=()=>{this.onVolumeSeeking=!0},this.onVolumeSeekEnd=U((()=>{this.onVolumeSeeking=!1}),500),this.onProgressSeekStart=()=>this.setState({isPlayerSeeking:!0}),this.onProgressSeekEnd=U((()=>{this.setState({isPlayerSeeking:!1})}),500),this.state={isPlayerSeeking:!1,isVolumeHover:!1,seekVolume:1,visible:!0,currentTime:0},this.stageVolume=e.volume}componentDidMount(){this.updateVolumeTimer=setInterval((()=>{this.onVolumeSeeking||this.setState({seekVolume:this.props.volume}),this.state.isPlayerSeeking||this.setState({currentTime:this.props.currentTime})}),100)}componentWillUnmount(){this.updateVolumeTimer&&clearInterval(this.updateVolumeTimer)}render(){const{duration:e,currentTime:t}=this.props;return l.createElement(\"div\",{className:\"player-controller\",style:{opacity:this.props.visible?\"1\":\"0\"}},l.createElement(\"div\",{className:\"player-controller-progress\"},l.createElement(F,{total:e,current:this.state.currentTime,onChange:this.onChange,buffered:this.props.buffered,bufferColor:\"rgba(255,255,255,0.3)\",hideHoverTime:!0,limitTimeTooltipBySides:!0,onSeekStart:this.onProgressSeekStart,onSeekEnd:this.onProgressSeekEnd,play:this.props.play,pause:this.props.pause,paused:this.props.paused,scale:this.props.scale})),l.createElement(\"div\",{className:\"player-controller-actions\"},l.createElement(\"div\",{className:\"player-controller-actions-left\"},l.createElement(\"div\",{onClick:this.onClickOperationButton,className:\"player-controller-play\"},this.operationButton()),l.createElement(\"div\",{className:\"player-volume-box\",onMouseEnter:()=>this.setState({isVolumeHover:!0}),onMouseLeave:()=>this.setState({isVolumeHover:!1})},l.createElement(\"div\",{onClick:this.handleClickVolume,className:\"player-volume\"},this.operationVolumeButton()),l.createElement(\"div\",{className:\"player-volume-slider\"},l.createElement(F,{total:100,current:100*this.state.seekVolume,onChange:this.onVolumeChange,onSeekStart:this.onVolumeSeekStart,onSeekEnd:this.onVolumeSeekEnd,scale:this.props.scale,limitTimeTooltipBySides:!0,hideHoverTime:!0})))),l.createElement(\"div\",{className:\"player-mid-box-time\"},G(Math.floor(t/1e3)),\" /\",\" \",G(Math.floor(e/1e3)))))}}function G(e){const t=e%60,i=(e-t)/60;if(i>=60){const e=i%60;return`${Y((i-e)/60)}:${Y(e)}:${Y(t)}`}return`${Y(i)}:${Y(t)}`}function Y(e){return e<=9?`0${e}`:`${e}`}let J=99999;var K,q;(q=K||(K={}))[q.Idle=0]=\"Idle\",q[q.Playing=1]=\"Playing\",q[q.Paused=2]=\"Paused\";let $={};function _(e,...t){g.verbose&&console.log(`[RTCEffect] ${e}`,...t)}function ee(e,t,i){function s(t){0===$[t].playState?(e.playEffect(t,i,0,1,0,100,!1,0).then((()=>{_(\">>> Play Success\",{playingId:t})})),$[t].playState=1):_(\">>> Skip Play\",{playingId:t,state:$[t].playState})}function r(e){$[e].playState=0,$[e].previousVideoJSAdvance=0,$[e].previousSeekTargetTime=0,$[e].previousBeginSeekTime=0}t.one(\"ready\",(()=>{var i;const o=(null==(i=null==t?void 0:t.tagAttributes)?void 0:i.src)||\"\";b.includes(\".\"+o.split(\".\").pop()||\"\")||(_(\">>> Mute js player\",{src:o}),t.muted(!0),t.muted=e=>!1);const n=function(){const e=J--,t={playState:K.Idle,previousVideoJSAdvance:0,previousSeekTargetTime:0,previousBeginSeekTime:0};return $[e]=t,e}();_(\">>> Setup\",{playingId:n,src:o}),e.addListener(\"error\",(e=>{_(\">>> Error\",{soundId:e}),r(e)})),e.addListener(\"effectFinished\",(e=>{_(\">>> Finished\",{soundId:e}),r(e)})),t.on(\"play\",(()=>{switch($[n].playState){case 0:_(\">>> Start play\",{playingId:n}),s(n);break;case 2:_(\">>> Resume play\",{playingId:n}),e.resumeEffect(n),$[n].playState=1}})),t.on(\"pause\",(()=>{const t=$[n].playState;switch(t){case 1:_(\">>> Pause play\",{playingId:n}),e.pauseEffect(n),$[n].playState=2;break;default:_(\">>> Skip Pause\",{playingId:n,currenState:t})}})),t.on(\"timeupdate\",(()=>{$[n],e.getEffectCurrentPosition(n).then((i=>{const r=$[n],o=i/1e3,a=t.currentTime(),l=0!==r.previousSeekTargetTime&&0!==r.previousBeginSeekTime;if(_(`>>> EffectSecond rtc: ${o} js: ${a} seeking: ${l}`,{playingId:n}),0==r.playState)return void(t.paused()||(_(\">>> Play effect due to time update.\",{playingId:n}),s(n)));if(l&&o<r.previousSeekTargetTime)return;if(1!==r.playState)return void _(\">>> Skip timupdate\",{playingId:n,state:r.playState,jsTime:t.currentTime(),rtcEffectTime:o});function c(t,i){e.setEffectPosition(i,1e3*t),r.previousBeginSeekTime=Date.now()/1e3,r.previousSeekTargetTime=t}const d=r.previousBeginSeekTime;if(i>0){const e=a-o,t=Math.abs(e),i=.5;if(t>i)if(l){const t=r.previousSeekTargetTime-o,i=Date.now()/1e3-d,s=i+(e>0?e:0),l=a+s;c(l,n),_(\">>> Start seeking after seeking lag\",{jsPlayerTime:a,rtcEffectTime:o,jsPlayerTimerAdvance:e,lastSeekingCost:i,estimatedRTCLag:s,targetRTCSeekTime:l,previousBeginSeekTime:d,timeElapse:t})}else if(t>10)c(a,n),_(\">>> DirectSeek\",{time:a,rtcEffectTime:o,jsPlayerTimerAdvance:e});else{const t=r.previousVideoJSAdvance,i=0,s=a+i;r.previousVideoJSAdvance=i,c(s,n),_(\">>> Start seeking with lag\",{jsPlayerTime:a,rtcEffectTime:o,jsPlayerTimerAdvance:e,previousAdvance:t,estimatedRTCLag:i,targetRTCSeekTime:s})}else l&&(_(\">>> SeekingFinish no lag\",{jsPlayerTime:a,rtcEffectTime:o,jsPlayerTimerAdvance:e,previousBeginSeekTime:d,rtcLagTolerance:i}),r.previousBeginSeekTime=0,r.previousSeekTargetTime=0)}}))})),t.on(\"dispose\",(()=>{$[n].playState&&(e.stopEffect(n),delete $[n],_(\">>> Dispose\",{playingId:n}))}))}))}class te extends c{constructor(){super(...arguments),this.putAttributes=e=>{const{context:t}=this.props,i=t.getAttributes()||{};for(const s in e)i[s]!==e[s]&&t.updateAttributes([s],e[s])}}render(){const{context:e}=this.props,t=e.getRoom(),i=t?void 0:e.getDisplayer(),s=this.putAttributes;return l.createElement(ie,{room:t,player:i,context:e,plugin:{putAttributes:s}})}}class ie extends c{constructor(e){super(e),this.alertMask=null,this.container=l.createRef(),this.controllerHiddenTimer=0,this.syncPlayerTimer=0,this.retryCount=0,this.decreaseRetryTimer=0,this.noSoundSyncCount=0,this.everPlayed=!1,this.showController=()=>{this.setState({controllerVisible:!0}),this.debounceHidingController()},this.play=()=>{var e;const t=null==(e=this.props.room)?void 0:e.calibrationTimestamp;this.debug(\">>> play\",{paused:!1,hostTime:t}),this.isEnabled()&&this.props.plugin.putAttributes({paused:!1,hostTime:t})},this.pause=()=>{const e=f(this.getAttributes(),this.props);this.debug(\">>> pause\",{paused:!0,currentTime:e}),this.isEnabled()&&this.props.plugin.putAttributes({paused:!0,currentTime:e})},this.setVolume=e=>{this.debug(\">>> volume\",{volume:e}),this.isEnabled()&&this.props.plugin.putAttributes({volume:e}),this.isEnabled()&&this.props.plugin.putAttributes({volume:e,muted:0===e})},this.setCurrentTime=e=>{var t;const i=null==(t=this.props.room)?void 0:t.calibrationTimestamp;this.debug(\">>> seek\",{currentTime:e/1e3,hostTime:i}),this.isEnabled()&&this.props.plugin.putAttributes({currentTime:e/1e3,hostTime:i})},this.resetPlayer=()=>{var e;null==(e=this.player)||e.autoplay(!1),this.state.NoSound||(this.debug(\">>> ended\",{paused:!0,currentTime:0}),this.isEnabled()&&this.props.plugin.putAttributes({paused:!0,currentTime:0}))},this.syncPlayerWithAttributes=()=>{var e;const t=this.getAttributes();if(!t)return;const i=this.player;if(!i)return;if(this.state.NoSound&&(this.noSoundSyncCount+=1)%8!=0)return;i.paused()!==t.paused&&(this.debug(\"<<< paused -> %o\",t.paused),t.paused?i.pause():(null==(e=i.play())||e.catch(this.catchPlayFail),this.everPlayed=!0)),i.muted()!==t.muted&&(this.debug(\"<<< muted -> %o\",t.muted),i.muted(t.muted)),i.volume()!==t.volume&&(this.debug(\"<<< volume -> %o\",t.volume),i.volume(t.volume));const s=f(t,this.props);let r=g.currentTimeMaxError;if(this.state.NoSound&&(r*=3),s>i.duration())this.resetPlayer();else if(Math.abs(i.currentTime()-s)>r){if(this.debug(\"<<< currentTime -> %o\",s),A)return void(this.everPlayed?i.currentTime(s):this.debug(\"<<< ignore iOS idle time update. -> %o (ignored)\",s));i.currentTime(s)}},this.debounceHidingController=()=>{this.controllerHiddenTimer&&(clearTimeout(this.controllerHiddenTimer),this.controllerHiddenTimer=0),this.controllerHiddenTimer=setTimeout((()=>{this.setState({controllerVisible:!1}),this.controllerHiddenTimer=0}),3e3)},this.decreaseRetryCount=()=>{this.player&&this.retryCount>0&&(this.retryCount=this.retryCount-1)},this.catchPlayFail=e=>{var t,i;const s=String(e);if(y&&s.includes(\"NotAllowedError\")||s.includes(\"interact\"))null==(t=this.player)||t.autoplay(\"any\"),this.setState({NoSound:!0});else{const t=null==(i=this.player)?void 0:i.error();t&&(this.retryCount<=3?(this.initPlayer(),this.retryCount=this.retryCount+1):(this.debug(\"catch videojs media error\",t),this.setState({MediaError:!0}))),this.debug(\"catch error\",e)}},this.fixPlayFail=()=>{this.debug(\"try to fix play state\"),this.setState({NoSound:!1});const{muted:e,volume:t}=this.getAttributes();this.player&&(this.player.muted(e),this.player.volume(t))},this.initPlayer=async()=>{var e;null==(e=this.player)||e.dispose(),this.player=void 0,this.debug(\"creating elements ...\");const{type:t,src:i,poster:s}=this.getAttributes(),r=document.createElement(\"div\");r.setAttribute(\"data-vjs-player\",\"\");const o=document.createElement(\"video\");o.className=\"video-js\",o.crossOrigin=\"anonymous\",s&&(o.poster=s),o.setAttribute(\"playsInline\",\"\"),o.setAttribute(\"webkit-playsinline\",\"\");const n=document.createElement(\"source\");new URL(i).pathname.endsWith(\".m3u8\")?n.type=\"application/x-mpegURL\":o.src=i,n.src=i,t&&(n.type=t),o.appendChild(n),r.appendChild(o),this.container.current.appendChild(r),await new Promise((e=>(window.requestAnimationFrame||window.setTimeout)(e))),this.debug(\"initializing videojs() ...\");const a=u(o);this.player=a,window.player=a,a.one(\"loadedmetadata\",this.gracefullyUpdate);const l=window.__mediaPlayerAudioEffectClient;void 0!==l&&ee(l,a,i);const c=window.__pcmProxy;void 0!==c&&(a.one(\"play\",(()=>{const e=c.connect(o);this.audioSource=e,this.debug(\"Connect to PCMProxy \",i)})),a.one(\"dispose\",(()=>{this.audioSource&&(this.audioSource.disconnect(),this.audioSource=void 0,this.debug(\"Disconnect from PCMProxy\",i))}))),a.on(\"ready\",(()=>{var e;null==(e=g.onPlayer)||e.call(g,a),a.on(\"timeupdate\",this.gracefullyUpdate),a.on(\"volumechange\",this.gracefullyUpdate),a.on(\"seeked\",this.gracefullyUpdate),a.on(\"play\",this.gracefullyUpdate),a.on(\"pause\",this.gracefullyUpdate),a.on(\"ended\",this.resetPlayer)})),a.on(\"error\",this.catchPlayFail),this.setState({MediaError:!1})},this.gracefullyUpdate=()=>this.setState({updater:!this.state.updater}),this.setupAlert=e=>{e&&(e.addEventListener(\"touchstart\",this.fixPlayFail),e.addEventListener(\"click\",this.fixPlayFail)),this.alertMask=e},this.setupReload=e=>{e&&(e.addEventListener(\"touchstart\",this.initPlayer),e.addEventListener(\"click\",this.initPlayer))},this.state={NoSound:!1,MediaError:!1,updater:!1,controllerVisible:!1},e.room&&function(e){if(!e.calibrationTimestamp)throw new Error(\"@netless/app-media-player@0.1.0-alpha.5 requires white-web-sdk@^2.13.8 to work properly.\")}(e.room)}getAttributes(){const{context:e}=this.props;let s=e.getAttributes();if(s){if(s=a(a({},h),s),this.player){let e=f(s,this.props),o=this.player.duration();!s.paused&&e>o&&(r=a({},s),s=t(r,i({currentTime:0,paused:!0})),this.resetPlayer())}var r;return s}}isShowingPoster(){const e=this.getAttributes();return!(null==e?void 0:e.src)||b.some((t=>e.src.endsWith(t)))}render(){var e,t;if(!this.props.room&&!this.props.player)return null;const i=this.getAttributes();if(!i)return null;const s=1e3*((null==(e=this.player)?void 0:e.duration())||1e3),r=(null==(t=this.player)?void 0:t.bufferedPercent())||0;return l.createElement(\"div\",{className:this.isEnabled()?\"vjs-p\":\"vjs-p disabled\",onMouseEnter:this.showController,onMouseMove:this.showController},l.createElement(\"div\",{className:\"video-js-plugin-player\",ref:this.container}),this.isShowingPoster()&&l.createElement(\"div\",{className:\"video-js-plugin-poster\"},i.poster&&l.createElement(\"img\",{src:i.poster,alt:\"\",draggable:!1})),l.createElement(X,{duration:s,volume:i.volume,setVolume:this.setVolume,paused:i.paused,play:this.play,pause:this.pause,currentTime:1e3*f(i,this.props),setCurrentTime:this.setCurrentTime,buffered:s*r,visible:!0}),this.state.NoSound&&l.createElement(\"div\",{ref:this.setupAlert,className:\"videojs-plugin-muted-alert\"}),this.state.MediaError&&l.createElement(\"div\",{className:\"videojs-plugin-recovery-mode\"},l.createElement(\"button\",{ref:this.setupReload},\"Reload Player\")))}debug(e,...t){g.verbose&&g.log(`[MediaPlayer] ${e}`,...t)}componentDidMount(){this.debug(\"app version =\",\"0.1.0-alpha.5\"),this.debug(\"video.js version =\",u.VERSION),this.initPlayer(),this.props.context.emitter.on(\"attributesUpdate\",this.syncPlayerWithAttributes),this.syncPlayerTimer=setInterval(this.syncPlayerWithAttributes,g.syncInterval),this.decreaseRetryTimer=setInterval(this.decreaseRetryCount,g.retryInterval)}componentWillUnmount(){var e;this.debug(\"unmount\"),this.props.context.emitter.off(\"attributesUpdate\",this.syncPlayerWithAttributes),null==(e=this.player)||e.dispose(),clearInterval(this.syncPlayerTimer),clearInterval(this.decreaseRetryTimer)}isEnabled(){return this.props.context.getIsWritable()}}const se={kind:\"MediaPlayer\",setup(e){let t=e.getAttributes();if(!t||!t.src)return e.emitter.emit(\"destroy\",{error:new Error(\"[MediaPlayer]: Missing 'attributes'.'src'.\")});t=a(a({},h),t);const i=e.getBox();i.mountStyles('.vjs-p{display:flex;flex-grow:1}.vjs-p *{pointer-events:auto}.vjs-p.disabled *{pointer-events:none}.vjs-p .video-js-plugin-poster{position:absolute;top:0;left:0;right:0;bottom:0;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACACAYAAAB0vHFxAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAACBKADAAQAAAABAAAAgAAAAACE3oPTAAAKXUlEQVR4Ae3dYW4ktxEG0LW9FwkC2McycokAOUGAXMLwtQwYvomdP4akHUnNnm6SVUU+/xqpe8ji+yiDWz3a/e7L5v/98se//3pL8K9//O+7t19Hv85eX7RP9vnllz2h4/rkd+wz+ir/0cLfjv/9t1/6igABAgQIENhRwIFgx9StmQABAgQIPAg4EDyA+JIAAQIECOwo8HXHRVvzPIHRzwBHjz9PKudMo31Hj59TdZ2qsueXvb5sO0GHIFsi6iFAgAABAgECOgQB6KbsJ5Dtt0L6rWyPkeRXO+fs+WWvL1v6OgTZElEPAQIECBAIENAhCEA3ZT8Bzwj7WUaMJL8I9X5zZs8ve339kugzkg5BH0ejECBAgACB0gIOBKXjUzwBAgQIEOgj4EDQx9EoBAgQIECgtIADQen4FE+AAAECBPoIOBD0cTQKAQIECBAoLeC3DErHp/iWgE8Zt4RyX5df7nxa1Y3Ob/T4rfWtdl2HYLVErYcAAQIECFwQWL5DsPoJcvX1XdjTpd4iv1JxvStWfu9IfCORwLP7U4cgUXhKIUCAAAECUQIOBFHy5iVAgAABAokEHAgShaEUAgQIECAQJXD7MwTPPqOIWujVeUevb/T4V9ftfecE5HfOKetd8suajLoiBHQIItTNSYAAAQIEkgnc7hAkW0/3ckb/e9qjx+8OYsBvBOT3DUe5L+RXLjIFDxTQIRiIa2gCBAgQIFBFoNkh2P0Z2+j1jx4/+0asvv7q9d/dH9XXX73+3fO7u/7W+3fbHzoErR3hOgECBAgQ2ECg2SHwjG2DXRC4xOj9tdufAHpHLb/eonPHk9+xd7TPcXX9r+oQ9Dc1IgECBAgQKCfgQFAuMgUTIECAAIH+Ag4E/U2NSIAAAQIEygk0P0MQvaLsz3hb9bWu840WOJ5ffsc+2a/KL3tC6jsSmL1/dQiO0nCNAAECBAhsItDsEMw+oTzrHl1f61OorevPrvfZ+6N9WvVmr09+xwnKr7ZP9vyOdcdfze7Tuz4dgvF7ygwECBAgQCC9QLNDkH0F0X+C45NdoHZ99rf8aguofqRA7/8/6BCMTMvYBAgQIECgiED5DkHvZyhFcjtdJp/TVClvlF/KWE4XJb/TVG68INB7f+kQXAjBWwgQIECAwGoCDgSrJWo9BAgQIEDggoADwQU0byFAgAABAqsJfO39DGI1IOuJFbA/Y/3vzi6/u4Kx7189v7vru/v+2HTfz65D8N7EdwgQIECAwHYCw3/LYLUT1HY7pLFg+TaAkl+WX/KAGuXJrwEUfLlaPjoEwRvG9AQIECBAIIPA8A5B779JKQOaGl4F5PtqUfGV/Cqm9lqz/F4tMr6qlo8OQcZdpCYCBAgQIDBZYHiHoNozlMn+5aeTb+0I5Se/2gK5q6/286VDkHs/qY4AAQIECEwRcCCYwmwSAgQIECCQW8CBIHc+qiNAgAABAlMEhn+GYMoqTEKAAAEC7wSqPcN+twDfmCqgQzCV22QECBAgQCCnQHiHoPoJtlV/63rObfFaVfX6X1dy7VX19Vev/1pqr++qvv7q9b8m4dVHAtny1SH4KCXfI0CAAAECmwmEdwiq/U1Om+2PL/Kpnbj85FdbYO3qs/186hCsvd+sjgABAgQInBJwIDjF5CYCBAgQILC2gAPB2vlaHQECBAgQOCUQ/hmCbJ+yPKW20U3yqR22/ORXW2Dt6qN/Ph/n1yFYe79ZHQECBAgQOCXgQHCKyU0ECBAgQGBtAQeCtfO1OgIECBAgcErAgeAUk5sIECBAgMDaAg4Ea+drdQQIECBA4JTA1+///OGnoztd52N/fC7g58PPx+e748sX+8P+qLQ/dAiO0nKNAAECBAhsIuBAsEnQlkmAAAECBI4EHAiOdFwjQIAAAQKbCDgQbBK0ZRIgQIAAgSMBB4IjHdcIECBAgMAmAuH/lsHP//zvb5tYl1ymfErG9lK0/F4oSr6QX8nYThcdne/j/DoEp6NzIwECBAgQWFfAgWDdbK2MAAECBAicFnAgOE3lRgIECBAgsK5A+GcIfv39Pz++5X18pvH2mtfzBeQz37znjPLrqTl/LPnNN585Y7Z8dQhmpm8uAgQIECCQVCC8Q1C9I9Cqv3U96b54Kat6/S8Lufii+vqr138xtpe3VV9/9fpfgvDiQ4Fs+eoQfBiTbxIgQIAAgb0EwjsEe3FbLQECBOYJZPsT6LyVm+mKgA7BFTXvIUCAAAECiwk4ECwWqOUQIECAAIErAg4EV9S8hwABAgQILCYw/DMEnmEttmMeliPfB5BiX8qvWGAP5crvASTZl9Xy0SFItoGUQ4AAAQIEIgSGdwiy/U1MEcgrzynf2unKT361BXJXX+3nS4cg935SHQECBAgQmCIwvENQ7RnKFPWFJpFv7TDlJ7/aArmrr/bzpUOQez+pjgABAgQITBH4Wu0EM0XFJGkE7M80UVwqRH6X2NK8afX87q7v7vvTBP13IToE2RJRDwECBAgQCBBwIAhANyUBAgQIEMgm4ECQLRH1ECBAgACBAIHhv2Uwek2rPcPp7cWnt+jc8eQ317v3bPLrLWq8twK995cOwVtdrwkQIECAwKYC5TsE1f4mqNn7jM9s8b7zya+v5+zR5DdbfK/5eu8vHYK99o/VEiBAgACBDwWaHYLezyg+rOLGN6Pra53QWtdvLP3UW6N9WkVmr09+xwnKr7ZP9vyOdcdfze7Tuz4dgvF7ygwECBAgQCC9QLNDEL2C3ieg3utp1de63rueZ8fLXt+z6+l9f3af7PX1zuPZ8bL7ZK/vWW/39xWYvT90CPrmZzQCBAgQIFBSwIGgZGyKJkCAAAECfQUcCPp6Go0AAQIECJQUaH6GIPpT1iVVFX1aIHp/zX5GdxqmyI3yKxLUJ2XK7xOYv78d7XNcXf+rOgT9TY1IgAABAgTKCTQ7BLv/CWr0+kePn31HVl9/9frv7o/q669e/+753V1/6/277Q8dgtaOcJ0AAQIECGwg0OwQbGBwuMTRz5BGj3+4OBdvC8jvNmHoAPIL5Td5MgEdgmSBKIcAAQIECEQI3O4QrP6MZfT6Ro8fsal2mlN+tdOWX+38VN9XQIegr6fRCBAgQIBASQEHgpKxKZoAAQIECPQVcCDo62k0AgQIECBQUuD2Zwiyr3r1Z4Srry/7/rpbn/zuCsa+X36x/mY/Fnh2f+oQHHu6SoAAAQIEthBYvkOwRYoW+anAsyfkTwdyIURAfiHs3SYdnd/o8btBFBlIh6BIUMokQIAAAQIjBRwIRuoamwABAgQIFBFwICgSlDIJECBAgMBIAQeCkbrGJkCAAAECRQQcCIoEpUwCBAgQIDBSwG8ZjNQ19nABnzIeTjx0AvkN5R0+ePb8stc3PKAnJ9AheBLM7QQIECBAYEUBHYIVU91oTf49+9phy09+IwXsr+d0dQie83I3AQIECBBYUkCHYMlY8yxq9DO80ePnkYypZLTv6PFj1PaZNXt+2evLtlN0CLIloh4CBAgQIBAg4EAQgG5KAgQIECCQTcCBIFsi6iFAgAABAgEC/wdVfx9UuC8B6AAAAABJRU5ErkJggg==);background-repeat:repeat-x;background-position:0 50%;display:flex;align-items:center;justify-content:center}.vjs-p .video-js-plugin-poster img{box-shadow:0 0 5px 10px #0006}.vjs-p .player-controller,.vjs-p .videojs-plugin-muted-alert{pointer-events:auto}.vjs-p.disabled .videojs-plugin-close-icon,.vjs-p.disabled .player-controller{pointer-events:none}.vjs-p .video-js-plugin-player{position:absolute;top:0;left:0;right:0;bottom:0}.video-js,[data-vjs-player]{width:100%;height:100%}.vjs-p .videojs-plugin-muted-alert{pointer-events:auto;cursor:pointer;position:absolute;top:0;left:0;right:0;bottom:0;z-index:43}.vjs-p .videojs-plugin-muted-alert:before{pointer-events:auto;cursor:pointer;position:absolute;top:0;left:0;right:0;bottom:0;z-index:43;content:\"\\\\f104\";background:rgba(0,0,0,.3);font-family:VideoJS;font-size:2em;display:flex;align-items:center;justify-content:center;color:#fff}.vjs-p .videojs-plugin-recovery-mode{pointer-events:auto;cursor:pointer;position:absolute;top:0;left:0;right:0;bottom:0;z-index:44}.vjs-p .videojs-plugin-recovery-mode button{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.vjs-p .seek-slider{position:relative;width:100%}.vjs-p .seek-slider:focus{outline:none}.vjs-p .seek-slider .track{padding:10px 0;cursor:pointer;outline:none}.vjs-p .seek-slider .track:focus{border:0;outline:none}.vjs-p .seek-slider .track .main{width:100%;height:3px;background-color:#ffffff4d;border-radius:30px;position:absolute;left:0;top:8.5px;transition:transform .4s;outline:none}.vjs-p .seek-slider .track .main:focus{border:0;outline:none}.vjs-p .seek-slider .track .main .buffered{position:absolute;background-color:#ffffff4d;width:100%;height:100%;transform:scaleX(.8);z-index:2;transform-origin:0 0}.vjs-p .seek-slider .track .main .seek-hover{position:absolute;background-color:#ffffff80;width:100%;height:100%;z-index:1;transform:scaleX(.6);transform-origin:0 0;opacity:0;transition:opacity .4s}.vjs-p .seek-slider .track .main .connect{position:absolute;background-color:#fff;width:100%;height:100%;z-index:3;left:0;transform:scaleX(.13);transform-origin:0 0}.vjs-p .seek-slider .track.active .main{transform:scaleY(2)}.vjs-p .seek-slider .thumb{pointer-events:none;position:absolute;width:12px;height:12px;left:-6px;top:4px;z-index:4;transform:translate(100px)}.vjs-p .seek-slider .thumb .handler{border-radius:100%;width:100%;height:100%;background-color:#fff;opacity:0;transform:scale(.4);cursor:pointer;transition:transform .2s;pointer-events:none}.vjs-p .seek-slider .thumb.active .handler{opacity:1;transform:scale(1)}.vjs-p .seek-slider .hover-time{position:absolute;background-color:#0000004d;line-height:18px;font-size:16px;color:#ddd;top:-25px;left:0;padding:5px 10px;border-radius:5px;box-shadow:0 0 5px #0000004d;opacity:0;transform:translate(150px);pointer-events:none}.vjs-p .seek-slider .hover-time.active{opacity:1}.vjs-p .seek-slider:hover .track .main .seek-hover{opacity:1}.vjs-p .player-controller{position:absolute;z-index:100;bottom:0px;left:0;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:stretch;height:64px;background-image:linear-gradient(0deg,#000,transparent);transition:opacity .2s;color:#fff}.vjs-p .player-menu-box{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:40px}.vjs-p .player-menu-cell{width:100%;text-align:center;font-size:12px;color:#7a7b7c}.vjs-p .player-multiple-play{width:64px;height:120px}.vjs-p .player-controller-actions-left{display:flex;justify-content:center;align-items:center;flex-shrink:0}.vjs-p .player-right-box{font-size:14px;color:#7a7b7c;cursor:pointer;margin-right:12px}.vjs-p .player-controller-actions{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-left:8px;padding-right:8px;margin-top:2px}.vjs-p .player-mid-box-time{font-size:9px;display:flex;justify-content:center;align-items:center;color:#fff;flex-shrink:0;margin-right:8px;font-family:monospace}.vjs-p .player-controller-play{display:flex;align-items:center;justify-content:center;cursor:pointer;padding-right:4px}.vjs-p .player-controller-progress{width:calc(100% - 28px);margin-left:14px;display:flex;align-items:center;justify-content:center;margin-top:8px}.vjs-p .player-volume{display:flex;align-items:center;justify-content:center;cursor:pointer;margin-right:16px;margin-left:8px}.vjs-p .player-volume-slider{width:60px;margin-right:12px;display:flex;align-items:center}.vjs-p .player-volume-box{display:flex;flex-direction:row}.netless-app-media-player-container{display:flex;position:relative;height:100%}\\n');const s=document.createElement(\"div\");if(s.classList.add(\"netless-app-media-player-container\"),d.render(l.createElement(te,{context:e}),s),i.mountContent(s),e.emitter.on(\"destroy\",(()=>{console.log(\"[MediaPlayer]: destroy\"),d.unmountComponentAtNode(s)})),window.__pcmProxy){const t=()=>{\"hidden\"===document.visibilityState?(console.log(\"[MediaPlayer]: visibilitychange -> hidden. unmount for pcmproxy\"),d.unmountComponentAtNode(s)):(console.log(\"[MediaPlayer]: visibilitychange -> visible. mount for pcmproxy\"),d.render(l.createElement(te,{context:e}),s))};document.addEventListener(\"visibilitychange\",t),e.emitter.on(\"destroy\",(()=>{document.removeEventListener(\"visibilitychange\",t)}))}}};export{p as Version,se as default,v as setOptions};\n//# sourceMappingURL=main.es.js.map\n","import AppDocsViewer from \"@netless/app-docs-viewer\";\nimport AppMediaPlayer, { setOptions } from \"@netless/app-media-player\";\nimport { WindowManager } from \"./index\";\n\nexport const setupBuiltin = () => {\n    if (WindowManager.debug) {\n        setOptions({ verbose: true });\n    }\n\n    WindowManager.register({\n        kind: AppDocsViewer.kind,\n        src: AppDocsViewer,\n    });\n    WindowManager.register({\n        kind: AppMediaPlayer.kind,\n        src: AppMediaPlayer as any,\n    });\n};\n\nexport const BuiltinApps = {\n    DocsViewer: AppDocsViewer.kind as string,\n    MediaPlayer: AppMediaPlayer.kind as string,\n};\n","import type { Displayer, DisplayerState, Room, RoomState } from \"white-web-sdk\";\nimport type { AppManager } from \"../AppManager\";\nimport type { WindowManager } from \"../index\";\n\nimport Emittery from \"emittery\";\nimport { PlayerPhase, AnimationMode, autorun } from \"white-web-sdk\";\nimport { SideEffectManager } from \"side-effect-manager\";\nimport { debounce, noop } from \"lodash\";\nimport { log } from \"../Utils/log\";\n\n// Note: typo below should not be fixed.\nexport enum IframeEvents {\n    Init = \"Init\",\n    AttributesUpdate = \"AttributesUpdate\",\n    SetAttributes = \"SetAttributes\",\n    RegisterMagixEvent = \"RegisterMagixEvent\",\n    RemoveMagixEvent = \"RemoveMagixEvent\",\n    RemoveAllMagixEvent = \"RemoveAllMagixEvent\",\n    RoomStateChanged = \"RoomStateChanged\",\n    DispatchMagixEvent = \"DispatchMagixEvent\",\n    ReciveMagixEvent = \"ReciveMagixEvent\",\n    NextPage = \"NextPage\",\n    PrevPage = \"PrevPage\",\n    SDKCreate = \"SDKCreate\",\n    OnCreate = \"OnCreate\",\n    SetPage = \"SetPage\",\n    GetAttributes = \"GetAttributes\",\n    Ready = \"Ready\",\n    Destory = \"Destory\",\n    StartCreate = \"StartCreate\",\n    WrapperDidUpdate = \"WrapperDidUpdate\",\n    DispayIframe = \"DispayIframe\",\n    HideIframe = \"HideIframe\",\n    GetRootRect = \"GetRootRect\",\n    ReplayRootRect = \"ReplayRootRect\",\n    PageTo = \"PageTo\",\n}\n\nexport enum DomEvents {\n    WrapperDidMount = \"WrapperDidMount\",\n    IframeLoad = \"IframeLoad\",\n}\n\nexport type IframeBridgeAttributes = {\n    readonly url: string;\n    readonly width: number;\n    readonly height: number;\n    readonly displaySceneDir: string;\n    readonly lastEvent?: { name: string; payload: any };\n    readonly useClicker?: boolean;\n    readonly useSelector?: boolean;\n};\n\nexport type IframeBridgeEvents = {\n    created: undefined;\n    [IframeEvents.Ready]: undefined;\n    [IframeEvents.StartCreate]: undefined;\n    [IframeEvents.OnCreate]: IframeBridge;\n    [IframeEvents.Destory]: undefined;\n    [IframeEvents.GetRootRect]: undefined;\n    [IframeEvents.ReplayRootRect]: DOMRect;\n    [DomEvents.WrapperDidMount]: undefined;\n    [IframeEvents.WrapperDidUpdate]: undefined;\n    [DomEvents.IframeLoad]: Event;\n    [IframeEvents.HideIframe]: undefined;\n    [IframeEvents.DispayIframe]: undefined;\n};\n\nexport type IframeSize = {\n    readonly width: number;\n    readonly height: number;\n};\n\ntype BaseOption = {\n    readonly url: string;\n    readonly width: number;\n    readonly height: number;\n    readonly displaySceneDir: string;\n};\n\nexport type InsertOptions = {\n    readonly useClicker?: boolean;\n    readonly useSelector?: boolean;\n} & BaseOption;\n\nexport type OnCreateInsertOption = {\n    readonly displayer: Displayer;\n} & BaseOption;\n\nconst RefreshIDs = {\n    Ready: IframeEvents.Ready,\n    RootRect: IframeEvents.ReplayRootRect,\n    Message: \"message\",\n    ComputeStyle: \"computeStyle\",\n    Load: \"load\",\n    DisplayerState: \"displayerState\",\n    Show: \"show\",\n    Hide: \"hide\",\n};\n\nconst times = <T>(number: number, iteratee: (value: number) => T) => {\n    return new Array(number).fill(0).map((_, index) => iteratee(index));\n};\n\n/**\n * {@link https://github.com/netless-io/netless-iframe-bridge @netless/iframe-bridge}\n */\nexport class IframeBridge {\n    public static readonly kind = \"IframeBridge\";\n    public static readonly hiddenClass = \"netless-iframe-brdige-hidden\";\n    public static emitter: Emittery<IframeBridgeEvents> = new Emittery();\n    private static displayer: Displayer | null = null;\n    private static alreadyCreate = false;\n\n    public displayer: Displayer;\n    public iframe: HTMLIFrameElement;\n\n    private readonly magixEventMap = new Map<string, any>();\n    private cssList: string[] = [];\n    private allowAppliances: string[] = [\"clicker\"];\n    private bridgeDisposer: () => void = noop;\n    private rootRect: DOMRect | null = null;\n\n    private sideEffectManager = new SideEffectManager();\n\n    constructor(readonly manager: WindowManager, readonly appManager: AppManager) {\n        this.displayer = IframeBridge.displayer = appManager.displayer;\n\n        this.iframe = this._createIframe();\n\n        this.sideEffectManager.addDisposer(\n            IframeBridge.emitter.on(IframeEvents.ReplayRootRect, rect => {\n                this.rootRect = rect;\n            }),\n            RefreshIDs.RootRect\n        );\n\n        this.sideEffectManager.addDisposer(\n            IframeBridge.emitter.on(IframeEvents.HideIframe, () => {\n                this.iframe.className = IframeBridge.hiddenClass;\n            }),\n            RefreshIDs.Hide\n        );\n\n        this.sideEffectManager.addDisposer(\n            IframeBridge.emitter.on(IframeEvents.DispayIframe, () => {\n                this.iframe.className = \"\";\n            }),\n            RefreshIDs.Show\n        );\n\n        this.sideEffectManager.addDisposer(\n            IframeBridge.emitter.on(\"created\", () => {\n                this.bridgeDisposer();\n                this.bridgeDisposer = autorun(() => {\n                    const attributes = this.attributes;\n                    if (attributes.url) {\n                        const iframeSrc = this.iframe?.src;\n                        if (iframeSrc && iframeSrc !== attributes.url) {\n                            this.execListenIframe(attributes);\n                        }\n                    }\n                    if (attributes.displaySceneDir) {\n                        this.computedIframeDisplay(this.displayer.state, attributes);\n                    }\n                    if ((attributes.width || attributes.height) && this.iframe) {\n                        this.iframe.width = `${attributes.width}px`;\n                        this.iframe.height = `${attributes.height}px`;\n                    }\n                    this.postMessage({ kind: IframeEvents.AttributesUpdate, payload: attributes });\n                });\n            })\n        );\n\n        this.sideEffectManager.addDisposer(\n            manager.emitter.on(\"cameraStateChange\", () => {\n                this.computedStyle(this.displayer.state);\n            })\n        );\n\n        IframeBridge.onCreate(this);\n    }\n\n    public static onCreate(plugin: IframeBridge): void {\n        IframeBridge.emitter.emit(IframeEvents.StartCreate);\n        IframeBridge.emitter.emit(IframeEvents.OnCreate, plugin);\n        IframeBridge.emitter.emit(\"created\");\n    }\n\n    public insert(options: InsertOptions): this {\n        const initAttributes: IframeBridgeAttributes = {\n            url: options.url,\n            width: options.width,\n            height: options.height,\n            displaySceneDir: options.displaySceneDir,\n            useClicker: options.useClicker || false,\n            useSelector: options.useSelector,\n        };\n        this.setAttributes(initAttributes);\n\n        const wrapperDidMountListener = () => {\n            this.getIframe();\n            this.listenIframe(this.attributes);\n            this.listenDisplayerState();\n            IframeBridge.emitter.emit(IframeEvents.GetRootRect);\n        };\n\n        if (this.getIframe()) {\n            wrapperDidMountListener();\n        }\n        // Code below will never be executed, just copying the old code...\n        else {\n            const didMount = this.sideEffectManager.addDisposer(\n                IframeBridge.emitter.on(DomEvents.WrapperDidMount, () => {\n                    wrapperDidMountListener();\n                    this.sideEffectManager.flush(didMount);\n                })\n            );\n            const didUpdate = this.sideEffectManager.addDisposer(\n                IframeBridge.emitter.on(IframeEvents.WrapperDidUpdate, () => {\n                    wrapperDidMountListener();\n                    this.sideEffectManager.flush(didUpdate);\n                })\n            );\n        }\n        if (this.attributes.useSelector) {\n            this.allowAppliances.push(\"selector\");\n        }\n\n        this.computedStyle(this.displayer.state);\n        this.listenDisplayerCallbacks();\n        this.getComputedIframeStyle();\n        this.sideEffectManager.addEventListener(\n            window,\n            \"message\",\n            this.messageListener.bind(this),\n            void 0,\n            RefreshIDs.Message\n        );\n\n        IframeBridge.alreadyCreate = true;\n        return this;\n    }\n\n    // 在某些安卓机型中会遇到 iframe 嵌套计算 bug，需要手动延迟触发一下重绘\n    private getComputedIframeStyle(): void {\n        this.sideEffectManager.setTimeout(\n            () => {\n                if (this.iframe) {\n                    getComputedStyle(this.iframe);\n                }\n            },\n            200,\n            RefreshIDs.ComputeStyle\n        );\n    }\n\n    public destroy() {\n        this.sideEffectManager.flushAll();\n        IframeBridge.emitter.emit(IframeEvents.Destory);\n        IframeBridge.alreadyCreate = false;\n        IframeBridge.emitter.clearListeners();\n    }\n\n    private getIframe(): HTMLIFrameElement {\n        this.iframe || (this.iframe = this._createIframe());\n        return this.iframe;\n    }\n\n    public setIframeSize(params: IframeSize): void {\n        if (this.iframe) {\n            this.iframe.width = `${params.width}px`;\n            this.iframe.height = `${params.height}px`;\n            this.setAttributes({ width: params.width, height: params.height });\n        }\n    }\n\n    public get attributes(): Partial<IframeBridgeAttributes> {\n        return this.appManager.store.getIframeBridge();\n    }\n\n    public setAttributes(data: Partial<IframeBridgeAttributes>): void {\n        this.appManager.store.setIframeBridge(data);\n    }\n\n    private _createIframe() {\n        const iframe = document.createElement(\"iframe\");\n        iframe.id = \"IframeBridge\";\n        iframe.className = IframeBridge.hiddenClass;\n        if (this.appManager.mainView.divElement) {\n            this.appManager.mainView.divElement.appendChild(iframe);\n        }\n        return iframe;\n    }\n\n    public scaleIframeToFit(animationMode: AnimationMode = AnimationMode.Immediately) {\n        if (!this.inDisplaySceneDir) {\n            return;\n        }\n        const { width = 1280, height = 720 } = this.attributes;\n        const x = width ? -width / 2 : 0;\n        const y = height ? -height / 2 : 0;\n\n        this.manager.moveCameraToContain({\n            originX: x,\n            originY: y,\n            width,\n            height,\n            animationMode,\n        });\n    }\n\n    public get isReplay(): boolean {\n        return this.manager.isReplay;\n    }\n\n    private handleSetPage(data: any): void {\n        if (this.isReplay || !this.attributes.displaySceneDir) {\n            return;\n        }\n        const page = data.payload;\n        const room = this.displayer as Room;\n        const scenes = room.entireScenes()[this.attributes.displaySceneDir];\n        if (!scenes || scenes.length !== page) {\n            const genScenes = times<{ name: string }>(page, (index: number) => ({\n                name: String(index + 1),\n            }));\n            room.putScenes(this.attributes.displaySceneDir, genScenes);\n            this.manager.setMainViewScenePath(this.attributes.displaySceneDir);\n        }\n    }\n\n    private execListenIframe = debounce((options: Partial<IframeBridgeAttributes>) => {\n        this.listenIframe(options);\n    }, 50);\n\n    private src_url_equal_anchor?: HTMLAnchorElement;\n    private listenIframe(options: Partial<IframeBridgeAttributes>): void {\n        const loadListener = (ev: Event) => {\n            this.postMessage({\n                kind: IframeEvents.Init,\n                payload: {\n                    attributes: this.attributes,\n                    roomState: IframeBridge.displayer?.state,\n                    currentPage: this.currentPage,\n                    observerId: this.displayer.observerId,\n                },\n            });\n            IframeBridge.emitter.emit(DomEvents.IframeLoad, ev);\n            this.sideEffectManager.addDisposer(\n                IframeBridge.emitter.on(IframeEvents.Ready, () => {\n                    this.postMessage(this.attributes.lastEvent?.payload);\n                }),\n                RefreshIDs.Ready\n            );\n            this.computedStyleAndIframeDisplay();\n            // if ((this.displayer as Room).isWritable) {\n            //   this.manager.moveCamera({\n            //     scale: this.manager.camera.scale + 1e-6,\n            //     animationMode: AnimationMode.Immediately,\n            //   })\n            // }\n        };\n        if (options.url && this.iframe.src !== options.url) {\n            if (!this.src_url_equal_anchor) this.src_url_equal_anchor = document.createElement(\"a\");\n            this.src_url_equal_anchor.href = options.url;\n            if (this.src_url_equal_anchor.href !== this.iframe.src) {\n                this.iframe.src = options.url;\n            }\n        }\n        this.iframe.width = `${options.width}px`;\n        this.iframe.height = `${options.height}px`;\n        this.sideEffectManager.addEventListener(\n            this.iframe,\n            \"load\",\n            loadListener,\n            void 0,\n            RefreshIDs.Load\n        );\n    }\n\n    private onPhaseChangedListener = (phase: PlayerPhase) => {\n        if (phase === PlayerPhase.Playing) {\n            this.computedStyleAndIframeDisplay();\n        }\n    };\n\n    private listenDisplayerState(): void {\n        if (this.isReplay) {\n            if ((this.displayer as any)._phase === PlayerPhase.Playing) {\n                this.computedStyleAndIframeDisplay();\n            }\n            this.sideEffectManager.add(() => {\n                this.displayer.callbacks.on(\"onPhaseChanged\", this.onPhaseChangedListener);\n                return () =>\n                    this.displayer.callbacks.off(\"onPhaseChanged\", this.onPhaseChangedListener);\n            }, RefreshIDs.DisplayerState);\n        }\n        this.computedStyleAndIframeDisplay();\n    }\n\n    private computedStyleAndIframeDisplay(): void {\n        this.computedStyle(this.displayer.state);\n        this.computedIframeDisplay(this.displayer.state, this.attributes);\n    }\n\n    private listenDisplayerCallbacks(): void {\n        this.displayer.callbacks.on(this.callbackName as any, this.stateChangeListener);\n    }\n\n    private get callbackName(): string {\n        return this.isReplay ? \"onPlayerStateChanged\" : \"onRoomStateChanged\";\n    }\n\n    private stateChangeListener = (state: RoomState) => {\n        state = { ...state };\n        state.cameraState = this.manager.cameraState;\n        this.postMessage({ kind: IframeEvents.RoomStateChanged, payload: state });\n        if (state.cameraState) {\n            IframeBridge.emitter.emit(IframeEvents.GetRootRect);\n            this.computedStyle(state);\n        }\n        if (state.memberState) {\n            this.computedZindex();\n            this.updateStyle();\n        }\n        if (state.sceneState) {\n            this.computedIframeDisplay(state, this.attributes);\n        }\n    };\n\n    private computedStyle(_state: DisplayerState): void {\n        const cameraState = this.manager.cameraState;\n        const setWidth = this.attributes.width || 1280;\n        const setHeight = this.attributes.height || 720;\n        if (this.iframe) {\n            const { width, height, scale, centerX, centerY } = cameraState;\n            const rootRect = this.rootRect || { x: 0, y: 0 };\n            const transformOriginX = `${width / 2 + rootRect.x}px`;\n            const transformOriginY = `${height / 2 + rootRect.y}px`;\n            const transformOrigin = `transform-origin: ${transformOriginX} ${transformOriginY};`;\n            const iframeXDiff = ((width - setWidth) / 2) * scale;\n            const iframeYDiff = ((height - setHeight) / 2) * scale;\n            const x = -(centerX * scale) + iframeXDiff;\n            const y = -(centerY * scale) + iframeYDiff;\n            const transform = `transform: translate(${x}px,${y}px) scale(${scale}, ${scale});`;\n            const position = \"position: absolute;\";\n            // 在某些安卓机型, border-width 不为 0 时，才能正确计算 iframe 里嵌套 iframe 的大小\n            const borderWidth = \"border: 0.1px solid rgba(0,0,0,0);\";\n            const left = `left: 0px;`;\n            const top = `top: 0px;`;\n            const cssList = [position, borderWidth, top, left, transformOrigin, transform];\n            this.cssList = cssList;\n            this.computedZindex();\n            this.updateStyle();\n        }\n    }\n\n    private computedIframeDisplay(\n        _state: DisplayerState,\n        _attributes: Partial<IframeBridgeAttributes>\n    ): void {\n        if (this.inDisplaySceneDir) {\n            IframeBridge.emitter.emit(IframeEvents.DispayIframe);\n        } else {\n            IframeBridge.emitter.emit(IframeEvents.HideIframe);\n        }\n    }\n\n    public computedZindex(): void {\n        const zIndexString = \"z-index: -1;\";\n        const index = this.cssList.findIndex(css => css === zIndexString);\n        if (index !== -1) {\n            this.cssList.splice(index, 1);\n        }\n        if (!this.isClicker() || this.isDisableInput) {\n            this.cssList.push(zIndexString);\n        }\n    }\n\n    private updateStyle(): void {\n        this.iframe.style.cssText = this.cssList.join(\" \");\n    }\n\n    private get iframeOrigin(): string | undefined {\n        if (this.iframe) {\n            try {\n                return new URL(this.iframe.src).origin;\n            } catch (err) {\n                console.warn(err);\n            }\n        }\n    }\n\n    private messageListener(event: MessageEvent): void {\n        log(\"<<<\", JSON.stringify(event.data));\n        if (event.origin !== this.iframeOrigin) {\n            return;\n        }\n        const data = event.data;\n        switch (data.kind) {\n            case IframeEvents.SetAttributes: {\n                this.handleSetAttributes(data);\n                break;\n            }\n            case IframeEvents.RegisterMagixEvent: {\n                this.handleRegisterMagixEvent(data);\n                break;\n            }\n            case IframeEvents.RemoveMagixEvent: {\n                this.handleRemoveMagixEvent(data);\n                break;\n            }\n            case IframeEvents.DispatchMagixEvent: {\n                this.handleDispatchMagixEvent(data);\n                break;\n            }\n            case IframeEvents.RemoveAllMagixEvent: {\n                this.handleRemoveAllMagixEvent();\n                break;\n            }\n            case IframeEvents.NextPage: {\n                this.handleNextPage();\n                break;\n            }\n            case IframeEvents.PrevPage: {\n                this.handlePrevPage();\n                break;\n            }\n            case IframeEvents.SDKCreate: {\n                this.handleSDKCreate();\n                break;\n            }\n            case IframeEvents.SetPage: {\n                this.handleSetPage(data);\n                break;\n            }\n            case IframeEvents.GetAttributes: {\n                this.handleGetAttributes();\n                break;\n            }\n            case IframeEvents.PageTo: {\n                this.handlePageTo(data);\n                break;\n            }\n            default: {\n                log(`${data.kind} not allow event.`);\n                break;\n            }\n        }\n    }\n\n    private handleSDKCreate(): void {\n        this.postMessage({\n            kind: IframeEvents.Init,\n            payload: {\n                attributes: this.attributes,\n                roomState: this.displayer.state,\n                currentPage: this.currentPage,\n                observerId: this.displayer.observerId,\n            },\n        });\n    }\n\n    private handleDispatchMagixEvent(data: any): void {\n        const eventPayload: { event: string; payload: any } = data.payload;\n        this.appManager.safeDispatchMagixEvent(eventPayload.event, eventPayload.payload);\n    }\n\n    private handleSetAttributes(data: any): void {\n        this.setAttributes(data.payload);\n    }\n\n    private handleRegisterMagixEvent(data: any): void {\n        const eventName = data.payload as string;\n        const listener = (event: any) => {\n            if (event.authorId === this.displayer.observerId) {\n                return;\n            }\n            this.postMessage({ kind: IframeEvents.ReciveMagixEvent, payload: event });\n        };\n        this.magixEventMap.set(eventName, listener);\n        this.displayer.addMagixEventListener(eventName, listener);\n    }\n\n    private handleRemoveMagixEvent(data: any): void {\n        const eventName = data.payload as string;\n        const listener = this.magixEventMap.get(eventName);\n        this.displayer.removeMagixEventListener(eventName, listener);\n    }\n\n    private handleNextPage(): void {\n        if (this.manager.canOperate) {\n            this.manager.nextPage();\n            this.dispatchMagixEvent(IframeEvents.NextPage, {});\n        }\n    }\n\n    private handlePrevPage(): void {\n        if (this.manager.canOperate) {\n            this.manager.prevPage();\n            this.dispatchMagixEvent(IframeEvents.PrevPage, {});\n        }\n    }\n\n    private handlePageTo(data: any): void {\n        if (this.manager.canOperate) {\n            const page = data.payload as number;\n            if (!Number.isSafeInteger(page) || page <= 0) {\n                return;\n            }\n            this.manager.setMainViewSceneIndex(page - 1);\n            this.dispatchMagixEvent(IframeEvents.PageTo, page - 1);\n        }\n    }\n\n    private handleRemoveAllMagixEvent(): void {\n        this.magixEventMap.forEach((listener, event) => {\n            this.displayer.removeMagixEventListener(event, listener);\n        });\n        this.magixEventMap.clear();\n    }\n\n    private handleGetAttributes(): void {\n        this.postMessage({\n            kind: IframeEvents.GetAttributes,\n            payload: this.attributes,\n        });\n    }\n\n    public postMessage(message: any): void {\n        if (this.iframe) {\n            this.iframe.contentWindow?.postMessage(JSON.parse(JSON.stringify(message)), \"*\");\n        }\n    }\n\n    public dispatchMagixEvent(event: string, payload: any): void {\n        if (this.manager.canOperate) {\n            this.setAttributes({ lastEvent: { name: event, payload } });\n            (this.displayer as Room).dispatchMagixEvent(event, payload);\n        }\n    }\n\n    private get currentIndex(): number {\n        return this.manager.mainViewSceneIndex;\n    }\n\n    private get currentPage(): number {\n        return this.currentIndex + 1;\n    }\n\n    private get totalPage(): number {\n        return this.manager.mainViewScenesLength;\n    }\n\n    private get readonly(): boolean {\n        return !(this.displayer as any).isWritable;\n    }\n\n    public get inDisplaySceneDir(): boolean {\n        return this.manager.mainViewSceneDir === this.attributes.displaySceneDir;\n    }\n\n    private isClicker(): boolean {\n        if (this.readonly) {\n            return false;\n        }\n        const currentApplianceName = (this.displayer as Room).state.memberState\n            .currentApplianceName;\n        return this.allowAppliances.includes(currentApplianceName);\n    }\n\n    private get isDisableInput(): boolean {\n        if (\"disableDeviceInputs\" in this.displayer) {\n            return (this.displayer as Room).disableDeviceInputs;\n        } else {\n            return true;\n        }\n    }\n}\n","import type { WindowManager } from \".\";\nimport Emittery from \"emittery\";\nimport type { EmitterType } from \"./InternalEmitter\";\nimport { appRegister } from \"./Register\";\n\nexport interface ExtendContext {\n    readonly manager: ExtendPluginManager;\n    readonly windowManager: WindowManager;\n    readonly internalEmitter: EmitterType;\n    windowManagerContainer?: HTMLElement;\n}\n\nexport abstract class ExtendPlugin extends Emittery {\n    context!: ExtendContext;\n    abstract readonly kind: string;\n    protected _inject(context: ExtendContext) {\n        this.context = context;\n    }\n    abstract onCreate(): void;\n    abstract onDestroy(): void;\n}\n\nexport type ExtendPluginInstance<T extends ExtendPlugin> = T;\n\nexport interface ExtendManagerOptions {\n    readonly windowManager: WindowManager;\n    readonly internalEmitter: EmitterType;\n    readonly container?: HTMLElement;\n}\n\nexport class ExtendPluginManager {\n    private extends: Map<string, ExtendPluginInstance<any>> = new Map();\n    private context: ExtendContext;\n    constructor(props: ExtendManagerOptions) {\n        this.context = {\n            manager: this,\n            windowManager: props.windowManager,\n            internalEmitter: props.internalEmitter,\n        };\n        if (props.container) {\n            this.refreshContainer(props.container);\n        }\n    }\n\n    refreshContainer(container: HTMLElement) {\n        this.context.windowManagerContainer = container;\n        this.extends.forEach(extend => {\n            extend._inject(this.context);\n        });\n    }\n\n    hasRegister(kind: string) {\n        return appRegister.appClasses.has(kind);\n    }\n\n    use(extend: ExtendPluginInstance<any>) {\n        this.extends.set(extend.kind, extend);\n        extend._inject(this.context);\n        extend.onCreate();\n    }\n    destroy() {\n        this.extends.forEach(extend => {\n            this.extends.delete(extend.kind);\n            extend.onDestroy();\n        });\n    }\n}\n","import { AppContext, AppProxy } from \"../App\";\nimport { AppManager } from \"../AppManager\";\nimport { AttributesDelegate } from \"../AttributesDelegate\";\nimport { BoxManager } from \"../BoxManager\";\nimport { CursorManager } from \"../Cursor\";\nimport { TeleBoxManager, TeleBoxCollector } from \"@netless/telebox-insider\";\n\nexport { AppManager } from \"../AppManager\";\nexport { AppContext, AppProxy } from \"../App\";\nexport { BoxManager } from \"../BoxManager\";\nexport { AttributesDelegate } from \"../AttributesDelegate\";\nexport { CursorManager } from \"../Cursor\";\nexport { TeleBoxManager, TeleBoxCollector } from \"@netless/telebox-insider\";\n\nexport type ExtendClassAble =\n    | typeof AppManager\n    | typeof AppProxy\n    | typeof AppContext\n    | typeof BoxManager\n    | typeof AttributesDelegate\n    | typeof CursorManager\n    | typeof TeleBoxManager\n    | typeof TeleBoxCollector;\n\nexport type ExtendClass = {\n    AppManager?: typeof AppManager;\n    BoxManager?: typeof BoxManager;\n    AttributesDelegate?: typeof AttributesDelegate;\n    CursorManager?: typeof CursorManager;\n    AppProxy?: typeof AppProxy;\n    AppContext?: typeof AppContext;\n    TeleBoxManager?: typeof TeleBoxManager;\n    TeleBoxCollector?: typeof TeleBoxCollector;\n};\nexport function getExtendClass<T extends ExtendClassAble>(\n    baseClass: T,\n    extendClass?: ExtendClass\n): T {\n    if (baseClass.kind && extendClass && Object.keys(extendClass).includes(baseClass.kind)) {\n        switch (baseClass.kind) {\n            case \"AppManager\":\n                return (extendClass?.AppManager || AppManager) as T;\n            case \"BoxManager\":\n                return (extendClass?.BoxManager || BoxManager) as T;\n            case \"AttributesDelegate\":\n                return (extendClass?.AttributesDelegate || AttributesDelegate) as T;\n            case \"CursorManager\":\n                return (extendClass?.CursorManager || CursorManager) as T;\n            case \"AppProxy\":\n                return (extendClass?.AppProxy || AppProxy) as T;\n            case \"AppContext\":\n                return (extendClass?.AppContext || AppContext) as T;\n            case \"TeleBoxManager\":\n                return (extendClass?.TeleBoxManager || TeleBoxManager) as T;\n            case \"TeleBoxCollector\":\n                return (extendClass?.TeleBoxCollector || TeleBoxCollector) as T;\n            default:\n                return baseClass;\n        }\n    }\n    return baseClass;\n}\n","import pRetry from \"p-retry\";\nimport { AppManager } from \"./AppManager\";\nimport { appRegister } from \"./Register\";\nimport { callbacks } from \"./callback\";\nimport { checkVersion, createInvisiblePlugin, setupWrapper } from \"./Helper\";\nimport { ContainerResizeObserver } from \"./ContainerResizeObserver\";\nimport { createBoxManager } from \"./BoxManager\";\nimport { CursorManager } from \"./Cursor\";\nimport { DEFAULT_CONTAINER_RATIO, Events, INIT_DIR, ROOT_DIR } from \"./constants\";\nimport { internalEmitter } from \"./InternalEmitter\";\nimport { Fields } from \"./AttributesDelegate\";\nimport { initDb } from \"./Register/storage\";\nimport { InvisiblePlugin, isPlayer, isRoom, RoomPhase, ViewMode } from \"white-web-sdk\";\nimport { isEqual, isNull, isObject, omit, isNumber } from \"lodash\";\nimport { ArgusLog, log } from \"./Utils/log\";\nimport { PageStateImpl } from \"./PageState\";\nimport { ReconnectRefresher } from \"./ReconnectRefresher\";\nimport { replaceRoomFunction } from \"./Utils/RoomHacker\";\nimport { setupBuiltin } from \"./BuiltinApps\";\nimport \"video.js/dist/video-js.css\";\nimport \"./style.css\";\nimport \"@netless/telebox-insider/dist/style.css\";\nimport {\n    addEmitterOnceListener,\n    ensureValidScenePath,\n    entireScenes,\n    isValidScenePath,\n    putScenes,\n    wait,\n} from \"./Utils/Common\";\nimport type { BoxManager } from \"./BoxManager\";\nimport type { TELE_BOX_STATE } from \"./BoxManager\";\nimport * as Errors from \"./Utils/error\";\nimport type { Apps, Position } from \"./AttributesDelegate\";\nimport type {\n    Displayer,\n    SceneDefinition,\n    View,\n    Room,\n    InvisiblePluginContext,\n    Camera,\n    AnimationMode,\n    CameraBound,\n    Point,\n    Rectangle,\n    CameraState,\n    Player,\n    ImageInformation,\n    SceneState,\n    Logger,\n} from \"white-web-sdk\";\nimport type { AppListeners } from \"./AppListener\";\nimport type { ApplianceIcons, NetlessApp, RegisterParams } from \"./typings\";\nimport type {\n    NotMinimizedBoxState,\n    TeleBoxColorScheme,\n    TeleBoxState,\n} from \"@netless/telebox-insider\";\nimport type { AppProxy } from \"./App\";\nimport type { PublicEvent } from \"./callback\";\nimport type Emittery from \"emittery\";\nimport type { PageController, AddPageParams, PageState } from \"./Page\";\nimport { boxEmitter } from \"./BoxEmitter\";\nimport { IframeBridge } from \"./View/IframeBridge\";\nimport { setOptions } from \"@netless/app-media-player\";\nimport type { ExtendPluginInstance } from \"./ExtendPluginManager\";\nimport { ExtendPluginManager } from \"./ExtendPluginManager\";\nimport { getExtendClass } from \"./Utils/extendClass\";\nimport type { ExtendClass } from \"./Utils/extendClass\";\n\nexport * from \"./utils/extendClass\";\n\nexport type WindowMangerAttributes = {\n    modelValue?: string;\n    boxState: TELE_BOX_STATE;\n    maximized?: boolean;\n    minimized?: boolean;\n    [key: string]: any;\n};\n\nexport type apps = {\n    [key: string]: NetlessApp;\n};\n\nexport type AddAppOptions = {\n    scenePath?: string;\n    title?: string;\n    scenes?: SceneDefinition[];\n};\n\nexport type setAppOptions = AddAppOptions & { appOptions?: any };\n\nexport type AddAppParams<TAttributes = any> = {\n    kind: string;\n    // app 地址(本地 app 不需要传)\n    src?: string;\n    // 窗口配置\n    options?: AddAppOptions;\n    // 初始化 attributes\n    attributes?: TAttributes;\n    // 强制置顶\n    forceTop?: boolean;\n    // 强制正常窗口\n    forceNormal?: boolean;\n    // 是否可以在内容区域拖动\n    isDragContent?: boolean;\n};\n\nexport type BaseInsertParams = {\n    kind: string;\n    // app 地址(本地 app 不需要传)\n    src?: string;\n    // 窗口配置\n    options?: AddAppOptions;\n    // 初始化 attributes\n    attributes?: any;\n    isDynamicPPT?: boolean;\n    // 强制置顶\n    forceTop?: boolean;\n    // 强制正常窗口\n    forceNormal?: boolean;\n    // 是否可以在内容区域拖动\n    isDragContent?: boolean;\n};\n\nexport type AppSyncAttributes = {\n    kind: string;\n    src?: string;\n    options: any;\n    state?: any;\n    isDynamicPPT?: boolean;\n    fullPath?: string;\n    createdAt?: number;\n    // 强制置顶\n    forceTop?: boolean;\n    // 强制正常窗口\n    forceNormal?: boolean;\n    // 是否可以在内容区域拖动\n    isDragContent?: boolean;\n};\n\nexport type AppInitState = {\n    id: string;\n    x?: number;\n    y?: number;\n    width?: number;\n    height?: number;\n    focus?: boolean;\n    maximized?: boolean;\n    minimized?: boolean;\n    sceneIndex?: number;\n    /** 所有box的基本状态 */\n    boxState?: TeleBoxState; // 兼容旧版 telebox\n    zIndex?: number;\n    /** 扩展版本,单个box的状态 */\n    boxStatus?: TeleBoxState;\n    /** 上次非最小化窗口状态 */\n    lastNotMinimizedBoxStatus?: NotMinimizedBoxState;\n    // 强制置顶\n    forceTop?: boolean;\n    // 强制正常窗口\n    forceNormal?: boolean;\n    // 是否可以在内容区域拖动\n    isDragContent?: boolean;\n};\n\nexport type CursorMovePayload = { uid: string; state?: \"leave\"; position: Position };\n\nexport type CursorOptions = {\n    /**\n     * If `\"custom\"`, it will render the pencil / eraser cursor as a circle and shapes cursor as a cross.\n     *\n     * @default \"default\"\n     */\n    style?: \"default\" | \"custom\";\n};\n\nexport type MountParams = {\n    room: Room | Player;\n    container?: HTMLElement;\n    /** 白板高宽比例, 默认为 9 / 16 */\n    containerSizeRatio?: number;\n    /** @deprecated 显示 PS 透明背景，默认 true */\n    chessboard?: boolean;\n    collectorContainer?: HTMLElement;\n    collectorStyles?: Partial<CSSStyleDeclaration>;\n    overwriteStyles?: string;\n    cursor?: boolean;\n    cursorOptions?: CursorOptions;\n    debug?: boolean;\n    disableCameraTransform?: boolean;\n    prefersColorScheme?: TeleBoxColorScheme;\n    applianceIcons?: ApplianceIcons;\n    fullscreen?: boolean;\n    polling?: boolean;\n    /** 是否支持 appliance plugin */\n    supportAppliancePlugin?: boolean;\n    /** 是否使用 boxesStatus 状态管理窗口 */\n    useBoxesStatus?: boolean;\n};\n\nexport const reconnectRefresher = new ReconnectRefresher({ emitter: internalEmitter });\nexport class WindowManager\n    extends InvisiblePlugin<WindowMangerAttributes, any>\n    implements PageController\n{\n    public static readonly kind = \"WindowManager\";\n    public static displayer: Displayer;\n    public static wrapper?: HTMLElement;\n    public static sizer?: HTMLElement;\n    public static playground?: HTMLElement;\n    public static container?: HTMLElement;\n    public static debug = false;\n    public static containerSizeRatio = DEFAULT_CONTAINER_RATIO;\n    public static supportAppliancePlugin?: boolean;\n    private static isCreated = false;\n    private static _resolve = (_manager: WindowManager) => void 0;\n\n    public version = __APP_VERSION__;\n    public dependencies = __APP_DEPENDENCIES__;\n\n    public appListeners?: AppListeners;\n\n    public readonly?: boolean;\n    public emitter: Emittery<PublicEvent> = callbacks;\n    public appManager?: AppManager;\n    public cursorManager?: CursorManager;\n    public viewMode = ViewMode.Broadcaster;\n    public isReplay = isPlayer(this.displayer);\n    private _pageState?: PageStateImpl;\n    private _fullscreen?: boolean;\n    private _cursorUIDs: string[] = [];\n    private _cursorUIDsStyleDOM?: HTMLStyleElement;\n\n    public _appliancePlugin?: any;\n\n    private boxManager?: BoxManager;\n    private static params?: MountParams;\n    static extendClass?: ExtendClass;\n\n    private containerResizeObserver?: ContainerResizeObserver;\n    public containerSizeRatio = WindowManager.containerSizeRatio;\n\n    private extendPluginManager?: ExtendPluginManager;\n\n    private _roomLogger?: Logger;\n\n    public attributesDeboundceLog?: ArgusLog;\n\n    get Logger(): Logger | undefined {\n        return this._roomLogger;\n    }\n\n    constructor(context: InvisiblePluginContext) {\n        super(context);\n        WindowManager.displayer = context.displayer;\n        (window as any).NETLESS_DEPS = __APP_DEPENDENCIES__;\n        this.emitter.on('mainViewScenePathChange', this.onMainViewScenePathChangeHandler)\n    }\n\n    public static onCreate(manager: WindowManager) {\n        WindowManager._resolve(manager);\n    }\n\n    public static async mount(\n        params: MountParams,\n        extendClass?: ExtendClass\n    ): Promise<WindowManager> {\n        const room = params.room;\n        WindowManager.container = params.container;\n        WindowManager.supportAppliancePlugin = params.supportAppliancePlugin;\n        const containerSizeRatio = params.containerSizeRatio;\n        const debug = params.debug;\n\n        const cursor = params.cursor;\n        WindowManager.params = params;\n        WindowManager.extendClass = extendClass;\n        WindowManager.displayer = params.room;\n        checkVersion();\n        let manager: WindowManager | undefined = undefined;\n        if (isRoom(room)) {\n            if (room.phase !== RoomPhase.Connected) {\n                throw new Error(\"[WindowManager]: Room only Connected can be mount\");\n            }\n            if (room.phase === RoomPhase.Connected && room.isWritable) {\n                // redo undo 需要设置这个属性\n                room.disableSerialization = false;\n            }\n            manager = await this.initManager(room);\n            if (manager) {\n                manager._roomLogger = (room as unknown as { logger: Logger }).logger;\n                manager.attributesDeboundceLog = new ArgusLog(manager._roomLogger, \"attributes\", 300);\n                if (WindowManager.registered.size > 0) {\n                    manager._roomLogger.info(\n                        `[WindowManager] registered apps: ${JSON.stringify(\n                            Array.from(WindowManager.registered.keys())\n                        )}`\n                    );\n                }\n            }\n        }\n        if (WindowManager.isCreated) {\n            throw new Error(\"[WindowManager]: Already created cannot be created again\");\n        }\n\n        this.debug = Boolean(debug);\n        if (this.debug) {\n            setOptions({ verbose: true });\n        }\n        if (manager?._roomLogger) {\n            manager._roomLogger.info(\n                `[WindowManager] Already insert room version: ${manager.version}`\n            );\n        } else {\n            log(\"Already insert room\", manager);\n        }\n\n        if (isRoom(this.displayer)) {\n            if (!manager) {\n                throw new Error(\"[WindowManager]: init InvisiblePlugin failed\");\n            }\n        } else {\n            await pRetry(\n                async count => {\n                    manager = room.getInvisiblePlugin(WindowManager.kind) as WindowManager;\n                    if (!manager) {\n                        log(`manager is empty. retrying ${count}`);\n                        throw new Error();\n                    }\n                },\n                // 1s, 2s, 4s, 5s, 5s, 5s, 5s, 5s, 5s\n                { retries: 10, maxTimeout: 5000 } as any\n            );\n        }\n\n        if (!manager) {\n            throw new Error(\"[WindowManager]: create manager failed\");\n        }\n\n        if (containerSizeRatio) {\n            WindowManager.containerSizeRatio = containerSizeRatio;\n        }\n        await manager.ensureAttributes();\n\n        const AppManagerClass = getExtendClass(AppManager, WindowManager.extendClass);\n        const CursorManagerClass = getExtendClass(CursorManager, WindowManager.extendClass);\n\n        manager._fullscreen = params.fullscreen;\n        manager.appManager = new AppManagerClass(manager);\n        manager.appManager.polling = params.polling || false;\n        manager._pageState = new PageStateImpl(manager.appManager);\n        manager.cursorManager = new CursorManagerClass(\n            manager.appManager,\n            Boolean(cursor),\n            params.cursorOptions,\n            params.applianceIcons\n        );\n\n        manager.extendPluginManager = new ExtendPluginManager({\n            internalEmitter: internalEmitter,\n            windowManager: manager,\n        });\n\n        if (containerSizeRatio) {\n            manager.containerSizeRatio = containerSizeRatio;\n        }\n\n        if (params.container) {\n            manager.bindContainer(params.container);\n        }\n\n        replaceRoomFunction(room, manager);\n        internalEmitter.emit(\"onCreated\");\n        WindowManager.isCreated = true;\n        if (\n            manager._roomLogger &&\n            manager.attributes.registered &&\n            Object.keys(manager.attributes.registered).length > 0\n        ) {\n            manager._roomLogger.info(\n                `[WindowManager] attributes registered apps: ${JSON.stringify(\n                    Array.from(Object.keys(manager.attributes.registered))\n                )}`\n            );\n        }\n        try {\n            await initDb();\n        } catch (error) {\n            manager._roomLogger?.warn(`[WindowManager] indexedDB open failed: ${error.message}`);\n            console.warn(\"[WindowManager]: indexedDB open failed\");\n            console.log(error);\n        }\n        manager.emitter.on('mainViewScenePathChange', manager.onMainViewScenePathChangeHandler)\n        return manager;\n    }\n\n    public onMainViewScenePathChangeHandler = (scenePath: string) => {\n        const mainViewElement = this.mainView.divElement;\n        if (mainViewElement) {\n            const backgroundImage = mainViewElement.querySelector('.background img');\n            if (backgroundImage) {\n                const backgroundImageRect = backgroundImage?.getBoundingClientRect();\n                const backgroundImageCSS = window.getComputedStyle(backgroundImage);\n                const backgroundImageVisible = backgroundImageRect?.width > 0 && backgroundImageRect?.height > 0 && backgroundImageCSS.display !== 'none';\n                const camera = this.mainView.camera;\n                console.log(\"[window-manager] backgroundImageVisible:\" + backgroundImageVisible + \" camera:\" + JSON.stringify(camera));\n                return;\n            }\n            console.log(\"[window-manager] onMainViewScenePathChange scenePath:\" + scenePath + ' backgroundImageVisible is not found');\n            return;\n        }\n        console.log(\"[window-manager] onMainViewScenePathChange scenePath:\" + scenePath + ' mainViewElement is not found');\n    }\n\n    private static initManager(room: Room): Promise<WindowManager | undefined> {\n        return createInvisiblePlugin(room);\n    }\n\n    private static initContainer(\n        manager: WindowManager,\n        container: HTMLElement,\n        params: {\n            chessboard?: boolean;\n            overwriteStyles?: string;\n            fullscreen?: boolean;\n        }\n    ) {\n        const { chessboard, overwriteStyles, fullscreen } = params;\n        if (!WindowManager.container) {\n            WindowManager.container = container;\n        }\n        const { playground, wrapper, sizer, mainViewElement } = setupWrapper(container);\n        WindowManager.playground = playground;\n        if (chessboard) {\n            sizer.classList.add(\"netless-window-manager-chess-sizer\");\n        }\n        if (fullscreen) {\n            sizer.classList.add(\"netless-window-manager-fullscreen\");\n        }\n        if (overwriteStyles) {\n            const style = document.createElement(\"style\");\n            style.textContent = overwriteStyles;\n            playground.appendChild(style);\n        }\n        manager.containerResizeObserver = ContainerResizeObserver.create(\n            playground,\n            sizer,\n            wrapper,\n            internalEmitter\n        );\n        WindowManager.wrapper = wrapper;\n        WindowManager.sizer = sizer;\n        return mainViewElement;\n    }\n\n    public static get registered() {\n        return appRegister.registered;\n    }\n\n    public bindContainer(container: HTMLElement) {\n        if (isRoom(this.displayer) && this.room.phase !== RoomPhase.Connected) {\n            throw new Errors.BindContainerRoomPhaseInvalidError();\n        }\n        if (WindowManager.isCreated && WindowManager.container) {\n            if (WindowManager.container.firstChild) {\n                container.appendChild(WindowManager.container.firstChild);\n            }\n        } else {\n            if (WindowManager.params) {\n                const params = WindowManager.params;\n                const mainViewElement = WindowManager.initContainer(this, container, params);\n                if (this.boxManager) {\n                    this.boxManager.destroy();\n                }\n                const boxManager = createBoxManager(this, callbacks, internalEmitter, boxEmitter, {\n                    collectorContainer: params.collectorContainer,\n                    collectorStyles: params.collectorStyles,\n                    prefersColorScheme: params.prefersColorScheme,\n                    useBoxesStatus: params.useBoxesStatus,\n                });\n                this.boxManager = boxManager;\n                if (this.appManager) {\n                    this.appManager.useBoxesStatus = params.useBoxesStatus || false;\n                    this.appManager.setBoxManager(boxManager);\n                }\n                this.bindMainView(mainViewElement, params.disableCameraTransform);\n                if (WindowManager.wrapper) {\n                    this.cursorManager?.setupWrapper(WindowManager.wrapper);\n                }\n            }\n        }\n        internalEmitter.emit(\"updateManagerRect\");\n        this.appManager?.refresh();\n        this.appManager?.resetMaximized();\n        this.appManager?.resetMinimized();\n        this.appManager?.displayerWritableListener(!this.room.isWritable);\n        WindowManager.container = container;\n        this.extendPluginManager?.refreshContainer(container);\n    }\n\n    public bindCollectorContainer(container: HTMLElement) {\n        if (WindowManager.isCreated && this.boxManager) {\n            this.boxManager.setCollectorContainer(container);\n        } else {\n            if (WindowManager.params) {\n                WindowManager.params.collectorContainer = container;\n            }\n        }\n    }\n\n    /**\n     * 注册插件\n     */\n    public static register(params: RegisterParams<any, any, any>): Promise<void> {\n        return appRegister.register(params);\n    }\n\n    /**\n     * 注销插件\n     */\n    public static unregister(kind: string) {\n        return appRegister.unregister(kind);\n    }\n\n    /**\n     * 创建一个 app 至白板\n     */\n    public async addApp<T = any>(params: AddAppParams<T>): Promise<string | undefined> {\n        if (this.appManager) {\n            // 移除根目录时需要做一些异步的释放操作 addApp 需要等待释放完成才可以继续添加\n            if (this.appManager.rootDirRemoving) {\n                return new Promise((resolve, reject) => {\n                    internalEmitter.once(\"rootDirRemoved\").then(async () => {\n                        try {\n                            const appId = await this._addApp(params);\n                            resolve(appId);\n                        } catch (error) {\n                            reject(error.message);\n                        }\n                    });\n                });\n            } else {\n                return this._addApp(params);\n            }\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    private async _addApp<T = any>(params: AddAppParams<T>): Promise<string | undefined> {\n        if (this.appManager) {\n            if (!params.kind || typeof params.kind !== \"string\") {\n                throw new Errors.ParamsInvalidError();\n            }\n            if (params.src && typeof params.src === \"string\") {\n                appRegister.register({ kind: params.kind, src: params.src });\n            }\n            const appImpl = await appRegister.appClasses.get(params.kind)?.();\n            if (appImpl && appImpl.config?.singleton) {\n                if (this.appManager.appProxies.has(params.kind)) {\n                    throw new Errors.AppCreateError();\n                }\n            }\n            const isDynamicPPT = this.setupScenePath(params, this.appManager);\n            if (isDynamicPPT === undefined) {\n                return;\n            }\n            if (params?.options?.scenePath) {\n                params.options.scenePath = ensureValidScenePath(params.options.scenePath);\n            }\n            const appId = await this.appManager.addApp(params, Boolean(isDynamicPPT));\n            return appId;\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    private setupScenePath(params: AddAppParams, appManager: AppManager): boolean | undefined {\n        let isDynamicPPT = false;\n        if (params.options) {\n            const { scenePath, scenes } = params.options;\n            if (scenePath) {\n                if (!isValidScenePath(scenePath)) {\n                    throw new Errors.InvalidScenePath();\n                }\n                const apps = Object.keys(this.apps || {});\n                for (const appId of apps) {\n                    const appScenePath = appManager.store.getAppScenePath(appId);\n                    if (appScenePath && appScenePath === scenePath) {\n                        console.warn(`[WindowManager]: ScenePath \"${scenePath}\" already opened`);\n                        if (this.boxManager) {\n                            const topBox = this.boxManager.getTopBox();\n                            if (topBox) {\n                                this.boxManager.setZIndex(appId, topBox.zIndex + 1, false);\n                                this.boxManager.focusBox({ appId }, false);\n                            }\n                        }\n                        return;\n                    }\n                }\n            }\n            if (scenePath && scenes && scenes.length > 0) {\n                if (this.isDynamicPPT(scenes)) {\n                    isDynamicPPT = true;\n                    if (!entireScenes(this.displayer)[scenePath]) {\n                        putScenes(this.room, scenePath, scenes);\n                    }\n                } else {\n                    if (!entireScenes(this.displayer)[scenePath]) {\n                        putScenes(this.room, scenePath, [{ name: scenes[0].name }]);\n                    }\n                }\n            }\n            if (scenePath && scenes === undefined) {\n                putScenes(this.room, scenePath, [{}]);\n            }\n        }\n        return isDynamicPPT;\n    }\n\n    /**\n     * 设置 mainView 的 ScenePath, 并且切换白板为可写状态\n     */\n    public async setMainViewScenePath(scenePath: string): Promise<void> {\n        if (this.appManager) {\n            await this.appManager.setMainViewScenePath(scenePath);\n        }\n    }\n\n    /**\n     * 设置 mainView 的 SceneIndex, 并且切换白板为可写状态\n     */\n    public async setMainViewSceneIndex(index: number): Promise<void> {\n        if (this.appManager) {\n            await this.appManager.setMainViewSceneIndex(index);\n        }\n    }\n\n    public async nextPage(): Promise<boolean> {\n        if (this.appManager) {\n            const nextIndex = this.mainViewSceneIndex + 1;\n            if (nextIndex >= this.mainViewScenesLength) {\n                console.warn(`[WindowManager]: current page is the last page`);\n                return false;\n            }\n            await this.appManager.setMainViewSceneIndex(nextIndex);\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    public async prevPage(): Promise<boolean> {\n        if (this.appManager) {\n            const prevIndex = this.mainViewSceneIndex - 1;\n            if (prevIndex < 0) {\n                console.warn(`[WindowManager]: current page is the first page`);\n                return false;\n            }\n            await this.appManager.setMainViewSceneIndex(prevIndex);\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    public async jumpPage(index: number): Promise<boolean> {\n        if (this.appManager) {\n            if (index < 0 || index >= this.pageState.length) {\n                console.warn(`[WindowManager]: index ${index} out of range`);\n                return false;\n            }\n            await this.appManager.setMainViewSceneIndex(index);\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    public async addPage(params?: AddPageParams): Promise<void> {\n        if (this.appManager) {\n            const after = params?.after;\n            const scene = params?.scene;\n            if (after) {\n                const nextIndex = this.mainViewSceneIndex + 1;\n                this.room.putScenes(ROOT_DIR, [scene || {}], nextIndex);\n            } else {\n                this.room.putScenes(ROOT_DIR, [scene || {}]);\n            }\n        }\n    }\n\n    /**\n     * 删除一页\n     * 默认删除当前页, 可以删除指定 index 页\n     * 最低保留一页\n     */\n    public async removePage(index?: number): Promise<boolean> {\n        if (this.appManager) {\n            const needRemoveIndex = index === undefined ? this.pageState.index : index;\n            if (this.pageState.length === 1) {\n                console.warn(`[WindowManager]: can not remove the last page`);\n                return false;\n            }\n            if (needRemoveIndex < 0 || needRemoveIndex >= this.pageState.length) {\n                console.warn(`[WindowManager]: index ${index} out of range`);\n                return false;\n            }\n            return this.appManager.removeSceneByIndex(needRemoveIndex);\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * 返回 mainView 的 ScenePath\n     */\n    public getMainViewScenePath(): string | undefined {\n        return this.appManager?.store.getMainViewScenePath();\n    }\n\n    /**\n     * 返回 mainView 的 SceneIndex\n     */\n    public getMainViewSceneIndex(): number {\n        return this.appManager?.store.getMainViewSceneIndex();\n    }\n\n    /**\n     * 设置所有 app 的 readonly 模式\n     */\n    public setReadonly(readonly: boolean): void {\n        this.readonly = readonly;\n        this.boxManager?.setReadonly(readonly);\n        internalEmitter.emit(\"setReadonly\", readonly);\n    }\n\n    /**\n     * 切换 mainView 为可写\n     */\n    public switchMainViewToWriter(): Promise<void> | undefined {\n        return this.appManager?.mainViewProxy.mainViewClickHandler();\n    }\n\n    /**\n     * app destroy 回调\n     */\n    public onAppDestroy(kind: string, listener: (error: Error) => void): void {\n        addEmitterOnceListener(`destroy-${kind}`, listener);\n    }\n\n    /**\n     * app 本地自定义事件回调\n     *\n     * 返回一个用于撤销此监听的函数\n     */\n    public onAppEvent(\n        kind: string,\n        listener: (args: { kind: string; appId: string; type: string; value: any }) => void\n    ): () => void {\n        return internalEmitter.on(`custom-${kind}` as any, listener);\n    }\n\n    /**\n     * 设置 ViewMode\n     */\n    public setViewMode(mode: ViewMode): void {\n        if (mode === ViewMode.Broadcaster || mode === ViewMode.Follower) {\n            if (this.canOperate && mode === ViewMode.Broadcaster) {\n                this.appManager?.mainViewProxy.setCameraAndSize();\n            }\n            this.appManager?.mainViewProxy.start();\n        }\n        if (mode === ViewMode.Freedom) {\n            this.appManager?.mainViewProxy.stop();\n        }\n        this.viewMode = mode;\n        this.appManager?.mainViewProxy.setViewMode(mode);\n    }\n\n    public setBoxState(boxState: TeleBoxState): void {\n        if (!this.canOperate) return;\n        switch (boxState) {\n            case \"normal\":\n                this.setMaximized(false);\n                this.setMinimized(false);\n                break;\n            case \"maximized\":\n                this.setMaximized(true);\n                this.setMinimized(false);\n                break;\n            case \"minimized\":\n                this.setMinimized(true);\n                break;\n            default:\n                break;\n        }\n    }\n\n    public setMaximized(maximized: boolean): void {\n        if (!this.canOperate) return;\n        this.boxManager?.setMaximized(maximized, false);\n    }\n\n    public setMinimized(minimized: boolean): void {\n        if (!this.canOperate) return;\n        this.boxManager?.setMinimized(minimized, false);\n    }\n\n    /** 设置指定 box 的状态, 如果为 undefined, 则移除状态*/\n    public setBoxStatus(boxId: string, boxStatus?: TELE_BOX_STATE): void {\n        if (!this.canOperate) return;\n        this.appManager?.store.setBoxStatus(boxId, boxStatus);\n    }\n\n    /** 设置指定 box 的非最小化状态, 如果为 undefined, 则移除状态 */\n    public setLastNotMinimizedBoxStatus(\n        boxId: string,\n        lastNotMinimizedBoxStatus?: NotMinimizedBoxState\n    ): void {\n        if (!this.canOperate) return;\n        this.appManager?.store.setLastNotMinimizedBoxStatus(boxId, lastNotMinimizedBoxStatus);\n    }\n\n    public setFullscreen(fullscreen: boolean): void {\n        if (this._fullscreen !== fullscreen) {\n            this._fullscreen = fullscreen;\n            WindowManager.sizer?.classList.toggle(\"netless-window-manager-fullscreen\", fullscreen);\n            callbacks.emit(\"fullscreenChange\", fullscreen);\n        }\n    }\n\n    public get cursorUIDs(): string[] {\n        return this._cursorUIDs;\n    }\n\n    public setCursorUIDs(cursorUIDs?: string[] | null): void {\n        this._cursorUIDs = cursorUIDs || [];\n        if (this._cursorUIDs.length === 0) {\n            this._cursorUIDsStyleDOM?.remove();\n        } else {\n            if (!this._cursorUIDsStyleDOM) {\n                this._cursorUIDsStyleDOM = document.createElement(\"style\");\n            }\n            WindowManager.playground?.appendChild(this._cursorUIDsStyleDOM);\n            let style = \"[data-cursor-uid] { display: none }\";\n            for (const uid of this._cursorUIDs) {\n                style += `\\n[data-cursor-uid=\"${uid}\"] { display: flex }`;\n            }\n            this._cursorUIDsStyleDOM.textContent = style;\n        }\n    }\n\n    public get mainView(): View {\n        if (this.appManager) {\n            return this.appManager.mainViewProxy.view;\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    public get camera(): Camera {\n        if (this.appManager) {\n            return this.appManager.mainViewProxy.view.camera;\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    public get cameraState(): CameraState {\n        if (this.appManager) {\n            return this.appManager.mainViewProxy.cameraState;\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    public get apps(): Apps | undefined {\n        return this.appManager?.store.apps();\n    }\n\n    public get boxState(): TeleBoxState | undefined {\n        if (this.appManager) {\n            return this.appManager.boxManager?.boxState;\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    public get boxStatus(): Record<string, TeleBoxState> | undefined {\n        if (this.appManager) {\n            return this.appManager.store.getBoxesStatus();\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    public get lastNotMinimizedBoxStatus(): Record<string, NotMinimizedBoxState> | undefined {\n        if (this.appManager) {\n            return this.appManager.store.getLastNotMinimizedBoxesStatus();\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    public get darkMode(): boolean {\n        return Boolean(this.appManager?.boxManager?.darkMode);\n    }\n\n    public get prefersColorScheme(): TeleBoxColorScheme | undefined {\n        if (this.appManager) {\n            return this.appManager.boxManager?.prefersColorScheme;\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    public get focused(): string | undefined {\n        return this.attributes.focus;\n    }\n\n    public get focusedView(): View | undefined {\n        return this.appManager?.focusApp?.view || this.mainView;\n    }\n\n    public get polling(): boolean {\n        return this.appManager?.polling || false;\n    }\n\n    public set polling(b: boolean) {\n        if (this.appManager) {\n            this.appManager.polling = b;\n        }\n    }\n\n    public get cursorStyle(): \"default\" | \"custom\" {\n        return this.cursorManager?.style || \"default\";\n    }\n\n    public set cursorStyle(value: \"default\" | \"custom\") {\n        if (!this.cursorManager) {\n            throw new Error(\"[WindowManager]: cursor is not enabled, please set { cursor: true }.\");\n        }\n        this.cursorManager.style = value;\n    }\n\n    public get mainViewSceneIndex(): number {\n        return this._pageState?.index || 0;\n    }\n\n    public get mainViewSceneDir(): string {\n        if (this.appManager) {\n            return this.appManager?.getMainViewSceneDir();\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    public get topApp(): string | undefined {\n        return this.boxManager?.getTopBox()?.id;\n    }\n\n    public get mainViewScenesLength(): number {\n        return this._pageState?.length || 0;\n    }\n\n    public get canRedoSteps(): number {\n        return this.focusedView?.canRedoSteps || 0;\n    }\n\n    public get canUndoSteps(): number {\n        return this.focusedView?.canUndoSteps || 0;\n    }\n\n    public get sceneState(): SceneState {\n        if (this.appManager) {\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            return this.appManager.sceneState!;\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    public get pageState(): PageState {\n        if (this._pageState) {\n            return this._pageState.toObject();\n        } else {\n            throw new Errors.AppManagerNotInitError();\n        }\n    }\n\n    public get fullscreen(): boolean {\n        return Boolean(this._fullscreen);\n    }\n\n    /**\n     * 查询所有的 App\n     */\n    public queryAll(): AppProxy[] {\n        return Array.from(this.appManager?.appProxies.values() || []);\n    }\n\n    /**\n     * 查询单个 App\n     */\n    public queryOne(appId: string): AppProxy | undefined {\n        return this.appManager?.appProxies.get(appId);\n    }\n\n    /**\n     * 关闭 APP\n     */\n    public async closeApp(appId: string): Promise<void> {\n        return this.appManager?.closeApp(appId);\n    }\n\n    /**\n     * 切换 focus 到指定的 app, 并且把这个 app 放到最前面\n     */\n    public focusApp(appId: string) {\n        const box = this.boxManager?.getBox(appId);\n        if (box) {\n            this.boxManager?.focusBox({ appId }, false);\n            // 1.0 版本这里会有正式的 api\n            (this.boxManager?.teleBoxManager as any).makeBoxTop(box, false);\n        }\n    }\n\n    public moveCamera(\n        camera: Partial<Camera> & { animationMode?: AnimationMode | undefined }\n    ): void {\n        const pureCamera = omit(camera, [\"animationMode\"]);\n        const mainViewCamera = { ...this.mainView.camera };\n        if (isEqual({ ...mainViewCamera, ...pureCamera }, mainViewCamera)) return;\n        this.mainView.moveCamera(camera);\n        setTimeout(() => {\n            this.appManager?.mainViewProxy.setCameraAndSize();\n        }, 500);\n    }\n\n    public moveCameraToContain(\n        rectangle: Rectangle &\n            Readonly<{\n                animationMode?: AnimationMode;\n            }>\n    ): void {\n        this.mainView.moveCameraToContain(rectangle);\n        setTimeout(() => {\n            this.appManager?.mainViewProxy.setCameraAndSize();\n        }, 500);\n    }\n\n    public convertToPointInWorld(point: Point): Point {\n        return this.mainView.convertToPointInWorld(point);\n    }\n\n    public setCameraBound(cameraBound: CameraBound): void {\n        this.mainView.setCameraBound(cameraBound);\n    }\n\n    public override onDestroy(): void {\n        this._destroy();\n    }\n\n    public override destroy(): void {\n        this._destroy();\n    }\n\n    private _destroy() {\n        this.attributesDeboundceLog?.destroy();\n        this.attributesDeboundceLog = undefined;\n        this.containerResizeObserver?.disconnect();\n        this.appManager?.destroy();\n        this.cursorManager?.destroy();\n        this.extendPluginManager?.destroy();\n        WindowManager.container = undefined;\n        WindowManager.wrapper = undefined;\n        WindowManager.sizer = undefined;\n        WindowManager.isCreated = false;\n        if (WindowManager.playground) {\n            WindowManager.playground.parentNode?.removeChild(WindowManager.playground);\n        }\n        WindowManager.params = undefined;\n        this.emitter.off('mainViewScenePathChange', this.onMainViewScenePathChangeHandler);\n        this._iframeBridge?.destroy();\n        this._iframeBridge = undefined;\n        log(\"Destroyed\");\n    }\n\n    private bindMainView(divElement: HTMLDivElement, disableCameraTransform: boolean | undefined) {\n        if (this.appManager) {\n            this.appManager.bindMainView(divElement, Boolean(disableCameraTransform));\n            this.cursorManager?.setMainViewDivElement(divElement);\n        }\n    }\n\n    public get canOperate(): boolean {\n        if (isRoom(this.displayer)) {\n            return (\n                (this.displayer as Room).isWritable &&\n                (this.displayer as Room).phase === RoomPhase.Connected\n            );\n        } else {\n            return false;\n        }\n    }\n\n    public get room(): Room {\n        return this.displayer as Room;\n    }\n\n    public safeSetAttributes(attributes: any): void {\n        if (this.canOperate) {\n            this.setAttributes(attributes);\n            if (this.attributesDeboundceLog) {\n                this.attributesDeboundceLog.logDebouncedShallowMerge(\"safeSetAttributes\", attributes);\n            }\n        }\n    }\n\n    public safeUpdateAttributes(keys: string[], value: any): void {\n        if (this.canOperate) {\n            this.updateAttributes(keys, value);\n            if (this.attributesDeboundceLog) {\n                this.attributesDeboundceLog.logDebouncedUpdateAttributes(keys, value);\n            }\n        }\n    }\n\n    public setPrefersColorScheme(scheme: TeleBoxColorScheme): void {\n        this.appManager?.boxManager?.setPrefersColorScheme(scheme);\n    }\n\n    public cleanCurrentScene(): void {\n        log(\"clean current scene\");\n        this.focusedView?.cleanCurrentScene();\n        this.Logger && this.Logger.info(`[WindowManager]: cleanCurrentScene ${this.focusedView?.focusScenePath}`);\n    }\n\n    public redo(): number {\n        return this.focusedView?.redo() || 0;\n    }\n\n    public undo(): number {\n        return this.focusedView?.undo() || 0;\n    }\n\n    public delete(): void {\n        this.focusedView?.delete();\n        this.Logger && this.Logger.info(`[WindowManager]: delete ${this.focusedView?.focusScenePath}`);\n    }\n\n    public copy(): void {\n        this.focusedView?.copy();\n    }\n\n    public paste(): void {\n        this.focusedView?.paste();\n    }\n\n    public duplicate(): void {\n        this.focusedView?.duplicate();\n    }\n\n    public insertText(x: number, y: number, text: string | undefined): string {\n        return this.focusedView?.insertText(x, y, text) || \"\";\n    }\n\n    public insertImage(info: ImageInformation): void {\n        return this.focusedView?.insertImage(info);\n    }\n\n    public completeImageUpload(uuid: string, url: string): void {\n        return this.focusedView?.completeImageUpload(uuid, url);\n    }\n\n    public lockImage(uuid: string, locked: boolean): void {\n        return this.focusedView?.lockImage(uuid, locked);\n    }\n\n    public lockImages(locked: boolean): void {\n        return this.focusedView?.lockImages(locked);\n    }\n\n    public refresh() {\n        this._refresh();\n        this.appManager?.dispatchInternalEvent(Events.Refresh);\n    }\n\n    /** @internal */\n    public _refresh() {\n        this.appManager?.mainViewProxy.rebind();\n        if (WindowManager.container) {\n            this.bindContainer(WindowManager.container);\n        }\n        this.appManager?.refresher.refresh();\n    }\n\n    public setContainerSizeRatio(ratio: number) {\n        if (!isNumber(ratio) || !(ratio > 0)) {\n            throw new Error(\n                `[WindowManager]: updateContainerSizeRatio error, ratio must be a positive number. but got ${ratio}`\n            );\n        }\n        WindowManager.containerSizeRatio = ratio;\n        this.containerSizeRatio = ratio;\n        internalEmitter.emit(\"containerSizeRatioUpdate\", ratio);\n    }\n\n    private isDynamicPPT(scenes: SceneDefinition[]) {\n        const sceneSrc = scenes[0]?.ppt?.src;\n        return sceneSrc?.startsWith(\"pptx://\");\n    }\n\n    private async ensureAttributes() {\n        if (isNull(this.attributes)) {\n            await wait(50);\n        }\n        if (isObject(this.attributes)) {\n            if (!this.attributes[Fields.Apps]) {\n                this.safeSetAttributes({ [Fields.Apps]: {} });\n            }\n            if (!this.attributes[Fields.Cursors]) {\n                this.safeSetAttributes({ [Fields.Cursors]: {} });\n            }\n            if (!this.attributes[\"_mainScenePath\"]) {\n                this.safeSetAttributes({ _mainScenePath: INIT_DIR });\n            }\n            if (!this.attributes[\"_mainSceneIndex\"]) {\n                this.safeSetAttributes({ _mainSceneIndex: 0 });\n            }\n            if (!this.attributes[Fields.Registered]) {\n                this.safeSetAttributes({ [Fields.Registered]: {} });\n            }\n            if (!this.attributes[Fields.IframeBridge]) {\n                this.safeSetAttributes({ [Fields.IframeBridge]: {} });\n            }\n        }\n    }\n\n    private _iframeBridge?: IframeBridge;\n    public getIframeBridge() {\n        if (!this.appManager) {\n            throw new Error(\"[WindowManager]: should call getIframeBridge() after await mount()\");\n        }\n        this._iframeBridge || (this._iframeBridge = new IframeBridge(this, this.appManager));\n        return this._iframeBridge;\n    }\n\n    public useExtendPlugin(extend: ExtendPluginInstance<any>) {\n        this.extendPluginManager?.use(extend);\n    }\n}\n\nsetupBuiltin();\n\nexport * from \"./typings\";\n\nexport { BuiltinApps } from \"./BuiltinApps\";\nexport type { PublicEvent } from \"./callback\";\n\nexport * from \"./ExtendPluginManager\";\n"],"names":["Events","AppAttributes","AppEvents","AppStatus","CursorState","callbacks","db","e","index","text","id","kind","i","s","time","t","r","o","events","v","genUID","SideEffectManager","size","noop","k","has","l","ee","j","n","p","process","g","b","a","styles","element","cache","t$1","r$1","u","clamp","preventEvent","flattenEvent","x","y","_","children","boxEmitter","getExtendClass","c","instance","create_fragment","color","hex","style","App","_a","update","self","Fields","appId","error","scale","steps","log","ResizeObserver","ResizeObserverPolyfill","wait","global","svg","cb","scheduler","shouldUseNative","require$$0","q","w","z","A","B","C","D","E","F","G","H","I","J","K","L","M","d","f","h","m","N","O","P","Q","R","S","T","U","V","W","aa","X","Y","Z","ba","reactModule","schedulerModule","require$$1","require$$2","ie","se","te","reactDomModule","setOptions","AppDocsViewer","AppMediaPlayer","number","Errors.BindContainerRoomPhaseInvalidError","Errors.AppManagerNotInitError","Errors.ParamsInvalidError","Errors.AppCreateError","Errors.InvalidScenePath"],"mappings":"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"}