@forgeax/view 0.5.0-dev.13243.3f46e0e6d62f → 0.5.0-dev.13598.ab27e992befc

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.
Files changed (145) hide show
  1. package/README.md +25 -7
  2. package/dist/build-revision.json +1 -1
  3. package/dist/modules/backend.mjs +12 -12
  4. package/dist/modules/browser.mjs +16 -16
  5. package/dist/modules/chunks/{App-E3M52XTQ.mjs → App-4XQ5SNNT.mjs} +2 -2
  6. package/dist/modules/chunks/{chunk-3GIGTM7E.mjs → chunk-27XASYEH.mjs} +2 -2
  7. package/dist/modules/chunks/{chunk-UAGQZPAB.mjs → chunk-2Z5KEV6L.mjs} +2 -2
  8. package/dist/modules/chunks/{chunk-4NGODRIE.mjs → chunk-46UEGAXY.mjs} +4 -4
  9. package/dist/modules/chunks/{chunk-UZHTLAIZ.mjs → chunk-47RJSHLM.mjs} +2 -2
  10. package/dist/modules/chunks/{chunk-ACOMGSSB.mjs → chunk-5PHAXNFO.mjs} +2 -2
  11. package/dist/modules/chunks/{chunk-IXPBGENY.mjs → chunk-6I7RY73G.mjs} +3 -3
  12. package/dist/modules/chunks/{chunk-NF6KRVDK.mjs → chunk-7725LLBM.mjs} +3 -3
  13. package/dist/modules/chunks/{chunk-45ZU2HHR.mjs → chunk-B6QUJ33G.mjs} +27 -23
  14. package/dist/modules/chunks/chunk-B6QUJ33G.mjs.map +7 -0
  15. package/dist/modules/chunks/{chunk-GK4TW3KT.mjs → chunk-BGWAT7SI.mjs} +12 -12
  16. package/dist/modules/chunks/{chunk-FKLYSAVN.mjs → chunk-CXOD7FW6.mjs} +7 -4
  17. package/dist/modules/chunks/chunk-CXOD7FW6.mjs.map +7 -0
  18. package/dist/modules/chunks/{chunk-CRNEX7YH.mjs → chunk-D25SR5FS.mjs} +2 -2
  19. package/dist/modules/chunks/{chunk-VKAISRA4.mjs → chunk-D5GUFI74.mjs} +6 -6
  20. package/dist/modules/chunks/{chunk-7FP7COI6.mjs → chunk-DZRJQVJF.mjs} +4 -4
  21. package/dist/modules/chunks/{chunk-MHE5EBU4.mjs → chunk-E3PJGTLI.mjs} +22 -14
  22. package/dist/modules/chunks/chunk-E3PJGTLI.mjs.map +7 -0
  23. package/dist/modules/chunks/{chunk-3Q26HNFS.mjs → chunk-FICPCJKR.mjs} +2 -2
  24. package/dist/modules/chunks/{chunk-CWNB67UF.mjs → chunk-FMCHH5R4.mjs} +2 -2
  25. package/dist/modules/chunks/{chunk-MO5LILCP.mjs → chunk-HWZCLROY.mjs} +6 -2
  26. package/dist/modules/chunks/chunk-HWZCLROY.mjs.map +7 -0
  27. package/dist/modules/chunks/{chunk-BRJHP7CU.mjs → chunk-I5KQUTEE.mjs} +6 -6
  28. package/dist/modules/chunks/{chunk-BRJHP7CU.mjs.map → chunk-I5KQUTEE.mjs.map} +1 -1
  29. package/dist/modules/chunks/{chunk-2VJPRNYB.mjs → chunk-IZAHIOFU.mjs} +4 -4
  30. package/dist/modules/chunks/{chunk-IBNFKPW4.mjs → chunk-JK7K7RG3.mjs} +2 -2
  31. package/dist/modules/chunks/{chunk-BGK4ZEQ5.mjs → chunk-KX2WU5Z6.mjs} +2 -2
  32. package/dist/modules/chunks/{chunk-M5X56JWH.mjs → chunk-PW5CE2Y6.mjs} +3 -3
  33. package/dist/modules/chunks/{chunk-OHVTNEQ2.mjs → chunk-PZIAKZJC.mjs} +2 -2
  34. package/dist/modules/chunks/{chunk-D5BEXMH5.mjs → chunk-RJ4PIQRU.mjs} +4 -4
  35. package/dist/modules/chunks/{chunk-D5BEXMH5.mjs.map → chunk-RJ4PIQRU.mjs.map} +1 -1
  36. package/dist/modules/chunks/{chunk-7UQ7UUHG.mjs → chunk-SYE5RTD4.mjs} +3 -3
  37. package/dist/modules/chunks/{chunk-N2GEQFFK.mjs → chunk-U5J7OTEB.mjs} +2 -2
  38. package/dist/modules/chunks/{chunk-N2GEQFFK.mjs.map → chunk-U5J7OTEB.mjs.map} +2 -2
  39. package/dist/modules/chunks/{chunk-JZ3V27HQ.mjs → chunk-U64FRQKP.mjs} +3 -3
  40. package/dist/modules/chunks/{chunk-W46L4HSP.mjs → chunk-U6UMATPV.mjs} +3 -3
  41. package/dist/modules/chunks/{chunk-7ICJKZYO.mjs → chunk-VKNIYV2W.mjs} +26 -21
  42. package/dist/modules/chunks/chunk-VKNIYV2W.mjs.map +7 -0
  43. package/dist/modules/chunks/{chunk-7R6CGQDU.mjs → chunk-VW2ZF3P4.mjs} +4 -4
  44. package/dist/modules/chunks/{chunk-AIIYGGGC.mjs → chunk-X4NNZ5X6.mjs} +2 -2
  45. package/dist/modules/chunks/{chunk-5AKXNYKX.mjs → chunk-XE6ITXHT.mjs} +2 -2
  46. package/dist/modules/chunks/{chunk-KSF2EQTE.mjs → chunk-YCMZAYBM.mjs} +2 -2
  47. package/dist/modules/chunks/chunk-YCMZAYBM.mjs.map +7 -0
  48. package/dist/modules/chunks/{chunk-6WCG6WPC.mjs → chunk-YNHEYXDG.mjs} +3 -3
  49. package/dist/modules/chunks/{chunk-7MJUWNVI.mjs → chunk-ZGOGO7SS.mjs} +1 -1
  50. package/dist/modules/chunks/{chunk-VXSD4FK5.mjs → chunk-ZHO2G4JR.mjs} +3 -3
  51. package/dist/modules/cli-contributions.mjs +3 -3
  52. package/dist/modules/cli.mjs +2 -2
  53. package/dist/modules/command-executor.mjs +2 -2
  54. package/dist/modules/embedded.mjs +100 -21
  55. package/dist/modules/embedded.mjs.map +3 -3
  56. package/dist/modules/frontend-root.mjs +15 -15
  57. package/dist/modules/index.mjs +26 -26
  58. package/dist/modules/plugin.mjs +14 -14
  59. package/dist/modules/plugins/asset/frontend.mjs +4 -4
  60. package/dist/modules/plugins/asset/identity.mjs +3 -3
  61. package/dist/modules/plugins/asset/ui.mjs +2 -2
  62. package/dist/modules/plugins/content-browser/ui.mjs +2 -2
  63. package/dist/modules/plugins/inspector/ui.mjs +2 -2
  64. package/dist/modules/plugins/material/frontend.mjs +4 -4
  65. package/dist/modules/plugins/material/identity.mjs +3 -3
  66. package/dist/modules/plugins/material/ui.mjs +5 -5
  67. package/dist/modules/plugins/mesh/frontend.mjs +4 -4
  68. package/dist/modules/plugins/mesh/identity.mjs +3 -3
  69. package/dist/modules/plugins/mesh/ui.mjs +5 -5
  70. package/dist/modules/plugins/plugins/ui/panel.mjs +2 -2
  71. package/dist/modules/plugins/plugins/ui.mjs +3 -3
  72. package/dist/modules/plugins/scene-tree/ui.mjs +2 -2
  73. package/dist/modules/plugins/texture/frontend.mjs +4 -4
  74. package/dist/modules/plugins/texture/identity.mjs +3 -3
  75. package/dist/modules/plugins/texture/ui.mjs +5 -5
  76. package/dist/modules/plugins/viewport/frontend.mjs +1 -1
  77. package/dist/modules/product.mjs +14 -14
  78. package/dist/modules/shell/frontend.mjs +1 -1
  79. package/dist/modules/start-cli.mjs +1 -1
  80. package/dist/modules/start.mjs +1 -1
  81. package/dist/modules/viewer/catalog/backend.mjs +10 -10
  82. package/dist/modules/viewer/catalog/frontend.mjs +14 -14
  83. package/dist/modules/viewer/catalog/shared.mjs +7 -7
  84. package/dist/modules/viewer/catalog.mjs +17 -17
  85. package/dist/modules/viewer-host/frontend.mjs +16 -16
  86. package/dist/modules/viewer.mjs +17 -17
  87. package/dist/modules/workspace/backend.mjs +2 -2
  88. package/dist/modules/workspace/broker.mjs +1 -1
  89. package/dist/modules/workspace/preview-surface.mjs +1 -1
  90. package/dist/modules/workspace/resident.mjs +1 -1
  91. package/dist/modules/workspace/resource-page.mjs +2 -2
  92. package/dist/viewer/assets/{embedded-DWrXFZbD.js → embedded-Ch4NawY-.js} +2 -2
  93. package/dist/viewer/assets/{embedded-DWrXFZbD.js.map → embedded-Ch4NawY-.js.map} +1 -1
  94. package/dist/viewer/assets/main-DUQJ1NlR.js +22 -0
  95. package/dist/viewer/assets/main-DUQJ1NlR.js.map +1 -0
  96. package/dist/viewer/assets/{panels-lazy-CUTQACqc.js → panels-lazy-DbOAvYN1.js} +3 -3
  97. package/dist/viewer/assets/{panels-lazy-CUTQACqc.js.map → panels-lazy-DbOAvYN1.js.map} +1 -1
  98. package/dist/viewer/assets/panels-ui-DICIsCag.js +12 -0
  99. package/dist/viewer/assets/panels-ui-DICIsCag.js.map +1 -0
  100. package/dist/viewer/assets/style-gOtSMZif.css +2 -0
  101. package/dist/viewer/index.html +4 -4
  102. package/dist/viewer/panels.js +1 -1
  103. package/package.json +3 -4
  104. package/scripts/browser-proof-workload.mjs +0 -1
  105. package/scripts/verify-runtime-content-engine.mjs +13 -6
  106. package/dist/modules/chunks/chunk-45ZU2HHR.mjs.map +0 -7
  107. package/dist/modules/chunks/chunk-7ICJKZYO.mjs.map +0 -7
  108. package/dist/modules/chunks/chunk-FKLYSAVN.mjs.map +0 -7
  109. package/dist/modules/chunks/chunk-KSF2EQTE.mjs.map +0 -7
  110. package/dist/modules/chunks/chunk-MHE5EBU4.mjs.map +0 -7
  111. package/dist/modules/chunks/chunk-MO5LILCP.mjs.map +0 -7
  112. package/dist/viewer/assets/main-D0JG9szD.js +0 -22
  113. package/dist/viewer/assets/main-D0JG9szD.js.map +0 -1
  114. package/dist/viewer/assets/panels-ui-Kvu5G7za.js +0 -12
  115. package/dist/viewer/assets/panels-ui-Kvu5G7za.js.map +0 -1
  116. package/dist/viewer/assets/style-BM0losky.css +0 -2
  117. package/scripts/verify-game3d-workspace.mjs +0 -318
  118. /package/dist/modules/chunks/{App-E3M52XTQ.mjs.map → App-4XQ5SNNT.mjs.map} +0 -0
  119. /package/dist/modules/chunks/{chunk-3GIGTM7E.mjs.map → chunk-27XASYEH.mjs.map} +0 -0
  120. /package/dist/modules/chunks/{chunk-UAGQZPAB.mjs.map → chunk-2Z5KEV6L.mjs.map} +0 -0
  121. /package/dist/modules/chunks/{chunk-4NGODRIE.mjs.map → chunk-46UEGAXY.mjs.map} +0 -0
  122. /package/dist/modules/chunks/{chunk-UZHTLAIZ.mjs.map → chunk-47RJSHLM.mjs.map} +0 -0
  123. /package/dist/modules/chunks/{chunk-ACOMGSSB.mjs.map → chunk-5PHAXNFO.mjs.map} +0 -0
  124. /package/dist/modules/chunks/{chunk-IXPBGENY.mjs.map → chunk-6I7RY73G.mjs.map} +0 -0
  125. /package/dist/modules/chunks/{chunk-NF6KRVDK.mjs.map → chunk-7725LLBM.mjs.map} +0 -0
  126. /package/dist/modules/chunks/{chunk-GK4TW3KT.mjs.map → chunk-BGWAT7SI.mjs.map} +0 -0
  127. /package/dist/modules/chunks/{chunk-CRNEX7YH.mjs.map → chunk-D25SR5FS.mjs.map} +0 -0
  128. /package/dist/modules/chunks/{chunk-VKAISRA4.mjs.map → chunk-D5GUFI74.mjs.map} +0 -0
  129. /package/dist/modules/chunks/{chunk-7FP7COI6.mjs.map → chunk-DZRJQVJF.mjs.map} +0 -0
  130. /package/dist/modules/chunks/{chunk-3Q26HNFS.mjs.map → chunk-FICPCJKR.mjs.map} +0 -0
  131. /package/dist/modules/chunks/{chunk-CWNB67UF.mjs.map → chunk-FMCHH5R4.mjs.map} +0 -0
  132. /package/dist/modules/chunks/{chunk-2VJPRNYB.mjs.map → chunk-IZAHIOFU.mjs.map} +0 -0
  133. /package/dist/modules/chunks/{chunk-IBNFKPW4.mjs.map → chunk-JK7K7RG3.mjs.map} +0 -0
  134. /package/dist/modules/chunks/{chunk-BGK4ZEQ5.mjs.map → chunk-KX2WU5Z6.mjs.map} +0 -0
  135. /package/dist/modules/chunks/{chunk-M5X56JWH.mjs.map → chunk-PW5CE2Y6.mjs.map} +0 -0
  136. /package/dist/modules/chunks/{chunk-OHVTNEQ2.mjs.map → chunk-PZIAKZJC.mjs.map} +0 -0
  137. /package/dist/modules/chunks/{chunk-7UQ7UUHG.mjs.map → chunk-SYE5RTD4.mjs.map} +0 -0
  138. /package/dist/modules/chunks/{chunk-JZ3V27HQ.mjs.map → chunk-U64FRQKP.mjs.map} +0 -0
  139. /package/dist/modules/chunks/{chunk-W46L4HSP.mjs.map → chunk-U6UMATPV.mjs.map} +0 -0
  140. /package/dist/modules/chunks/{chunk-7R6CGQDU.mjs.map → chunk-VW2ZF3P4.mjs.map} +0 -0
  141. /package/dist/modules/chunks/{chunk-AIIYGGGC.mjs.map → chunk-X4NNZ5X6.mjs.map} +0 -0
  142. /package/dist/modules/chunks/{chunk-5AKXNYKX.mjs.map → chunk-XE6ITXHT.mjs.map} +0 -0
  143. /package/dist/modules/chunks/{chunk-6WCG6WPC.mjs.map → chunk-YNHEYXDG.mjs.map} +0 -0
  144. /package/dist/modules/chunks/{chunk-7MJUWNVI.mjs.map → chunk-ZGOGO7SS.mjs.map} +0 -0
  145. /package/dist/modules/chunks/{chunk-VXSD4FK5.mjs.map → chunk-ZHO2G4JR.mjs.map} +0 -0
package/README.md CHANGED
@@ -187,6 +187,10 @@ its actual Editor rendering targets, but not the backend or independent AI run.
187
187
  `backend stop` releases the Engine workspace and its Host. Stop an independent
188
188
  run separately with `forgeax engine run stop --root /path/to/game --json`.
189
189
 
190
+ After detaching frontend authority, resident View shutdown terminates its owned
191
+ WebSocket connections before joining server cleanup. A disappeared browser cannot
192
+ retain the backend by leaving a close handshake unanswered.
193
+
190
194
  The API/CLI operations can be composed by a caller. No startup operation
191
195
  implicitly runs the following steps on its behalf.
192
196
 
@@ -242,17 +246,23 @@ Engine candidate commit and overlays the proposed View source. Engine's required
242
246
  `view-integration` lane tests the pinned consumer; `primary-pnpm` retains main ancestry
243
247
  verification. A candidate pass does not authorize an unmerged final gitlink.
244
248
 
245
- The CI workload companion uses Engine candidate `7f6db3492b5ca0a5bf1da9380db7d9cd6ff7205c`.
246
- Its diagnostic sky oracle samples the outer margin clear of both Game 3D HUD cards;
247
- the earlier pinned probe sampled the card at 320x180. The blue/gradient assertions
248
- and real frame capture remain unchanged.
249
+ The workflow's `FORGEAX_ENGINE_COMMIT` is the paired Engine candidate authority.
250
+ CI checks Engine out at the workspace root and overlays View at `tools/view`, so
251
+ Engine's composite build actions resolve their nested actions and source paths.
252
+ Node and pnpm versions come from Engine's `.nvmrc` and `.pnpm-version`; build and
253
+ browser lanes prepare the verified Rapier WASM payload before building Engine.
254
+ The diagnostic probe explicitly selects RHI Debug after refresh or service restart;
255
+ its sky oracle samples the outer margin clear of both Game 3D HUD cards, retaining
256
+ the blue/gradient assertions and real frame capture.
249
257
  The separate Runtime Capture UI proof explicitly retains its qualified 1280x720
250
258
  independent-run image under CI, including DOM/Shadow DOM pixels, reload and View loss.
251
259
 
252
260
  Contributor Game 3D and runtime-content probes bind the actual Engine source root.
253
261
  SDK npm/ZIP consumers separately run the installed View scripts, retaining JS/TS
254
- live publication and cold reopening plus the installed-package Game 3D journey.
255
- Source qualification cannot replace that independent package evidence.
262
+ live publication and cold reopening. SDK Project owns installed Game 3D build,
263
+ input and rendering; Engine/View integration owns its complete Play, cancellation
264
+ and View restart journey without repeating it in the installed View stages.
265
+ Source qualification cannot replace the retained independent package evidence.
256
266
 
257
267
  The integration gate retains startup, page/plugin lifecycle, independent AI run and
258
268
  ordinary game-3d browser probes. It also verifies diagnostic artifact pages in both
@@ -320,7 +330,12 @@ and repeated sampling. SDK/template inputs remain immutable.
320
330
  | Runtime scene window | 60 completed frames | 300 completed frames |
321
331
  | Dedicated preview open/capture/close | 2 complete cycles | 6 complete cycles |
322
332
  | Browser viewport | 1000x700 | Runtime 1440x1000; Game 3D 1440x900 |
323
- | Game 3D directional shadow map | 256, three cascades | 2048, three cascades |
333
+ | Game 3D directional shadow map | Shared Engine test profile: 256, two cascades | Authored template: 1024, three cascades |
334
+
335
+ Game 3D uses the selected Engine checkout's `scripts/test/reduce-test-project.mjs`
336
+ on its disposable copy. This shares shadow, procedural geometry and particle
337
+ budgets with Engine's other browser probes without depending on an old template
338
+ default. Entity identities, shader programs and material slots stay intact.
324
339
 
325
340
  Both JS and TS retain live admission and saved-source cold reopening. Every
326
341
  preview cycle creates one observed GPU device, renders real geometry, closes it,
@@ -815,3 +830,6 @@ entries, as well as their source closure. Native build metadata records a digest
815
830
  of the finalized viewer bytes. Engine integration checks the actual bytes and
816
831
  runs temporary served-only and native-entry mismatch falsifiers; matching
817
832
  metadata alone is not sufficient build identity.
833
+
834
+ The required project dialog is modeless: Scene still requires a confirmed project,
835
+ while artifact pages and workspace navigation remain available before opening one.
@@ -1 +1 @@
1
- {"codeRevision":"de92a6c0cf6117a52818923d5d87f7a35edf502818ccbb270138e74b8441c497","viewerDigest":"e909db8aa62209b948342fb0aabfc9c0f6ebc5afce1fc06bb8626d81e5b52529"}
1
+ {"codeRevision":"3d257ebc122817030cb1001d516e574c7997013439f0e83bb2fa5ac2e93cd3cd","viewerDigest":"1105ba217f8a6b62aedf41d8a31fe5c68a14be078cd01aa4d67466b6f58c922b"}
@@ -2,31 +2,31 @@ import {
2
2
  createViewBackend,
3
3
  createViewHostBinding,
4
4
  createViewPlatformBinding
5
- } from "./chunks/chunk-7FP7COI6.mjs";
6
- import "./chunks/chunk-NF6KRVDK.mjs";
5
+ } from "./chunks/chunk-DZRJQVJF.mjs";
6
+ import "./chunks/chunk-7725LLBM.mjs";
7
7
  import "./chunks/chunk-YLCJNKIW.mjs";
8
8
  import "./chunks/chunk-GQANC3HH.mjs";
9
9
  import "./chunks/chunk-YY4G5LVX.mjs";
10
10
  import "./chunks/chunk-6KM24NH6.mjs";
11
- import "./chunks/chunk-3GIGTM7E.mjs";
12
- import "./chunks/chunk-MO5LILCP.mjs";
11
+ import "./chunks/chunk-27XASYEH.mjs";
12
+ import "./chunks/chunk-HWZCLROY.mjs";
13
13
  import "./chunks/chunk-55F55BQY.mjs";
14
- import "./chunks/chunk-N2GEQFFK.mjs";
15
- import "./chunks/chunk-BRJHP7CU.mjs";
16
- import "./chunks/chunk-CRNEX7YH.mjs";
14
+ import "./chunks/chunk-U5J7OTEB.mjs";
15
+ import "./chunks/chunk-I5KQUTEE.mjs";
16
+ import "./chunks/chunk-D25SR5FS.mjs";
17
17
  import "./chunks/chunk-AGVLPYVE.mjs";
18
18
  import "./chunks/chunk-7IGFAI5H.mjs";
19
19
  import "./chunks/chunk-OKQ5RBKO.mjs";
20
20
  import "./chunks/chunk-EZSGDSCC.mjs";
21
21
  import "./chunks/chunk-EWSCJF77.mjs";
22
- import "./chunks/chunk-AIIYGGGC.mjs";
23
- import "./chunks/chunk-CWNB67UF.mjs";
22
+ import "./chunks/chunk-X4NNZ5X6.mjs";
23
+ import "./chunks/chunk-FMCHH5R4.mjs";
24
24
  import "./chunks/chunk-STQPRNEO.mjs";
25
- import "./chunks/chunk-OHVTNEQ2.mjs";
25
+ import "./chunks/chunk-PZIAKZJC.mjs";
26
26
  import "./chunks/chunk-QUFVUMSY.mjs";
27
27
  import "./chunks/chunk-HRKW766Y.mjs";
28
- import "./chunks/chunk-BGK4ZEQ5.mjs";
29
- import "./chunks/chunk-45ZU2HHR.mjs";
28
+ import "./chunks/chunk-KX2WU5Z6.mjs";
29
+ import "./chunks/chunk-B6QUJ33G.mjs";
30
30
  import "./chunks/chunk-PJFFCRRD.mjs";
31
31
  import "./chunks/chunk-IM3H4F4X.mjs";
32
32
  import "./chunks/chunk-K2QZRFLE.mjs";
@@ -11,15 +11,15 @@ import {
11
11
  connectViewFrontend,
12
12
  mountViewViewer,
13
13
  mountViewWorkspace
14
- } from "./chunks/chunk-7UQ7UUHG.mjs";
15
- import "./chunks/chunk-D5BEXMH5.mjs";
16
- import "./chunks/chunk-GK4TW3KT.mjs";
17
- import "./chunks/chunk-MHE5EBU4.mjs";
18
- import "./chunks/chunk-6WCG6WPC.mjs";
19
- import "./chunks/chunk-JZ3V27HQ.mjs";
20
- import "./chunks/chunk-W46L4HSP.mjs";
14
+ } from "./chunks/chunk-SYE5RTD4.mjs";
15
+ import "./chunks/chunk-RJ4PIQRU.mjs";
16
+ import "./chunks/chunk-BGWAT7SI.mjs";
17
+ import "./chunks/chunk-E3PJGTLI.mjs";
18
+ import "./chunks/chunk-YNHEYXDG.mjs";
19
+ import "./chunks/chunk-U64FRQKP.mjs";
20
+ import "./chunks/chunk-U6UMATPV.mjs";
21
21
  import "./chunks/chunk-YFQGSDK3.mjs";
22
- import "./chunks/chunk-VXSD4FK5.mjs";
22
+ import "./chunks/chunk-ZHO2G4JR.mjs";
23
23
  import "./chunks/chunk-CX5WREJC.mjs";
24
24
  import "./chunks/chunk-TTRUYO7Q.mjs";
25
25
  import "./chunks/chunk-F5RLQAPN.mjs";
@@ -36,8 +36,8 @@ import {
36
36
  import "./chunks/chunk-INTTYJVW.mjs";
37
37
  import "./chunks/chunk-Q2NO32WU.mjs";
38
38
  import "./chunks/chunk-OQXDADAS.mjs";
39
- import "./chunks/chunk-BRJHP7CU.mjs";
40
- import "./chunks/chunk-CRNEX7YH.mjs";
39
+ import "./chunks/chunk-I5KQUTEE.mjs";
40
+ import "./chunks/chunk-D25SR5FS.mjs";
41
41
  import {
42
42
  DISPLAY_SURFACE_ID
43
43
  } from "./chunks/chunk-AGVLPYVE.mjs";
@@ -54,14 +54,14 @@ import {
54
54
  import "./chunks/chunk-OKQ5RBKO.mjs";
55
55
  import "./chunks/chunk-EZSGDSCC.mjs";
56
56
  import "./chunks/chunk-EWSCJF77.mjs";
57
- import "./chunks/chunk-AIIYGGGC.mjs";
58
- import "./chunks/chunk-CWNB67UF.mjs";
57
+ import "./chunks/chunk-X4NNZ5X6.mjs";
58
+ import "./chunks/chunk-FMCHH5R4.mjs";
59
59
  import "./chunks/chunk-STQPRNEO.mjs";
60
- import "./chunks/chunk-OHVTNEQ2.mjs";
60
+ import "./chunks/chunk-PZIAKZJC.mjs";
61
61
  import "./chunks/chunk-QUFVUMSY.mjs";
62
62
  import "./chunks/chunk-HRKW766Y.mjs";
63
- import "./chunks/chunk-BGK4ZEQ5.mjs";
64
- import "./chunks/chunk-45ZU2HHR.mjs";
63
+ import "./chunks/chunk-KX2WU5Z6.mjs";
64
+ import "./chunks/chunk-B6QUJ33G.mjs";
65
65
  import "./chunks/chunk-PJFFCRRD.mjs";
66
66
  import "./chunks/chunk-IM3H4F4X.mjs";
67
67
  import "./chunks/chunk-K2QZRFLE.mjs";
@@ -117,7 +117,7 @@ import {
117
117
  workspaceUiFingerprint
118
118
  } from "./chunks/chunk-E3Z7GLFU.mjs";
119
119
  import "./chunks/chunk-4XEXLHX4.mjs";
120
- import "./chunks/chunk-7MJUWNVI.mjs";
120
+ import "./chunks/chunk-ZGOGO7SS.mjs";
121
121
  import "./chunks/chunk-QAXALJEY.mjs";
122
122
  import "./chunks/chunk-FLGC65SR.mjs";
123
123
  export {
@@ -8,7 +8,7 @@ import {
8
8
  Spinner,
9
9
  Switch,
10
10
  TextInput
11
- } from "./chunk-FKLYSAVN.mjs";
11
+ } from "./chunk-CXOD7FW6.mjs";
12
12
  import "./chunk-FLGC65SR.mjs";
13
13
 
14
14
  // ../../apps/rhi-debug-viewer/src/App.tsx
@@ -39066,4 +39066,4 @@ dockview-react/dist/package/main.esm.mjs:
39066
39066
  * @license MIT
39067
39067
  *)
39068
39068
  */
39069
- //# sourceMappingURL=App-E3M52XTQ.mjs.map
39069
+ //# sourceMappingURL=App-4XQ5SNNT.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ViewWorkspaceBroker
3
- } from "./chunk-MO5LILCP.mjs";
3
+ } from "./chunk-HWZCLROY.mjs";
4
4
  import {
5
5
  createWorkspaceToolContributions,
6
6
  defineWorkspaceOperations
@@ -75,4 +75,4 @@ export {
75
75
  viewWorkspaceCoreBackendPlugin,
76
76
  backend_default
77
77
  };
78
- //# sourceMappingURL=chunk-3GIGTM7E.mjs.map
78
+ //# sourceMappingURL=chunk-27XASYEH.mjs.map
@@ -8,7 +8,7 @@ import {
8
8
  InspectorForm,
9
9
  OverlayRootProvider,
10
10
  PanelHeader
11
- } from "./chunk-FKLYSAVN.mjs";
11
+ } from "./chunk-CXOD7FW6.mjs";
12
12
  import {
13
13
  unwrapWorkspaceInspection
14
14
  } from "./chunk-ZYTHV373.mjs";
@@ -118,4 +118,4 @@ async function mountAssetPropertiesPanel(props) {
118
118
  export {
119
119
  mountAssetPropertiesPanel
120
120
  };
121
- //# sourceMappingURL=chunk-UAGQZPAB.mjs.map
121
+ //# sourceMappingURL=chunk-2Z5KEV6L.mjs.map
@@ -9,16 +9,16 @@ import {
9
9
  OverlayRootProvider,
10
10
  PanelHeader,
11
11
  PropertyRow
12
- } from "./chunk-FKLYSAVN.mjs";
12
+ } from "./chunk-CXOD7FW6.mjs";
13
13
  import {
14
14
  unwrapWorkspaceInspection
15
15
  } from "./chunk-ZYTHV373.mjs";
16
16
  import {
17
17
  RESOURCE_KINDS
18
- } from "./chunk-AIIYGGGC.mjs";
18
+ } from "./chunk-X4NNZ5X6.mjs";
19
19
  import {
20
20
  bindWorkspacePreviewSurface
21
- } from "./chunk-45ZU2HHR.mjs";
21
+ } from "./chunk-B6QUJ33G.mjs";
22
22
  import {
23
23
  selectWorkspaceResourcePreview,
24
24
  selectWorkspaceResourceSubject
@@ -241,4 +241,4 @@ export {
241
241
  mountMeshPreviewPanel,
242
242
  mountMeshPropertiesPanel
243
243
  };
244
- //# sourceMappingURL=chunk-4NGODRIE.mjs.map
244
+ //# sourceMappingURL=chunk-46UEGAXY.mjs.map
@@ -25,7 +25,7 @@ import {
25
25
  resolveInspectorFieldKind,
26
26
  useOverlayRoot,
27
27
  useWorkspaceClientConnected
28
- } from "./chunk-FKLYSAVN.mjs";
28
+ } from "./chunk-CXOD7FW6.mjs";
29
29
  import {
30
30
  createWorkspaceObservation,
31
31
  createWorkspaceStateReader
@@ -431,4 +431,4 @@ async function mountInspectorPanel(props) {
431
431
  export {
432
432
  mountInspectorPanel
433
433
  };
434
- //# sourceMappingURL=chunk-UZHTLAIZ.mjs.map
434
+ //# sourceMappingURL=chunk-47RJSHLM.mjs.map
@@ -8,7 +8,7 @@ import {
8
8
  Surface,
9
9
  Text,
10
10
  Toolbar
11
- } from "./chunk-FKLYSAVN.mjs";
11
+ } from "./chunk-CXOD7FW6.mjs";
12
12
  import {
13
13
  PLUGINS_ACTIONS
14
14
  } from "./chunk-UMKHEGRE.mjs";
@@ -441,4 +441,4 @@ function PluginsPanel(props) {
441
441
  export {
442
442
  PluginsPanel
443
443
  };
444
- //# sourceMappingURL=chunk-ACOMGSSB.mjs.map
444
+ //# sourceMappingURL=chunk-5PHAXNFO.mjs.map
@@ -9,12 +9,12 @@ import {
9
9
  } from "./chunk-OVJ3UJJB.mjs";
10
10
  import {
11
11
  runViewProjectOpen
12
- } from "./chunk-5AKXNYKX.mjs";
12
+ } from "./chunk-XE6ITXHT.mjs";
13
13
  import {
14
14
  runViewStartInteractive,
15
15
  runViewStatus,
16
16
  runViewStop
17
- } from "./chunk-KSF2EQTE.mjs";
17
+ } from "./chunk-YCMZAYBM.mjs";
18
18
 
19
19
  // src/cli-contributions.ts
20
20
  function createViewHostCliContributions() {
@@ -52,4 +52,4 @@ export {
52
52
  createViewHostCliContributions,
53
53
  createViewCliContributions2 as createViewCliContributions
54
54
  };
55
- //# sourceMappingURL=chunk-IXPBGENY.mjs.map
55
+ //# sourceMappingURL=chunk-6I7RY73G.mjs.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-YLCJNKIW.mjs";
4
4
  import {
5
5
  backend_default as backend_default3
6
- } from "./chunk-3GIGTM7E.mjs";
6
+ } from "./chunk-27XASYEH.mjs";
7
7
  import {
8
8
  backend_default as backend_default2
9
9
  } from "./chunk-55F55BQY.mjs";
@@ -11,7 +11,7 @@ import {
11
11
  VIEW_PLUGIN_VERSION,
12
12
  VIEW_PRODUCT_PLUGINS,
13
13
  VIEW_WORKSPACE_CORE
14
- } from "./chunk-BRJHP7CU.mjs";
14
+ } from "./chunk-I5KQUTEE.mjs";
15
15
  import {
16
16
  BACKEND_MODULE
17
17
  } from "./chunk-AGVLPYVE.mjs";
@@ -43,4 +43,4 @@ var VIEW_PRODUCT_BACKEND_CATALOG = new Map(
43
43
  export {
44
44
  VIEW_PRODUCT_BACKEND_CATALOG
45
45
  };
46
- //# sourceMappingURL=chunk-NF6KRVDK.mjs.map
46
+ //# sourceMappingURL=chunk-7725LLBM.mjs.map
@@ -3,7 +3,6 @@ import {
3
3
  } from "./chunk-PJFFCRRD.mjs";
4
4
  import {
5
5
  keepSurfaceInContainer,
6
- placeSurface,
7
6
  watchUntilReady
8
7
  } from "./chunk-QW3ZY2AD.mjs";
9
8
  import {
@@ -46,9 +45,6 @@ function isEditorOwnerSurface(surface, container, { target, editorTargetId } = {
46
45
  if (container === viewport || container?.contains?.(viewport)) return false;
47
46
  return true;
48
47
  }
49
- function adoptSurface(container, surface) {
50
- placeSurface(container, surface, { replace: true });
51
- }
52
48
  function fillPresentationSurface(surface) {
53
49
  if (!surface?.style) return;
54
50
  Object.assign(surface.style, {
@@ -159,7 +155,12 @@ function bindWorkspacePreviewSurface({
159
155
  container.dataset.forgeaxPreviewPanel = surfaceOwner.panelId;
160
156
  container.dataset.forgeaxPreviewPage = surfaceOwner.pageType;
161
157
  container.dataset.forgeaxAssetPreview = String(target.targetId);
162
- adoptSurface(container, surface);
158
+ const stopKeep = keepSurfaceInContainer({
159
+ document: container.ownerDocument,
160
+ getContainer: () => container,
161
+ getSurface: () => surface,
162
+ replace: true
163
+ });
163
164
  fillPresentationSurface(surface);
164
165
  const canvasNode = surfaceCanvas(surface);
165
166
  fillPresentationSurface(canvasNode);
@@ -177,26 +178,29 @@ function bindWorkspacePreviewSurface({
177
178
  targetId: String(target.targetId),
178
179
  surfaceTag: surface.tagName ?? null
179
180
  });
180
- const attachment = typeof presentation.attach === "function" ? Promise.resolve(presentation.attach({ target, element: surface, owner: surfaceOwner })) : Promise.resolve();
181
- const stopKeep = keepSurfaceInContainer({
182
- document: container.ownerDocument,
183
- getContainer: () => container,
184
- getSurface: () => surface,
185
- replace: true
186
- });
181
+ const releasePlacement = () => {
182
+ stopKeep();
183
+ detachResize();
184
+ if (surface.parentNode === container) {
185
+ if (typeof container.removeChild === "function") container.removeChild(surface);
186
+ else container.replaceChildren?.();
187
+ }
188
+ if (containerOwners.get(container) === surfaceOwner) containerOwners.delete(container);
189
+ delete container.dataset.forgeaxPreviewPanel;
190
+ delete container.dataset.forgeaxPreviewPage;
191
+ delete container.dataset.forgeaxAssetPreview;
192
+ };
193
+ let attachment;
194
+ try {
195
+ attachment = typeof presentation.attach === "function" ? Promise.resolve(presentation.attach({ target, element: surface, owner: surfaceOwner })) : Promise.resolve();
196
+ } catch (cause) {
197
+ releasePlacement();
198
+ throw cause;
199
+ }
187
200
  return {
188
201
  ok: true,
189
202
  dispose: async () => {
190
- stopKeep();
191
- detachResize();
192
- if (surface.parentNode === container) {
193
- if (typeof container.removeChild === "function") container.removeChild(surface);
194
- else container.replaceChildren?.();
195
- }
196
- if (containerOwners.get(container) === surfaceOwner) containerOwners.delete(container);
197
- delete container.dataset.forgeaxPreviewPanel;
198
- delete container.dataset.forgeaxPreviewPage;
199
- delete container.dataset.forgeaxAssetPreview;
203
+ releasePlacement();
200
204
  const detach = await attachment;
201
205
  await detach?.();
202
206
  }
@@ -236,4 +240,4 @@ export {
236
240
  dedicatedPreviewPresentation,
237
241
  bindWorkspacePreviewSurface
238
242
  };
239
- //# sourceMappingURL=chunk-45ZU2HHR.mjs.map
243
+ //# sourceMappingURL=chunk-B6QUJ33G.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-workspace-core/src/preview-surface.ts"],
4
+ "sourcesContent": ["import type { EngineWorkspaceTarget } from '@forgeax/engine/app';\nimport type { WorkspaceTarget } from './contract.ts';\nimport type { ViewWorkspaceClient } from './client.ts';\nimport type { ViewPresentation, PreviewOwner } from './engine-presentation.ts';\nexport type PreviewSurfaceResult = { ok: true; dispose?: () => void | Promise<void> } | { ok: false; error: { code: string; expected: string; hint: string } };\nexport type PreviewSurfaceOptions = { presentation?: ViewPresentation; target?: WorkspaceTarget; container?: HTMLElement | null; canvas?: unknown; owner?: PreviewOwner; editorTargetId?: string; api?: Pick<ViewWorkspaceClient, 'resizePreview'> };\n\nimport { keepSurfaceInContainer, watchUntilReady } from './adopt-surface.ts';\nimport { logResourceOpen } from './resource-open.ts';\nimport { attachPreviewRenderResizeSync } from './render-resize-sync.ts';\n\nconst OWNER_PLACEMENT = 'owner';\nconst containerOwners = new WeakMap<HTMLElement, PreviewOwner>();\n\nfunction previewSurfaceError(code: string, expected: string, hint: string): Extract<PreviewSurfaceResult, { ok: false }> {\n return Object.freeze({\n ok: false,\n error: Object.freeze({ code, expected, hint }),\n });\n}\n\nfunction placementOf(presentation: ViewPresentation | undefined) {\n return presentation?.surfacePlacement === OWNER_PLACEMENT ? OWNER_PLACEMENT : 'shell';\n}\n\nfunction isCanvasNode(node: unknown): node is HTMLCanvasElement {\n return node != null && typeof node === 'object' && 'tagName' in node && typeof node.tagName === 'string' && node.tagName.toLowerCase() === 'canvas';\n}\n\nfunction isPanelContainer(node: unknown): node is HTMLElement {\n if (!node || typeof node !== 'object' || isCanvasNode(node)) return false;\n return ('replaceChildren' in node && typeof node.replaceChildren === 'function') || ('append' in node && typeof node.append === 'function');\n}\n\nfunction surfaceCanvas(surface: HTMLElement) {\n if (isCanvasNode(surface)) return surface;\n return typeof surface?.querySelector === 'function' ? surface.querySelector('canvas') : null;\n}\n\nfunction isEditorOwnerSurface(surface: HTMLElement, container: HTMLElement, { target, editorTargetId }: Pick<PreviewSurfaceOptions, 'target' | 'editorTargetId'> = {}) {\n if (surface?.id === 'app-shell' || surface?.id === 'app') return true;\n if (\n editorTargetId != null &&\n target?.targetId != null &&\n String(editorTargetId) === String(target.targetId)\n ) {\n return true;\n }\n const marker = surface?.dataset?.forgeaxViewSurface;\n if (marker === 'engine-canvas' || marker === 'engine-target') return true;\n if (typeof surface?.closest !== 'function') return false;\n const viewport = surface.closest('[data-forgeax-view-mount-host=\"viewport\"]');\n if (!viewport) return false;\n if (container === viewport || container?.contains?.(viewport)) return false;\n return true;\n}\n\nfunction fillPresentationSurface(surface: HTMLElement | null) {\n if (!surface?.style) return;\n Object.assign(surface.style, {\n width: '100%',\n height: '100%',\n maxWidth: '100%',\n maxHeight: '100%',\n transform: 'none',\n position: 'relative',\n overflow: 'hidden',\n flex: '1 1 auto',\n minWidth: '0',\n minHeight: '0',\n display: 'block',\n });\n}\n\n/**\n * Stamp a panel/page owner onto presentation. Asset pages only host the\n * Engine type-preview surface; they do not create a canvas.\n */\nexport function dedicatedPreviewPresentation(presentation: ViewPresentation | undefined, owner: PreviewOwner): ViewPresentation | undefined {\n if (!presentation || typeof presentation !== 'object') return undefined;\n return {\n get surfacePlacement() {\n return presentation.surfacePlacement;\n },\n get owner() {\n return owner ?? presentation.owner;\n },\n createSurface(input) {\n return presentation.createSurface?.(input);\n },\n attach(input) {\n return presentation.attach?.({ ...input, owner });\n },\n detach(input) {\n return presentation.detach?.(input);\n },\n };\n}\n\n/**\n * Place an Engine type-preview surface into the container owned by one asset\n * panel. The panel never creates a canvas; Engine `createSurface` returns the\n * live surface. Editor owner canvases are refused.\n *\n * @param {{\n * presentation?: object,\n * target?: { targetId?: string | number },\n * container?: HTMLElement,\n * owner?: { panelId?: string, pageType?: string },\n * editorTargetId?: string | number,\n * api?: { resizePreview?: (input: object) => Promise<unknown> },\n * }} [options]\n * @returns {{ ok: true, dispose?: () => unknown } | { ok: false, error: { code: string, expected: string, hint: string } }}\n */\nexport function bindWorkspacePreviewSurface({\n presentation,\n target,\n container,\n canvas,\n owner,\n editorTargetId,\n api,\n}: PreviewSurfaceOptions = {}): PreviewSurfaceResult {\n if (canvas !== undefined || isCanvasNode(container)) {\n throw new TypeError('bindWorkspacePreviewSurface requires a panel-owned container, not a canvas');\n }\n if (!isPanelContainer(container)) {\n throw new TypeError('bindWorkspacePreviewSurface requires a panel-owned container');\n }\n if (!target || (typeof target.targetId !== 'string' && typeof target.targetId !== 'number')) {\n return previewSurfaceError(\n 'view-preview-target-unavailable',\n 'an Engine preview target identity',\n 'Open the asset through Engine asset.open before attaching a preview surface.',\n );\n }\n if (placementOf(presentation) === OWNER_PLACEMENT) {\n return previewSurfaceError(\n 'view-preview-surface-unavailable',\n 'a shell-placed Engine preview surface dedicated to this panel',\n 'The Engine owner surface stays on the Editor viewport; asset preview cannot relocate that iframe.',\n );\n }\n if (!presentation || typeof presentation.createSurface !== 'function') {\n return previewSurfaceError(\n 'view-preview-surface-unavailable',\n 'an Engine presentation that can create a type-preview surface',\n 'The asset tab hosts a DOM container; Engine createSurface places the live canvas into it.',\n );\n }\n const surfaceOwner = owner ?? presentation.owner;\n if (!surfaceOwner?.panelId || !surfaceOwner?.pageType) {\n return previewSurfaceError(\n 'view-preview-owner-unavailable',\n 'a stable asset preview panel owner',\n 'Bind the preview through its PageType panel contribution.',\n );\n }\n const claimedBy = containerOwners.get(container);\n if (claimedBy !== undefined && claimedBy !== surfaceOwner) {\n return previewSurfaceError(\n 'view-preview-canvas-owned',\n 'a container used by exactly one asset preview panel',\n 'Create a new container for this asset preview panel.',\n );\n }\n\n const missingSurface = () => previewSurfaceError(\n 'view-preview-surface-unavailable',\n 'an Engine type-preview surface for this target',\n 'Engine must expose a type-preview surface via createSurface; the tab does not create a canvas.',\n );\n const refuseEditor = () => previewSurfaceError(\n 'view-preview-surface-unavailable',\n 'a shell-placed Engine preview surface dedicated to this panel',\n 'The Engine owner surface stays on the Editor viewport; asset preview cannot relocate that iframe.',\n );\n\n const resolveSurface = () => {\n const surface = presentation.createSurface!({\n target: target as EngineWorkspaceTarget,\n document: container.ownerDocument,\n });\n return surface && typeof surface === 'object' && 'tagName' in surface && typeof surface.tagName === 'string' ? surface as HTMLElement : null;\n };\n\n const installSurface = (surface: HTMLElement): Extract<PreviewSurfaceResult, { ok: true }> => {\n containerOwners.set(container, surfaceOwner);\n container.dataset.forgeaxPreviewPanel = surfaceOwner.panelId;\n container.dataset.forgeaxPreviewPage = surfaceOwner.pageType;\n container.dataset.forgeaxAssetPreview = String(target.targetId);\n const stopKeep = keepSurfaceInContainer({\n document: container.ownerDocument,\n getContainer: () => container,\n getSurface: () => surface,\n replace: true,\n });\n fillPresentationSurface(surface);\n const canvasNode = surfaceCanvas(surface);\n fillPresentationSurface(canvasNode);\n const resizeTarget = Number.isSafeInteger(target.generation)\n ? { targetId: String(target.targetId), generation: target.generation }\n : null;\n const detachResize = resizeTarget && api\n ? attachPreviewRenderResizeSync({ api, surface: container, target: resizeTarget })\n : () => {};\n if (canvasNode?.dataset) {\n canvasNode.dataset.forgeaxAssetPreview = String(target.targetId);\n canvasNode.dataset.forgeaxPreviewPanel = surfaceOwner.panelId;\n canvasNode.dataset.forgeaxPreviewPage = surfaceOwner.pageType;\n }\n logResourceOpen('preview-surface-hosted', {\n pageType: surfaceOwner.pageType,\n panelId: surfaceOwner.panelId,\n targetId: String(target.targetId),\n surfaceTag: surface.tagName ?? null,\n });\n const releasePlacement = () => {\n // Return the borrowed surface to Engine parking before awaiting cleanup.\n stopKeep();\n detachResize();\n // React may bind this same Engine surface again before detach resolves.\n // Release this placement synchronously so old cleanup cannot remove it.\n if (surface.parentNode === container) {\n if (typeof container.removeChild === 'function') container.removeChild(surface);\n else container.replaceChildren?.();\n }\n if (containerOwners.get(container) === surfaceOwner) containerOwners.delete(container);\n delete container.dataset.forgeaxPreviewPanel;\n delete container.dataset.forgeaxPreviewPage;\n delete container.dataset.forgeaxAssetPreview;\n };\n let attachment: Promise<void | (() => void)>;\n try {\n attachment = typeof presentation.attach === 'function'\n ? Promise.resolve(presentation.attach({ target: target as EngineWorkspaceTarget, element: surface, owner: surfaceOwner }))\n : Promise.resolve();\n } catch (cause) {\n releasePlacement();\n throw cause;\n }\n return {\n ok: true,\n dispose: async () => {\n releasePlacement();\n const detach = await attachment;\n await detach?.();\n },\n };\n };\n\n const first = resolveSurface();\n if (first) {\n if (isEditorOwnerSurface(first, container, { target, editorTargetId })) return refuseEditor();\n return installSurface(first);\n }\n\n const document = container.ownerDocument;\n const win = document?.defaultView ?? globalThis;\n const Observer = document?.defaultView?.MutationObserver ?? globalThis.MutationObserver;\n const canWatch = typeof Observer === 'function' || typeof win.requestAnimationFrame === 'function';\n if (!canWatch) return missingSurface();\n\n let hosted: Extract<PreviewSurfaceResult, { ok: true }> | undefined;\n const stopWatch = watchUntilReady({\n document,\n probe: () => {\n if (hosted) return true;\n const surface = resolveSurface();\n if (!surface || isEditorOwnerSurface(surface, container, { target, editorTargetId })) return false;\n hosted = installSurface(surface);\n return true;\n },\n });\n return {\n ok: true,\n dispose: async () => {\n stopWatch();\n await hosted?.dispose?.();\n },\n };\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  frontend_default as frontend_default11
3
- } from "./chunk-MHE5EBU4.mjs";
3
+ } from "./chunk-E3PJGTLI.mjs";
4
4
  import {
5
5
  frontend_default as frontend_default10
6
- } from "./chunk-6WCG6WPC.mjs";
6
+ } from "./chunk-YNHEYXDG.mjs";
7
7
  import {
8
8
  frontend_default as frontend_default8
9
- } from "./chunk-JZ3V27HQ.mjs";
9
+ } from "./chunk-U64FRQKP.mjs";
10
10
  import {
11
11
  frontend_default as frontend_default9
12
- } from "./chunk-W46L4HSP.mjs";
12
+ } from "./chunk-U6UMATPV.mjs";
13
13
  import {
14
14
  frontend_default as frontend_default6
15
15
  } from "./chunk-YFQGSDK3.mjs";
16
16
  import {
17
17
  frontend_default as frontend_default7
18
- } from "./chunk-VXSD4FK5.mjs";
18
+ } from "./chunk-ZHO2G4JR.mjs";
19
19
  import {
20
20
  frontend_default as frontend_default4
21
21
  } from "./chunk-CX5WREJC.mjs";
@@ -35,10 +35,10 @@ import {
35
35
  VIEW_PLUGIN_VERSION,
36
36
  VIEW_PRODUCT_PLUGINS,
37
37
  VIEW_WORKSPACE_CORE
38
- } from "./chunk-BRJHP7CU.mjs";
38
+ } from "./chunk-I5KQUTEE.mjs";
39
39
  import {
40
40
  FRONTEND_MODULE as FRONTEND_MODULE9
41
- } from "./chunk-CRNEX7YH.mjs";
41
+ } from "./chunk-D25SR5FS.mjs";
42
42
  import {
43
43
  FRONTEND_MODULE
44
44
  } from "./chunk-AGVLPYVE.mjs";
@@ -47,16 +47,16 @@ import {
47
47
  } from "./chunk-EWSCJF77.mjs";
48
48
  import {
49
49
  FRONTEND_MODULE as FRONTEND_MODULE7
50
- } from "./chunk-AIIYGGGC.mjs";
50
+ } from "./chunk-X4NNZ5X6.mjs";
51
51
  import {
52
52
  FRONTEND_MODULE as FRONTEND_MODULE8
53
- } from "./chunk-CWNB67UF.mjs";
53
+ } from "./chunk-FMCHH5R4.mjs";
54
54
  import {
55
55
  FRONTEND_MODULE as FRONTEND_MODULE5
56
56
  } from "./chunk-STQPRNEO.mjs";
57
57
  import {
58
58
  FRONTEND_MODULE as FRONTEND_MODULE6
59
- } from "./chunk-OHVTNEQ2.mjs";
59
+ } from "./chunk-PZIAKZJC.mjs";
60
60
  import {
61
61
  FRONTEND_MODULE as FRONTEND_MODULE3
62
62
  } from "./chunk-QUFVUMSY.mjs";
@@ -80,7 +80,7 @@ import {
80
80
  } from "./chunk-P5XMFZY4.mjs";
81
81
  import {
82
82
  shell_default
83
- } from "./chunk-7MJUWNVI.mjs";
83
+ } from "./chunk-ZGOGO7SS.mjs";
84
84
  import {
85
85
  SHELL_MODULE
86
86
  } from "./chunk-QAXALJEY.mjs";
@@ -132,4 +132,4 @@ for (const [name, plugin] of [[SHELL_MODULE, shell_default], [PRESENTATION_MODUL
132
132
  export {
133
133
  VIEW_PRODUCT_FRONTEND_CATALOG
134
134
  };
135
- //# sourceMappingURL=chunk-GK4TW3KT.mjs.map
135
+ //# sourceMappingURL=chunk-BGWAT7SI.mjs.map
@@ -694,6 +694,7 @@ function ContextMenu({
694
694
  }
695
695
  function Dialog({
696
696
  open,
697
+ modal = true,
697
698
  title,
698
699
  children,
699
700
  footer,
@@ -711,14 +712,15 @@ function Dialog({
711
712
  if (!dialog) return;
712
713
  if (open && !dialog.open) {
713
714
  returnFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
714
- dialog.showModal();
715
+ if (modal) dialog.showModal();
716
+ else dialog.show();
715
717
  requestAnimationFrame(() => initialFocusRef?.current?.focus());
716
718
  }
717
719
  if (!open && dialog.open) {
718
720
  dialog.close();
719
721
  returnFocusRef.current?.focus();
720
722
  }
721
- }, [initialFocusRef, open]);
723
+ }, [initialFocusRef, modal, open]);
722
724
  return /* @__PURE__ */ jsxs(
723
725
  "dialog",
724
726
  {
@@ -739,7 +741,8 @@ function Dialog({
739
741
  requestAnimationFrame(() => {
740
742
  const dialog = ref.current;
741
743
  if (open && dialog && !dialog.open) {
742
- dialog.showModal();
744
+ if (modal) dialog.showModal();
745
+ else dialog.show();
743
746
  initialFocusRef?.current?.focus();
744
747
  }
745
748
  });
@@ -2088,4 +2091,4 @@ export {
2088
2091
  ThemeProvider,
2089
2092
  useTheme
2090
2093
  };
2091
- //# sourceMappingURL=chunk-FKLYSAVN.mjs.map
2094
+ //# sourceMappingURL=chunk-CXOD7FW6.mjs.map