@netless/telebox-insider 1.0.0-alpha.21 → 1.0.0-alpha.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"telebox-insider.es.js","sources":["../src/TeleBox/constants.ts","../src/utils.ts","../src/TeleTitleBar/DefaultTitleBar/index.ts","../src/TeleBox/utils.ts","../src/TeleBox/index.ts","../src/TeleBoxCollector/icons/collector.svg","../src/TeleBoxCollector/index.ts","../src/TeleBoxManager/constants.ts","../src/TeleBoxManager/MaxTitleBar/index.ts","../src/TeleBoxManager/index.ts"],"sourcesContent":["export enum TELE_BOX_COLOR_SCHEME {\n Light = \"light\",\n Dark = \"dark\",\n Auto = \"auto\",\n}\n\nexport enum TELE_BOX_STATE {\n Normal = \"normal\",\n Minimized = \"minimized\",\n Maximized = \"maximized\",\n}\n\nexport enum TELE_BOX_EVENT {\n DarkMode = \"dark_mode\",\n PrefersColorScheme = \"prefers_color_scheme\",\n Close = \"close\",\n Focus = \"focus\",\n Blur = \"blur\",\n IntrinsicMove = \"intrinsic_move\",\n IntrinsicResize = \"intrinsic_resize\",\n ZIndex = \"z_index\",\n State = \"state\",\n Minimized = \"minimized\",\n Maximized = \"maximized\",\n Readonly = \"readonly\",\n Destroyed = \"destroyed\",\n}\n\nexport enum TELE_BOX_DELEGATE_EVENT {\n Close = \"close\",\n Maximize = \"maximize\",\n Minimize = \"minimize\",\n}\n\nexport enum TELE_BOX_RESIZE_HANDLE {\n North = \"n\",\n South = \"s\",\n West = \"w\",\n East = \"e\",\n NorthWest = \"nw\",\n NorthEast = \"ne\",\n SouthEast = \"se\",\n SouthWest = \"sw\",\n}\n\nexport const TeleBoxDragHandleType = \"dh\";\n","export function clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function preventEvent(ev: Event): void {\n ev.stopPropagation();\n if (ev.cancelable) {\n ev.preventDefault();\n }\n}\n\nexport function flattenEvent(ev: MouseEvent | TouchEvent): MouseEvent | Touch {\n return (ev as TouchEvent).touches\n ? (ev as TouchEvent).touches[0]\n : (ev as MouseEvent);\n}\n\nexport function getRandomInt(min: number, max: number): number {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nlet defaultBoxCount = 1;\n\nexport function getBoxDefaultName(): string {\n return `New Box ${defaultBoxCount++}`;\n}\n\nexport function identity<TValue>(value: TValue): TValue {\n return value;\n}\n\nexport function isTruthy<TValue>(value: TValue): boolean {\n return Boolean(value);\n}\n\nexport function isFalsy<TValue>(value: TValue): boolean {\n return !value;\n}\n","import \"./style.scss\";\n\nimport { SideEffectManager } from \"side-effect-manager\";\n\nimport {\n TeleBoxDragHandleType,\n TELE_BOX_DELEGATE_EVENT,\n TELE_BOX_STATE,\n} from \"../../TeleBox/constants\";\nimport type { TeleBoxState } from \"../../TeleBox/typings\";\nimport type {\n TeleTitleBar,\n TeleTitleBarConfig,\n TeleTitleBarEvent,\n} from \"../typings\";\nimport { preventEvent } from \"../../utils\";\nimport type { ReadonlyVal } from \"value-enhancer\";\n\nexport type DefaultTitleBarButton = TeleTitleBarEvent & {\n readonly iconClassName: string;\n readonly isActive?: (state: TeleBoxState) => boolean;\n};\n\nexport interface DefaultTitleBarConfig extends TeleTitleBarConfig {\n buttons?: ReadonlyArray<DefaultTitleBarButton>;\n}\n\nexport class DefaultTitleBar implements TeleTitleBar {\n public constructor({\n readonly$,\n state$,\n title$,\n buttons,\n onEvent,\n onDragStart,\n namespace = \"telebox\",\n }: DefaultTitleBarConfig) {\n this.readonly$ = readonly$;\n this.state$ = state$;\n this.title$ = title$;\n this.onEvent = onEvent;\n this.onDragStart = onDragStart;\n this.namespace = namespace;\n\n this.buttons = buttons || [\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: (state) => state === TELE_BOX_STATE.Maximized,\n },\n {\n type: TELE_BOX_DELEGATE_EVENT.Close,\n iconClassName: this.wrapClassName(\"titlebar-icon-close\"),\n },\n ];\n\n this.$dragArea = this.renderDragArea();\n }\n\n public readonly namespace: string;\n\n public $titleBar: HTMLElement | undefined;\n\n public $dragArea: HTMLElement;\n\n public render(): HTMLElement {\n if (!this.$titleBar) {\n this.$titleBar = document.createElement(\"div\");\n this.$titleBar.className = this.wrapClassName(\"titlebar\");\n\n const $titleArea = document.createElement(\"div\");\n $titleArea.className = this.wrapClassName(\"title-area\");\n $titleArea.dataset.teleBoxHandle = TeleBoxDragHandleType;\n\n const $title = document.createElement(\"h1\");\n $title.className = this.wrapClassName(\"title\");\n $title.dataset.teleBoxHandle = TeleBoxDragHandleType;\n\n $titleArea.appendChild($title);\n $titleArea.appendChild(this.$dragArea);\n\n const $buttonsContainer = document.createElement(\"div\");\n $buttonsContainer.className = this.wrapClassName(\"titlebar-btns\");\n\n this.buttons.forEach(({ iconClassName }, i) => {\n const teleTitleBarBtnIndex = String(i);\n\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 $buttonsContainer.appendChild($btn);\n });\n\n this.sideEffect.addDisposer(\n this.title$.subscribe((title) => {\n $title.textContent = title;\n $title.title = title;\n }),\n \"render-title\"\n );\n\n this.sideEffect.addDisposer(\n this.state$.subscribe((state) => {\n this.buttons.forEach((btn, i) => {\n if (btn.isActive) {\n $buttonsContainer.children[i]?.classList.toggle(\n \"is-active\",\n btn.isActive(state)\n );\n }\n });\n }),\n \"render-state-btns\"\n );\n\n this.sideEffect.addEventListener(\n $buttonsContainer,\n \"click\",\n (ev) => {\n if (this.readonly$.value) {\n return;\n }\n const target = ev.target as HTMLElement;\n const teleTitleBarBtnIndex = Number(\n target.dataset?.teleTitleBarBtnIndex\n );\n if (\n !Number.isNaN(teleTitleBarBtnIndex) &&\n teleTitleBarBtnIndex < this.buttons.length\n ) {\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 } as TeleTitleBarEvent);\n }\n }\n },\n {},\n \"render-btns-container-click\"\n );\n\n this.$titleBar.appendChild($titleArea);\n this.$titleBar.appendChild($buttonsContainer);\n }\n\n return this.$titleBar;\n }\n\n public renderDragArea(): HTMLElement {\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\n public dragHandle(): HTMLElement | undefined {\n return this.$titleBar;\n }\n\n public wrapClassName(className: string): string {\n return `${this.namespace}-${className}`;\n }\n\n public destroy(): void {\n this.sideEffect.flushAll();\n if (this.$titleBar) {\n this.$titleBar = void 0;\n this.onDragStart = void 0;\n this.onEvent = void 0;\n }\n }\n\n public onEvent?: TeleTitleBarConfig[\"onEvent\"];\n\n public onDragStart?: TeleTitleBarConfig[\"onDragStart\"];\n\n protected readonly$: TeleTitleBarConfig[\"readonly$\"];\n\n protected title$: ReadonlyVal<string>;\n\n protected buttons: ReadonlyArray<DefaultTitleBarButton>;\n\n protected state$: TeleTitleBarConfig[\"state$\"];\n\n protected sideEffect = new SideEffectManager();\n\n protected lastTitleBarClick = {\n timestamp: 0,\n clientX: -100,\n clientY: -100,\n };\n\n protected handleTitleBarClick = (ev: MouseEvent): void => {\n if (this.readonly$.value) {\n return;\n }\n\n if (ev.button !== 0) {\n return; // Not left mouse\n }\n\n if ((ev.target as HTMLElement).dataset?.teleTitleBarNoDblClick) {\n return; // btns\n }\n\n preventEvent(ev);\n\n const now = Date.now();\n if (now - this.lastTitleBarClick.timestamp <= 500) {\n if (\n Math.abs(ev.clientX - this.lastTitleBarClick.clientX) <= 5 &&\n Math.abs(ev.clientY - this.lastTitleBarClick.clientY) <= 5\n ) {\n // double click\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\n protected lastTitleBarTouch = {\n timestamp: 0,\n clientX: -100,\n clientY: -100,\n };\n\n protected handleTitleBarTouch = (ev: TouchEvent): void => {\n if (this.readonly$.value) {\n return;\n }\n\n if ((ev.target as HTMLElement).dataset?.teleTitleBarNoDblClick) {\n return; // btns\n }\n\n preventEvent(ev);\n\n const now = Date.now();\n const {\n clientX = this.lastTitleBarTouch.clientX + 100,\n clientY = this.lastTitleBarTouch.clientY + 100,\n } = ev.touches[0] || {};\n\n if (now - this.lastTitleBarTouch.timestamp <= 500) {\n if (\n Math.abs(clientX - this.lastTitleBarTouch.clientX) <= 10 &&\n Math.abs(clientY - this.lastTitleBarTouch.clientY) <= 10\n ) {\n // double click\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}\n","import type { TeleBoxRect } from \"./typings\";\n\nexport function calcStageRect([rootRect, ratio]: [\n TeleBoxRect,\n number\n]): TeleBoxRect {\n if (ratio <= 0 || rootRect.width <= 0 || rootRect.height <= 0) {\n return rootRect;\n }\n\n const preferredHeight = rootRect.width * ratio;\n if (preferredHeight === rootRect.height) {\n return rootRect;\n }\n\n if (preferredHeight < rootRect.height) {\n return {\n x: 0,\n y: (rootRect.height - preferredHeight) / 2,\n width: rootRect.width,\n height: preferredHeight,\n };\n }\n\n const preferredWidth = rootRect.height / ratio;\n return {\n x: (rootRect.width - preferredWidth) / 2,\n y: 0,\n width: preferredWidth,\n height: rootRect.height,\n };\n}\n","import \"./style.scss\";\nimport shadowStyles from \"./style.shadow.scss?inline\";\n\nimport Emittery from \"emittery\";\nimport styler from \"stylefire\";\nimport shallowequal from \"shallowequal\";\nimport { genUID, SideEffectManager } from \"side-effect-manager\";\nimport type {\n ReadonlyVal,\n ReadonlyValEnhancedResult,\n ValEnhancedResult,\n} from \"value-enhancer\";\nimport {\n combine,\n Val,\n withReadonlyValueEnhancer,\n withValueEnhancer,\n ValManager,\n} from \"value-enhancer\";\nimport type { TeleTitleBar } from \"../TeleTitleBar\";\nimport { DefaultTitleBar } from \"../TeleTitleBar\";\nimport { ResizeObserver as ResizeObserverPolyfill } from \"@juggle/resize-observer\";\nimport { clamp, flattenEvent, getBoxDefaultName, preventEvent } from \"../utils\";\nimport {\n TELE_BOX_EVENT,\n TELE_BOX_STATE,\n TELE_BOX_RESIZE_HANDLE,\n} from \"./constants\";\nimport type {\n TeleBoxConfig,\n TeleBoxHandleType,\n TeleBoxState,\n TeleBoxCoord,\n TeleBoxSize,\n TeleBoxEventConfig,\n TeleBoxEvent,\n TeleBoxDelegateEventConfig,\n TeleBoxRect,\n} from \"./typings\";\nimport { calcStageRect } from \"./utils\";\n\nexport * from \"./constants\";\nexport * from \"./typings\";\n\nconst ResizeObserver = window.ResizeObserver || ResizeObserverPolyfill;\n\ntype RequiredTeleBoxConfig = Required<TeleBoxConfig>;\n\ntype ValConfig = {\n title: Val<RequiredTeleBoxConfig[\"title\"], boolean>;\n visible: Val<RequiredTeleBoxConfig[\"visible\"], boolean>;\n resizable: Val<RequiredTeleBoxConfig[\"resizable\"], boolean>;\n draggable: Val<RequiredTeleBoxConfig[\"draggable\"], boolean>;\n boxRatio: Val<RequiredTeleBoxConfig[\"boxRatio\"], boolean>;\n stageRatio: Val<RequiredTeleBoxConfig[\"stageRatio\"], boolean>;\n stageStyle: Val<RequiredTeleBoxConfig[\"stageStyle\"], boolean>;\n bodyStyle: Val<RequiredTeleBoxConfig[\"bodyStyle\"], boolean>;\n};\n\ntype PropsValConfig = {\n darkMode: RequiredTeleBoxConfig[\"darkMode$\"];\n fence: RequiredTeleBoxConfig[\"fence$\"];\n minimized: RequiredTeleBoxConfig[\"minimized$\"];\n maximized: RequiredTeleBoxConfig[\"maximized$\"];\n readonly: RequiredTeleBoxConfig[\"readonly$\"];\n rootRect: RequiredTeleBoxConfig[\"rootRect$\"];\n managerStageRect: RequiredTeleBoxConfig[\"managerStageRect$\"];\n defaultBoxStageStyle: RequiredTeleBoxConfig[\"defaultBoxStageStyle$\"];\n defaultBoxBodyStyle: RequiredTeleBoxConfig[\"defaultBoxBodyStyle$\"];\n collectorRect: RequiredTeleBoxConfig[\"collectorRect$\"];\n};\n\ntype MyReadonlyValConfig = {\n zIndex: Val<RequiredTeleBoxConfig[\"zIndex\"], boolean>;\n focus: Val<RequiredTeleBoxConfig[\"focus\"], boolean>;\n\n minSize: Val<TeleBoxSize, boolean>;\n intrinsicSize: Val<TeleBoxSize, boolean>;\n intrinsicCoord: Val<TeleBoxCoord, boolean>;\n pxMinSize: ReadonlyVal<TeleBoxSize, boolean>;\n pxIntrinsicSize: ReadonlyVal<TeleBoxSize, boolean>;\n pxIntrinsicCoord: ReadonlyVal<TeleBoxCoord, boolean>;\n state: ReadonlyVal<TeleBoxState, boolean>;\n bodyRect: Val<TeleBoxRect>;\n stageRect: ReadonlyVal<TeleBoxRect>;\n};\n\ntype CombinedValEnhancedResult = ReadonlyValEnhancedResult<\n PropsValConfig & MyReadonlyValConfig\n> &\n ValEnhancedResult<ValConfig>;\n\nexport interface TeleBox extends CombinedValEnhancedResult {}\n\nexport class TeleBox {\n public constructor({\n id = genUID(),\n title = getBoxDefaultName(),\n namespace = \"telebox\",\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 resizable = true,\n draggable = true,\n boxRatio = -1,\n focus = false,\n zIndex = 100,\n stageRatio = null,\n enableShadowDOM = true,\n titleBar,\n content,\n stage,\n footer,\n styles,\n userStyles,\n bodyStyle = null,\n stageStyle = null,\n darkMode$,\n fence$,\n minimized$,\n maximized$,\n readonly$,\n root,\n rootRect$,\n managerStageRect$,\n managerStageRatio$,\n defaultBoxBodyStyle$,\n defaultBoxStageStyle$,\n collectorRect$,\n }: TeleBoxConfig) {\n this._sideEffect = new SideEffectManager();\n\n this.id = id;\n this.namespace = namespace;\n this.enableShadowDOM = enableShadowDOM;\n\n const valManager = new ValManager();\n this._sideEffect.addDisposer(() => valManager.destroy());\n\n const title$ = new Val(title);\n const visible$ = new Val(visible);\n const resizable$ = new Val(resizable);\n const draggable$ = new Val(draggable);\n const boxRatio$ = new Val(boxRatio);\n const zIndex$ = new Val(zIndex);\n const focus$ = new Val(focus);\n\n const state$ = combine(\n [minimized$, maximized$],\n ([minimized, maximized]): TeleBoxState =>\n minimized\n ? TELE_BOX_STATE.Minimized\n : maximized\n ? TELE_BOX_STATE.Maximized\n : TELE_BOX_STATE.Normal\n );\n\n const minSize$ = new Val(\n {\n width: clamp(minWidth, 0, 1),\n height: clamp(minHeight, 0, 1),\n },\n { compare: shallowequal }\n );\n\n const pxMinSize$ = combine(\n [minSize$, managerStageRect$],\n ([minSize, managerStageRect]) => ({\n width: minSize.width * managerStageRect.width,\n height: minSize.height * managerStageRect.height,\n }),\n { compare: shallowequal }\n );\n\n const intrinsicSize$ = new Val(\n { width, height },\n { compare: shallowequal }\n );\n\n this._sideEffect.addDisposer(\n // check intrinsicSize overflow\n minSize$.reaction((minSize, skipUpdate) => {\n intrinsicSize$.setValue(\n {\n width: Math.max(width, minSize.width),\n height: Math.max(height, minSize.height),\n },\n skipUpdate\n );\n })\n );\n\n const intrinsicCoord$ = new Val({ x, y }, { compare: shallowequal });\n\n const pxIntrinsicSize$ = combine(\n [intrinsicSize$, managerStageRect$],\n ([size, managerStageRect]) => ({\n width: managerStageRect.width * size.width,\n height: managerStageRect.height * size.height,\n }),\n { compare: shallowequal }\n );\n\n const pxIntrinsicCoord$ = combine(\n [intrinsicCoord$, managerStageRect$],\n ([intrinsicCoord, managerStageRect]) => ({\n x: intrinsicCoord.x * managerStageRect.width,\n y: intrinsicCoord.y * managerStageRect.height,\n }),\n { compare: shallowequal }\n );\n\n const bodyStyle$ = new Val<string | null>(bodyStyle);\n const stageStyle$ = new Val<string | null>(stageStyle);\n\n const contentRoot$ = new Val<HTMLElement | null>(null);\n const bodyRect$ = new Val<TeleBoxRect>(managerStageRect$.value, {\n compare: shallowequal,\n });\n const stageRatio$ = new Val(stageRatio);\n const finalStageRatio$ = combine(\n [stageRatio$, managerStageRatio$],\n ([stageRatio, managerStageRatio]) => stageRatio ?? managerStageRatio\n );\n const stageRect$ = combine(\n [bodyRect$, finalStageRatio$],\n calcStageRect,\n { compare: shallowequal }\n );\n\n const propsValConfig: PropsValConfig = {\n darkMode: darkMode$,\n fence: fence$,\n minimized: minimized$,\n maximized: maximized$,\n readonly: readonly$,\n rootRect: rootRect$,\n managerStageRect: managerStageRect$,\n defaultBoxBodyStyle: defaultBoxBodyStyle$,\n defaultBoxStageStyle: defaultBoxStageStyle$,\n collectorRect: collectorRect$,\n };\n\n withReadonlyValueEnhancer(this, propsValConfig);\n\n const myReadonlyValConfig: MyReadonlyValConfig = {\n zIndex: zIndex$,\n focus: focus$,\n\n state: state$,\n minSize: minSize$,\n pxMinSize: pxMinSize$,\n intrinsicSize: intrinsicSize$,\n intrinsicCoord: intrinsicCoord$,\n pxIntrinsicSize: pxIntrinsicSize$,\n pxIntrinsicCoord: pxIntrinsicCoord$,\n bodyRect: bodyRect$,\n stageRect: stageRect$,\n };\n\n withReadonlyValueEnhancer(this, myReadonlyValConfig, valManager);\n\n const valConfig: ValConfig = {\n title: title$,\n visible: visible$,\n resizable: resizable$,\n draggable: draggable$,\n boxRatio: boxRatio$,\n stageRatio: stageRatio$,\n bodyStyle: bodyStyle$,\n stageStyle: stageStyle$,\n };\n\n withValueEnhancer(this, valConfig, valManager);\n\n this.titleBar =\n titleBar ||\n new DefaultTitleBar({\n readonly$: readonly$,\n state$: state$,\n title$: title$,\n namespace: this.namespace,\n onDragStart: (event) => this._handleTrackStart?.(event),\n onEvent: (event) => this._delegateEvents.emit(event.type),\n });\n\n this._sideEffect.addDisposer(\n boxRatio$.subscribe((boxRatio) => {\n if (boxRatio > 0) {\n this.transform(\n pxIntrinsicCoord$.value.x,\n pxIntrinsicCoord$.value.y,\n pxIntrinsicSize$.value.width,\n pxIntrinsicSize$.value.height\n );\n }\n })\n );\n\n this._sideEffect.addDisposer(\n fence$.subscribe((fence) => {\n if (fence) {\n this.move(\n pxIntrinsicCoord$.value.x,\n pxIntrinsicCoord$.value.y\n );\n }\n })\n );\n\n this.$box = this._render();\n contentRoot$.setValue(this.$content.parentElement);\n content && this.mountContent(content);\n stage && this.mountStage(stage);\n footer && this.mountFooter(footer);\n styles && this.mountStyles(styles);\n userStyles && this.mountUserStyles(userStyles);\n root.appendChild(this.$box);\n\n const watchValEvent = <E extends TeleBoxEvent>(\n val: ReadonlyVal<TeleBoxEventConfig[E], boolean>,\n event: E\n ) => {\n this._sideEffect.addDisposer(\n val.reaction((v, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit<any>(event, v);\n }\n })\n );\n };\n\n watchValEvent(darkMode$, TELE_BOX_EVENT.DarkMode);\n watchValEvent(readonly$, TELE_BOX_EVENT.Readonly);\n watchValEvent(zIndex$, TELE_BOX_EVENT.ZIndex);\n watchValEvent(minimized$, TELE_BOX_EVENT.Minimized);\n watchValEvent(maximized$, TELE_BOX_EVENT.Maximized);\n watchValEvent(state$, TELE_BOX_EVENT.State);\n watchValEvent(intrinsicSize$, TELE_BOX_EVENT.IntrinsicResize);\n watchValEvent(intrinsicCoord$, TELE_BOX_EVENT.IntrinsicMove);\n\n this._sideEffect.addDisposer([\n visible$.reaction((visible, skipUpdate) => {\n if (!skipUpdate && !visible) {\n this.events.emit(TELE_BOX_EVENT.Close);\n }\n }),\n focus$.reaction((focus, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(\n focus ? TELE_BOX_EVENT.Focus : TELE_BOX_EVENT.Blur\n );\n }\n }),\n ]);\n }\n\n public readonly id: string;\n\n /** ClassName Prefix. For CSS styling. Default \"telebox\" */\n public readonly namespace: string;\n\n /** Enable shadow DOM for box content. Default true. */\n public readonly enableShadowDOM: boolean;\n\n public readonly events = new Emittery<\n TeleBoxEventConfig,\n TeleBoxEventConfig\n >();\n\n public readonly _delegateEvents = new Emittery<\n TeleBoxDelegateEventConfig,\n TeleBoxDelegateEventConfig\n >();\n\n protected _sideEffect: SideEffectManager;\n\n public titleBar: TeleTitleBar;\n\n /** Minimum box width relative to stage area. 0~1. Default 0. */\n public get minWidth(): number {\n return this._minSize$.value.width;\n }\n\n /** Minimum box height relative to stage area. 0~1. Default 0. */\n public get minHeight(): number {\n return this._minSize$.value.height;\n }\n\n /**\n * @param minWidth Minimum box width relative to stage area. 0~1.\n * @returns this\n */\n public setMinWidth(minWidth: number, skipUpdate = false): void {\n this._minSize$.setValue(\n { width: minWidth, height: this.minHeight },\n skipUpdate\n );\n }\n\n /**\n * @param minHeight Minimum box height relative to container element. 0~1.\n * @returns this\n */\n public setMinHeight(minHeight: number, skipUpdate = false): void {\n this._minSize$.setValue(\n { width: this.minWidth, height: minHeight },\n skipUpdate\n );\n }\n\n /**\n * Resize box.\n * @param width Box width relative to container element. 0~1.\n * @param height Box height relative to container element. 0~1.\n * @param skipUpdate Skip emitting event.\n * @returns this\n */\n public resize(width: number, height: number, skipUpdate = false): void {\n this._intrinsicSize$.setValue(\n {\n width: Math.max(width, this.minWidth),\n height: Math.max(height, this.minHeight),\n },\n skipUpdate\n );\n }\n\n /** Intrinsic box x position relative to container element(without counting the effect of maximization or minimization). 0~1. Default 0.1. */\n public get intrinsicX(): number {\n return this._intrinsicCoord$.value.x;\n }\n\n /** Intrinsic box y position relative to container element(without counting the effect of maximization or minimization). 0~1. Default 0.1. */\n public get intrinsicY(): number {\n return this._intrinsicCoord$.value.y;\n }\n\n /** Intrinsic box width relative to container element(without counting the effect of maximization or minimization). 0~1. Default 0.1. */\n public get intrinsicWidth(): number {\n return this._intrinsicSize$.value.width;\n }\n\n /** Intrinsic box height relative to container element(without counting the effect of maximization or minimization). 0~1. Default 0.1. */\n public get intrinsicHeight(): number {\n return this._intrinsicSize$.value.height;\n }\n\n /**\n * Move box position.\n * @param x x position in px.\n * @param y y position in px.\n * @param skipUpdate Skip emitting event.\n * @returns this\n */\n protected move(x: number, y: number, skipUpdate = false): void {\n let safeX: number;\n let safeY: number;\n const managerStageRect = this.managerStageRect;\n const pxIntrinsicSize = this.pxIntrinsicSize;\n\n if (this.fence) {\n safeX = clamp(x, 0, managerStageRect.width - pxIntrinsicSize.width);\n safeY = clamp(\n y,\n 0,\n managerStageRect.height - pxIntrinsicSize.height\n );\n } else {\n safeX = clamp(\n x,\n -(pxIntrinsicSize.width - 120),\n 0 + managerStageRect.width - 20\n );\n safeY = clamp(y, 0, 0 + managerStageRect.height - 20);\n }\n\n this._intrinsicCoord$.setValue(\n {\n x: safeX / managerStageRect.width,\n y: safeY / managerStageRect.height,\n },\n skipUpdate\n );\n }\n\n /**\n * Resize + Move, with respect to fixed ratio.\n * @param x x position in px.\n * @param y y position in px.\n * @param width Box width in px.\n * @param height Box height in px.\n * @param skipUpdate Skip emitting event.\n * @returns this\n */\n protected transform(\n x: number,\n y: number,\n width: number,\n height: number,\n skipUpdate = false\n ): void {\n const managerStageRect = this.managerStageRect;\n\n width = Math.max(width, this.pxMinSize.width);\n height = Math.max(height, this.pxMinSize.height);\n\n if (this.boxRatio > 0) {\n const newHeight = this.boxRatio * width;\n if (y !== this.pxIntrinsicCoord.y) {\n y -= newHeight - height;\n }\n height = newHeight;\n }\n\n if (y < 0) {\n y = 0;\n height = this.pxIntrinsicSize.height;\n }\n\n this.move(x, y, skipUpdate);\n this._intrinsicSize$.setValue(\n {\n width: width / managerStageRect.width,\n height: height / managerStageRect.height,\n },\n skipUpdate\n );\n }\n\n private $authorContent?: HTMLElement;\n\n /** Mount dom to box content. */\n public mountContent(content: HTMLElement): void {\n this.$authorContent?.remove();\n this.$authorContent = content;\n this.$content.appendChild(content);\n }\n\n /** Unmount content from the box. */\n public unmountContent(): void {\n if (this.$authorContent) {\n this.$authorContent.remove();\n this.$authorContent = undefined;\n }\n }\n\n private $authorStage?: HTMLElement;\n\n /** Mount dom to box stage. */\n public mountStage(stage: HTMLElement): void {\n this.$authorStage?.remove();\n this.$authorStage = stage;\n if (!this.$stage) {\n this.$stage = this._renderStage();\n }\n this.$stage.appendChild(stage);\n if (!this.$stage.parentElement) {\n this.$body.appendChild(this.$stage);\n }\n }\n\n /** Unmount content from the box. */\n public unmountStage(): void {\n if (this.$authorStage) {\n this.$authorStage.remove();\n this.$authorStage = undefined;\n }\n this.$stage?.remove();\n }\n\n private $authorFooter?: HTMLElement;\n\n /** Mount dom to box Footer. */\n public mountFooter(footer: HTMLElement): void {\n this.$authorFooter?.remove();\n this.$authorFooter = footer;\n this.$footer.appendChild(footer);\n }\n\n /** Unmount Footer from the box. */\n public unmountFooter(): void {\n if (this.$authorFooter) {\n this.$authorFooter.remove();\n this.$authorFooter = undefined;\n }\n }\n\n /** Mount styles for box content */\n public mountStyles(styles: string): void {\n this.$styles.textContent = styles;\n }\n\n /** Umount styles for box content */\n public unmountStyles(): void {\n this.$styles.textContent = \"\";\n }\n\n /** Mount user styles for box content */\n public mountUserStyles(styles: string): void {\n this.$userStyles.textContent = styles;\n }\n\n /** Umount user styles for box content */\n public unmountUserStyles(): void {\n this.$userStyles.textContent = \"\";\n }\n\n /** DOM of the box */\n public $box: HTMLElement;\n\n /** DOM of the box body */\n public $body!: HTMLElement;\n\n /** DOM of the box content container inside box body */\n public $content!: HTMLElement;\n\n /** DOM of the box stage area inside box body */\n public $stage?: HTMLElement;\n\n /** DOM of custom box content styles */\n public $styles!: HTMLStyleElement;\n\n /** DOM of end user custom box content styles */\n public $userStyles!: HTMLStyleElement;\n\n /** DOM of the box title bar container */\n public $titleBar!: HTMLElement;\n\n /** DOM of the box footer container */\n public $footer!: HTMLElement;\n\n private _render(): HTMLElement {\n if (this.$box) {\n return this.$box;\n }\n\n const bindBoxStates = (el: Element, disposerID?: string): string => {\n return this._sideEffect.addDisposer(\n [\n this._readonly$.subscribe((readonly) =>\n el.classList.toggle(\n this.wrapClassName(\"readonly\"),\n readonly\n )\n ),\n this._draggable$.subscribe((draggable) =>\n el.classList.toggle(\n this.wrapClassName(\"no-drag\"),\n !draggable\n )\n ),\n this._resizable$.subscribe((resizable) =>\n el.classList.toggle(\n this.wrapClassName(\"no-resize\"),\n !resizable\n )\n ),\n this._focus$.subscribe((focus) =>\n el.classList.toggle(this.wrapClassName(\"blur\"), !focus)\n ),\n this._darkMode$.subscribe((darkMode) => {\n el.classList.toggle(\n this.wrapClassName(\"color-scheme-dark\"),\n darkMode\n );\n el.classList.toggle(\n this.wrapClassName(\"color-scheme-light\"),\n !darkMode\n );\n }),\n ],\n disposerID\n );\n };\n\n this.$box = document.createElement(\"div\");\n this.$box.classList.add(this.wrapClassName(\"box\"));\n bindBoxStates(this.$box, \"bind-box-state\");\n\n this._sideEffect.add(() => {\n const minimizedClassName = this.wrapClassName(\"minimized\");\n const maximizedClassName = this.wrapClassName(\"maximized\");\n const MAXIMIZED_TIMER_ID = \"box-maximized-timer\";\n\n return this._state$.subscribe((state) => {\n this.$box.classList.toggle(\n minimizedClassName,\n state === TELE_BOX_STATE.Minimized\n );\n\n if (state === TELE_BOX_STATE.Maximized) {\n this._sideEffect.flush(MAXIMIZED_TIMER_ID);\n this.$box.classList.toggle(maximizedClassName, true);\n } else {\n // delay so that transition won't be triggered\n this._sideEffect.setTimeout(\n () => {\n this.$box.classList.toggle(\n maximizedClassName,\n false\n );\n },\n 0,\n MAXIMIZED_TIMER_ID\n );\n }\n });\n });\n\n this._sideEffect.addDisposer(\n this._visible$.subscribe((visible) => {\n this.$box.style.display = visible ? \"block\" : \"none\";\n })\n );\n\n this._sideEffect.addDisposer(\n this._zIndex$.subscribe((zIndex) => {\n this.$box.style.zIndex = String(zIndex);\n })\n );\n\n this.$box.dataset.teleBoxID = this.id;\n\n const boxStyler = styler(this.$box);\n\n const boxStyles$ = combine(\n [\n this._maximized$,\n this._minimized$,\n this._pxIntrinsicSize$,\n this._pxIntrinsicCoord$,\n this._collectorRect$,\n this._rootRect$,\n this._managerStageRect$,\n ],\n ([\n maximized,\n minimized,\n pxIntrinsicSize,\n pxIntrinsicCoord,\n collectorRect,\n rootRect,\n managerStageRect,\n ]) => {\n const styles: {\n x: number;\n y: number;\n width: number;\n height: number;\n scaleX: number;\n scaleY: number;\n } = maximized\n ? {\n x: -managerStageRect.x,\n y: -managerStageRect.y,\n width: rootRect.width,\n height: rootRect.height,\n scaleX: 1,\n scaleY: 1,\n }\n : {\n x: pxIntrinsicCoord.x,\n y: pxIntrinsicCoord.y,\n width: pxIntrinsicSize.width,\n height: pxIntrinsicSize.height,\n scaleX: 1,\n scaleY: 1,\n };\n if (minimized && collectorRect) {\n const { width: boxWidth, height: boxHeight } = maximized\n ? this.rootRect\n : pxIntrinsicSize;\n styles.x =\n collectorRect.x -\n boxWidth / 2 +\n collectorRect.width / 2 -\n managerStageRect.x;\n styles.y =\n collectorRect.y -\n boxHeight / 2 +\n collectorRect.height / 2 -\n managerStageRect.y;\n styles.scaleX = collectorRect.width / boxWidth;\n styles.scaleY = collectorRect.height / boxHeight;\n }\n return styles;\n },\n { compare: shallowequal }\n );\n\n const boxStyles = boxStyles$.value;\n this.$box.style.width = boxStyles.width + \"px\";\n this.$box.style.height = boxStyles.height + \"px\";\n // Add 10px offset on first frame\n // which creates a subtle moving effect\n this.$box.style.transform = `translate(${boxStyles.x - 10}px,${\n boxStyles.y - 10\n }px)`;\n\n this._sideEffect.addDisposer(\n boxStyles$.subscribe((styles) => {\n boxStyler.set(styles);\n })\n );\n\n const $boxMain = document.createElement(\"div\");\n $boxMain.className = this.wrapClassName(\"box-main\");\n this.$box.appendChild($boxMain);\n\n const $titleBar = document.createElement(\"div\");\n $titleBar.className = this.wrapClassName(\"titlebar-wrap\");\n $titleBar.appendChild(this.titleBar.render());\n this.$titleBar = $titleBar;\n\n const $body = document.createElement(\"div\");\n $body.className = this.wrapClassName(\"body-wrap\");\n this.$body = $body;\n\n const $styles = document.createElement(\"style\");\n this.$styles = $styles;\n $body.appendChild($styles);\n\n const $userStyles = document.createElement(\"style\");\n this.$userStyles = $userStyles;\n $body.appendChild($userStyles);\n\n const $content = document.createElement(\"div\");\n $content.className =\n this.wrapClassName(\"content\") + \" tele-fancy-scrollbar\";\n this.$content = $content;\n this._sideEffect.addDisposer(\n combine(\n [this._bodyStyle$, this._defaultBoxBodyStyle$],\n ([bodyStyle, defaultBoxBodyStyle]) =>\n bodyStyle ?? defaultBoxBodyStyle\n ).subscribe((style) => ($content.style.cssText = style || \"\"))\n );\n\n $body.appendChild($content);\n\n const $footer = document.createElement(\"div\");\n $footer.className = this.wrapClassName(\"footer-wrap\");\n this.$footer = $footer;\n\n $boxMain.appendChild($titleBar);\n\n if (this.enableShadowDOM) {\n const $quarantineWrap = document.createElement(\"div\");\n $quarantineWrap.className = this.wrapClassName(\"quarantine-wrap\");\n $boxMain.appendChild($quarantineWrap);\n\n const $quarantine = document.createElement(\"div\");\n $quarantine.className = this.wrapClassName(\"quarantine\");\n bindBoxStates($quarantine, \"bind-quarantine-state\");\n\n const $shadowStyle = document.createElement(\"style\");\n $shadowStyle.textContent = shadowStyles;\n\n $quarantine.appendChild($shadowStyle);\n $quarantine.appendChild($body);\n $quarantine.appendChild($footer);\n\n const shadow = $quarantineWrap.attachShadow({ mode: \"open\" });\n shadow.appendChild($quarantine);\n } else {\n $boxMain.appendChild($body);\n $boxMain.appendChild($footer);\n }\n\n this._renderResizeHandlers();\n\n const updateBodyRect = (): void => {\n const rect = $body.getBoundingClientRect();\n this._bodyRect$.setValue({\n x: 0,\n y: 0,\n width: rect.width,\n height: rect.height,\n });\n };\n this._sideEffect.add(() => {\n const observer = new ResizeObserver(() => {\n if (!this.minimized) {\n updateBodyRect();\n }\n });\n observer.observe($body);\n return () => observer.disconnect();\n });\n this._sideEffect.addDisposer(\n this._minimized$.reaction((minimized) => {\n // correct content size when restoring from minimized\n if (!minimized) {\n this._sideEffect.setTimeout(\n updateBodyRect,\n 400,\n \"minimized-content-rect-fix\"\n );\n }\n })\n );\n\n return this.$box;\n }\n\n private _renderStage(): HTMLDivElement {\n const $stage = document.createElement(\"div\");\n\n $stage.className = this.wrapClassName(\"box-stage\");\n const updateStageRect = (stageRect: TeleBoxRect): void => {\n $stage.style.top = stageRect.y + \"px\";\n $stage.style.left = stageRect.x + \"px\";\n $stage.style.width = stageRect.width + \"px\";\n $stage.style.height = stageRect.height + \"px\";\n };\n this._sideEffect.addDisposer(\n [\n combine(\n [this._stageStyle$, this._defaultBoxStageStyle$],\n ([stageStyle, defaultBoxStageStyle]) =>\n stageStyle ?? defaultBoxStageStyle\n ).subscribe((styles) => {\n $stage.style.cssText = styles || \"\";\n updateStageRect(this._stageRect$.value);\n }),\n this._stageRect$.subscribe(updateStageRect),\n ],\n \"box-stage-styles\"\n );\n return $stage;\n }\n\n private _handleTrackStart?: (ev: MouseEvent | TouchEvent) => void;\n\n public handleTrackStart: (ev: MouseEvent | TouchEvent) => void = (ev) => {\n return this._handleTrackStart?.(ev);\n };\n\n private _renderResizeHandlers(): void {\n const $resizeHandles = document.createElement(\"div\");\n $resizeHandles.className = this.wrapClassName(\"resize-handles\");\n\n Object.values(TELE_BOX_RESIZE_HANDLE).forEach((handleType) => {\n const $handle = document.createElement(\"div\");\n $handle.className =\n this.wrapClassName(handleType) +\n \" \" +\n this.wrapClassName(\"resize-handle\");\n $handle.dataset.teleBoxHandle = handleType;\n\n $resizeHandles.appendChild($handle);\n });\n\n this.$box.appendChild($resizeHandles);\n\n const TRACKING_DISPOSER_ID = \"handle-tracking-listener\";\n const transformingClassName = this.wrapClassName(\"transforming\");\n\n let $trackMask: HTMLElement | undefined;\n\n let trackStartX = 0;\n let trackStartY = 0;\n\n let trackStartWidth = 0;\n let trackStartHeight = 0;\n\n let trackStartPageX = 0;\n let trackStartPageY = 0;\n\n let trackingHandle: TeleBoxHandleType | undefined;\n\n const handleTracking = (ev: MouseEvent | TouchEvent): void => {\n if (this.state !== TELE_BOX_STATE.Normal) {\n return;\n }\n\n preventEvent(ev);\n\n let { pageX, pageY } = flattenEvent(ev);\n if (pageY < 0) {\n pageY = 0;\n }\n\n const offsetX = pageX - trackStartPageX;\n const offsetY = pageY - trackStartPageY;\n\n let { x: newX, y: newY } = this.pxIntrinsicCoord;\n let { width: newWidth, height: newHeight } = this.pxIntrinsicSize;\n\n switch (trackingHandle) {\n case TELE_BOX_RESIZE_HANDLE.North: {\n newY = trackStartY + offsetY;\n newHeight = trackStartHeight - offsetY;\n break;\n }\n // eslint-disable-next-line no-fallthrough\n case TELE_BOX_RESIZE_HANDLE.South: {\n newHeight = trackStartHeight + offsetY;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.West: {\n newX = trackStartX + offsetX;\n newWidth = trackStartWidth - offsetX;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.East: {\n newWidth = trackStartWidth + offsetX;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.NorthWest: {\n newX = trackStartX + offsetX;\n newY = trackStartY + offsetY;\n newWidth = trackStartWidth - offsetX;\n newHeight = trackStartHeight - offsetY;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.NorthEast: {\n newY = trackStartY + offsetY;\n newWidth = trackStartWidth + offsetX;\n newHeight = trackStartHeight - offsetY;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.SouthEast: {\n newWidth = trackStartWidth + offsetX;\n newHeight = trackStartHeight + offsetY;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.SouthWest: {\n newX = trackStartX + offsetX;\n newWidth = trackStartWidth - offsetX;\n newHeight = trackStartHeight + offsetY;\n break;\n }\n default: {\n this.move(trackStartX + offsetX, trackStartY + offsetY);\n return;\n }\n }\n\n this.transform(newX, newY, newWidth, newHeight);\n };\n\n const handleTrackEnd = (ev: MouseEvent | TouchEvent): void => {\n trackingHandle = void 0;\n\n if (!$trackMask) {\n return;\n }\n\n preventEvent(ev);\n\n this.$box.classList.toggle(transformingClassName, false);\n\n this._sideEffect.flush(TRACKING_DISPOSER_ID);\n\n $trackMask.remove();\n };\n\n const handleTrackStart = (ev: MouseEvent | TouchEvent): void => {\n if (this.readonly) {\n return;\n }\n\n if (\n (ev as MouseEvent).button != null &&\n (ev as MouseEvent).button !== 0\n ) {\n // Not left mouse\n return;\n }\n\n if (\n !this.draggable ||\n trackingHandle ||\n this.state !== TELE_BOX_STATE.Normal\n ) {\n return;\n }\n\n const target = ev.target as HTMLElement;\n if (target.dataset?.teleBoxHandle) {\n preventEvent(ev);\n\n ({ x: trackStartX, y: trackStartY } = this.pxIntrinsicCoord);\n ({ width: trackStartWidth, height: trackStartHeight } =\n this.pxIntrinsicSize);\n\n ({ pageX: trackStartPageX, pageY: trackStartPageY } =\n flattenEvent(ev));\n\n trackingHandle = target.dataset\n .teleBoxHandle as TELE_BOX_RESIZE_HANDLE;\n\n if (!$trackMask) {\n $trackMask = document.createElement(\"div\");\n }\n\n const cursor = trackingHandle\n ? this.wrapClassName(`cursor-${trackingHandle}`)\n : \"\";\n\n $trackMask.className = this.wrapClassName(\n `track-mask${cursor ? ` ${cursor}` : \"\"}`\n );\n\n this.$box.appendChild($trackMask);\n\n this.$box.classList.add(transformingClassName);\n\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\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\n this._handleTrackStart = handleTrackStart;\n\n this._sideEffect.addEventListener(\n $resizeHandles,\n \"mousedown\",\n handleTrackStart,\n {},\n \"box-resizeHandles-mousedown\"\n );\n\n this._sideEffect.addEventListener(\n $resizeHandles,\n \"touchstart\",\n handleTrackStart,\n { passive: false },\n \"box-resizeHandles-touchstart\"\n );\n }\n\n public async destroy(): Promise<void> {\n this.$box.remove();\n this._sideEffect.flushAll();\n this._sideEffect.flushAll();\n\n await this.events.emit(TELE_BOX_EVENT.Destroyed);\n this.events.clearListeners();\n this._delegateEvents.clearListeners();\n }\n\n /**\n * Wrap a className with namespace\n */\n public wrapClassName(className: string): string {\n return `${this.namespace}-${className}`;\n }\n}\n\ntype PropKeys<K = keyof TeleBox> = K extends keyof TeleBox\n ? // eslint-disable-next-line @typescript-eslint/ban-types\n TeleBox[K] extends Function\n ? never\n : K\n : never;\n\nexport type ReadonlyTeleBox = Pick<\n TeleBox,\n | PropKeys\n | \"wrapClassName\"\n | \"mountContent\"\n | \"unmountContent\"\n | \"mountFooter\"\n | \"unmountFooter\"\n | \"mountStage\"\n | \"unmountStage\"\n | \"mountStyles\"\n | \"unmountStyles\"\n | \"setTitle\"\n | \"setDraggable\"\n | \"setResizable\"\n | \"setVisible\"\n | \"setBoxRatio\"\n | \"setStageRatio\"\n | \"setStageStyle\"\n | \"setBodyStyle\"\n | \"handleTrackStart\"\n | \"onValChanged\"\n>;\n","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxNiI+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzdCODhBMCIgc3Ryb2tlLXdpZHRoPSIxLjQiIGQ9Ik0uNyAxLjJoMTYuNnYxMy42SC43eiIgLz4KICAgICAgICA8cGF0aCBmaWxsPSIjN0I4OEEwIiBkPSJNNCA1LjVoNnYxLjRINHpNNCA5LjVoMTB2MS40SDR6IiAvPgogICAgPC9nPgo8L3N2Zz4K\"","import \"./style.scss\";\nimport collectorSVG from \"./icons/collector.svg\";\nimport type { TeleStyles } from \"../typings\";\nimport type {\n ReadonlyVal,\n ReadonlyValEnhancedResult,\n ValEnhancedResult,\n} from \"value-enhancer\";\nimport { derive } from \"value-enhancer\";\nimport {\n withValueEnhancer,\n combine,\n Val,\n withReadonlyValueEnhancer,\n ValManager,\n} from \"value-enhancer\";\nimport { SideEffectManager } from \"side-effect-manager\";\nimport type { TeleBoxRect } from \"../TeleBox/typings\";\n\nexport interface TeleBoxCollectorConfig {\n namespace?: string;\n styles?: TeleStyles;\n root$: ReadonlyVal<HTMLElement | null>;\n minimized$: Val<boolean>;\n readonly$: ReadonlyVal<boolean>;\n darkMode$: ReadonlyVal<boolean>;\n}\n\ntype ValConfig = {\n styles: Val<TeleStyles>;\n $collector: Val<HTMLElement>;\n};\n\ntype PropsValConfig = {\n root: TeleBoxCollectorConfig[\"root$\"];\n};\n\ntype MyReadonlyValConfig = {\n rect: ReadonlyVal<TeleBoxRect | undefined>;\n visible: ReadonlyVal<boolean>;\n};\n\ntype CombinedValEnhancedResult = ValEnhancedResult<ValConfig> &\n ReadonlyValEnhancedResult<PropsValConfig & MyReadonlyValConfig>;\n\nexport interface TeleBoxCollector extends CombinedValEnhancedResult {}\n\nexport class TeleBoxCollector {\n public constructor({\n minimized$,\n readonly$,\n darkMode$,\n namespace = \"telebox\",\n styles = {},\n root$,\n }: TeleBoxCollectorConfig) {\n this.namespace = namespace;\n\n const valManager = new ValManager();\n this._sideEffect.addDisposer(() => valManager.destroy());\n\n const rect$ = new Val<TeleBoxRect | undefined>(void 0);\n const visible$ = derive(minimized$);\n const styles$ = new Val(styles);\n const el$ = new Val<HTMLElement>(document.createElement(\"button\"));\n\n const valConfig: ValConfig = {\n styles: styles$,\n $collector: el$,\n };\n\n withValueEnhancer(this, valConfig, valManager);\n\n const propsValConfig: PropsValConfig = {\n root: root$,\n };\n\n withReadonlyValueEnhancer(this, propsValConfig);\n\n const myReadonlyValConfig: MyReadonlyValConfig = {\n rect: rect$,\n visible: visible$,\n };\n\n withReadonlyValueEnhancer(this, myReadonlyValConfig, valManager);\n\n el$.value.className = this.wrapClassName(\"collector\");\n el$.value.style.backgroundImage = `url('${collectorSVG}')`;\n\n this._sideEffect.addDisposer(\n el$.subscribe(($collector) => {\n this._sideEffect.addEventListener(\n $collector,\n \"click\",\n () => {\n if (!readonly$.value) {\n minimized$.setValue(false);\n }\n },\n {},\n \"telebox-collector-click\"\n );\n\n this._sideEffect.addDisposer(\n [\n visible$.subscribe((visible) => {\n $collector.classList.toggle(\n this.wrapClassName(\"collector-visible\"),\n visible\n );\n }),\n readonly$.subscribe((readonly) => {\n $collector.classList.toggle(\n this.wrapClassName(\"collector-readonly\"),\n readonly\n );\n }),\n darkMode$.subscribe((darkMode) => {\n $collector.classList.toggle(\n this.wrapClassName(\"color-scheme-dark\"),\n darkMode\n );\n $collector.classList.toggle(\n this.wrapClassName(\"color-scheme-light\"),\n !darkMode\n );\n }),\n styles$.subscribe((styles) => {\n Object.keys(styles).forEach((key) => {\n const value = styles[\n key as keyof TeleStyles\n ] as string;\n if (value != null) {\n $collector.style[key as keyof TeleStyles] =\n value;\n }\n });\n }),\n root$.subscribe((root) => {\n if (root) {\n root.appendChild($collector);\n }\n }),\n // Place after $collector appended to the DOM so that rect calc works\n combine([minimized$, root$]).subscribe(\n ([minimized, root]) => {\n if (minimized && root) {\n const { x, y, width, height } =\n $collector.getBoundingClientRect();\n const rootRect =\n root.getBoundingClientRect();\n rect$.setValue({\n x: x - rootRect.x,\n y: y - rootRect.y,\n width,\n height,\n });\n }\n }\n ),\n ],\n \"telebox-collector-el\"\n );\n })\n );\n }\n\n public readonly namespace: string;\n\n protected readonly _sideEffect = new SideEffectManager();\n\n public destroy(): void {\n this._sideEffect.flushAll();\n }\n\n public wrapClassName(className: string): string {\n return `${this.namespace}-${className}`;\n }\n}\n","export enum TELE_BOX_MANAGER_EVENT {\n Focused = \"focused\",\n Blurred = \"blurred\",\n Created = \"created\",\n Removed = \"removed\",\n State = \"state\",\n Maximized = \"maximized\",\n Minimized = \"minimized\",\n IntrinsicMove = \"intrinsic_move\",\n IntrinsicResize = \"intrinsic_resize\",\n ZIndex = \"z_index\",\n PrefersColorScheme = \"prefers_color_scheme\",\n DarkMode = \"dark_mode\",\n}\n","import \"./style.scss\";\n\nimport type { TeleBox } from \"../../TeleBox\";\nimport type { DefaultTitleBarConfig } from \"../../TeleTitleBar\";\nimport { DefaultTitleBar } from \"../../TeleTitleBar\";\nimport { TELE_BOX_STATE } from \"../../TeleBox/constants\";\nimport type { TeleBoxRect } from \"../../TeleBox/typings\";\nimport type { ReadonlyVal } from \"value-enhancer\";\nimport { combine } from \"value-enhancer\";\n\nexport type MaxTitleBarTitle = Pick<TeleBox, \"id\" | \"title\">;\n\nexport interface MaxTitleBarConfig extends DefaultTitleBarConfig {\n darkMode$: ReadonlyVal<boolean>;\n boxes$: ReadonlyVal<TeleBox[]>;\n rootRect$: ReadonlyVal<TeleBoxRect>;\n root: HTMLElement;\n}\n\nexport class MaxTitleBar extends DefaultTitleBar {\n public constructor(config: MaxTitleBarConfig) {\n super(config);\n\n this.boxes$ = config.boxes$;\n this.rootRect$ = config.rootRect$;\n this.darkMode$ = config.darkMode$;\n\n config.root.appendChild(this.render());\n }\n\n public focusBox(box?: TeleBox): void {\n if (this.focusedBox && this.focusedBox === box) {\n return;\n }\n\n if (this.$titles && this.state$.value === TELE_BOX_STATE.Maximized) {\n const { children } = this.$titles.firstElementChild as HTMLElement;\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const $tab = children[i] as HTMLElement;\n const id = $tab.dataset?.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 this.focusedBox = box;\n }\n\n public render(): HTMLElement {\n if (this.$titleBar) {\n return this.$titleBar;\n }\n\n const $titleBar = super.render();\n\n $titleBar.classList.add(this.wrapClassName(\"max-titlebar\"));\n\n this.sideEffect.addDisposer(\n [\n this.state$.subscribe((state) => {\n $titleBar.classList.toggle(\n this.wrapClassName(\"max-titlebar-maximized\"),\n state === TELE_BOX_STATE.Maximized\n );\n }),\n this.readonly$.subscribe((readonly) => {\n $titleBar.classList.toggle(\n this.wrapClassName(\"readonly\"),\n readonly\n );\n }),\n combine([this.state$, this.boxes$]).subscribe(\n ([state, titles]) => {\n if (state === TELE_BOX_STATE.Maximized) {\n $titleBar.classList.toggle(\n this.wrapClassName(\"max-titlebar-single-title\"),\n titles.length === 1\n );\n if (titles.length !== 1) {\n $titleBar.replaceChild(\n this.renderTitles(),\n $titleBar.firstElementChild as HTMLElement\n );\n }\n }\n }\n ),\n ],\n \"max-render\"\n );\n\n const $titlesArea = document.createElement(\"div\");\n $titlesArea.classList.add(this.wrapClassName(\"titles-area\"));\n $titleBar.insertBefore($titlesArea, $titleBar.firstElementChild);\n\n return $titleBar;\n }\n\n public destroy(): void {\n super.destroy();\n this.$titles = void 0;\n this.focusedBox = void 0;\n }\n\n protected renderTitles(): HTMLElement {\n this.$titles = document.createElement(\"div\");\n this.$titles.className = this.wrapClassName(\"titles\");\n\n this.sideEffect.addEventListener(\n this.$titles,\n \"wheel\",\n (ev) => {\n (ev.currentTarget as HTMLElement).scrollBy({\n left: ev.deltaY > 0 ? 250 : -250,\n behavior: \"smooth\",\n });\n },\n { passive: false },\n \"max-render-wheel-titles\"\n );\n\n const $content = document.createElement(\"div\");\n $content.className = this.wrapClassName(\"titles-content\");\n this.$titles.appendChild($content);\n\n const disposers = this.boxes$.value.map((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\n if (this.focusedBox && box.id === this.focusedBox.id) {\n $tab.classList.add(this.wrapClassName(\"titles-tab-focus\"));\n }\n\n $content.appendChild($tab);\n\n return box._title$.reaction((title) => ($tab.textContent = title));\n });\n\n this.sideEffect.addDisposer(\n () => disposers.forEach((disposer) => disposer()),\n \"max-render-tab-titles\"\n );\n\n return this.$titles;\n }\n\n public focusedBox: TeleBox | undefined;\n\n protected darkMode$: MaxTitleBarConfig[\"darkMode$\"];\n protected boxes$: MaxTitleBarConfig[\"boxes$\"];\n protected rootRect$: MaxTitleBarConfig[\"rootRect$\"];\n\n protected $titles: HTMLElement | undefined;\n}\n","import \"./style.scss\";\n\nimport shallowequal from \"shallowequal\";\nimport { ResizeObserver as ResizeObserverPolyfill } from \"@juggle/resize-observer\";\nimport { SideEffectManager } from \"side-effect-manager\";\nimport type {\n ReadonlyVal,\n ValEnhancedResult,\n ReadonlyValEnhancedResult,\n} from \"value-enhancer\";\nimport { derive } from \"value-enhancer\";\nimport {\n combine,\n Val,\n withValueEnhancer,\n withReadonlyValueEnhancer,\n ValManager,\n} from \"value-enhancer\";\nimport Emittery from \"emittery\";\nimport type {\n ReadonlyTeleBox,\n TeleBoxColorScheme,\n TeleBoxRect,\n TeleBoxState,\n} from \"../TeleBox\";\nimport {\n TeleBox,\n TELE_BOX_EVENT,\n TELE_BOX_STATE,\n TELE_BOX_COLOR_SCHEME,\n TELE_BOX_DELEGATE_EVENT,\n} from \"../TeleBox\";\nimport { TeleBoxCollector } from \"../TeleBoxCollector\";\nimport { TELE_BOX_MANAGER_EVENT } from \"./constants\";\nimport type {\n TeleBoxManagerConfig,\n TeleBoxManagerCreateConfig,\n TeleBoxManagerEventConfig,\n TeleBoxManagerQueryConfig,\n TeleBoxManagerUpdateConfig,\n} from \"./typings\";\nimport { MaxTitleBar } from \"./MaxTitleBar\";\nimport { calcStageRect } from \"../TeleBox/utils\";\n\nexport * from \"./typings\";\nexport * from \"./constants\";\n\nconst ResizeObserver = window.ResizeObserver || ResizeObserverPolyfill;\n\ntype ReadonlyValConfig = {\n darkMode: ReadonlyVal<boolean, boolean>;\n state: ReadonlyVal<TeleBoxState, boolean>;\n root: Val<HTMLElement | null>;\n rootRect: Val<TeleBoxRect>;\n stageRect: ReadonlyVal<TeleBoxRect>;\n};\n\ntype ValConfig = {\n prefersColorScheme: Val<TeleBoxColorScheme, boolean>;\n readonly: Val<boolean, boolean>;\n minimized: Val<boolean, boolean>;\n maximized: Val<boolean, boolean>;\n fence: Val<boolean, boolean>;\n stageRatio: Val<number, boolean>;\n containerStyle: Val<string>;\n stageStyle: Val<string>;\n defaultBoxBodyStyle: Val<string | null>;\n defaultBoxStageStyle: Val<string | null>;\n};\n\ntype CombinedValEnhancedResult = ValEnhancedResult<ValConfig> &\n ReadonlyValEnhancedResult<ReadonlyValConfig>;\n\nexport interface TeleBoxManager extends CombinedValEnhancedResult {}\n\nexport class TeleBoxManager {\n public constructor({\n root = null,\n prefersColorScheme = TELE_BOX_COLOR_SCHEME.Light,\n minimized = false,\n maximized = false,\n fence = true,\n collector,\n namespace = \"telebox\",\n readonly = false,\n stageRatio = -1,\n containerStyle = \"\",\n stageStyle = \"\",\n defaultBoxBodyStyle = null,\n defaultBoxStageStyle = null,\n }: TeleBoxManagerConfig = {}) {\n this._sideEffect = new SideEffectManager();\n\n this.namespace = namespace;\n\n const valManager = new ValManager();\n this._sideEffect.addDisposer(() => valManager.destroy());\n\n const root$ = new Val(root);\n const readonly$ = new Val(readonly);\n const minimized$ = new Val(minimized);\n const maximized$ = new Val(maximized);\n const fence$ = new Val(fence);\n const containerStyle$ = new Val(containerStyle);\n const stageStyle$ = new Val(stageStyle);\n const stageRatio$ = new Val(stageRatio);\n const defaultBoxBodyStyle$ = new Val(defaultBoxBodyStyle);\n const defaultBoxStageStyle$ = new Val(defaultBoxStageStyle);\n\n const rootRect$ = new Val<TeleBoxRect>(\n {\n x: 0,\n y: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n },\n { compare: shallowequal }\n );\n this._sideEffect.addDisposer(\n root$.subscribe((root) => {\n this._sideEffect.add(() => {\n if (!root) {\n return () => void 0;\n }\n const observer = new ResizeObserver(() => {\n const rect = root.getBoundingClientRect();\n rootRect$.setValue({\n x: 0,\n y: 0,\n width: rect.width,\n height: rect.height,\n });\n });\n observer.observe(root);\n return () => observer.disconnect();\n }, \"calc-root-rect\");\n })\n );\n\n const stageRect$ = combine([rootRect$, stageRatio$], calcStageRect, {\n compare: shallowequal,\n });\n\n this.boxes$ = new Val<TeleBox[]>([]);\n this.topBox$ = new Val<TeleBox | undefined>(undefined);\n this._sideEffect.addDisposer(\n this.boxes$.subscribe((boxes) => {\n if (boxes.length > 0) {\n const topBox = boxes.reduce((topBox, box) =>\n topBox.zIndex > box.zIndex ? topBox : box\n );\n this.topBox$.setValue(topBox);\n } else {\n this.topBox$.setValue(undefined);\n }\n })\n );\n\n const prefersDarkMatch = window.matchMedia(\n \"(prefers-color-scheme: dark)\"\n );\n const prefersDark$ = new Val(false);\n if (prefersDarkMatch) {\n prefersDark$.setValue(prefersDarkMatch.matches);\n this._sideEffect.add(() => {\n const handler = (evt: MediaQueryListEvent): void => {\n prefersDark$.setValue(evt.matches);\n };\n prefersDarkMatch.addEventListener(\"change\", handler);\n return () =>\n prefersDarkMatch.removeEventListener(\"change\", handler);\n });\n }\n\n const prefersColorScheme$ = new Val(prefersColorScheme);\n this._sideEffect.addDisposer(\n prefersColorScheme$.reaction((prefersColorScheme, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(\n TELE_BOX_MANAGER_EVENT.PrefersColorScheme,\n prefersColorScheme\n );\n }\n })\n );\n\n const darkMode$ = combine(\n [prefersDark$, prefersColorScheme$],\n ([prefersDark, prefersColorScheme]) =>\n prefersColorScheme === \"auto\"\n ? prefersDark\n : prefersColorScheme === \"dark\"\n );\n\n const state$ = combine(\n [minimized$, maximized$],\n ([minimized, maximized]): TeleBoxState =>\n minimized\n ? TELE_BOX_STATE.Minimized\n : maximized\n ? TELE_BOX_STATE.Maximized\n : TELE_BOX_STATE.Normal\n );\n\n this.collector =\n collector ??\n new TeleBoxCollector({\n minimized$: minimized$,\n readonly$: readonly$,\n darkMode$: darkMode$,\n namespace,\n root$,\n });\n\n const readonlyValConfig: ReadonlyValConfig = {\n darkMode: darkMode$,\n state: state$,\n root: root$,\n rootRect: rootRect$,\n stageRect: stageRect$,\n };\n\n withReadonlyValueEnhancer(this, readonlyValConfig, valManager);\n\n const valConfig: ValConfig = {\n prefersColorScheme: prefersColorScheme$,\n readonly: readonly$,\n fence: fence$,\n minimized: minimized$,\n maximized: maximized$,\n stageRatio: stageRatio$,\n containerStyle: containerStyle$,\n stageStyle: stageStyle$,\n defaultBoxBodyStyle: defaultBoxBodyStyle$,\n defaultBoxStageStyle: defaultBoxStageStyle$,\n };\n\n withValueEnhancer(this, valConfig, valManager);\n\n const closeBtnClassName = this.wrapClassName(\"titlebar-icon-close\");\n\n const checkFocusBox = (ev: MouseEvent | TouchEvent): void => {\n if (readonly$.value) {\n return;\n }\n\n const target = ev.target as HTMLElement;\n if (!target.tagName) {\n return;\n }\n\n for (\n let el: HTMLElement | null = target;\n el;\n el = el.parentElement\n ) {\n if (el.classList && el.classList.contains(closeBtnClassName)) {\n return;\n }\n const id = el.dataset?.teleBoxID;\n if (id) {\n const box = this.getBox(id);\n if (box) {\n this.focusBox(box);\n this.makeBoxTop(box);\n return;\n }\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\n this.$container = document.createElement(\"div\");\n this.$container.className = this.wrapClassName(\"manager-container\");\n\n this.$stage = document.createElement(\"div\");\n this.$stage.className = this.wrapClassName(\"manager-stage\");\n this.$container.appendChild(this.$stage);\n\n this._sideEffect.addDisposer([\n darkMode$.subscribe((darkMode) => {\n this.$container.classList.toggle(\n this.wrapClassName(\"color-scheme-dark\"),\n darkMode\n );\n this.$container.classList.toggle(\n this.wrapClassName(\"color-scheme-light\"),\n !darkMode\n );\n }),\n maximized$.subscribe((maximized) => {\n this.$container.classList.toggle(\"is-maximized\", maximized);\n }),\n minimized$.subscribe((minimized) => {\n this.$container.classList.toggle(\"is-minimized\", minimized);\n }),\n containerStyle$.subscribe((containerStyle) => {\n this.$container.style.cssText = containerStyle;\n }),\n stageStyle$.subscribe((stageStyle) => {\n this.$stage.style.cssText = stageStyle;\n this.$stage.style.width = stageRect$.value.width + \"px\";\n this.$stage.style.height = stageRect$.value.height + \"px\";\n }),\n stageRect$.subscribe((stageRect) => {\n this.$stage.style.width = stageRect.width + \"px\";\n this.$stage.style.height = stageRect.height + \"px\";\n }),\n root$.subscribe((root) => {\n if (root) {\n root.appendChild(this.$container);\n } else if (this.$container.parentElement) {\n this.$container.remove();\n }\n }),\n ]);\n\n this.titleBar = new MaxTitleBar({\n namespace: this.namespace,\n title$: derive(this.topBox$, (topBox) => topBox?.title || \"\"),\n boxes$: this.boxes$,\n darkMode$: darkMode$,\n readonly$: readonly$,\n state$: state$,\n rootRect$: rootRect$,\n root: this.$container,\n onEvent: (event): void => {\n switch (event.type) {\n case TELE_BOX_DELEGATE_EVENT.Maximize: {\n maximized$.setValue(!maximized$.value);\n break;\n }\n case TELE_BOX_DELEGATE_EVENT.Minimize: {\n minimized$.setValue(true);\n break;\n }\n case TELE_BOX_EVENT.Close: {\n this.removeTopBox();\n this.focusTopBox();\n break;\n }\n default: {\n break;\n }\n }\n },\n });\n\n this._sideEffect.addDisposer([\n state$.reaction((state, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(TELE_BOX_MANAGER_EVENT.State, state);\n }\n }),\n maximized$.reaction((maximized, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(\n TELE_BOX_MANAGER_EVENT.Maximized,\n maximized\n );\n }\n }),\n minimized$.reaction((minimized, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(\n TELE_BOX_MANAGER_EVENT.Minimized,\n minimized\n );\n }\n }),\n darkMode$.reaction((darkMode, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(TELE_BOX_MANAGER_EVENT.DarkMode, darkMode);\n }\n }),\n ]);\n }\n\n public readonly $container: HTMLDivElement;\n\n public readonly $stage: HTMLDivElement;\n\n public get boxes(): ReadonlyArray<TeleBox> {\n return this.boxes$.value;\n }\n\n public get topBox(): TeleBox | undefined {\n return this.topBox$.value;\n }\n\n public readonly events = new Emittery<\n TeleBoxManagerEventConfig,\n TeleBoxManagerEventConfig\n >();\n\n protected _sideEffect: SideEffectManager;\n\n public readonly namespace: string;\n\n /** @deprecated use setMaximized and setMinimized instead */\n public setState(state: TeleBoxState, skipUpdate = false): this {\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\n public create(\n config: TeleBoxManagerCreateConfig = {},\n smartPosition = true\n ): ReadonlyTeleBox {\n const box = new TeleBox({\n zIndex: this.topBox ? this.topBox.zIndex + 1 : 100,\n ...config,\n ...(smartPosition ? this.smartPosition(config) : {}),\n namespace: this.namespace,\n root: this.$stage,\n darkMode$: this._darkMode$,\n maximized$: this._maximized$,\n minimized$: this._minimized$,\n fence$: this._fence$,\n rootRect$: this._rootRect$,\n managerStageRect$: this._stageRect$,\n managerStageRatio$: this._stageRatio$,\n readonly$: this._readonly$,\n collectorRect$: this.collector._rect$,\n defaultBoxBodyStyle$: this._defaultBoxBodyStyle$,\n defaultBoxStageStyle$: this._defaultBoxStageStyle$,\n });\n\n if (box.focus) {\n this.focusBox(box);\n if (smartPosition) {\n this.makeBoxTop(box);\n }\n }\n\n this.boxes$.setValue([...this.boxes, box]);\n\n this._sideEffect.addDisposer([\n box._delegateEvents.on(TELE_BOX_DELEGATE_EVENT.Maximize, () => {\n this.setMaximized(!this.maximized);\n }),\n box._delegateEvents.on(TELE_BOX_DELEGATE_EVENT.Minimize, () => {\n this.setMinimized(true);\n }),\n box._delegateEvents.on(TELE_BOX_DELEGATE_EVENT.Close, () => {\n this.remove(box);\n this.focusTopBox();\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(\n TELE_BOX_MANAGER_EVENT.IntrinsicResize,\n box\n );\n }\n }),\n box._zIndex$.reaction((_, skipUpdate) => {\n if (this.boxes.length > 0) {\n const topBox = this.boxes.reduce((topBox, box) =>\n topBox.zIndex > box.zIndex ? topBox : box\n );\n this.topBox$.setValue(topBox);\n }\n if (!skipUpdate) {\n this.events.emit(TELE_BOX_MANAGER_EVENT.ZIndex, box);\n }\n }),\n ]);\n\n this.events.emit(TELE_BOX_MANAGER_EVENT.Created, box);\n\n return box;\n }\n\n public query(config?: TeleBoxManagerQueryConfig): ReadonlyTeleBox[] {\n return config\n ? this.boxes.filter(this.teleBoxMatcher(config))\n : [...this.boxes];\n }\n\n public queryOne(\n config?: TeleBoxManagerQueryConfig\n ): ReadonlyTeleBox | undefined {\n return config\n ? this.boxes.find(this.teleBoxMatcher(config))\n : this.boxes[0];\n }\n\n public update(\n boxID: string,\n config: TeleBoxManagerUpdateConfig,\n skipUpdate = false\n ): void {\n const box = this.boxes.find((box) => box.id === boxID);\n if (box) {\n return this.updateBox(box, config, skipUpdate);\n }\n }\n\n public updateAll(\n config: TeleBoxManagerUpdateConfig,\n skipUpdate = false\n ): void {\n this.boxes.forEach((box) => {\n this.updateBox(box, config, skipUpdate);\n });\n }\n\n public remove(\n boxOrID: string | TeleBox,\n skipUpdate = false\n ): ReadonlyTeleBox | undefined {\n const index = this.getBoxIndex(boxOrID);\n if (index >= 0) {\n const boxes = this.boxes.slice();\n const deletedBoxes = boxes.splice(index, 1);\n this.boxes$.setValue(boxes);\n deletedBoxes.forEach((box) => box.destroy());\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\n public removeTopBox(): ReadonlyTeleBox | undefined {\n if (this.topBox) {\n return this.remove(this.topBox);\n }\n return;\n }\n\n public removeAll(skipUpdate = false): ReadonlyTeleBox[] {\n const deletedBoxes = this.boxes$.value;\n this.boxes$.setValue([]);\n deletedBoxes.forEach((box) => box.destroy());\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\n /**\n * Mount manager to a container element.\n */\n public mount(root: HTMLElement): void {\n this._root$.setValue(root);\n }\n\n /**\n * Unmount manager from the container element.\n */\n public unmount(): void {\n this._root$.setValue(null);\n }\n\n public destroy(skipUpdate = false): void {\n this.events.clearListeners();\n this._sideEffect.flushAll();\n this.removeAll(skipUpdate);\n this.collector.destroy();\n this.titleBar.destroy();\n }\n\n public wrapClassName(className: string): string {\n return `${this.namespace}-${className}`;\n }\n\n public focusBox(boxOrID: string | TeleBox, skipUpdate = false): void {\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._focus$.setValue(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 this.titleBar.focusBox(targetBox);\n }\n }\n\n public focusTopBox(): void {\n if (this.topBox && !this.topBox.focus) {\n return this.focusBox(this.topBox);\n }\n }\n\n public blurBox(boxOrID: string | TeleBox, skipUpdate = false): void {\n const targetBox = this.getBox(boxOrID);\n if (targetBox) {\n if (targetBox.focus) {\n targetBox._focus$.setValue(false, skipUpdate);\n if (!skipUpdate) {\n this.events.emit(TELE_BOX_MANAGER_EVENT.Blurred, targetBox);\n }\n }\n if (this.titleBar.focusedBox === targetBox) {\n this.titleBar.focusBox();\n }\n }\n }\n\n public blurAll(skipUpdate = false): void {\n this.boxes.forEach((box) => {\n if (box.focus) {\n box._focus$.setValue(false, skipUpdate);\n if (!skipUpdate) {\n this.events.emit(TELE_BOX_MANAGER_EVENT.Blurred, box);\n }\n }\n });\n if (this.titleBar.focusedBox) {\n this.titleBar.focusBox();\n }\n }\n\n public collector: TeleBoxCollector;\n public titleBar: MaxTitleBar;\n\n protected boxes$: Val<TeleBox[]>;\n protected topBox$: Val<TeleBox | undefined>;\n\n protected teleBoxMatcher(\n config: TeleBoxManagerQueryConfig\n ): (box: TeleBox) => boolean {\n const keys = Object.keys(config) as Array<\n keyof TeleBoxManagerQueryConfig\n >;\n return (box: TeleBox): boolean =>\n keys.every((key) => config[key] === box[key]);\n }\n\n protected updateBox(\n box: TeleBox,\n config: TeleBoxManagerUpdateConfig,\n skipUpdate = false\n ): void {\n if (config.x != null || config.y != null) {\n box._intrinsicCoord$.setValue(\n {\n x: config.x ?? box.intrinsicX,\n y: config.y ?? box.intrinsicY,\n },\n skipUpdate\n );\n }\n if (config.width != null || config.height != null) {\n box._intrinsicSize$.setValue(\n {\n width: config.width ?? box.intrinsicWidth,\n height: config.height ?? box.intrinsicHeight,\n },\n skipUpdate\n );\n }\n if (config.title != null) {\n box._title$.setValue(config.title);\n }\n if (config.visible != null) {\n box._visible$.setValue(config.visible, skipUpdate);\n }\n if (config.resizable != null) {\n box._resizable$.setValue(config.resizable, skipUpdate);\n }\n if (config.draggable != null) {\n box._draggable$.setValue(config.draggable, skipUpdate);\n }\n if (config.boxRatio != null) {\n box._boxRatio$.setValue(config.boxRatio, skipUpdate);\n }\n if (config.zIndex != null) {\n box._zIndex$.setValue(config.zIndex, skipUpdate);\n }\n if (config.stageRatio !== undefined) {\n box.setStageRatio(config.stageRatio, 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 (config.minHeight != null || config.minWidth != null) {\n box._minSize$.setValue(\n {\n width: config.minWidth ?? box.minWidth,\n height: config.minHeight ?? box.minHeight,\n },\n skipUpdate\n );\n }\n }\n\n /** Keep new boxes staggered inside stage area */\n protected smartPosition(rect: Partial<TeleBoxRect>): TeleBoxRect {\n let { x, y } = rect;\n const { width = 0.5, height = 0.5 } = rect;\n const stageRect = this.stageRect;\n const topBox = this.topBox;\n\n if (x == null) {\n let pxX = 20;\n if (topBox) {\n const pxPreferredX = topBox.pxIntrinsicCoord.x + 20;\n const pxIntrinsicWidth = width * stageRect.width;\n if (pxPreferredX + pxIntrinsicWidth <= stageRect.width) {\n pxX = pxPreferredX;\n }\n }\n x = pxX / stageRect.width;\n }\n\n if (y == null) {\n let pxY = 20;\n if (topBox) {\n const pxPreferredY = topBox.pxIntrinsicCoord.y + 20;\n const pxIntrinsicHeight = height * stageRect.height;\n if (pxPreferredY + pxIntrinsicHeight <= stageRect.height) {\n pxY = pxPreferredY;\n }\n }\n y = pxY / stageRect.height;\n }\n\n return { x, y, width, height };\n }\n\n protected makeBoxTop(box: TeleBox, skipUpdate = false): void {\n if (this.topBox) {\n if (box !== this.topBox) {\n box._zIndex$.setValue(this.topBox.zIndex + 1, skipUpdate);\n }\n }\n }\n\n protected getBoxIndex(boxOrID: TeleBox | string): number {\n return typeof boxOrID === \"string\"\n ? this.boxes.findIndex((box) => box.id === boxOrID)\n : this.boxes.findIndex((box) => box === boxOrID);\n }\n\n protected getBox(boxOrID: TeleBox | string): TeleBox | undefined {\n return typeof boxOrID === \"string\"\n ? this.boxes.find((box) => box.id === boxOrID)\n : boxOrID;\n }\n}\n"],"names":["ResizeObserver","ResizeObserverPolyfill"],"mappings":"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"}
1
+ {"version":3,"file":"telebox-insider.es.js","sources":["../src/TeleBox/constants.ts","../src/utils.ts","../src/TeleTitleBar/DefaultTitleBar/index.ts","../src/TeleBox/utils.ts","../src/TeleBox/index.ts","../src/TeleBoxCollector/icons/collector.svg","../src/TeleBoxCollector/index.ts","../src/TeleBoxManager/constants.ts","../src/TeleBoxManager/MaxTitleBar/index.ts","../src/TeleBoxManager/index.ts"],"sourcesContent":["export enum TELE_BOX_COLOR_SCHEME {\n Light = \"light\",\n Dark = \"dark\",\n Auto = \"auto\",\n}\n\nexport enum TELE_BOX_STATE {\n Normal = \"normal\",\n Minimized = \"minimized\",\n Maximized = \"maximized\",\n}\n\nexport enum TELE_BOX_EVENT {\n DarkMode = \"dark_mode\",\n PrefersColorScheme = \"prefers_color_scheme\",\n Close = \"close\",\n Focus = \"focus\",\n Blur = \"blur\",\n IntrinsicMove = \"intrinsic_move\",\n IntrinsicResize = \"intrinsic_resize\",\n ZIndex = \"z_index\",\n State = \"state\",\n Minimized = \"minimized\",\n Maximized = \"maximized\",\n Readonly = \"readonly\",\n Destroyed = \"destroyed\",\n}\n\nexport enum TELE_BOX_DELEGATE_EVENT {\n Close = \"close\",\n Maximize = \"maximize\",\n Minimize = \"minimize\",\n}\n\nexport enum TELE_BOX_RESIZE_HANDLE {\n North = \"n\",\n South = \"s\",\n West = \"w\",\n East = \"e\",\n NorthWest = \"nw\",\n NorthEast = \"ne\",\n SouthEast = \"se\",\n SouthWest = \"sw\",\n}\n\nexport const TeleBoxDragHandleType = \"dh\";\n","export function clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function preventEvent(ev: Event): void {\n ev.stopPropagation();\n if (ev.cancelable) {\n ev.preventDefault();\n }\n}\n\nexport function getRandomInt(min: number, max: number): number {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nlet defaultBoxCount = 1;\n\nexport function getBoxDefaultName(): string {\n return `New Box ${defaultBoxCount++}`;\n}\n\nexport function identity<TValue>(value: TValue): TValue {\n return value;\n}\n\nexport function isTruthy<TValue>(value: TValue): boolean {\n return Boolean(value);\n}\n\nexport function isFalsy<TValue>(value: TValue): boolean {\n return !value;\n}\n","import \"./style.scss\";\n\nimport { SideEffectManager } from \"side-effect-manager\";\n\nimport {\n TeleBoxDragHandleType,\n TELE_BOX_DELEGATE_EVENT,\n TELE_BOX_STATE,\n} from \"../../TeleBox/constants\";\nimport type { TeleBoxState } from \"../../TeleBox/typings\";\nimport type {\n TeleTitleBar,\n TeleTitleBarConfig,\n TeleTitleBarEvent,\n} from \"../typings\";\nimport { preventEvent } from \"../../utils\";\nimport type { ReadonlyVal } from \"value-enhancer\";\n\nexport type DefaultTitleBarButton = TeleTitleBarEvent & {\n readonly iconClassName: string;\n readonly isActive?: (state: TeleBoxState) => boolean;\n};\n\nexport interface DefaultTitleBarConfig extends TeleTitleBarConfig {\n buttons?: ReadonlyArray<DefaultTitleBarButton>;\n}\n\nexport class DefaultTitleBar implements TeleTitleBar {\n public constructor({\n readonly$,\n state$,\n title$,\n buttons,\n onEvent,\n onDragStart,\n namespace = \"telebox\",\n }: DefaultTitleBarConfig) {\n this.readonly$ = readonly$;\n this.state$ = state$;\n this.title$ = title$;\n this.onEvent = onEvent;\n this.onDragStart = onDragStart;\n this.namespace = namespace;\n\n this.buttons = buttons || [\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: (state) => state === TELE_BOX_STATE.Maximized,\n },\n {\n type: TELE_BOX_DELEGATE_EVENT.Close,\n iconClassName: this.wrapClassName(\"titlebar-icon-close\"),\n },\n ];\n\n this.$dragArea = this.renderDragArea();\n }\n\n public readonly namespace: string;\n\n public $titleBar: HTMLElement | undefined;\n\n public $dragArea: HTMLElement;\n\n public render(): HTMLElement {\n if (!this.$titleBar) {\n this.$titleBar = document.createElement(\"div\");\n this.$titleBar.className = this.wrapClassName(\"titlebar\");\n\n const $titleArea = document.createElement(\"div\");\n $titleArea.className = this.wrapClassName(\"title-area\");\n $titleArea.dataset.teleBoxHandle = TeleBoxDragHandleType;\n\n const $title = document.createElement(\"h1\");\n $title.className = this.wrapClassName(\"title\");\n $title.dataset.teleBoxHandle = TeleBoxDragHandleType;\n\n $titleArea.appendChild($title);\n $titleArea.appendChild(this.$dragArea);\n\n const $buttonsContainer = document.createElement(\"div\");\n $buttonsContainer.className = this.wrapClassName(\"titlebar-btns\");\n\n this.buttons.forEach(({ iconClassName }, i) => {\n const teleTitleBarBtnIndex = String(i);\n\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 $buttonsContainer.appendChild($btn);\n });\n\n this.sideEffect.addDisposer(\n this.title$.subscribe((title) => {\n $title.textContent = title;\n $title.title = title;\n }),\n \"render-title\"\n );\n\n this.sideEffect.addDisposer(\n this.state$.subscribe((state) => {\n this.buttons.forEach((btn, i) => {\n if (btn.isActive) {\n $buttonsContainer.children[i]?.classList.toggle(\n \"is-active\",\n btn.isActive(state)\n );\n }\n });\n }),\n \"render-state-btns\"\n );\n\n this.sideEffect.addEventListener(\n $buttonsContainer,\n \"pointerup\",\n (ev) => {\n if (!ev.isPrimary || this.readonly$.value) {\n return;\n }\n const target = ev.target as HTMLElement;\n const teleTitleBarBtnIndex = Number(\n target.dataset?.teleTitleBarBtnIndex\n );\n if (\n !Number.isNaN(teleTitleBarBtnIndex) &&\n teleTitleBarBtnIndex < this.buttons.length\n ) {\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 } as TeleTitleBarEvent);\n }\n }\n },\n {},\n \"render-btns-container-click\"\n );\n\n this.$titleBar.appendChild($titleArea);\n this.$titleBar.appendChild($buttonsContainer);\n }\n\n return this.$titleBar;\n }\n\n public renderDragArea(): HTMLElement {\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 \"pointerdown\",\n this.handleTitleBarClick\n );\n return $dragArea;\n }\n\n public dragHandle(): HTMLElement | undefined {\n return this.$titleBar;\n }\n\n public wrapClassName(className: string): string {\n return `${this.namespace}-${className}`;\n }\n\n public destroy(): void {\n this.sideEffect.flushAll();\n if (this.$titleBar) {\n this.$titleBar = void 0;\n this.onDragStart = void 0;\n this.onEvent = void 0;\n }\n }\n\n public onEvent?: TeleTitleBarConfig[\"onEvent\"];\n\n public onDragStart?: TeleTitleBarConfig[\"onDragStart\"];\n\n protected readonly$: TeleTitleBarConfig[\"readonly$\"];\n\n protected title$: ReadonlyVal<string>;\n\n protected buttons: ReadonlyArray<DefaultTitleBarButton>;\n\n protected state$: TeleTitleBarConfig[\"state$\"];\n\n protected sideEffect = new SideEffectManager();\n\n protected lastTitleBarClick = {\n timestamp: 0,\n clientX: -100,\n clientY: -100,\n };\n\n protected handleTitleBarClick = (ev: PointerEvent): void => {\n if (!ev.isPrimary || this.readonly$.value) {\n return;\n }\n\n if (ev.button !== 0) {\n return; // Not left mouse\n }\n\n if ((ev.target as HTMLElement).dataset?.teleTitleBarNoDblClick) {\n return; // btns\n }\n\n preventEvent(ev);\n\n const now = Date.now();\n if (now - this.lastTitleBarClick.timestamp <= 500) {\n if (\n Math.abs(ev.clientX - this.lastTitleBarClick.clientX) <= 5 &&\n Math.abs(ev.clientY - this.lastTitleBarClick.clientY) <= 5\n ) {\n // double click\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\n // protected lastTitleBarTouch = {\n // timestamp: 0,\n // clientX: -100,\n // clientY: -100,\n // };\n\n // protected handleTitleBarTouch = (ev: TouchEvent): void => {\n // if (this.readonly$.value) {\n // return;\n // }\n\n // if ((ev.target as HTMLElement).dataset?.teleTitleBarNoDblClick) {\n // return; // btns\n // }\n\n // preventEvent(ev);\n\n // const now = Date.now();\n // const {\n // clientX = this.lastTitleBarTouch.clientX + 100,\n // clientY = this.lastTitleBarTouch.clientY + 100,\n // } = ev.touches[0] || {};\n\n // if (now - this.lastTitleBarTouch.timestamp <= 500) {\n // if (\n // Math.abs(clientX - this.lastTitleBarTouch.clientX) <= 10 &&\n // Math.abs(clientY - this.lastTitleBarTouch.clientY) <= 10\n // ) {\n // // double click\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}\n","import type { TeleBoxRect } from \"./typings\";\n\nexport function calcStageRect([rootRect, ratio]: [\n TeleBoxRect,\n number\n]): TeleBoxRect {\n if (ratio <= 0 || rootRect.width <= 0 || rootRect.height <= 0) {\n return rootRect;\n }\n\n const preferredHeight = rootRect.width * ratio;\n if (preferredHeight === rootRect.height) {\n return rootRect;\n }\n\n if (preferredHeight < rootRect.height) {\n return {\n x: 0,\n y: (rootRect.height - preferredHeight) / 2,\n width: rootRect.width,\n height: preferredHeight,\n };\n }\n\n const preferredWidth = rootRect.height / ratio;\n return {\n x: (rootRect.width - preferredWidth) / 2,\n y: 0,\n width: preferredWidth,\n height: rootRect.height,\n };\n}\n","import \"./style.scss\";\nimport shadowStyles from \"./style.shadow.scss?inline\";\n\nimport Emittery from \"emittery\";\nimport styler from \"stylefire\";\nimport shallowequal from \"shallowequal\";\nimport { genUID, SideEffectManager } from \"side-effect-manager\";\nimport type {\n ReadonlyVal,\n ReadonlyValEnhancedResult,\n ValEnhancedResult,\n} from \"value-enhancer\";\nimport {\n combine,\n Val,\n withReadonlyValueEnhancer,\n withValueEnhancer,\n ValManager,\n} from \"value-enhancer\";\nimport type { TeleTitleBar } from \"../TeleTitleBar\";\nimport { DefaultTitleBar } from \"../TeleTitleBar\";\nimport { ResizeObserver as ResizeObserverPolyfill } from \"@juggle/resize-observer\";\nimport { clamp, getBoxDefaultName, preventEvent } from \"../utils\";\nimport {\n TELE_BOX_EVENT,\n TELE_BOX_STATE,\n TELE_BOX_RESIZE_HANDLE,\n} from \"./constants\";\nimport type {\n TeleBoxConfig,\n TeleBoxHandleType,\n TeleBoxState,\n TeleBoxCoord,\n TeleBoxSize,\n TeleBoxEventConfig,\n TeleBoxEvent,\n TeleBoxDelegateEventConfig,\n TeleBoxRect,\n} from \"./typings\";\nimport { calcStageRect } from \"./utils\";\n\nexport * from \"./constants\";\nexport * from \"./typings\";\n\nconst ResizeObserver = window.ResizeObserver || ResizeObserverPolyfill;\n\ntype RequiredTeleBoxConfig = Required<TeleBoxConfig>;\n\ntype ValConfig = {\n title: Val<RequiredTeleBoxConfig[\"title\"], boolean>;\n visible: Val<RequiredTeleBoxConfig[\"visible\"], boolean>;\n resizable: Val<RequiredTeleBoxConfig[\"resizable\"], boolean>;\n draggable: Val<RequiredTeleBoxConfig[\"draggable\"], boolean>;\n boxRatio: Val<RequiredTeleBoxConfig[\"boxRatio\"], boolean>;\n stageRatio: Val<RequiredTeleBoxConfig[\"stageRatio\"], boolean>;\n stageStyle: Val<RequiredTeleBoxConfig[\"stageStyle\"], boolean>;\n bodyStyle: Val<RequiredTeleBoxConfig[\"bodyStyle\"], boolean>;\n};\n\ntype PropsValConfig = {\n darkMode: RequiredTeleBoxConfig[\"darkMode$\"];\n fence: RequiredTeleBoxConfig[\"fence$\"];\n minimized: RequiredTeleBoxConfig[\"minimized$\"];\n maximized: RequiredTeleBoxConfig[\"maximized$\"];\n readonly: RequiredTeleBoxConfig[\"readonly$\"];\n rootRect: RequiredTeleBoxConfig[\"rootRect$\"];\n managerStageRect: RequiredTeleBoxConfig[\"managerStageRect$\"];\n defaultBoxStageStyle: RequiredTeleBoxConfig[\"defaultBoxStageStyle$\"];\n defaultBoxBodyStyle: RequiredTeleBoxConfig[\"defaultBoxBodyStyle$\"];\n collectorRect: RequiredTeleBoxConfig[\"collectorRect$\"];\n};\n\ntype MyReadonlyValConfig = {\n zIndex: Val<RequiredTeleBoxConfig[\"zIndex\"], boolean>;\n focus: Val<RequiredTeleBoxConfig[\"focus\"], boolean>;\n\n minSize: Val<TeleBoxSize, boolean>;\n intrinsicSize: Val<TeleBoxSize, boolean>;\n intrinsicCoord: Val<TeleBoxCoord, boolean>;\n pxMinSize: ReadonlyVal<TeleBoxSize, boolean>;\n pxIntrinsicSize: ReadonlyVal<TeleBoxSize, boolean>;\n pxIntrinsicCoord: ReadonlyVal<TeleBoxCoord, boolean>;\n state: ReadonlyVal<TeleBoxState, boolean>;\n bodyRect: Val<TeleBoxRect>;\n stageRect: ReadonlyVal<TeleBoxRect>;\n};\n\ntype CombinedValEnhancedResult = ReadonlyValEnhancedResult<\n PropsValConfig & MyReadonlyValConfig\n> &\n ValEnhancedResult<ValConfig>;\n\nexport interface TeleBox extends CombinedValEnhancedResult {}\n\nexport class TeleBox {\n public constructor({\n id = genUID(),\n title = getBoxDefaultName(),\n namespace = \"telebox\",\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 resizable = true,\n draggable = true,\n boxRatio = -1,\n focus = false,\n zIndex = 100,\n stageRatio = null,\n enableShadowDOM = true,\n titleBar,\n content,\n stage,\n footer,\n styles,\n userStyles,\n bodyStyle = null,\n stageStyle = null,\n darkMode$,\n fence$,\n minimized$,\n maximized$,\n readonly$,\n root,\n rootRect$,\n managerStageRect$,\n managerStageRatio$,\n defaultBoxBodyStyle$,\n defaultBoxStageStyle$,\n collectorRect$,\n }: TeleBoxConfig) {\n this._sideEffect = new SideEffectManager();\n\n this.id = id;\n this.namespace = namespace;\n this.enableShadowDOM = enableShadowDOM;\n\n const valManager = new ValManager();\n this._sideEffect.addDisposer(() => valManager.destroy());\n\n const title$ = new Val(title);\n const visible$ = new Val(visible);\n const resizable$ = new Val(resizable);\n const draggable$ = new Val(draggable);\n const boxRatio$ = new Val(boxRatio);\n const zIndex$ = new Val(zIndex);\n const focus$ = new Val(focus);\n\n const state$ = combine(\n [minimized$, maximized$],\n ([minimized, maximized]): TeleBoxState =>\n minimized\n ? TELE_BOX_STATE.Minimized\n : maximized\n ? TELE_BOX_STATE.Maximized\n : TELE_BOX_STATE.Normal\n );\n\n const minSize$ = new Val(\n {\n width: clamp(minWidth, 0, 1),\n height: clamp(minHeight, 0, 1),\n },\n { compare: shallowequal }\n );\n\n const pxMinSize$ = combine(\n [minSize$, managerStageRect$],\n ([minSize, managerStageRect]) => ({\n width: minSize.width * managerStageRect.width,\n height: minSize.height * managerStageRect.height,\n }),\n { compare: shallowequal }\n );\n\n const intrinsicSize$ = new Val(\n { width, height },\n { compare: shallowequal }\n );\n\n this._sideEffect.addDisposer(\n // check intrinsicSize overflow\n minSize$.reaction((minSize, skipUpdate) => {\n intrinsicSize$.setValue(\n {\n width: Math.max(width, minSize.width),\n height: Math.max(height, minSize.height),\n },\n skipUpdate\n );\n })\n );\n\n const intrinsicCoord$ = new Val({ x, y }, { compare: shallowequal });\n\n const pxIntrinsicSize$ = combine(\n [intrinsicSize$, managerStageRect$],\n ([size, managerStageRect]) => ({\n width: managerStageRect.width * size.width,\n height: managerStageRect.height * size.height,\n }),\n { compare: shallowequal }\n );\n\n const pxIntrinsicCoord$ = combine(\n [intrinsicCoord$, managerStageRect$],\n ([intrinsicCoord, managerStageRect]) => ({\n x: intrinsicCoord.x * managerStageRect.width,\n y: intrinsicCoord.y * managerStageRect.height,\n }),\n { compare: shallowequal }\n );\n\n const bodyStyle$ = new Val<string | null>(bodyStyle);\n const stageStyle$ = new Val<string | null>(stageStyle);\n\n const contentRoot$ = new Val<HTMLElement | null>(null);\n const bodyRect$ = new Val<TeleBoxRect>(managerStageRect$.value, {\n compare: shallowequal,\n });\n const stageRatio$ = new Val(stageRatio);\n const finalStageRatio$ = combine(\n [stageRatio$, managerStageRatio$],\n ([stageRatio, managerStageRatio]) => stageRatio ?? managerStageRatio\n );\n const stageRect$ = combine(\n [bodyRect$, finalStageRatio$],\n calcStageRect,\n { compare: shallowequal }\n );\n\n const propsValConfig: PropsValConfig = {\n darkMode: darkMode$,\n fence: fence$,\n minimized: minimized$,\n maximized: maximized$,\n readonly: readonly$,\n rootRect: rootRect$,\n managerStageRect: managerStageRect$,\n defaultBoxBodyStyle: defaultBoxBodyStyle$,\n defaultBoxStageStyle: defaultBoxStageStyle$,\n collectorRect: collectorRect$,\n };\n\n withReadonlyValueEnhancer(this, propsValConfig);\n\n const myReadonlyValConfig: MyReadonlyValConfig = {\n zIndex: zIndex$,\n focus: focus$,\n\n state: state$,\n minSize: minSize$,\n pxMinSize: pxMinSize$,\n intrinsicSize: intrinsicSize$,\n intrinsicCoord: intrinsicCoord$,\n pxIntrinsicSize: pxIntrinsicSize$,\n pxIntrinsicCoord: pxIntrinsicCoord$,\n bodyRect: bodyRect$,\n stageRect: stageRect$,\n };\n\n withReadonlyValueEnhancer(this, myReadonlyValConfig, valManager);\n\n const valConfig: ValConfig = {\n title: title$,\n visible: visible$,\n resizable: resizable$,\n draggable: draggable$,\n boxRatio: boxRatio$,\n stageRatio: stageRatio$,\n bodyStyle: bodyStyle$,\n stageStyle: stageStyle$,\n };\n\n withValueEnhancer(this, valConfig, valManager);\n\n this.titleBar =\n titleBar ||\n new DefaultTitleBar({\n readonly$: readonly$,\n state$: state$,\n title$: title$,\n namespace: this.namespace,\n onDragStart: (event) => this._handleTrackStart?.(event),\n onEvent: (event) => this._delegateEvents.emit(event.type),\n });\n\n this._sideEffect.addDisposer(\n boxRatio$.subscribe((boxRatio) => {\n if (boxRatio > 0) {\n this.transform(\n pxIntrinsicCoord$.value.x,\n pxIntrinsicCoord$.value.y,\n pxIntrinsicSize$.value.width,\n pxIntrinsicSize$.value.height\n );\n }\n })\n );\n\n this._sideEffect.addDisposer(\n fence$.subscribe((fence) => {\n if (fence) {\n this.move(\n pxIntrinsicCoord$.value.x,\n pxIntrinsicCoord$.value.y\n );\n }\n })\n );\n\n this.$box = this._render();\n contentRoot$.setValue(this.$content.parentElement);\n content && this.mountContent(content);\n stage && this.mountStage(stage);\n footer && this.mountFooter(footer);\n styles && this.mountStyles(styles);\n userStyles && this.mountUserStyles(userStyles);\n root.appendChild(this.$box);\n\n const watchValEvent = <E extends TeleBoxEvent>(\n val: ReadonlyVal<TeleBoxEventConfig[E], boolean>,\n event: E\n ) => {\n this._sideEffect.addDisposer(\n val.reaction((v, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit<any>(event, v);\n }\n })\n );\n };\n\n watchValEvent(darkMode$, TELE_BOX_EVENT.DarkMode);\n watchValEvent(readonly$, TELE_BOX_EVENT.Readonly);\n watchValEvent(zIndex$, TELE_BOX_EVENT.ZIndex);\n watchValEvent(minimized$, TELE_BOX_EVENT.Minimized);\n watchValEvent(maximized$, TELE_BOX_EVENT.Maximized);\n watchValEvent(state$, TELE_BOX_EVENT.State);\n watchValEvent(intrinsicSize$, TELE_BOX_EVENT.IntrinsicResize);\n watchValEvent(intrinsicCoord$, TELE_BOX_EVENT.IntrinsicMove);\n\n this._sideEffect.addDisposer([\n visible$.reaction((visible, skipUpdate) => {\n if (!skipUpdate && !visible) {\n this.events.emit(TELE_BOX_EVENT.Close);\n }\n }),\n focus$.reaction((focus, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(\n focus ? TELE_BOX_EVENT.Focus : TELE_BOX_EVENT.Blur\n );\n }\n }),\n ]);\n }\n\n public readonly id: string;\n\n /** ClassName Prefix. For CSS styling. Default \"telebox\" */\n public readonly namespace: string;\n\n /** Enable shadow DOM for box content. Default true. */\n public readonly enableShadowDOM: boolean;\n\n public readonly events = new Emittery<\n TeleBoxEventConfig,\n TeleBoxEventConfig\n >();\n\n public readonly _delegateEvents = new Emittery<\n TeleBoxDelegateEventConfig,\n TeleBoxDelegateEventConfig\n >();\n\n protected _sideEffect: SideEffectManager;\n\n public titleBar: TeleTitleBar;\n\n /** Minimum box width relative to stage area. 0~1. Default 0. */\n public get minWidth(): number {\n return this._minSize$.value.width;\n }\n\n /** Minimum box height relative to stage area. 0~1. Default 0. */\n public get minHeight(): number {\n return this._minSize$.value.height;\n }\n\n /**\n * @param minWidth Minimum box width relative to stage area. 0~1.\n * @returns this\n */\n public setMinWidth(minWidth: number, skipUpdate = false): void {\n this._minSize$.setValue(\n { width: minWidth, height: this.minHeight },\n skipUpdate\n );\n }\n\n /**\n * @param minHeight Minimum box height relative to container element. 0~1.\n * @returns this\n */\n public setMinHeight(minHeight: number, skipUpdate = false): void {\n this._minSize$.setValue(\n { width: this.minWidth, height: minHeight },\n skipUpdate\n );\n }\n\n /**\n * Resize box.\n * @param width Box width relative to container element. 0~1.\n * @param height Box height relative to container element. 0~1.\n * @param skipUpdate Skip emitting event.\n * @returns this\n */\n public resize(width: number, height: number, skipUpdate = false): void {\n this._intrinsicSize$.setValue(\n {\n width: Math.max(width, this.minWidth),\n height: Math.max(height, this.minHeight),\n },\n skipUpdate\n );\n }\n\n /** Intrinsic box x position relative to container element(without counting the effect of maximization or minimization). 0~1. Default 0.1. */\n public get intrinsicX(): number {\n return this._intrinsicCoord$.value.x;\n }\n\n /** Intrinsic box y position relative to container element(without counting the effect of maximization or minimization). 0~1. Default 0.1. */\n public get intrinsicY(): number {\n return this._intrinsicCoord$.value.y;\n }\n\n /** Intrinsic box width relative to container element(without counting the effect of maximization or minimization). 0~1. Default 0.1. */\n public get intrinsicWidth(): number {\n return this._intrinsicSize$.value.width;\n }\n\n /** Intrinsic box height relative to container element(without counting the effect of maximization or minimization). 0~1. Default 0.1. */\n public get intrinsicHeight(): number {\n return this._intrinsicSize$.value.height;\n }\n\n /**\n * Move box position.\n * @param x x position in px.\n * @param y y position in px.\n * @param skipUpdate Skip emitting event.\n * @returns this\n */\n protected move(x: number, y: number, skipUpdate = false): void {\n let safeX: number;\n let safeY: number;\n const managerStageRect = this.managerStageRect;\n const pxIntrinsicSize = this.pxIntrinsicSize;\n\n if (this.fence) {\n safeX = clamp(x, 0, managerStageRect.width - pxIntrinsicSize.width);\n safeY = clamp(\n y,\n 0,\n managerStageRect.height - pxIntrinsicSize.height\n );\n } else {\n safeX = clamp(\n x,\n -(pxIntrinsicSize.width - 120),\n 0 + managerStageRect.width - 20\n );\n safeY = clamp(y, 0, 0 + managerStageRect.height - 20);\n }\n\n this._intrinsicCoord$.setValue(\n {\n x: safeX / managerStageRect.width,\n y: safeY / managerStageRect.height,\n },\n skipUpdate\n );\n }\n\n /**\n * Resize + Move, with respect to fixed ratio.\n * @param x x position in px.\n * @param y y position in px.\n * @param width Box width in px.\n * @param height Box height in px.\n * @param skipUpdate Skip emitting event.\n * @returns this\n */\n protected transform(\n x: number,\n y: number,\n width: number,\n height: number,\n skipUpdate = false\n ): void {\n const managerStageRect = this.managerStageRect;\n\n width = Math.max(width, this.pxMinSize.width);\n height = Math.max(height, this.pxMinSize.height);\n\n if (this.boxRatio > 0) {\n const newHeight = this.boxRatio * width;\n if (y !== this.pxIntrinsicCoord.y) {\n y -= newHeight - height;\n }\n height = newHeight;\n }\n\n if (y < 0) {\n y = 0;\n height = this.pxIntrinsicSize.height;\n }\n\n this.move(x, y, skipUpdate);\n this._intrinsicSize$.setValue(\n {\n width: width / managerStageRect.width,\n height: height / managerStageRect.height,\n },\n skipUpdate\n );\n }\n\n private $authorContent?: HTMLElement;\n\n /** Mount dom to box content. */\n public mountContent(content: HTMLElement): void {\n this.$authorContent?.remove();\n this.$authorContent = content;\n this.$content.appendChild(content);\n }\n\n /** Unmount content from the box. */\n public unmountContent(): void {\n if (this.$authorContent) {\n this.$authorContent.remove();\n this.$authorContent = undefined;\n }\n }\n\n private $authorStage?: HTMLElement;\n\n /** Mount dom to box stage. */\n public mountStage(stage: HTMLElement): void {\n this.$authorStage?.remove();\n this.$authorStage = stage;\n if (!this.$stage) {\n this.$stage = this._renderStage();\n }\n this.$stage.appendChild(stage);\n if (!this.$stage.parentElement) {\n this.$body.appendChild(this.$stage);\n }\n }\n\n /** Unmount content from the box. */\n public unmountStage(): void {\n if (this.$authorStage) {\n this.$authorStage.remove();\n this.$authorStage = undefined;\n }\n this.$stage?.remove();\n }\n\n private $authorFooter?: HTMLElement;\n\n /** Mount dom to box Footer. */\n public mountFooter(footer: HTMLElement): void {\n this.$authorFooter?.remove();\n this.$authorFooter = footer;\n this.$footer.appendChild(footer);\n }\n\n /** Unmount Footer from the box. */\n public unmountFooter(): void {\n if (this.$authorFooter) {\n this.$authorFooter.remove();\n this.$authorFooter = undefined;\n }\n }\n\n /** Mount styles for box content */\n public mountStyles(styles: string): void {\n this.$styles.textContent = styles;\n }\n\n /** Umount styles for box content */\n public unmountStyles(): void {\n this.$styles.textContent = \"\";\n }\n\n /** Mount user styles for box content */\n public mountUserStyles(styles: string): void {\n this.$userStyles.textContent = styles;\n }\n\n /** Umount user styles for box content */\n public unmountUserStyles(): void {\n this.$userStyles.textContent = \"\";\n }\n\n /** DOM of the box */\n public $box: HTMLElement;\n\n /** DOM of main area of the box. Including $body and $footer. */\n public $main!: HTMLElement;\n\n /** DOM of the box body */\n public $body!: HTMLElement;\n\n /** DOM of the box content container inside box body */\n public $content!: HTMLElement;\n\n /** DOM of the box stage area inside box body */\n public $stage?: HTMLElement;\n\n /** DOM of custom box content styles */\n public $styles!: HTMLStyleElement;\n\n /** DOM of end user custom box content styles */\n public $userStyles!: HTMLStyleElement;\n\n /** DOM of the box title bar container */\n public $titleBar!: HTMLElement;\n\n /** DOM of the box footer container */\n public $footer!: HTMLElement;\n\n private _render(): HTMLElement {\n if (this.$box) {\n return this.$box;\n }\n\n const bindBoxStates = (el: Element, disposerID?: string): string => {\n return this._sideEffect.addDisposer(\n [\n this._readonly$.subscribe((readonly) =>\n el.classList.toggle(\n this.wrapClassName(\"readonly\"),\n readonly\n )\n ),\n this._draggable$.subscribe((draggable) =>\n el.classList.toggle(\n this.wrapClassName(\"no-drag\"),\n !draggable\n )\n ),\n this._resizable$.subscribe((resizable) =>\n el.classList.toggle(\n this.wrapClassName(\"no-resize\"),\n !resizable\n )\n ),\n this._focus$.subscribe((focus) =>\n el.classList.toggle(this.wrapClassName(\"blur\"), !focus)\n ),\n this._darkMode$.subscribe((darkMode) => {\n el.classList.toggle(\n this.wrapClassName(\"color-scheme-dark\"),\n darkMode\n );\n el.classList.toggle(\n this.wrapClassName(\"color-scheme-light\"),\n !darkMode\n );\n }),\n ],\n disposerID\n );\n };\n\n this.$box = document.createElement(\"div\");\n this.$box.classList.add(this.wrapClassName(\"box\"));\n bindBoxStates(this.$box, \"bind-box-state\");\n\n this._sideEffect.add(() => {\n const minimizedClassName = this.wrapClassName(\"minimized\");\n const maximizedClassName = this.wrapClassName(\"maximized\");\n const MAXIMIZED_TIMER_ID = \"box-maximized-timer\";\n\n return this._state$.subscribe((state) => {\n this.$box.classList.toggle(\n minimizedClassName,\n state === TELE_BOX_STATE.Minimized\n );\n\n if (state === TELE_BOX_STATE.Maximized) {\n this._sideEffect.flush(MAXIMIZED_TIMER_ID);\n this.$box.classList.toggle(maximizedClassName, true);\n } else {\n // delay so that transition won't be triggered\n this._sideEffect.setTimeout(\n () => {\n this.$box.classList.toggle(\n maximizedClassName,\n false\n );\n },\n 0,\n MAXIMIZED_TIMER_ID\n );\n }\n });\n });\n\n this._sideEffect.addDisposer(\n this._visible$.subscribe((visible) => {\n this.$box.style.display = visible ? \"block\" : \"none\";\n })\n );\n\n this._sideEffect.addDisposer(\n this._zIndex$.subscribe((zIndex) => {\n this.$box.style.zIndex = String(zIndex);\n })\n );\n\n this.$box.dataset.teleBoxID = this.id;\n\n const boxStyler = styler(this.$box);\n\n const boxStyles$ = combine(\n [\n this._maximized$,\n this._minimized$,\n this._pxIntrinsicSize$,\n this._pxIntrinsicCoord$,\n this._collectorRect$,\n this._rootRect$,\n this._managerStageRect$,\n ],\n ([\n maximized,\n minimized,\n pxIntrinsicSize,\n pxIntrinsicCoord,\n collectorRect,\n rootRect,\n managerStageRect,\n ]) => {\n const styles: {\n x: number;\n y: number;\n width: number;\n height: number;\n scaleX: number;\n scaleY: number;\n } = maximized\n ? {\n x: -managerStageRect.x,\n y: -managerStageRect.y,\n width: rootRect.width,\n height: rootRect.height,\n scaleX: 1,\n scaleY: 1,\n }\n : {\n x: pxIntrinsicCoord.x,\n y: pxIntrinsicCoord.y,\n width: pxIntrinsicSize.width,\n height: pxIntrinsicSize.height,\n scaleX: 1,\n scaleY: 1,\n };\n if (minimized && collectorRect) {\n const { width: boxWidth, height: boxHeight } = maximized\n ? this.rootRect\n : pxIntrinsicSize;\n styles.x =\n collectorRect.x -\n boxWidth / 2 +\n collectorRect.width / 2 -\n managerStageRect.x;\n styles.y =\n collectorRect.y -\n boxHeight / 2 +\n collectorRect.height / 2 -\n managerStageRect.y;\n styles.scaleX = collectorRect.width / boxWidth;\n styles.scaleY = collectorRect.height / boxHeight;\n }\n return styles;\n },\n { compare: shallowequal }\n );\n\n const boxStyles = boxStyles$.value;\n this.$box.style.width = boxStyles.width + \"px\";\n this.$box.style.height = boxStyles.height + \"px\";\n // Add 10px offset on first frame\n // which creates a subtle moving effect\n this.$box.style.transform = `translate(${boxStyles.x - 10}px,${\n boxStyles.y - 10\n }px)`;\n\n this._sideEffect.addDisposer(\n boxStyles$.subscribe((styles) => {\n boxStyler.set(styles);\n })\n );\n\n const $boxMain = document.createElement(\"div\");\n $boxMain.className = this.wrapClassName(\"box-main\");\n this.$box.appendChild($boxMain);\n\n const $titleBar = document.createElement(\"div\");\n $titleBar.className = this.wrapClassName(\"titlebar-wrap\");\n $titleBar.appendChild(this.titleBar.render());\n this.$titleBar = $titleBar;\n\n const $body = document.createElement(\"div\");\n $body.className = this.wrapClassName(\"body-wrap\");\n this.$body = $body;\n\n const $styles = document.createElement(\"style\");\n this.$styles = $styles;\n $body.appendChild($styles);\n\n const $userStyles = document.createElement(\"style\");\n this.$userStyles = $userStyles;\n $body.appendChild($userStyles);\n\n const $content = document.createElement(\"div\");\n $content.className =\n this.wrapClassName(\"content\") + \" tele-fancy-scrollbar\";\n this.$content = $content;\n this._sideEffect.addDisposer(\n combine(\n [this._bodyStyle$, this._defaultBoxBodyStyle$],\n ([bodyStyle, defaultBoxBodyStyle]) =>\n bodyStyle ?? defaultBoxBodyStyle\n ).subscribe((style) => ($content.style.cssText = style || \"\"))\n );\n\n $body.appendChild($content);\n\n const $footer = document.createElement(\"div\");\n $footer.className = this.wrapClassName(\"footer-wrap\");\n this.$footer = $footer;\n\n $boxMain.appendChild($titleBar);\n\n const $main = document.createElement(\"div\");\n $main.className = this.wrapClassName(\"main\");\n this.$main = $main;\n $boxMain.appendChild($main);\n\n const $quarantineOuter = document.createElement(\"div\");\n $quarantineOuter.className = this.wrapClassName(\"quarantine-outer\");\n $main.appendChild($quarantineOuter);\n\n const $quarantine = document.createElement(\"div\");\n $quarantine.className = this.wrapClassName(\"quarantine\");\n $quarantine.appendChild($body);\n $quarantine.appendChild($footer);\n\n if (this.enableShadowDOM) {\n bindBoxStates($quarantine, \"bind-quarantine-state\");\n const $shadowStyle = document.createElement(\"style\");\n $shadowStyle.textContent = shadowStyles;\n $quarantine.insertBefore($shadowStyle, $quarantine.firstChild);\n const shadow = $quarantineOuter.attachShadow({ mode: \"open\" });\n shadow.appendChild($quarantine);\n } else {\n $quarantineOuter.appendChild($quarantine);\n }\n\n this._renderResizeHandlers();\n\n const updateBodyRect = (): void => {\n const rect = $body.getBoundingClientRect();\n this._bodyRect$.setValue({\n x: 0,\n y: 0,\n width: rect.width,\n height: rect.height,\n });\n };\n this._sideEffect.add(() => {\n const observer = new ResizeObserver(() => {\n if (!this.minimized) {\n updateBodyRect();\n }\n });\n observer.observe($body);\n return () => observer.disconnect();\n });\n this._sideEffect.addDisposer(\n this._minimized$.reaction((minimized) => {\n // correct content size when restoring from minimized\n if (!minimized) {\n this._sideEffect.setTimeout(\n updateBodyRect,\n 400,\n \"minimized-content-rect-fix\"\n );\n }\n })\n );\n\n return this.$box;\n }\n\n private _renderStage(): HTMLDivElement {\n const $stage = document.createElement(\"div\");\n\n $stage.className = this.wrapClassName(\"box-stage\");\n const updateStageRect = (stageRect: TeleBoxRect): void => {\n $stage.style.top = stageRect.y + \"px\";\n $stage.style.left = stageRect.x + \"px\";\n $stage.style.width = stageRect.width + \"px\";\n $stage.style.height = stageRect.height + \"px\";\n };\n this._sideEffect.addDisposer(\n [\n combine(\n [this._stageStyle$, this._defaultBoxStageStyle$],\n ([stageStyle, defaultBoxStageStyle]) =>\n stageStyle ?? defaultBoxStageStyle\n ).subscribe((styles) => {\n $stage.style.cssText = styles || \"\";\n updateStageRect(this._stageRect$.value);\n }),\n this._stageRect$.subscribe(updateStageRect),\n ],\n \"box-stage-styles\"\n );\n return $stage;\n }\n\n private _handleTrackStart?: (ev: PointerEvent) => void;\n\n public handleTrackStart: (ev: PointerEvent) => void = (ev) => {\n return this._handleTrackStart?.(ev);\n };\n\n private _renderResizeHandlers(): void {\n const $resizeHandles = document.createElement(\"div\");\n $resizeHandles.className = this.wrapClassName(\"resize-handles\");\n\n Object.values(TELE_BOX_RESIZE_HANDLE).forEach((handleType) => {\n const $handle = document.createElement(\"div\");\n $handle.className =\n this.wrapClassName(handleType) +\n \" \" +\n this.wrapClassName(\"resize-handle\");\n $handle.dataset.teleBoxHandle = handleType;\n\n $resizeHandles.appendChild($handle);\n });\n\n this.$box.appendChild($resizeHandles);\n\n const TRACKING_DISPOSER_ID = \"handle-tracking-listener\";\n const transformingClassName = this.wrapClassName(\"transforming\");\n\n let $trackMask: HTMLElement | undefined;\n\n let trackStartX = 0;\n let trackStartY = 0;\n\n let trackStartWidth = 0;\n let trackStartHeight = 0;\n\n let trackStartPageX = 0;\n let trackStartPageY = 0;\n\n let trackingHandle: TeleBoxHandleType | undefined;\n\n const handleTracking = (ev: PointerEvent): void => {\n if (!ev.isPrimary || this.state !== TELE_BOX_STATE.Normal) {\n return;\n }\n\n preventEvent(ev);\n\n let { pageX, pageY } = ev;\n if (pageY < 0) {\n pageY = 0;\n }\n\n const offsetX = pageX - trackStartPageX;\n const offsetY = pageY - trackStartPageY;\n\n let { x: newX, y: newY } = this.pxIntrinsicCoord;\n let { width: newWidth, height: newHeight } = this.pxIntrinsicSize;\n\n switch (trackingHandle) {\n case TELE_BOX_RESIZE_HANDLE.North: {\n newY = trackStartY + offsetY;\n newHeight = trackStartHeight - offsetY;\n break;\n }\n // eslint-disable-next-line no-fallthrough\n case TELE_BOX_RESIZE_HANDLE.South: {\n newHeight = trackStartHeight + offsetY;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.West: {\n newX = trackStartX + offsetX;\n newWidth = trackStartWidth - offsetX;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.East: {\n newWidth = trackStartWidth + offsetX;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.NorthWest: {\n newX = trackStartX + offsetX;\n newY = trackStartY + offsetY;\n newWidth = trackStartWidth - offsetX;\n newHeight = trackStartHeight - offsetY;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.NorthEast: {\n newY = trackStartY + offsetY;\n newWidth = trackStartWidth + offsetX;\n newHeight = trackStartHeight - offsetY;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.SouthEast: {\n newWidth = trackStartWidth + offsetX;\n newHeight = trackStartHeight + offsetY;\n break;\n }\n case TELE_BOX_RESIZE_HANDLE.SouthWest: {\n newX = trackStartX + offsetX;\n newWidth = trackStartWidth - offsetX;\n newHeight = trackStartHeight + offsetY;\n break;\n }\n default: {\n this.move(trackStartX + offsetX, trackStartY + offsetY);\n return;\n }\n }\n\n this.transform(newX, newY, newWidth, newHeight);\n };\n\n const handleTrackEnd = (ev: PointerEvent): void => {\n if (!ev.isPrimary) {\n return;\n }\n\n trackingHandle = void 0;\n\n if (!$trackMask) {\n return;\n }\n\n preventEvent(ev);\n\n this.$box.classList.toggle(transformingClassName, false);\n\n this._sideEffect.flush(TRACKING_DISPOSER_ID);\n\n $trackMask.remove();\n };\n\n const handleTrackStart = (ev: PointerEvent): void => {\n if (!ev.isPrimary || this.readonly) {\n return;\n }\n\n if (\n (ev as MouseEvent).button != null &&\n (ev as MouseEvent).button !== 0\n ) {\n // Not left mouse\n return;\n }\n\n if (\n !this.draggable ||\n trackingHandle ||\n this.state !== TELE_BOX_STATE.Normal\n ) {\n return;\n }\n\n const target = ev.target as HTMLElement;\n if (target.dataset?.teleBoxHandle) {\n preventEvent(ev);\n\n ({ x: trackStartX, y: trackStartY } = this.pxIntrinsicCoord);\n ({ width: trackStartWidth, height: trackStartHeight } =\n this.pxIntrinsicSize);\n\n ({ pageX: trackStartPageX, pageY: trackStartPageY } = ev);\n\n trackingHandle = target.dataset\n .teleBoxHandle as TELE_BOX_RESIZE_HANDLE;\n\n if (!$trackMask) {\n $trackMask = document.createElement(\"div\");\n }\n\n const cursor = trackingHandle\n ? this.wrapClassName(`cursor-${trackingHandle}`)\n : \"\";\n\n $trackMask.className = this.wrapClassName(\n `track-mask${cursor ? ` ${cursor}` : \"\"}`\n );\n\n this.$box.appendChild($trackMask);\n\n this.$box.classList.add(transformingClassName);\n\n this._sideEffect.add(() => {\n window.addEventListener(\"pointermove\", handleTracking, {\n passive: false,\n });\n window.addEventListener(\"pointerup\", handleTrackEnd, {\n passive: false,\n });\n window.addEventListener(\"pointercancel\", handleTrackEnd, {\n passive: false,\n });\n\n return () => {\n window.removeEventListener(\n \"pointermove\",\n handleTracking\n );\n window.removeEventListener(\"pointerup\", handleTrackEnd);\n window.removeEventListener(\n \"pointercancel\",\n handleTrackEnd\n );\n };\n }, TRACKING_DISPOSER_ID);\n }\n };\n\n this._handleTrackStart = handleTrackStart;\n\n this._sideEffect.addEventListener(\n $resizeHandles,\n \"pointerdown\",\n handleTrackStart,\n {},\n \"box-resizeHandles-pointerdown\"\n );\n }\n\n public async destroy(): Promise<void> {\n this.$box.remove();\n this._sideEffect.flushAll();\n this._sideEffect.flushAll();\n\n await this.events.emit(TELE_BOX_EVENT.Destroyed);\n this.events.clearListeners();\n this._delegateEvents.clearListeners();\n }\n\n /**\n * Wrap a className with namespace\n */\n public wrapClassName(className: string): string {\n return `${this.namespace}-${className}`;\n }\n}\n\ntype PropKeys<K = keyof TeleBox> = K extends keyof TeleBox\n ? // eslint-disable-next-line @typescript-eslint/ban-types\n TeleBox[K] extends Function\n ? never\n : K\n : never;\n\nexport type ReadonlyTeleBox = Pick<\n TeleBox,\n | PropKeys\n | \"wrapClassName\"\n | \"mountContent\"\n | \"unmountContent\"\n | \"mountFooter\"\n | \"unmountFooter\"\n | \"mountStage\"\n | \"unmountStage\"\n | \"mountStyles\"\n | \"unmountStyles\"\n | \"setTitle\"\n | \"setDraggable\"\n | \"setResizable\"\n | \"setVisible\"\n | \"setBoxRatio\"\n | \"setStageRatio\"\n | \"setStageStyle\"\n | \"setBodyStyle\"\n | \"handleTrackStart\"\n | \"onValChanged\"\n>;\n","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxNiI+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzdCODhBMCIgc3Ryb2tlLXdpZHRoPSIxLjQiIGQ9Ik0uNyAxLjJoMTYuNnYxMy42SC43eiIgLz4KICAgICAgICA8cGF0aCBmaWxsPSIjN0I4OEEwIiBkPSJNNCA1LjVoNnYxLjRINHpNNCA5LjVoMTB2MS40SDR6IiAvPgogICAgPC9nPgo8L3N2Zz4K\"","import \"./style.scss\";\nimport collectorSVG from \"./icons/collector.svg\";\nimport type { TeleStyles } from \"../typings\";\nimport type {\n ReadonlyVal,\n ReadonlyValEnhancedResult,\n ValEnhancedResult,\n} from \"value-enhancer\";\nimport { derive } from \"value-enhancer\";\nimport {\n withValueEnhancer,\n combine,\n Val,\n withReadonlyValueEnhancer,\n ValManager,\n} from \"value-enhancer\";\nimport { SideEffectManager } from \"side-effect-manager\";\nimport type { TeleBoxRect } from \"../TeleBox/typings\";\n\nexport interface TeleBoxCollectorConfig {\n namespace?: string;\n styles?: TeleStyles;\n root$: ReadonlyVal<HTMLElement | null>;\n minimized$: Val<boolean>;\n readonly$: ReadonlyVal<boolean>;\n darkMode$: ReadonlyVal<boolean>;\n}\n\ntype ValConfig = {\n styles: Val<TeleStyles>;\n $collector: Val<HTMLElement>;\n};\n\ntype PropsValConfig = {\n root: TeleBoxCollectorConfig[\"root$\"];\n};\n\ntype MyReadonlyValConfig = {\n rect: ReadonlyVal<TeleBoxRect | undefined>;\n visible: ReadonlyVal<boolean>;\n};\n\ntype CombinedValEnhancedResult = ValEnhancedResult<ValConfig> &\n ReadonlyValEnhancedResult<PropsValConfig & MyReadonlyValConfig>;\n\nexport interface TeleBoxCollector extends CombinedValEnhancedResult {}\n\nexport class TeleBoxCollector {\n public constructor({\n minimized$,\n readonly$,\n darkMode$,\n namespace = \"telebox\",\n styles = {},\n root$,\n }: TeleBoxCollectorConfig) {\n this.namespace = namespace;\n\n const valManager = new ValManager();\n this._sideEffect.addDisposer(() => valManager.destroy());\n\n const rect$ = new Val<TeleBoxRect | undefined>(void 0);\n const visible$ = derive(minimized$);\n const styles$ = new Val(styles);\n const el$ = new Val<HTMLElement>(document.createElement(\"button\"));\n\n const valConfig: ValConfig = {\n styles: styles$,\n $collector: el$,\n };\n\n withValueEnhancer(this, valConfig, valManager);\n\n const propsValConfig: PropsValConfig = {\n root: root$,\n };\n\n withReadonlyValueEnhancer(this, propsValConfig);\n\n const myReadonlyValConfig: MyReadonlyValConfig = {\n rect: rect$,\n visible: visible$,\n };\n\n withReadonlyValueEnhancer(this, myReadonlyValConfig, valManager);\n\n el$.value.className = this.wrapClassName(\"collector\");\n el$.value.style.backgroundImage = `url('${collectorSVG}')`;\n\n this._sideEffect.addDisposer(\n el$.subscribe(($collector) => {\n this._sideEffect.addEventListener(\n $collector,\n \"pointerup\",\n (ev) => {\n if (ev.isPrimary && !readonly$.value) {\n minimized$.setValue(false);\n }\n },\n {},\n \"telebox-collector-click\"\n );\n\n this._sideEffect.addDisposer(\n [\n visible$.subscribe((visible) => {\n $collector.classList.toggle(\n this.wrapClassName(\"collector-visible\"),\n visible\n );\n }),\n readonly$.subscribe((readonly) => {\n $collector.classList.toggle(\n this.wrapClassName(\"collector-readonly\"),\n readonly\n );\n }),\n darkMode$.subscribe((darkMode) => {\n $collector.classList.toggle(\n this.wrapClassName(\"color-scheme-dark\"),\n darkMode\n );\n $collector.classList.toggle(\n this.wrapClassName(\"color-scheme-light\"),\n !darkMode\n );\n }),\n styles$.subscribe((styles) => {\n Object.keys(styles).forEach((key) => {\n const value = styles[\n key as keyof TeleStyles\n ] as string;\n if (value != null) {\n $collector.style[key as keyof TeleStyles] =\n value;\n }\n });\n }),\n root$.subscribe((root) => {\n if (root) {\n root.appendChild($collector);\n }\n }),\n // Place after $collector appended to the DOM so that rect calc works\n combine([minimized$, root$]).subscribe(\n ([minimized, root]) => {\n if (minimized && root) {\n const { x, y, width, height } =\n $collector.getBoundingClientRect();\n const rootRect =\n root.getBoundingClientRect();\n rect$.setValue({\n x: x - rootRect.x,\n y: y - rootRect.y,\n width,\n height,\n });\n }\n }\n ),\n ],\n \"telebox-collector-el\"\n );\n })\n );\n }\n\n public readonly namespace: string;\n\n protected readonly _sideEffect = new SideEffectManager();\n\n public destroy(): void {\n this._sideEffect.flushAll();\n }\n\n public wrapClassName(className: string): string {\n return `${this.namespace}-${className}`;\n }\n}\n","export enum TELE_BOX_MANAGER_EVENT {\n Focused = \"focused\",\n Blurred = \"blurred\",\n Created = \"created\",\n Removed = \"removed\",\n State = \"state\",\n Maximized = \"maximized\",\n Minimized = \"minimized\",\n IntrinsicMove = \"intrinsic_move\",\n IntrinsicResize = \"intrinsic_resize\",\n ZIndex = \"z_index\",\n PrefersColorScheme = \"prefers_color_scheme\",\n DarkMode = \"dark_mode\",\n}\n","import \"./style.scss\";\n\nimport type { TeleBox } from \"../../TeleBox\";\nimport type { DefaultTitleBarConfig } from \"../../TeleTitleBar\";\nimport { DefaultTitleBar } from \"../../TeleTitleBar\";\nimport { TELE_BOX_STATE } from \"../../TeleBox/constants\";\nimport type { TeleBoxRect } from \"../../TeleBox/typings\";\nimport type { ReadonlyVal } from \"value-enhancer\";\nimport { combine } from \"value-enhancer\";\n\nexport type MaxTitleBarTitle = Pick<TeleBox, \"id\" | \"title\">;\n\nexport interface MaxTitleBarConfig extends DefaultTitleBarConfig {\n darkMode$: ReadonlyVal<boolean>;\n boxes$: ReadonlyVal<TeleBox[]>;\n rootRect$: ReadonlyVal<TeleBoxRect>;\n root: HTMLElement;\n}\n\nexport class MaxTitleBar extends DefaultTitleBar {\n public constructor(config: MaxTitleBarConfig) {\n super(config);\n\n this.boxes$ = config.boxes$;\n this.rootRect$ = config.rootRect$;\n this.darkMode$ = config.darkMode$;\n\n config.root.appendChild(this.render());\n }\n\n public focusBox(box?: TeleBox): void {\n if (this.focusedBox && this.focusedBox === box) {\n return;\n }\n\n if (this.$titles && this.state$.value === TELE_BOX_STATE.Maximized) {\n const { children } = this.$titles.firstElementChild as HTMLElement;\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const $tab = children[i] as HTMLElement;\n const id = $tab.dataset?.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 this.focusedBox = box;\n }\n\n public render(): HTMLElement {\n if (this.$titleBar) {\n return this.$titleBar;\n }\n\n const $titleBar = super.render();\n\n $titleBar.classList.add(this.wrapClassName(\"max-titlebar\"));\n\n this.sideEffect.addDisposer(\n [\n this.state$.subscribe((state) => {\n $titleBar.classList.toggle(\n this.wrapClassName(\"max-titlebar-maximized\"),\n state === TELE_BOX_STATE.Maximized\n );\n }),\n this.readonly$.subscribe((readonly) => {\n $titleBar.classList.toggle(\n this.wrapClassName(\"readonly\"),\n readonly\n );\n }),\n combine([this.state$, this.boxes$]).subscribe(\n ([state, titles]) => {\n if (state === TELE_BOX_STATE.Maximized) {\n $titleBar.classList.toggle(\n this.wrapClassName(\"max-titlebar-single-title\"),\n titles.length === 1\n );\n if (titles.length !== 1) {\n $titleBar.replaceChild(\n this.renderTitles(),\n $titleBar.firstElementChild as HTMLElement\n );\n }\n }\n }\n ),\n ],\n \"max-render\"\n );\n\n const $titlesArea = document.createElement(\"div\");\n $titlesArea.classList.add(this.wrapClassName(\"titles-area\"));\n $titleBar.insertBefore($titlesArea, $titleBar.firstElementChild);\n\n return $titleBar;\n }\n\n public destroy(): void {\n super.destroy();\n this.$titles = void 0;\n this.focusedBox = void 0;\n }\n\n protected renderTitles(): HTMLElement {\n this.$titles = document.createElement(\"div\");\n this.$titles.className = this.wrapClassName(\"titles\");\n\n this.sideEffect.addEventListener(\n this.$titles,\n \"wheel\",\n (ev) => {\n (ev.currentTarget as HTMLElement).scrollBy({\n left: ev.deltaY > 0 ? 250 : -250,\n behavior: \"smooth\",\n });\n },\n { passive: false },\n \"max-render-wheel-titles\"\n );\n\n const $content = document.createElement(\"div\");\n $content.className = this.wrapClassName(\"titles-content\");\n this.$titles.appendChild($content);\n\n const disposers = this.boxes$.value.map((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\n if (this.focusedBox && box.id === this.focusedBox.id) {\n $tab.classList.add(this.wrapClassName(\"titles-tab-focus\"));\n }\n\n $content.appendChild($tab);\n\n return box._title$.reaction((title) => ($tab.textContent = title));\n });\n\n this.sideEffect.addDisposer(\n () => disposers.forEach((disposer) => disposer()),\n \"max-render-tab-titles\"\n );\n\n return this.$titles;\n }\n\n public focusedBox: TeleBox | undefined;\n\n protected darkMode$: MaxTitleBarConfig[\"darkMode$\"];\n protected boxes$: MaxTitleBarConfig[\"boxes$\"];\n protected rootRect$: MaxTitleBarConfig[\"rootRect$\"];\n\n protected $titles: HTMLElement | undefined;\n}\n","import \"./style.scss\";\n\nimport shallowequal from \"shallowequal\";\nimport { ResizeObserver as ResizeObserverPolyfill } from \"@juggle/resize-observer\";\nimport { SideEffectManager } from \"side-effect-manager\";\nimport type {\n ReadonlyVal,\n ValEnhancedResult,\n ReadonlyValEnhancedResult,\n} from \"value-enhancer\";\nimport { derive } from \"value-enhancer\";\nimport {\n combine,\n Val,\n withValueEnhancer,\n withReadonlyValueEnhancer,\n ValManager,\n} from \"value-enhancer\";\nimport Emittery from \"emittery\";\nimport type {\n ReadonlyTeleBox,\n TeleBoxColorScheme,\n TeleBoxRect,\n TeleBoxState,\n} from \"../TeleBox\";\nimport {\n TeleBox,\n TELE_BOX_EVENT,\n TELE_BOX_STATE,\n TELE_BOX_COLOR_SCHEME,\n TELE_BOX_DELEGATE_EVENT,\n} from \"../TeleBox\";\nimport { TeleBoxCollector } from \"../TeleBoxCollector\";\nimport { TELE_BOX_MANAGER_EVENT } from \"./constants\";\nimport type {\n TeleBoxManagerConfig,\n TeleBoxManagerCreateConfig,\n TeleBoxManagerEventConfig,\n TeleBoxManagerQueryConfig,\n TeleBoxManagerUpdateConfig,\n} from \"./typings\";\nimport { MaxTitleBar } from \"./MaxTitleBar\";\nimport { calcStageRect } from \"../TeleBox/utils\";\n\nexport * from \"./typings\";\nexport * from \"./constants\";\n\nconst ResizeObserver = window.ResizeObserver || ResizeObserverPolyfill;\n\ntype ReadonlyValConfig = {\n darkMode: ReadonlyVal<boolean, boolean>;\n state: ReadonlyVal<TeleBoxState, boolean>;\n root: Val<HTMLElement | null>;\n rootRect: Val<TeleBoxRect>;\n stageRect: ReadonlyVal<TeleBoxRect>;\n};\n\ntype ValConfig = {\n prefersColorScheme: Val<TeleBoxColorScheme, boolean>;\n readonly: Val<boolean, boolean>;\n minimized: Val<boolean, boolean>;\n maximized: Val<boolean, boolean>;\n fence: Val<boolean, boolean>;\n stageRatio: Val<number, boolean>;\n containerStyle: Val<string>;\n stageStyle: Val<string>;\n defaultBoxBodyStyle: Val<string | null>;\n defaultBoxStageStyle: Val<string | null>;\n};\n\ntype CombinedValEnhancedResult = ValEnhancedResult<ValConfig> &\n ReadonlyValEnhancedResult<ReadonlyValConfig>;\n\nexport interface TeleBoxManager extends CombinedValEnhancedResult {}\n\nexport class TeleBoxManager {\n public constructor({\n root = null,\n prefersColorScheme = TELE_BOX_COLOR_SCHEME.Light,\n minimized = false,\n maximized = false,\n fence = true,\n collector,\n namespace = \"telebox\",\n readonly = false,\n stageRatio = -1,\n containerStyle = \"\",\n stageStyle = \"\",\n defaultBoxBodyStyle = null,\n defaultBoxStageStyle = null,\n }: TeleBoxManagerConfig = {}) {\n this._sideEffect = new SideEffectManager();\n\n this.namespace = namespace;\n\n const valManager = new ValManager();\n this._sideEffect.addDisposer(() => valManager.destroy());\n\n const root$ = new Val(root);\n const readonly$ = new Val(readonly);\n const minimized$ = new Val(minimized);\n const maximized$ = new Val(maximized);\n const fence$ = new Val(fence);\n const containerStyle$ = new Val(containerStyle);\n const stageStyle$ = new Val(stageStyle);\n const stageRatio$ = new Val(stageRatio);\n const defaultBoxBodyStyle$ = new Val(defaultBoxBodyStyle);\n const defaultBoxStageStyle$ = new Val(defaultBoxStageStyle);\n\n const rootRect$ = new Val<TeleBoxRect>(\n {\n x: 0,\n y: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n },\n { compare: shallowequal }\n );\n this._sideEffect.addDisposer(\n root$.subscribe((root) => {\n this._sideEffect.add(() => {\n if (!root) {\n return () => void 0;\n }\n const observer = new ResizeObserver(() => {\n const rect = root.getBoundingClientRect();\n rootRect$.setValue({\n x: 0,\n y: 0,\n width: rect.width,\n height: rect.height,\n });\n });\n observer.observe(root);\n return () => observer.disconnect();\n }, \"calc-root-rect\");\n })\n );\n\n const stageRect$ = combine([rootRect$, stageRatio$], calcStageRect, {\n compare: shallowequal,\n });\n\n this.boxes$ = new Val<TeleBox[]>([]);\n this.topBox$ = new Val<TeleBox | undefined>(undefined);\n this._sideEffect.addDisposer(\n this.boxes$.subscribe((boxes) => {\n if (boxes.length > 0) {\n const topBox = boxes.reduce((topBox, box) =>\n topBox.zIndex > box.zIndex ? topBox : box\n );\n this.topBox$.setValue(topBox);\n } else {\n this.topBox$.setValue(undefined);\n }\n })\n );\n\n const prefersDarkMatch = window.matchMedia(\n \"(prefers-color-scheme: dark)\"\n );\n const prefersDark$ = new Val(false);\n if (prefersDarkMatch) {\n prefersDark$.setValue(prefersDarkMatch.matches);\n this._sideEffect.add(() => {\n const handler = (evt: MediaQueryListEvent): void => {\n prefersDark$.setValue(evt.matches);\n };\n prefersDarkMatch.addEventListener(\"change\", handler);\n return () =>\n prefersDarkMatch.removeEventListener(\"change\", handler);\n });\n }\n\n const prefersColorScheme$ = new Val(prefersColorScheme);\n this._sideEffect.addDisposer(\n prefersColorScheme$.reaction((prefersColorScheme, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(\n TELE_BOX_MANAGER_EVENT.PrefersColorScheme,\n prefersColorScheme\n );\n }\n })\n );\n\n const darkMode$ = combine(\n [prefersDark$, prefersColorScheme$],\n ([prefersDark, prefersColorScheme]) =>\n prefersColorScheme === \"auto\"\n ? prefersDark\n : prefersColorScheme === \"dark\"\n );\n\n const state$ = combine(\n [minimized$, maximized$],\n ([minimized, maximized]): TeleBoxState =>\n minimized\n ? TELE_BOX_STATE.Minimized\n : maximized\n ? TELE_BOX_STATE.Maximized\n : TELE_BOX_STATE.Normal\n );\n\n this.collector =\n collector ??\n new TeleBoxCollector({\n minimized$: minimized$,\n readonly$: readonly$,\n darkMode$: darkMode$,\n namespace,\n root$,\n });\n\n const readonlyValConfig: ReadonlyValConfig = {\n darkMode: darkMode$,\n state: state$,\n root: root$,\n rootRect: rootRect$,\n stageRect: stageRect$,\n };\n\n withReadonlyValueEnhancer(this, readonlyValConfig, valManager);\n\n const valConfig: ValConfig = {\n prefersColorScheme: prefersColorScheme$,\n readonly: readonly$,\n fence: fence$,\n minimized: minimized$,\n maximized: maximized$,\n stageRatio: stageRatio$,\n containerStyle: containerStyle$,\n stageStyle: stageStyle$,\n defaultBoxBodyStyle: defaultBoxBodyStyle$,\n defaultBoxStageStyle: defaultBoxStageStyle$,\n };\n\n withValueEnhancer(this, valConfig, valManager);\n\n const closeBtnClassName = this.wrapClassName(\"titlebar-icon-close\");\n\n const checkFocusBox = (ev: PointerEvent): void => {\n if (!ev.isPrimary || readonly$.value) {\n return;\n }\n\n const target = ev.target as HTMLElement;\n if (!target.tagName) {\n return;\n }\n\n for (\n let el: HTMLElement | null = target;\n el;\n el = el.parentElement\n ) {\n if (el.classList && el.classList.contains(closeBtnClassName)) {\n return;\n }\n const id = el.dataset?.teleBoxID;\n if (id) {\n const box = this.getBox(id);\n if (box) {\n this.focusBox(box);\n this.makeBoxTop(box);\n return;\n }\n }\n }\n };\n\n this._sideEffect.addEventListener(\n window,\n \"pointerdown\",\n checkFocusBox,\n true\n );\n\n this.$container = document.createElement(\"div\");\n this.$container.className = this.wrapClassName(\"manager-container\");\n\n this.$stage = document.createElement(\"div\");\n this.$stage.className = this.wrapClassName(\"manager-stage\");\n this.$container.appendChild(this.$stage);\n\n this._sideEffect.addDisposer([\n darkMode$.subscribe((darkMode) => {\n this.$container.classList.toggle(\n this.wrapClassName(\"color-scheme-dark\"),\n darkMode\n );\n this.$container.classList.toggle(\n this.wrapClassName(\"color-scheme-light\"),\n !darkMode\n );\n }),\n maximized$.subscribe((maximized) => {\n this.$container.classList.toggle(\"is-maximized\", maximized);\n }),\n minimized$.subscribe((minimized) => {\n this.$container.classList.toggle(\"is-minimized\", minimized);\n }),\n containerStyle$.subscribe((containerStyle) => {\n this.$container.style.cssText = containerStyle;\n }),\n stageStyle$.subscribe((stageStyle) => {\n this.$stage.style.cssText = stageStyle;\n this.$stage.style.width = stageRect$.value.width + \"px\";\n this.$stage.style.height = stageRect$.value.height + \"px\";\n }),\n stageRect$.subscribe((stageRect) => {\n this.$stage.style.width = stageRect.width + \"px\";\n this.$stage.style.height = stageRect.height + \"px\";\n }),\n root$.subscribe((root) => {\n if (root) {\n root.appendChild(this.$container);\n } else if (this.$container.parentElement) {\n this.$container.remove();\n }\n }),\n ]);\n\n this.titleBar = new MaxTitleBar({\n namespace: this.namespace,\n title$: derive(this.topBox$, (topBox) => topBox?.title || \"\"),\n boxes$: this.boxes$,\n darkMode$: darkMode$,\n readonly$: readonly$,\n state$: state$,\n rootRect$: rootRect$,\n root: this.$container,\n onEvent: (event): void => {\n switch (event.type) {\n case TELE_BOX_DELEGATE_EVENT.Maximize: {\n maximized$.setValue(!maximized$.value);\n break;\n }\n case TELE_BOX_DELEGATE_EVENT.Minimize: {\n minimized$.setValue(true);\n break;\n }\n case TELE_BOX_EVENT.Close: {\n this.removeTopBox();\n this.focusTopBox();\n break;\n }\n default: {\n break;\n }\n }\n },\n });\n\n this._sideEffect.addDisposer([\n state$.reaction((state, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(TELE_BOX_MANAGER_EVENT.State, state);\n }\n }),\n maximized$.reaction((maximized, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(\n TELE_BOX_MANAGER_EVENT.Maximized,\n maximized\n );\n }\n }),\n minimized$.reaction((minimized, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(\n TELE_BOX_MANAGER_EVENT.Minimized,\n minimized\n );\n }\n }),\n darkMode$.reaction((darkMode, skipUpdate) => {\n if (!skipUpdate) {\n this.events.emit(TELE_BOX_MANAGER_EVENT.DarkMode, darkMode);\n }\n }),\n ]);\n }\n\n public readonly $container: HTMLDivElement;\n\n public readonly $stage: HTMLDivElement;\n\n public get boxes(): ReadonlyArray<TeleBox> {\n return this.boxes$.value;\n }\n\n public get topBox(): TeleBox | undefined {\n return this.topBox$.value;\n }\n\n public readonly events = new Emittery<\n TeleBoxManagerEventConfig,\n TeleBoxManagerEventConfig\n >();\n\n protected _sideEffect: SideEffectManager;\n\n public readonly namespace: string;\n\n /** @deprecated use setMaximized and setMinimized instead */\n public setState(state: TeleBoxState, skipUpdate = false): this {\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\n public create(\n config: TeleBoxManagerCreateConfig = {},\n smartPosition = true\n ): ReadonlyTeleBox {\n const box = new TeleBox({\n zIndex: this.topBox ? this.topBox.zIndex + 1 : 100,\n ...config,\n ...(smartPosition ? this.smartPosition(config) : {}),\n namespace: this.namespace,\n root: this.$stage,\n darkMode$: this._darkMode$,\n maximized$: this._maximized$,\n minimized$: this._minimized$,\n fence$: this._fence$,\n rootRect$: this._rootRect$,\n managerStageRect$: this._stageRect$,\n managerStageRatio$: this._stageRatio$,\n readonly$: this._readonly$,\n collectorRect$: this.collector._rect$,\n defaultBoxBodyStyle$: this._defaultBoxBodyStyle$,\n defaultBoxStageStyle$: this._defaultBoxStageStyle$,\n });\n\n if (box.focus) {\n this.focusBox(box);\n if (smartPosition) {\n this.makeBoxTop(box);\n }\n }\n\n this.boxes$.setValue([...this.boxes, box]);\n\n this._sideEffect.addDisposer([\n box._delegateEvents.on(TELE_BOX_DELEGATE_EVENT.Maximize, () => {\n this.setMaximized(!this.maximized);\n }),\n box._delegateEvents.on(TELE_BOX_DELEGATE_EVENT.Minimize, () => {\n this.setMinimized(true);\n }),\n box._delegateEvents.on(TELE_BOX_DELEGATE_EVENT.Close, () => {\n this.remove(box);\n this.focusTopBox();\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(\n TELE_BOX_MANAGER_EVENT.IntrinsicResize,\n box\n );\n }\n }),\n box._zIndex$.reaction((_, skipUpdate) => {\n if (this.boxes.length > 0) {\n const topBox = this.boxes.reduce((topBox, box) =>\n topBox.zIndex > box.zIndex ? topBox : box\n );\n this.topBox$.setValue(topBox);\n }\n if (!skipUpdate) {\n this.events.emit(TELE_BOX_MANAGER_EVENT.ZIndex, box);\n }\n }),\n ]);\n\n this.events.emit(TELE_BOX_MANAGER_EVENT.Created, box);\n\n return box;\n }\n\n public query(config?: TeleBoxManagerQueryConfig): ReadonlyTeleBox[] {\n return config\n ? this.boxes.filter(this.teleBoxMatcher(config))\n : [...this.boxes];\n }\n\n public queryOne(\n config?: TeleBoxManagerQueryConfig\n ): ReadonlyTeleBox | undefined {\n return config\n ? this.boxes.find(this.teleBoxMatcher(config))\n : this.boxes[0];\n }\n\n public update(\n boxID: string,\n config: TeleBoxManagerUpdateConfig,\n skipUpdate = false\n ): void {\n const box = this.boxes.find((box) => box.id === boxID);\n if (box) {\n return this.updateBox(box, config, skipUpdate);\n }\n }\n\n public updateAll(\n config: TeleBoxManagerUpdateConfig,\n skipUpdate = false\n ): void {\n this.boxes.forEach((box) => {\n this.updateBox(box, config, skipUpdate);\n });\n }\n\n public remove(\n boxOrID: string | TeleBox,\n skipUpdate = false\n ): ReadonlyTeleBox | undefined {\n const index = this.getBoxIndex(boxOrID);\n if (index >= 0) {\n const boxes = this.boxes.slice();\n const deletedBoxes = boxes.splice(index, 1);\n this.boxes$.setValue(boxes);\n deletedBoxes.forEach((box) => box.destroy());\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\n public removeTopBox(): ReadonlyTeleBox | undefined {\n if (this.topBox) {\n return this.remove(this.topBox);\n }\n return;\n }\n\n public removeAll(skipUpdate = false): ReadonlyTeleBox[] {\n const deletedBoxes = this.boxes$.value;\n this.boxes$.setValue([]);\n deletedBoxes.forEach((box) => box.destroy());\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\n /**\n * Mount manager to a container element.\n */\n public mount(root: HTMLElement): void {\n this._root$.setValue(root);\n }\n\n /**\n * Unmount manager from the container element.\n */\n public unmount(): void {\n this._root$.setValue(null);\n }\n\n public destroy(skipUpdate = false): void {\n this.events.clearListeners();\n this._sideEffect.flushAll();\n this.removeAll(skipUpdate);\n this.collector.destroy();\n this.titleBar.destroy();\n }\n\n public wrapClassName(className: string): string {\n return `${this.namespace}-${className}`;\n }\n\n public focusBox(boxOrID: string | TeleBox, skipUpdate = false): void {\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._focus$.setValue(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 this.titleBar.focusBox(targetBox);\n }\n }\n\n public focusTopBox(): void {\n if (this.topBox && !this.topBox.focus) {\n return this.focusBox(this.topBox);\n }\n }\n\n public blurBox(boxOrID: string | TeleBox, skipUpdate = false): void {\n const targetBox = this.getBox(boxOrID);\n if (targetBox) {\n if (targetBox.focus) {\n targetBox._focus$.setValue(false, skipUpdate);\n if (!skipUpdate) {\n this.events.emit(TELE_BOX_MANAGER_EVENT.Blurred, targetBox);\n }\n }\n if (this.titleBar.focusedBox === targetBox) {\n this.titleBar.focusBox();\n }\n }\n }\n\n public blurAll(skipUpdate = false): void {\n this.boxes.forEach((box) => {\n if (box.focus) {\n box._focus$.setValue(false, skipUpdate);\n if (!skipUpdate) {\n this.events.emit(TELE_BOX_MANAGER_EVENT.Blurred, box);\n }\n }\n });\n if (this.titleBar.focusedBox) {\n this.titleBar.focusBox();\n }\n }\n\n public collector: TeleBoxCollector;\n public titleBar: MaxTitleBar;\n\n protected boxes$: Val<TeleBox[]>;\n protected topBox$: Val<TeleBox | undefined>;\n\n protected teleBoxMatcher(\n config: TeleBoxManagerQueryConfig\n ): (box: TeleBox) => boolean {\n const keys = Object.keys(config) as Array<\n keyof TeleBoxManagerQueryConfig\n >;\n return (box: TeleBox): boolean =>\n keys.every((key) => config[key] === box[key]);\n }\n\n protected updateBox(\n box: TeleBox,\n config: TeleBoxManagerUpdateConfig,\n skipUpdate = false\n ): void {\n if (config.x != null || config.y != null) {\n box._intrinsicCoord$.setValue(\n {\n x: config.x ?? box.intrinsicX,\n y: config.y ?? box.intrinsicY,\n },\n skipUpdate\n );\n }\n if (config.width != null || config.height != null) {\n box._intrinsicSize$.setValue(\n {\n width: config.width ?? box.intrinsicWidth,\n height: config.height ?? box.intrinsicHeight,\n },\n skipUpdate\n );\n }\n if (config.title != null) {\n box._title$.setValue(config.title);\n }\n if (config.visible != null) {\n box._visible$.setValue(config.visible, skipUpdate);\n }\n if (config.resizable != null) {\n box._resizable$.setValue(config.resizable, skipUpdate);\n }\n if (config.draggable != null) {\n box._draggable$.setValue(config.draggable, skipUpdate);\n }\n if (config.boxRatio != null) {\n box._boxRatio$.setValue(config.boxRatio, skipUpdate);\n }\n if (config.zIndex != null) {\n box._zIndex$.setValue(config.zIndex, skipUpdate);\n }\n if (config.stageRatio !== undefined) {\n box.setStageRatio(config.stageRatio, 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 (config.minHeight != null || config.minWidth != null) {\n box._minSize$.setValue(\n {\n width: config.minWidth ?? box.minWidth,\n height: config.minHeight ?? box.minHeight,\n },\n skipUpdate\n );\n }\n }\n\n /** Keep new boxes staggered inside stage area */\n protected smartPosition(rect: Partial<TeleBoxRect>): TeleBoxRect {\n let { x, y } = rect;\n const { width = 0.5, height = 0.5 } = rect;\n const stageRect = this.stageRect;\n const topBox = this.topBox;\n\n if (x == null) {\n let pxX = 20;\n if (topBox) {\n const pxPreferredX = topBox.pxIntrinsicCoord.x + 20;\n const pxIntrinsicWidth = width * stageRect.width;\n if (pxPreferredX + pxIntrinsicWidth <= stageRect.width) {\n pxX = pxPreferredX;\n }\n }\n x = pxX / stageRect.width;\n }\n\n if (y == null) {\n let pxY = 20;\n if (topBox) {\n const pxPreferredY = topBox.pxIntrinsicCoord.y + 20;\n const pxIntrinsicHeight = height * stageRect.height;\n if (pxPreferredY + pxIntrinsicHeight <= stageRect.height) {\n pxY = pxPreferredY;\n }\n }\n y = pxY / stageRect.height;\n }\n\n return { x, y, width, height };\n }\n\n protected makeBoxTop(box: TeleBox, skipUpdate = false): void {\n if (this.topBox) {\n if (box !== this.topBox) {\n box._zIndex$.setValue(this.topBox.zIndex + 1, skipUpdate);\n }\n }\n }\n\n protected getBoxIndex(boxOrID: TeleBox | string): number {\n return typeof boxOrID === \"string\"\n ? this.boxes.findIndex((box) => box.id === boxOrID)\n : this.boxes.findIndex((box) => box === boxOrID);\n }\n\n protected getBox(boxOrID: TeleBox | string): TeleBox | undefined {\n return typeof boxOrID === \"string\"\n ? this.boxes.find((box) => box.id === boxOrID)\n : boxOrID;\n }\n}\n"],"names":["ResizeObserver","ResizeObserverPolyfill"],"mappings":"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"}