@forgeax/view 0.5.0-dev.13472.92dbf4b81984 → 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.
- package/README.md +25 -7
- package/dist/build-revision.json +1 -1
- package/dist/modules/backend.mjs +12 -12
- package/dist/modules/browser.mjs +16 -16
- package/dist/modules/chunks/{App-E3M52XTQ.mjs → App-4XQ5SNNT.mjs} +2 -2
- package/dist/modules/chunks/{chunk-3GIGTM7E.mjs → chunk-27XASYEH.mjs} +2 -2
- package/dist/modules/chunks/{chunk-UAGQZPAB.mjs → chunk-2Z5KEV6L.mjs} +2 -2
- package/dist/modules/chunks/{chunk-4NGODRIE.mjs → chunk-46UEGAXY.mjs} +4 -4
- package/dist/modules/chunks/{chunk-UZHTLAIZ.mjs → chunk-47RJSHLM.mjs} +2 -2
- package/dist/modules/chunks/{chunk-ACOMGSSB.mjs → chunk-5PHAXNFO.mjs} +2 -2
- package/dist/modules/chunks/{chunk-IXPBGENY.mjs → chunk-6I7RY73G.mjs} +3 -3
- package/dist/modules/chunks/{chunk-BCTPTLA6.mjs → chunk-7725LLBM.mjs} +3 -3
- package/dist/modules/chunks/{chunk-45ZU2HHR.mjs → chunk-B6QUJ33G.mjs} +27 -23
- package/dist/modules/chunks/chunk-B6QUJ33G.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-PG4AJFDC.mjs → chunk-BGWAT7SI.mjs} +12 -12
- package/dist/modules/chunks/{chunk-FKLYSAVN.mjs → chunk-CXOD7FW6.mjs} +7 -4
- package/dist/modules/chunks/chunk-CXOD7FW6.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-CRNEX7YH.mjs → chunk-D25SR5FS.mjs} +2 -2
- package/dist/modules/chunks/{chunk-L5EV6NEE.mjs → chunk-D5GUFI74.mjs} +6 -6
- package/dist/modules/chunks/{chunk-TBZZ37VI.mjs → chunk-DZRJQVJF.mjs} +4 -4
- package/dist/modules/chunks/{chunk-MHE5EBU4.mjs → chunk-E3PJGTLI.mjs} +22 -14
- package/dist/modules/chunks/chunk-E3PJGTLI.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-3Q26HNFS.mjs → chunk-FICPCJKR.mjs} +2 -2
- package/dist/modules/chunks/{chunk-CWNB67UF.mjs → chunk-FMCHH5R4.mjs} +2 -2
- package/dist/modules/chunks/{chunk-MO5LILCP.mjs → chunk-HWZCLROY.mjs} +6 -2
- package/dist/modules/chunks/chunk-HWZCLROY.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-TTFLJHQZ.mjs → chunk-I5KQUTEE.mjs} +6 -6
- package/dist/modules/chunks/{chunk-TTFLJHQZ.mjs.map → chunk-I5KQUTEE.mjs.map} +1 -1
- package/dist/modules/chunks/{chunk-2VJPRNYB.mjs → chunk-IZAHIOFU.mjs} +4 -4
- package/dist/modules/chunks/{chunk-IBNFKPW4.mjs → chunk-JK7K7RG3.mjs} +2 -2
- package/dist/modules/chunks/{chunk-BGK4ZEQ5.mjs → chunk-KX2WU5Z6.mjs} +2 -2
- package/dist/modules/chunks/{chunk-M5X56JWH.mjs → chunk-PW5CE2Y6.mjs} +3 -3
- package/dist/modules/chunks/{chunk-OHVTNEQ2.mjs → chunk-PZIAKZJC.mjs} +2 -2
- package/dist/modules/chunks/{chunk-WHVPE2P6.mjs → chunk-RJ4PIQRU.mjs} +4 -4
- package/dist/modules/chunks/{chunk-WHVPE2P6.mjs.map → chunk-RJ4PIQRU.mjs.map} +1 -1
- package/dist/modules/chunks/{chunk-CDO6LELS.mjs → chunk-SYE5RTD4.mjs} +3 -3
- package/dist/modules/chunks/{chunk-N2GEQFFK.mjs → chunk-U5J7OTEB.mjs} +2 -2
- package/dist/modules/chunks/{chunk-N2GEQFFK.mjs.map → chunk-U5J7OTEB.mjs.map} +2 -2
- package/dist/modules/chunks/{chunk-JZ3V27HQ.mjs → chunk-U64FRQKP.mjs} +3 -3
- package/dist/modules/chunks/{chunk-W46L4HSP.mjs → chunk-U6UMATPV.mjs} +3 -3
- package/dist/modules/chunks/{chunk-7ICJKZYO.mjs → chunk-VKNIYV2W.mjs} +26 -21
- package/dist/modules/chunks/chunk-VKNIYV2W.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-7R6CGQDU.mjs → chunk-VW2ZF3P4.mjs} +4 -4
- package/dist/modules/chunks/{chunk-AIIYGGGC.mjs → chunk-X4NNZ5X6.mjs} +2 -2
- package/dist/modules/chunks/{chunk-5AKXNYKX.mjs → chunk-XE6ITXHT.mjs} +2 -2
- package/dist/modules/chunks/{chunk-KSF2EQTE.mjs → chunk-YCMZAYBM.mjs} +2 -2
- package/dist/modules/chunks/chunk-YCMZAYBM.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-6WCG6WPC.mjs → chunk-YNHEYXDG.mjs} +3 -3
- package/dist/modules/chunks/{chunk-7MJUWNVI.mjs → chunk-ZGOGO7SS.mjs} +1 -1
- package/dist/modules/chunks/{chunk-VXSD4FK5.mjs → chunk-ZHO2G4JR.mjs} +3 -3
- package/dist/modules/cli-contributions.mjs +3 -3
- package/dist/modules/cli.mjs +2 -2
- package/dist/modules/command-executor.mjs +2 -2
- package/dist/modules/embedded.mjs +100 -21
- package/dist/modules/embedded.mjs.map +3 -3
- package/dist/modules/frontend-root.mjs +15 -15
- package/dist/modules/index.mjs +26 -26
- package/dist/modules/plugin.mjs +14 -14
- package/dist/modules/plugins/asset/frontend.mjs +4 -4
- package/dist/modules/plugins/asset/identity.mjs +3 -3
- package/dist/modules/plugins/asset/ui.mjs +2 -2
- package/dist/modules/plugins/content-browser/ui.mjs +2 -2
- package/dist/modules/plugins/inspector/ui.mjs +2 -2
- package/dist/modules/plugins/material/frontend.mjs +4 -4
- package/dist/modules/plugins/material/identity.mjs +3 -3
- package/dist/modules/plugins/material/ui.mjs +5 -5
- package/dist/modules/plugins/mesh/frontend.mjs +4 -4
- package/dist/modules/plugins/mesh/identity.mjs +3 -3
- package/dist/modules/plugins/mesh/ui.mjs +5 -5
- package/dist/modules/plugins/plugins/ui/panel.mjs +2 -2
- package/dist/modules/plugins/plugins/ui.mjs +3 -3
- package/dist/modules/plugins/scene-tree/ui.mjs +2 -2
- package/dist/modules/plugins/texture/frontend.mjs +4 -4
- package/dist/modules/plugins/texture/identity.mjs +3 -3
- package/dist/modules/plugins/texture/ui.mjs +5 -5
- package/dist/modules/plugins/viewport/frontend.mjs +1 -1
- package/dist/modules/product.mjs +14 -14
- package/dist/modules/shell/frontend.mjs +1 -1
- package/dist/modules/start-cli.mjs +1 -1
- package/dist/modules/start.mjs +1 -1
- package/dist/modules/viewer/catalog/backend.mjs +10 -10
- package/dist/modules/viewer/catalog/frontend.mjs +14 -14
- package/dist/modules/viewer/catalog/shared.mjs +7 -7
- package/dist/modules/viewer/catalog.mjs +17 -17
- package/dist/modules/viewer-host/frontend.mjs +16 -16
- package/dist/modules/viewer.mjs +17 -17
- package/dist/modules/workspace/backend.mjs +2 -2
- package/dist/modules/workspace/broker.mjs +1 -1
- package/dist/modules/workspace/preview-surface.mjs +1 -1
- package/dist/modules/workspace/resident.mjs +1 -1
- package/dist/modules/workspace/resource-page.mjs +2 -2
- package/dist/viewer/assets/{embedded-Dv06jc6s.js → embedded-Ch4NawY-.js} +2 -2
- package/dist/viewer/assets/{embedded-Dv06jc6s.js.map → embedded-Ch4NawY-.js.map} +1 -1
- package/dist/viewer/assets/main-DUQJ1NlR.js +22 -0
- package/dist/viewer/assets/main-DUQJ1NlR.js.map +1 -0
- package/dist/viewer/assets/{panels-lazy-DjINjNT-.js → panels-lazy-DbOAvYN1.js} +3 -3
- package/dist/viewer/assets/panels-lazy-DbOAvYN1.js.map +1 -0
- package/dist/viewer/assets/panels-ui-DICIsCag.js +12 -0
- package/dist/viewer/assets/panels-ui-DICIsCag.js.map +1 -0
- package/dist/viewer/assets/style-gOtSMZif.css +2 -0
- package/dist/viewer/index.html +4 -4
- package/dist/viewer/panels.js +1 -1
- package/package.json +3 -4
- package/scripts/browser-proof-workload.mjs +0 -1
- package/scripts/verify-runtime-content-engine.mjs +12 -6
- package/dist/modules/chunks/chunk-45ZU2HHR.mjs.map +0 -7
- package/dist/modules/chunks/chunk-7ICJKZYO.mjs.map +0 -7
- package/dist/modules/chunks/chunk-FKLYSAVN.mjs.map +0 -7
- package/dist/modules/chunks/chunk-KSF2EQTE.mjs.map +0 -7
- package/dist/modules/chunks/chunk-MHE5EBU4.mjs.map +0 -7
- package/dist/modules/chunks/chunk-MO5LILCP.mjs.map +0 -7
- package/dist/viewer/assets/main-De95aP3K.js +0 -22
- package/dist/viewer/assets/main-De95aP3K.js.map +0 -1
- package/dist/viewer/assets/panels-lazy-DjINjNT-.js.map +0 -1
- package/dist/viewer/assets/panels-ui-DEJVGEKx.js +0 -12
- package/dist/viewer/assets/panels-ui-DEJVGEKx.js.map +0 -1
- package/dist/viewer/assets/style-BM0losky.css +0 -2
- package/scripts/verify-game3d-workspace.mjs +0 -318
- /package/dist/modules/chunks/{App-E3M52XTQ.mjs.map → App-4XQ5SNNT.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-3GIGTM7E.mjs.map → chunk-27XASYEH.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-UAGQZPAB.mjs.map → chunk-2Z5KEV6L.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-4NGODRIE.mjs.map → chunk-46UEGAXY.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-UZHTLAIZ.mjs.map → chunk-47RJSHLM.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-ACOMGSSB.mjs.map → chunk-5PHAXNFO.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-IXPBGENY.mjs.map → chunk-6I7RY73G.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-BCTPTLA6.mjs.map → chunk-7725LLBM.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-PG4AJFDC.mjs.map → chunk-BGWAT7SI.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-CRNEX7YH.mjs.map → chunk-D25SR5FS.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-L5EV6NEE.mjs.map → chunk-D5GUFI74.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-TBZZ37VI.mjs.map → chunk-DZRJQVJF.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-3Q26HNFS.mjs.map → chunk-FICPCJKR.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-CWNB67UF.mjs.map → chunk-FMCHH5R4.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-2VJPRNYB.mjs.map → chunk-IZAHIOFU.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-IBNFKPW4.mjs.map → chunk-JK7K7RG3.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-BGK4ZEQ5.mjs.map → chunk-KX2WU5Z6.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-M5X56JWH.mjs.map → chunk-PW5CE2Y6.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-OHVTNEQ2.mjs.map → chunk-PZIAKZJC.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-CDO6LELS.mjs.map → chunk-SYE5RTD4.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-JZ3V27HQ.mjs.map → chunk-U64FRQKP.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-W46L4HSP.mjs.map → chunk-U6UMATPV.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-7R6CGQDU.mjs.map → chunk-VW2ZF3P4.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-AIIYGGGC.mjs.map → chunk-X4NNZ5X6.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-5AKXNYKX.mjs.map → chunk-XE6ITXHT.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-6WCG6WPC.mjs.map → chunk-YNHEYXDG.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-7MJUWNVI.mjs.map → chunk-ZGOGO7SS.mjs.map} +0 -0
- /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
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
and
|
|
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
|
|
255
|
-
|
|
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,
|
|
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.
|
package/dist/build-revision.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"codeRevision":"
|
|
1
|
+
{"codeRevision":"3d257ebc122817030cb1001d516e574c7997013439f0e83bb2fa5ac2e93cd3cd","viewerDigest":"1105ba217f8a6b62aedf41d8a31fe5c68a14be078cd01aa4d67466b6f58c922b"}
|
package/dist/modules/backend.mjs
CHANGED
|
@@ -2,31 +2,31 @@ import {
|
|
|
2
2
|
createViewBackend,
|
|
3
3
|
createViewHostBinding,
|
|
4
4
|
createViewPlatformBinding
|
|
5
|
-
} from "./chunks/chunk-
|
|
6
|
-
import "./chunks/chunk-
|
|
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-
|
|
12
|
-
import "./chunks/chunk-
|
|
11
|
+
import "./chunks/chunk-27XASYEH.mjs";
|
|
12
|
+
import "./chunks/chunk-HWZCLROY.mjs";
|
|
13
13
|
import "./chunks/chunk-55F55BQY.mjs";
|
|
14
|
-
import "./chunks/chunk-
|
|
15
|
-
import "./chunks/chunk-
|
|
16
|
-
import "./chunks/chunk-
|
|
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-
|
|
23
|
-
import "./chunks/chunk-
|
|
22
|
+
import "./chunks/chunk-X4NNZ5X6.mjs";
|
|
23
|
+
import "./chunks/chunk-FMCHH5R4.mjs";
|
|
24
24
|
import "./chunks/chunk-STQPRNEO.mjs";
|
|
25
|
-
import "./chunks/chunk-
|
|
25
|
+
import "./chunks/chunk-PZIAKZJC.mjs";
|
|
26
26
|
import "./chunks/chunk-QUFVUMSY.mjs";
|
|
27
27
|
import "./chunks/chunk-HRKW766Y.mjs";
|
|
28
|
-
import "./chunks/chunk-
|
|
29
|
-
import "./chunks/chunk-
|
|
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";
|
package/dist/modules/browser.mjs
CHANGED
|
@@ -11,15 +11,15 @@ import {
|
|
|
11
11
|
connectViewFrontend,
|
|
12
12
|
mountViewViewer,
|
|
13
13
|
mountViewWorkspace
|
|
14
|
-
} from "./chunks/chunk-
|
|
15
|
-
import "./chunks/chunk-
|
|
16
|
-
import "./chunks/chunk-
|
|
17
|
-
import "./chunks/chunk-
|
|
18
|
-
import "./chunks/chunk-
|
|
19
|
-
import "./chunks/chunk-
|
|
20
|
-
import "./chunks/chunk-
|
|
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-
|
|
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-
|
|
40
|
-
import "./chunks/chunk-
|
|
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-
|
|
58
|
-
import "./chunks/chunk-
|
|
57
|
+
import "./chunks/chunk-X4NNZ5X6.mjs";
|
|
58
|
+
import "./chunks/chunk-FMCHH5R4.mjs";
|
|
59
59
|
import "./chunks/chunk-STQPRNEO.mjs";
|
|
60
|
-
import "./chunks/chunk-
|
|
60
|
+
import "./chunks/chunk-PZIAKZJC.mjs";
|
|
61
61
|
import "./chunks/chunk-QUFVUMSY.mjs";
|
|
62
62
|
import "./chunks/chunk-HRKW766Y.mjs";
|
|
63
|
-
import "./chunks/chunk-
|
|
64
|
-
import "./chunks/chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
39069
|
+
//# sourceMappingURL=App-4XQ5SNNT.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ViewWorkspaceBroker
|
|
3
|
-
} from "./chunk-
|
|
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-
|
|
78
|
+
//# sourceMappingURL=chunk-27XASYEH.mjs.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
InspectorForm,
|
|
9
9
|
OverlayRootProvider,
|
|
10
10
|
PanelHeader
|
|
11
|
-
} from "./chunk-
|
|
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-
|
|
121
|
+
//# sourceMappingURL=chunk-2Z5KEV6L.mjs.map
|
|
@@ -9,16 +9,16 @@ import {
|
|
|
9
9
|
OverlayRootProvider,
|
|
10
10
|
PanelHeader,
|
|
11
11
|
PropertyRow
|
|
12
|
-
} from "./chunk-
|
|
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-
|
|
18
|
+
} from "./chunk-X4NNZ5X6.mjs";
|
|
19
19
|
import {
|
|
20
20
|
bindWorkspacePreviewSurface
|
|
21
|
-
} from "./chunk-
|
|
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-
|
|
244
|
+
//# sourceMappingURL=chunk-46UEGAXY.mjs.map
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
resolveInspectorFieldKind,
|
|
26
26
|
useOverlayRoot,
|
|
27
27
|
useWorkspaceClientConnected
|
|
28
|
-
} from "./chunk-
|
|
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-
|
|
434
|
+
//# sourceMappingURL=chunk-47RJSHLM.mjs.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
Surface,
|
|
9
9
|
Text,
|
|
10
10
|
Toolbar
|
|
11
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
12
|
+
} from "./chunk-XE6ITXHT.mjs";
|
|
13
13
|
import {
|
|
14
14
|
runViewStartInteractive,
|
|
15
15
|
runViewStatus,
|
|
16
16
|
runViewStop
|
|
17
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
3
|
+
} from "./chunk-E3PJGTLI.mjs";
|
|
4
4
|
import {
|
|
5
5
|
frontend_default as frontend_default10
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-YNHEYXDG.mjs";
|
|
7
7
|
import {
|
|
8
8
|
frontend_default as frontend_default8
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-U64FRQKP.mjs";
|
|
10
10
|
import {
|
|
11
11
|
frontend_default as frontend_default9
|
|
12
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
38
|
+
} from "./chunk-I5KQUTEE.mjs";
|
|
39
39
|
import {
|
|
40
40
|
FRONTEND_MODULE as FRONTEND_MODULE9
|
|
41
|
-
} from "./chunk-
|
|
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-
|
|
50
|
+
} from "./chunk-X4NNZ5X6.mjs";
|
|
51
51
|
import {
|
|
52
52
|
FRONTEND_MODULE as FRONTEND_MODULE8
|
|
53
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
2094
|
+
//# sourceMappingURL=chunk-CXOD7FW6.mjs.map
|