@forgeax/view 0.5.0-dev.13601.16969c83ee09 → 0.5.0-dev.13604.c415409c3b9d
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.
- package/dist/build-revision.json +1 -1
- package/dist/viewer/assets/{embedded-Ch4NawY-.js → embedded-DXSSFAyM.js} +2 -2
- package/dist/viewer/assets/{embedded-Ch4NawY-.js.map → embedded-DXSSFAyM.js.map} +1 -1
- package/dist/viewer/assets/{main-DUQJ1NlR.js → main-CI6ZQziX.js} +4 -4
- package/dist/viewer/assets/main-CI6ZQziX.js.map +1 -0
- package/dist/viewer/assets/{panels-lazy-DbOAvYN1.js → panels-lazy-DqCwhGd9.js} +2 -2
- package/dist/viewer/assets/{panels-lazy-DbOAvYN1.js.map → panels-lazy-DqCwhGd9.js.map} +1 -1
- package/dist/viewer/assets/{panels-ui-DICIsCag.js → panels-ui-CfUtl68h.js} +4 -4
- package/dist/viewer/assets/{panels-ui-DICIsCag.js.map → panels-ui-CfUtl68h.js.map} +1 -1
- package/dist/viewer/assets/{wgpu_wasm-DZKPZXEq.js → wgpu_wasm--oeqTwVY.js} +1 -1
- package/dist/viewer/assets/{wgpu_wasm_bg-C1seepuF.wasm → wgpu_wasm_bg-WoZ1YI1I.wasm} +0 -0
- package/dist/viewer/index.html +3 -3
- package/dist/viewer/panels.js +1 -1
- package/package.json +2 -2
- package/dist/viewer/assets/main-DUQJ1NlR.js.map +0 -1
package/dist/build-revision.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"codeRevision":"1803fe06a4440233ec0495ef340afc9f8b0e350ce211dd66b15412f48dfecad1","viewerDigest":"
|
|
1
|
+
{"codeRevision":"1803fe06a4440233ec0495ef340afc9f8b0e350ce211dd66b15412f48dfecad1","viewerDigest":"20561802de9394166c9b84b8d6909d09e6c4940e20735f0f12f854374a228d9a"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{B as t,L as n,lt as r,ut as i}from"./panels-lazy-
|
|
2
|
-
//# sourceMappingURL=embedded-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{B as t,L as n,lt as r,ut as i}from"./panels-lazy-DqCwhGd9.js";import{Mt as a,Nt as o,St as s,ft as c,st as l}from"./panels-ui-CfUtl68h.js";import{a as u,c as d,i as f,n as p,o as m,r as h,s as g,t as _}from"./main-CI6ZQziX.js";import{t as v}from"../panels.js";var y=e(i(),1),b=s();function x(e,t){return t({connected:e.connected}),e.onDisconnect(e=>{t({connected:!1,detail:e?.message})})}function S(e,t={}){let[n,r]=(0,y.useState)(()=>e?.connected===!0),[i,a]=(0,y.useState)(),o=(0,y.useRef)(e?.connected===!0);return(0,y.useEffect)(()=>{if(!e){r(!1),a(void 0),o.current=!1;return}return x(e,e=>{if(e.connected){o.current=!0,r(!0),a(void 0);return}r(!1),a(e.detail)})},[e]),e?n?{phase:`connected`,onReconnect:t.onReconnect}:o.current?{phase:`disconnected`,detail:i,onReconnect:t.onReconnect}:{phase:`unconfigured`,detail:i}:{phase:`unconfigured`}}var C=r(),w={name:`forgeax.view.shell.workspace.mount`,provide:[`panelHost`,`viewSlotRegistry`,`pageHost`],apply(e,r={}){u(),p();let i=globalThis,s=i.__forgeaxViewPanelsPromise;i.__forgeaxViewPanelsPromise=Promise.resolve(v);let x=f(document),w=g(),T=m({registry:w}),E=document.createElement(`div`),D=d({registry:x,overlayRoot:E});E.id=`forgeax-view-root`,E.style.cssText=`position:absolute;inset:0`,document.body.append(E);let O=(0,b.createRoot)(E);O.render((0,C.jsx)(a,{defaultTheme:o(`light`),className:`fx-view-root`,children:(0,C.jsx)(n,{title:h(`view.projectOpen.busy`)})})),e.effect(()=>()=>{O.unmount(),E.remove(),i.__forgeaxViewPanelsPromise=s,delete i.__forgeaxViewReady});let k=e.get?.(`hostTransport`,!1);e.plugin({name:`forgeax.view.shell.workspace.render`,inject:[`viewOperationClient`],apply(e){let n=e.get(`viewOperationClient`);function s(){(0,y.useEffect)(()=>{i.__forgeaxViewReady={mounted:!0}},[]);let[e,s]=(0,y.useState)(c),u=S(k===!1?void 0:k,{onReconnect:()=>{n.projectSession?.reconnectHost?.()}});return(0,y.useEffect)(()=>{if(typeof n?.subscribe==`function`)return n.subscribe(e=>{e.selectedTabId&&s(e.selectedTabId)})},[n]),(0,C.jsx)(t,{root:E,children:(0,C.jsx)(a,{defaultTheme:o(`light`),persist:!0,applyToDocument:!0,className:`fx-view-root`,children:(0,C.jsx)(_,{slotRegistry:x,pageRegistry:w,pageHost:T,responsiveAutoTuck:r.layout?.responsiveAutoTuck,hostConnection:u,workspaceClient:n,selectedPageType:e===`forgeax-cli-display`?`display`:`editor`,onSelectPageType:e=>{(e===`display`||e===`editor`)&&n.selectTab(e===`display`?l:c).catch(e=>{i.__forgeaxViewReady={mounted:!1,error:String(e)}})}})})})}O.render((0,C.jsx)(s,{}))}}),e.provide(`viewSlotRegistry`,x),e.provide(`panelHost`,D),e.provide(`pageHost`,T)}};export{w as default};
|
|
2
|
+
//# sourceMappingURL=embedded-DXSSFAyM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedded-
|
|
1
|
+
{"version":3,"file":"embedded-DXSSFAyM.js","names":[],"sources":["../../../packages/viewer/src/shell/host-ws-transport.ts","../../../packages/viewer/src/shell/use-host-ws-connection.ts","../../../packages/viewer/src/shell/embedded.tsx"],"sourcesContent":["export type HostWsTransport = {\n readonly connected: boolean;\n onDisconnect(listener: (error: { message?: string }) => void): () => void;\n};\n\nexport function attachHostWsTransport(\n transport: HostWsTransport,\n onChange: (state: { connected: boolean; detail?: string }) => void,\n): () => void {\n onChange({ connected: transport.connected });\n return transport.onDisconnect((error) => {\n onChange({ connected: false, detail: error?.message });\n });\n}\n","import { useEffect, useRef, useState } from 'react';\n\nimport type { HostConnection } from './HostConnectionIndicator';\nimport { attachHostWsTransport } from './host-ws-transport';\n\nexport function useHostWsConnection(\n transport: HostWsTransport | null | undefined,\n options: { onReconnect?: () => void } = {},\n): HostConnection {\n const [connected, setConnected] = useState(() => transport?.connected === true);\n const [detail, setDetail] = useState<string | undefined>();\n const hadConnectedRef = useRef(transport?.connected === true);\n\n useEffect(() => {\n if (!transport) {\n setConnected(false);\n setDetail(undefined);\n hadConnectedRef.current = false;\n return;\n }\n return attachHostWsTransport(transport, (state) => {\n if (state.connected) {\n hadConnectedRef.current = true;\n setConnected(true);\n setDetail(undefined);\n return;\n }\n setConnected(false);\n setDetail(state.detail);\n });\n }, [transport]);\n\n if (!transport) {\n return { phase: 'unconfigured' };\n }\n if (connected) {\n return { phase: 'connected', onReconnect: options.onReconnect };\n }\n if (hadConnectedRef.current) {\n return {\n phase: 'disconnected',\n detail,\n onReconnect: options.onReconnect,\n };\n }\n return { phase: 'unconfigured', detail };\n}\n\ntype HostWsTransport = import('./host-ws-transport').HostWsTransport;\n","import { useEffect, useState } from 'react';\nimport { LoadingState, OverlayRootProvider } from '@forgeax/view-components';\nimport { VIEW_DISPLAY_TAB_ID, VIEW_WORKSPACE_TAB_ID } from '@forgeax/view-workspace-core/contract';\nimport { restoreProjectPreferences } from '@forgeax/view-workspace-core/project-session';\nimport { createRoot } from 'react-dom/client';\nimport { ThemeProvider, initializeTheme } from '@forgeax/view-components/theme';\nimport type { Plugin } from '@forgeax/engine/plugin';\nimport type { ViewFrontendConfig } from '../config.ts';\nimport { createViewPanelHost } from '../host/panel-bridge.ts';\nimport { createViewPageHost, createViewPageTypeRegistry } from '../host/page-registry.ts';\nimport { createViewSlotRegistry } from '../host/slot-registry.ts';\nimport { initI18n, t } from '../i18n';\nimport { ViewerShell } from './ViewerShell';\nimport { useHostWsConnection } from './use-host-ws-connection';\nimport * as panels from '../panels-entry';\nimport '@forgeax/view-components/styles.css';\nimport '../styles.css';\n\n/** Same-document UI plugin. Engine supplies only its exact live surface. */\nconst embeddedShell: Plugin = {\n name: 'forgeax.view.shell.workspace.mount',\n provide: ['panelHost', 'viewSlotRegistry', 'pageHost'],\n apply(ctx, config: ViewFrontendConfig = {}) {\n restoreProjectPreferences();\n initI18n();\n const state = globalThis;\n const previousPanels = state.__forgeaxViewPanelsPromise;\n state.__forgeaxViewPanelsPromise = Promise.resolve(panels);\n const registry = createViewSlotRegistry(document);\n const pageRegistry = createViewPageTypeRegistry();\n const pageHost = createViewPageHost({ registry: pageRegistry });\n const element = document.createElement('div');\n const panelHost = createViewPanelHost({ registry, overlayRoot: element });\n element.id = 'forgeax-view-root';\n // Do not trap every UI overlay in a stacking context below the borrowed\n // Engine surface. Panels, surfaces and portaled overlays share one stack.\n element.style.cssText = 'position:absolute;inset:0';\n document.body.append(element);\n const root = createRoot(element);\n root.render(<ThemeProvider defaultTheme={initializeTheme('light')} className=\"fx-view-root\">\n <LoadingState title={t('view.projectOpen.busy')} />\n </ThemeProvider>);\n ctx.effect(() => () => {\n root.unmount();\n element.remove();\n state.__forgeaxViewPanelsPromise = previousPanels;\n delete state.__forgeaxViewReady;\n });\n const hostTransport = ctx.get?.('hostTransport', false) as\n | import('./host-ws-transport').HostWsTransport\n | false;\n\n void ctx.plugin({\n name: 'forgeax.view.shell.workspace.render',\n inject: ['viewOperationClient'],\n apply(renderContext) {\n const client = renderContext.get('viewOperationClient')!;\n function ConnectedShell() {\n useEffect(() => { state.__forgeaxViewReady = { mounted: true }; }, []);\n const [selectedTabId, setSelectedTabId] = useState(VIEW_WORKSPACE_TAB_ID);\n const hostConnection = useHostWsConnection(\n hostTransport === false ? undefined : hostTransport,\n { onReconnect: () => { void client.projectSession?.reconnectHost?.(); } },\n );\n useEffect(() => {\n if (typeof client?.subscribe !== 'function') return undefined;\n return client.subscribe(state => {\n if (state.selectedTabId) setSelectedTabId(state.selectedTabId);\n });\n }, [client]);\n return <OverlayRootProvider root={element}><ThemeProvider defaultTheme={initializeTheme('light')} persist applyToDocument className=\"fx-view-root\">\n <ViewerShell slotRegistry={registry} pageRegistry={pageRegistry} pageHost={pageHost}\n responsiveAutoTuck={config.layout?.responsiveAutoTuck}\n hostConnection={hostConnection}\n workspaceClient={client}\n selectedPageType={selectedTabId === VIEW_DISPLAY_TAB_ID ? 'display' : 'editor'}\n onSelectPageType={typeId => {\n if (typeId === 'display' || typeId === 'editor') {\n void client.selectTab(typeId === 'display' ? VIEW_DISPLAY_TAB_ID : VIEW_WORKSPACE_TAB_ID).catch(error => {\n state.__forgeaxViewReady = { mounted: false, error: String(error) };\n });\n }\n }} />\n </ThemeProvider></OverlayRootProvider>;\n }\n root.render(<ConnectedShell />);\n },\n });\n ctx.provide('viewSlotRegistry', registry);\n ctx.provide('panelHost', panelHost);\n ctx.provide('pageHost', pageHost);\n },\n};\nexport default embeddedShell;\n"],"mappings":"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"}
|