@fps-games/editor 0.2.1-beta.3 → 0.2.1-beta.4
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-info.json +44 -44
- package/dist/editor-commands/capabilities/assets.d.ts +8 -0
- package/dist/editor-commands/capabilities/assets.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/assets.js +41 -41
- package/dist/editor-commands/capabilities/assets.js.map +1 -0
- package/dist/editor-commands/capabilities/editor-state.d.ts +5 -0
- package/dist/editor-commands/capabilities/editor-state.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/editor-state.js +22 -22
- package/dist/editor-commands/capabilities/editor-state.js.map +1 -0
- package/dist/editor-commands/capabilities/hierarchy.d.ts +4 -0
- package/dist/editor-commands/capabilities/hierarchy.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/hierarchy.js +5 -5
- package/dist/editor-commands/capabilities/hierarchy.js.map +1 -0
- package/dist/editor-commands/capabilities/host-lifecycle.d.ts +11 -0
- package/dist/editor-commands/capabilities/host-lifecycle.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/host-lifecycle.js +149 -0
- package/dist/editor-commands/capabilities/host-lifecycle.js.map +1 -0
- package/dist/editor-commands/capabilities/prefabs.d.ts +5 -0
- package/dist/editor-commands/capabilities/prefabs.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/prefabs.js +93 -93
- package/dist/editor-commands/capabilities/prefabs.js.map +1 -0
- package/dist/editor-commands/capabilities/scene-objects.d.ts +8 -0
- package/dist/editor-commands/capabilities/scene-objects.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/scene-objects.js +480 -0
- package/dist/editor-commands/capabilities/scene-objects.js.map +1 -0
- package/dist/editor-commands/capabilities/selection.d.ts +5 -0
- package/dist/editor-commands/capabilities/selection.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/selection.js +60 -0
- package/dist/editor-commands/capabilities/selection.js.map +1 -0
- package/dist/editor-commands/capabilities/shadows.d.ts +5 -0
- package/dist/editor-commands/capabilities/shadows.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/shadows.js +74 -74
- package/dist/editor-commands/capabilities/shadows.js.map +1 -0
- package/dist/editor-commands/capabilities/transform.d.ts +5 -0
- package/dist/editor-commands/capabilities/transform.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/transform.js +164 -0
- package/dist/editor-commands/capabilities/transform.js.map +1 -0
- package/dist/editor-commands/capabilities/ui-regions.d.ts +4 -0
- package/dist/editor-commands/capabilities/ui-regions.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/ui-regions.js +55 -57
- package/dist/editor-commands/capabilities/ui-regions.js.map +1 -0
- package/dist/editor-commands/capabilities/viewport.d.ts +5 -0
- package/dist/editor-commands/capabilities/viewport.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/viewport.js +100 -100
- package/dist/editor-commands/capabilities/viewport.js.map +1 -0
- package/dist/editor-commands/command-sources.d.ts +7 -0
- package/dist/editor-commands/command-sources.d.ts.map +1 -0
- package/dist/editor-commands/command-sources.js +34 -0
- package/dist/editor-commands/command-sources.js.map +1 -0
- package/dist/editor-commands/diagnostics.d.ts +12 -0
- package/dist/editor-commands/diagnostics.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/diagnostics.js +4 -4
- package/dist/editor-commands/diagnostics.js.map +1 -0
- package/dist/{agent-bridge → editor-commands}/index.d.ts +1 -1
- package/dist/editor-commands/index.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/index.js +1 -1
- package/dist/editor-commands/index.js.map +1 -0
- package/dist/editor-commands/register.d.ts +4 -0
- package/dist/editor-commands/register.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/register.js +323 -286
- package/dist/editor-commands/register.js.map +1 -0
- package/dist/{agent-bridge → editor-commands}/shared.d.ts +80 -80
- package/dist/editor-commands/shared.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/shared.js +29 -29
- package/dist/editor-commands/shared.js.map +1 -0
- package/dist/editor-commands/source-types.d.ts +110 -0
- package/dist/editor-commands/source-types.d.ts.map +1 -0
- package/dist/editor-commands/source-types.js.map +1 -0
- package/dist/editor-plugin-commands.d.ts +4 -0
- package/dist/editor-plugin-commands.d.ts.map +1 -0
- package/dist/editor-plugin-commands.js +18 -0
- package/dist/editor-plugin-commands.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/local-editor-commands.d.ts +2 -0
- package/dist/local-editor-commands.d.ts.map +1 -0
- package/dist/local-editor-commands.js +2 -0
- package/dist/local-editor-commands.js.map +1 -0
- package/dist/local-editor-harness.d.ts +35 -21
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +1721 -367
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/local-editor-prefab-stage-transaction.d.ts +2 -1
- package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -1
- package/dist/local-editor-prefab-stage-transaction.js +6 -5
- package/dist/local-editor-prefab-stage-transaction.js.map +1 -1
- package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
- package/dist/local-editor-scene-view-interaction-runtime.js +2 -5
- package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
- package/dist/playable-local-editor-entry.d.ts +10 -0
- package/dist/playable-local-editor-entry.d.ts.map +1 -1
- package/dist/playable-local-editor-entry.js +10 -2
- package/dist/playable-local-editor-entry.js.map +1 -1
- package/dist/playable-local-editor-host.d.ts +3 -32
- package/dist/playable-local-editor-host.d.ts.map +1 -1
- package/dist/playable-local-editor-host.js +6 -70
- package/dist/playable-local-editor-host.js.map +1 -1
- package/dist/playable-product-local-editor.d.ts +1 -2
- package/dist/playable-product-local-editor.d.ts.map +1 -1
- package/dist/playable-product-local-editor.js +0 -1
- package/dist/playable-product-local-editor.js.map +1 -1
- package/dist/playable-product-projection-preview.d.ts.map +1 -1
- package/dist/playable-product-projection-preview.js +1 -1
- package/dist/playable-product-projection-preview.js.map +1 -1
- package/dist/playable-product-scene-capabilities.d.ts +0 -2
- package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
- package/dist/playable-product-scene-capabilities.js +33 -6
- package/dist/playable-product-scene-capabilities.js.map +1 -1
- package/dist/playable-runtime-babylon.d.ts +4 -0
- package/dist/playable-runtime-babylon.d.ts.map +1 -1
- package/dist/playable-runtime-babylon.js +4 -0
- package/dist/playable-runtime-babylon.js.map +1 -1
- package/dist/playable-sdk.d.ts +1 -1
- package/dist/playable-sdk.d.ts.map +1 -1
- package/dist/playable-sdk.js.map +1 -1
- package/dist/playable-standard-project.d.ts +0 -2
- package/dist/playable-standard-project.d.ts.map +1 -1
- package/dist/playable-standard-project.js +1 -2
- package/dist/playable-standard-project.js.map +1 -1
- package/dist/project-service-projection.d.ts +16 -0
- package/dist/project-service-projection.d.ts.map +1 -0
- package/dist/project-service-projection.js +67 -0
- package/dist/project-service-projection.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +18 -0
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +54 -18
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/package.json +9 -9
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +127 -13
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +66 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/package.json +6 -6
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts +32 -0
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js +254 -0
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts +3 -1
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/index.js +2 -0
- package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts +68 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js +650 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +22 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +8 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +117 -6
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +14 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +100 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +8 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +75 -2
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +37 -12
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +25 -2
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +332 -107
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/package.json +7 -7
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts +107 -0
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js +1211 -0
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts +34 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js +260 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts +9 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js +14 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts +18 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js +113 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts +82 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.js +1098 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -7
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +62 -103
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts +30 -0
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js +540 -0
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts +9 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js +61 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +55 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-session.js +247 -6
- package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/index.d.ts +6 -2
- package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/index.js +6 -2
- package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-core/package.json +6 -6
- package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts +0 -1
- package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-forge-play/dist/index.js +0 -1
- package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +41 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +27 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +214 -7
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +11 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +2 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +77 -31
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +8 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts +21 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js +90 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts +27 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +161 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js +5 -92
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts +7 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js +26 -9
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts +9 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js +19 -8
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js +16 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +9 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +12 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js +10 -5
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +17 -82
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +53 -57
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js +3 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts +10 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js +256 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +7 -5
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +8 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +134 -12
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +47 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts +27 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js +592 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +3 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +61 -6
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +0 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -10
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +21 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts +13 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js +18 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts +28 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js +863 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts +1626 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/{agent-bridge.js → editor-command-capabilities.js} +766 -620
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts +69 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js +22 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts +136 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.js +2 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts +225 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.js +4 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +6 -3
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/index.js +6 -3
- package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/package.json +2 -2
- package/node_modules/@fps-games/editor-tooling/package.json +3 -3
- package/node_modules/@fps-games/editor-ui/package.json +1 -1
- package/node_modules/@fps-games/playable-assets/package.json +1 -1
- package/node_modules/@fps-games/playable-contracts/package.json +1 -1
- package/node_modules/@fps-games/playable-rendering/package.json +2 -2
- package/node_modules/@fps-games/playable-runtime/package.json +12 -12
- package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
- package/node_modules/@fps-games/playable-scene/package.json +2 -2
- package/node_modules/@fps-games/plugin-api/package.json +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-assets/package.json +6 -6
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +78 -4
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/package.json +5 -5
- package/node_modules/@fps-games/plugin-host/package.json +2 -2
- package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-markers/package.json +5 -5
- package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-materials/package.json +5 -5
- package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
- package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-scene/package.json +5 -5
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +5 -5
- package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
- package/package.json +23 -23
- package/dist/agent-bridge/capabilities/assets.d.ts +0 -8
- package/dist/agent-bridge/capabilities/assets.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/assets.js.map +0 -1
- package/dist/agent-bridge/capabilities/editor-state.d.ts +0 -5
- package/dist/agent-bridge/capabilities/editor-state.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/editor-state.js.map +0 -1
- package/dist/agent-bridge/capabilities/hierarchy.d.ts +0 -4
- package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/hierarchy.js.map +0 -1
- package/dist/agent-bridge/capabilities/host-lifecycle.d.ts +0 -11
- package/dist/agent-bridge/capabilities/host-lifecycle.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/host-lifecycle.js +0 -149
- package/dist/agent-bridge/capabilities/host-lifecycle.js.map +0 -1
- package/dist/agent-bridge/capabilities/prefabs.d.ts +0 -5
- package/dist/agent-bridge/capabilities/prefabs.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/prefabs.js.map +0 -1
- package/dist/agent-bridge/capabilities/scene-objects.d.ts +0 -8
- package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/scene-objects.js +0 -480
- package/dist/agent-bridge/capabilities/scene-objects.js.map +0 -1
- package/dist/agent-bridge/capabilities/selection.d.ts +0 -5
- package/dist/agent-bridge/capabilities/selection.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/selection.js +0 -60
- package/dist/agent-bridge/capabilities/selection.js.map +0 -1
- package/dist/agent-bridge/capabilities/shadows.d.ts +0 -5
- package/dist/agent-bridge/capabilities/shadows.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/shadows.js.map +0 -1
- package/dist/agent-bridge/capabilities/transform.d.ts +0 -5
- package/dist/agent-bridge/capabilities/transform.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/transform.js +0 -164
- package/dist/agent-bridge/capabilities/transform.js.map +0 -1
- package/dist/agent-bridge/capabilities/ui-regions.d.ts +0 -4
- package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/ui-regions.js.map +0 -1
- package/dist/agent-bridge/capabilities/viewport.d.ts +0 -5
- package/dist/agent-bridge/capabilities/viewport.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/viewport.js.map +0 -1
- package/dist/agent-bridge/capability-sources.d.ts +0 -7
- package/dist/agent-bridge/capability-sources.d.ts.map +0 -1
- package/dist/agent-bridge/capability-sources.js +0 -34
- package/dist/agent-bridge/capability-sources.js.map +0 -1
- package/dist/agent-bridge/diagnostics.d.ts +0 -12
- package/dist/agent-bridge/diagnostics.d.ts.map +0 -1
- package/dist/agent-bridge/diagnostics.js.map +0 -1
- package/dist/agent-bridge/index.d.ts.map +0 -1
- package/dist/agent-bridge/index.js.map +0 -1
- package/dist/agent-bridge/register.d.ts +0 -4
- package/dist/agent-bridge/register.d.ts.map +0 -1
- package/dist/agent-bridge/register.js.map +0 -1
- package/dist/agent-bridge/shared.d.ts.map +0 -1
- package/dist/agent-bridge/shared.js.map +0 -1
- package/dist/agent-bridge/source-types.d.ts +0 -110
- package/dist/agent-bridge/source-types.d.ts.map +0 -1
- package/dist/agent-bridge/source-types.js.map +0 -1
- package/dist/editor-plugin-agent-capabilities.d.ts +0 -4
- package/dist/editor-plugin-agent-capabilities.d.ts.map +0 -1
- package/dist/editor-plugin-agent-capabilities.js +0 -64
- package/dist/editor-plugin-agent-capabilities.js.map +0 -1
- package/dist/local-editor-agent-actions.d.ts +0 -43
- package/dist/local-editor-agent-actions.d.ts.map +0 -1
- package/dist/local-editor-agent-actions.js +0 -321
- package/dist/local-editor-agent-actions.js.map +0 -1
- package/dist/local-editor-agent-bridge-transport.d.ts +0 -129
- package/dist/local-editor-agent-bridge-transport.d.ts.map +0 -1
- package/dist/local-editor-agent-bridge-transport.js +0 -403
- package/dist/local-editor-agent-bridge-transport.js.map +0 -1
- package/dist/local-editor-agent-bridge.d.ts +0 -2
- package/dist/local-editor-agent-bridge.d.ts.map +0 -1
- package/dist/local-editor-agent-bridge.js +0 -2
- package/dist/local-editor-agent-bridge.js.map +0 -1
- package/dist/local-editor-agent-context.d.ts +0 -68
- package/dist/local-editor-agent-context.d.ts.map +0 -1
- package/dist/local-editor-agent-context.js +0 -716
- package/dist/local-editor-agent-context.js.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts +0 -22
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.js +0 -106
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts +0 -17
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.js +0 -14
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.js.map +0 -1
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts +0 -23
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js +0 -47
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts +0 -112
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js +0 -159
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts +0 -15
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js +0 -76
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +0 -1622
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts +0 -68
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js +0 -23
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +0 -187
- package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent.js +0 -5
- package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +0 -1
- /package/dist/{agent-bridge → editor-commands}/source-types.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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","sourcesContent":["export const FPS_HIERARCHY_SURFACE_CONTRIBUTION_ID = 'fps.editor.surface.hierarchy' as const;\nexport const FPS_HIERARCHY_SURFACE_CONTRIBUTION_TYPE = 'fps.hierarchy.surface' as const;\n\nexport type HierarchyJsonValue = null | boolean | number | string | readonly HierarchyJsonValue[] | {\n readonly [key: string]: HierarchyJsonValue;\n};\nexport type HierarchySelectionModifier = 'replace' | 'toggle' | 'range';\nexport type HierarchyOperationEffect = 'selection' | 'authoring' | 'view' | 'runtime-transient';\nexport type HierarchyOperationTargetPolicy = 'none' | 'single' | 'multiple';\nexport type HierarchyOperationLegacyPlacement =\n | 'top'\n | 'after-primary'\n | 'after-create'\n | 'after-edit'\n | 'after-clipboard'\n | 'bottom';\n\nexport interface HierarchyAssetPickerInputPresentation {\n readonly kind: 'asset-picker';\n readonly field: string;\n readonly assetKinds: readonly string[];\n readonly multiple: boolean;\n readonly title: string;\n}\n\nexport type HierarchyOperationInputPresentation = HierarchyAssetPickerInputPresentation;\n\nexport interface HierarchyDiagnostic {\n readonly code: string;\n readonly message: string;\n readonly severity: 'info' | 'warning' | 'error';\n}\n\nexport interface HierarchyNodeSnapshot {\n readonly id: string;\n readonly label: string;\n readonly parentId: string | null;\n readonly role?: string;\n readonly icon?: string;\n readonly commandTargetId?: string;\n readonly selectable: boolean;\n readonly canHaveChildren: boolean;\n readonly renamable: boolean;\n readonly deletable: boolean;\n readonly draggable: boolean;\n readonly authoredEnabled?: boolean;\n readonly editorVisible?: boolean;\n readonly editorLocked?: boolean;\n}\n\nexport interface HierarchyScopeCapabilities {\n readonly clearSelection?: boolean;\n readonly rangeSelection?: boolean;\n readonly rename?: boolean;\n readonly reparent?: boolean;\n readonly authoredEnabled?: boolean;\n readonly editorVisibility?: boolean;\n readonly editorLock?: boolean;\n}\n\nexport interface HierarchyTreeSnapshot {\n readonly structureRevision: number;\n readonly rootIds: readonly string[];\n readonly nodeById: ReadonlyMap<string, HierarchyNodeSnapshot>;\n readonly childrenByParentId: ReadonlyMap<string | null, readonly string[]>;\n}\n\nexport interface HierarchyScopeSnapshot {\n readonly scopeKey: string;\n readonly scopeType: string;\n readonly revision: number;\n readonly structureRevision: number;\n readonly title: string;\n readonly searchPlaceholder: string;\n readonly readonly: boolean;\n readonly rootIds: readonly string[];\n readonly nodeById: ReadonlyMap<string, HierarchyNodeSnapshot>;\n readonly childrenByParentId: ReadonlyMap<string | null, readonly string[]>;\n readonly selectedIds: readonly string[];\n readonly activeId: string | null;\n readonly primaryOperationId?: string;\n readonly capabilities: Readonly<HierarchyScopeCapabilities>;\n}\n\nexport interface HierarchyVisibleRow {\n readonly id: string;\n readonly depth: number;\n}\n\nexport type HierarchyDropPlacement = 'inside' | 'before' | 'after' | 'root';\n\nexport interface HierarchyDropInput {\n readonly draggedIds: readonly string[];\n readonly targetId?: string | null;\n readonly placement: HierarchyDropPlacement;\n}\n\nexport interface HierarchyDropResolution {\n readonly ok: boolean;\n readonly reason?: string;\n readonly placement: HierarchyDropPlacement;\n readonly draggedIds: readonly string[];\n readonly targetId: string | null;\n readonly parentId: string | null;\n readonly beforeId: string | null;\n readonly afterId: string | null;\n}\n\nexport interface HierarchyVisibleProjection {\n readonly structureRevision: number;\n readonly projectionRevision: number;\n readonly totalCount: number;\n indexOf(id: string | null | undefined): number;\n getRow(index: number): HierarchyVisibleRow | null;\n getWindow(start: number, count: number): readonly HierarchyVisibleRow[];\n getRange(from: number, to: number): readonly string[];\n getAncestors(id: string | null | undefined): readonly string[];\n getSelectableChildren(id: string | null | undefined): readonly string[];\n getSelectableDescendants(id: string | null | undefined): readonly string[];\n getTopLevelSelection(ids: readonly string[]): readonly string[];\n isDescendant(candidateId: string, ancestorId: string): boolean;\n resolveDrop(input: HierarchyDropInput): HierarchyDropResolution;\n}\n\nexport interface HierarchyOperationDescriptor {\n readonly id: string;\n readonly label: string;\n readonly description?: string;\n readonly effect: HierarchyOperationEffect;\n readonly targetPolicy: HierarchyOperationTargetPolicy;\n readonly menu?: false | Readonly<{\n path?: readonly Readonly<{ id: string; label: string; order?: number }>[];\n group?: string;\n order?: number;\n }>;\n /**\n * @deprecated Use `menu.path`, `menu.group`, and `menu.order` for new\n * recursive context menu presentation. `placement` is retained as a\n * compatibility bridge for project-side operation contributions that were\n * authored before nested Hierarchy menus.\n */\n readonly placement?: HierarchyOperationLegacyPlacement;\n readonly shortcut?: string;\n readonly shortcutScope?: 'editor' | 'hierarchy';\n readonly danger?: boolean;\n readonly disabledReason?: string;\n readonly payload?: Readonly<Record<string, HierarchyJsonValue>>;\n readonly inputPresentation?: HierarchyOperationInputPresentation;\n}\n\nexport interface HierarchyOperationContext {\n readonly scopeKey: string;\n readonly expectedRevision: number;\n readonly contextNodeId: string | null;\n readonly targetIds: readonly string[];\n readonly activeId: string | null;\n}\n\nexport interface HierarchyOperationInvocation extends HierarchyOperationContext {\n readonly operationId: string;\n readonly input?: Readonly<Record<string, HierarchyJsonValue>>;\n}\n\nexport interface HierarchyOperationResult {\n readonly ok: boolean;\n readonly changed: boolean;\n readonly revision: number;\n readonly diagnostics: readonly HierarchyDiagnostic[];\n}\n\nexport interface HierarchySelectionChange extends HierarchyOperationContext {\n readonly selectedIds: readonly string[];\n readonly activeId: string | null;\n}\n\nexport interface HierarchyScopeProvider {\n readonly id: string;\n readonly priority?: number;\n canProvide(): boolean;\n getSnapshot(): HierarchyScopeSnapshot | null;\n applySelection(input: HierarchySelectionChange): HierarchyOperationResult | Promise<HierarchyOperationResult>;\n listOperations(context: HierarchyOperationContext): readonly HierarchyOperationDescriptor[];\n executeOperation(invocation: HierarchyOperationInvocation): HierarchyOperationResult | Promise<HierarchyOperationResult>;\n}\n\ntype HierarchyIntentPayload =\n | { readonly type: 'selection'; readonly targetId: string | null; readonly modifier: HierarchySelectionModifier }\n | { readonly type: 'selection.set'; readonly selectedIds: readonly string[]; readonly activeId: string | null; readonly anchorId?: string | null }\n | { readonly type: 'primary'; readonly targetId: string }\n | { readonly type: 'context'; readonly targetId: string | null }\n | { readonly type: 'disclosure.toggle'; readonly targetId: string }\n | { readonly type: 'disclosure.expand'; readonly targetId: string }\n | { readonly type: 'disclosure.reveal'; readonly targetId: string }\n | { readonly type: 'search.change'; readonly value: string }\n | { readonly type: 'rename.begin'; readonly targetId: string }\n | { readonly type: 'rename.change'; readonly value: string }\n | { readonly type: 'rename.commit' }\n | { readonly type: 'rename.cancel' }\n | { readonly type: 'drag.begin'; readonly targetId: string }\n | { readonly type: 'drag.commit'; readonly operationId: string; readonly input?: Readonly<Record<string, HierarchyJsonValue>> }\n | { readonly type: 'drag.cancel' }\n | {\n readonly type: 'operation.execute';\n readonly operationId: string;\n readonly context?: HierarchyOperationContext;\n readonly input?: Readonly<Record<string, HierarchyJsonValue>>;\n };\n\nexport type HierarchyIntent = HierarchyIntentPayload & {\n readonly expectedAuthorityToken?: number;\n readonly expectedScopeKey?: string;\n readonly expectedRevision?: number;\n};\n\nexport type HierarchyViewIntent = HierarchyIntent & {\n readonly expectedAuthorityToken: number;\n readonly expectedScopeKey: string;\n readonly expectedRevision: number;\n};\n\nexport interface HierarchyViewState {\n readonly collapsedIds: ReadonlySet<string>;\n readonly searchQuery: string;\n readonly selectionAnchorId: string | null;\n readonly rename: Readonly<{ id: string; value: string }> | null;\n readonly dragId: string | null;\n readonly dragIds: readonly string[];\n}\n\nexport interface HierarchyViewModel {\n readonly providerId: string;\n readonly authorityToken: number;\n readonly snapshot: HierarchyScopeSnapshot;\n readonly state: HierarchyViewState;\n readonly projection: HierarchyVisibleProjection;\n readonly operations: readonly HierarchyOperationDescriptor[];\n}\n\nexport interface HierarchyViewAdapter {\n render(model: HierarchyViewModel | null): void;\n bind(dispatch: (intent: HierarchyViewIntent) => Promise<HierarchyOperationResult>): () => void;\n}\n\nexport interface HierarchyKernel {\n setProviders(providers: readonly HierarchyScopeProvider[]): void;\n getProvider(): HierarchyScopeProvider | null;\n getViewModel(): HierarchyViewModel | null;\n listOperations(context: HierarchyOperationContext, expectedAuthorityToken?: number): readonly HierarchyOperationDescriptor[];\n attachView(adapter: HierarchyViewAdapter): () => void;\n refresh(): void;\n dispatch(intent: HierarchyIntent): Promise<HierarchyOperationResult>;\n}\n\nexport interface HierarchySurfaceContribution {\n readonly type: typeof FPS_HIERARCHY_SURFACE_CONTRIBUTION_TYPE;\n readonly id: 'hierarchy';\n readonly title: string;\n readonly area: 'left';\n readonly toolbar: 'scoped-hierarchy';\n createKernel(): HierarchyKernel;\n}\n\nexport function createHierarchySurfaceContribution(): HierarchySurfaceContribution {\n return Object.freeze({\n type: FPS_HIERARCHY_SURFACE_CONTRIBUTION_TYPE,\n id: 'hierarchy',\n title: '层级',\n area: 'left',\n toolbar: 'scoped-hierarchy',\n createKernel: createHierarchyKernel,\n });\n}\n\nexport function isHierarchySurfaceContribution(value: unknown): value is HierarchySurfaceContribution {\n if (!value || typeof value !== 'object') return false;\n const candidate = value as Partial<HierarchySurfaceContribution>;\n return candidate.type === FPS_HIERARCHY_SURFACE_CONTRIBUTION_TYPE\n && candidate.id === 'hierarchy'\n && candidate.area === 'left'\n && typeof candidate.createKernel === 'function';\n}\n\nexport function createHierarchyScopeSnapshot(input: {\n readonly scopeKey: string;\n readonly scopeType: string;\n readonly revision: number;\n readonly title: string;\n readonly searchPlaceholder?: string;\n readonly readonly?: boolean;\n readonly structureRevision?: number;\n readonly nodes?: readonly HierarchyNodeSnapshot[];\n readonly tree?: HierarchyTreeSnapshot;\n readonly selectedIds?: readonly string[];\n readonly activeId?: string | null;\n readonly primaryOperationId?: string;\n readonly capabilities?: HierarchyScopeCapabilities;\n}): HierarchyScopeSnapshot {\n if (!input.scopeKey.trim()) throw new Error('Hierarchy scopeKey is required.');\n if (!input.scopeType.trim()) throw new Error('Hierarchy scopeType is required.');\n if (!Number.isSafeInteger(input.revision) || input.revision < 0) throw new Error('Hierarchy revision must be a non-negative safe integer.');\n const tree = input.tree ?? createHierarchyTreeSnapshot({\n structureRevision: input.structureRevision ?? input.revision,\n nodes: input.nodes ?? [],\n });\n if (input.tree && input.nodes) throw new Error('Hierarchy snapshot accepts either tree or nodes, not both.');\n const nodeById = tree.nodeById;\n const childrenByParentId = tree.childrenByParentId;\n const selectedIds = uniqueIds(input.selectedIds ?? []).filter(id => nodeById.get(id)?.selectable === true);\n const activeId = input.activeId && selectedIds.includes(input.activeId) ? input.activeId : selectedIds[0] ?? null;\n return Object.freeze({\n scopeKey: input.scopeKey,\n scopeType: input.scopeType,\n revision: input.revision,\n structureRevision: tree.structureRevision,\n title: input.title,\n searchPlaceholder: input.searchPlaceholder ?? 'Filter hierarchy',\n readonly: input.readonly === true,\n rootIds: tree.rootIds,\n nodeById: tree.nodeById,\n childrenByParentId: tree.childrenByParentId,\n selectedIds: Object.freeze(selectedIds),\n activeId,\n ...(input.primaryOperationId ? { primaryOperationId: input.primaryOperationId } : {}),\n capabilities: Object.freeze({ ...input.capabilities }),\n });\n}\n\nexport function createHierarchyTreeSnapshot(input: {\n readonly structureRevision: number;\n readonly nodes: readonly HierarchyNodeSnapshot[];\n}): HierarchyTreeSnapshot {\n if (!Number.isSafeInteger(input.structureRevision) || input.structureRevision < 0) {\n throw new Error('Hierarchy structureRevision must be a non-negative safe integer.');\n }\n const nodeById = new Map<string, HierarchyNodeSnapshot>();\n const children = new Map<string | null, string[]>();\n for (const candidate of input.nodes) {\n const node = snapshotNode(candidate);\n if (nodeById.has(node.id)) throw new Error(`Duplicate Hierarchy node id: ${node.id}`);\n nodeById.set(node.id, node);\n const siblings = children.get(node.parentId) ?? [];\n siblings.push(node.id);\n children.set(node.parentId, siblings);\n }\n for (const node of nodeById.values()) {\n if (node.parentId !== null && !nodeById.has(node.parentId)) {\n throw new Error(`Hierarchy node ${node.id} references missing parent ${node.parentId}.`);\n }\n }\n assertAcyclicAndReachable(nodeById, children);\n const childrenByParentId = new Map<string | null, readonly string[]>();\n for (const [parentId, ids] of children) childrenByParentId.set(parentId, Object.freeze([...ids]));\n return Object.freeze({\n structureRevision: input.structureRevision,\n rootIds: Object.freeze([...(childrenByParentId.get(null) ?? [])]),\n nodeById: createReadonlyMapView(nodeById),\n childrenByParentId: createReadonlyMapView(childrenByParentId),\n });\n}\n\nexport function resolveHierarchySelection(input: {\n readonly snapshot: HierarchyScopeSnapshot;\n readonly targetId: string | null;\n readonly modifier: HierarchySelectionModifier;\n readonly projection: HierarchyVisibleProjection;\n readonly anchorId: string | null;\n}): Readonly<{ selectedIds: readonly string[]; activeId: string | null; anchorId: string | null }> {\n const { snapshot, targetId, modifier } = input;\n if (targetId === null) {\n if (!snapshot.capabilities.clearSelection) {\n return Object.freeze({ selectedIds: snapshot.selectedIds, activeId: snapshot.activeId, anchorId: input.anchorId });\n }\n return Object.freeze({ selectedIds: Object.freeze([]), activeId: null, anchorId: null });\n }\n if (snapshot.nodeById.get(targetId)?.selectable !== true) {\n return Object.freeze({ selectedIds: snapshot.selectedIds, activeId: snapshot.activeId, anchorId: input.anchorId });\n }\n if (modifier === 'toggle') {\n const selected = new Set(snapshot.selectedIds);\n if (selected.has(targetId)) selected.delete(targetId); else selected.add(targetId);\n const selectedIds = [...selected];\n return Object.freeze({\n selectedIds: Object.freeze(selectedIds),\n activeId: selected.has(targetId) ? targetId : selectedIds[selectedIds.length - 1] ?? null,\n anchorId: targetId,\n });\n }\n if (modifier === 'range' && snapshot.capabilities.rangeSelection && input.anchorId) {\n const start = input.projection.indexOf(input.anchorId);\n const end = input.projection.indexOf(targetId);\n if (start >= 0 && end >= 0) {\n const [from, to] = start <= end ? [start, end] : [end, start];\n const selectedIds = input.projection.getRange(from, to)\n .filter(id => snapshot.nodeById.get(id)?.selectable === true);\n return Object.freeze({ selectedIds: Object.freeze(selectedIds), activeId: targetId, anchorId: input.anchorId });\n }\n }\n return Object.freeze({ selectedIds: Object.freeze([targetId]), activeId: targetId, anchorId: targetId });\n}\n\nexport function createHierarchyVisibleProjection(input: {\n readonly snapshot: HierarchyScopeSnapshot;\n readonly collapsedIds?: ReadonlySet<string>;\n readonly searchQuery?: string;\n readonly projectionRevision?: number;\n}): HierarchyVisibleProjection {\n return createVisibleProjection(input.snapshot, {\n collapsedIds: new Set(input.collapsedIds ?? []),\n searchQuery: input.searchQuery ?? '',\n projectionRevision: input.projectionRevision ?? 0,\n });\n}\n\nexport function createHierarchyKernel(): HierarchyKernel {\n const viewStates = new Map<string, MutableHierarchyViewState>();\n const revisionRecords = new Map<HierarchyScopeProvider, Map<string, HierarchyRevisionRecord>>();\n const projections = new Map<string, {\n provider: HierarchyScopeProvider;\n structureRevision: number;\n projectionRevision: number;\n projection: HierarchyVisibleProjection;\n }>();\n const viewStateSnapshots = new WeakMap<MutableHierarchyViewState, {\n projectionRevision: number;\n selectionGeneration: number;\n renameGeneration: number;\n dragGeneration: number;\n selectionAnchorId: string | null;\n renameId: string | null;\n renameValue: string | null;\n dragId: string | null;\n dragIds: readonly string[];\n snapshot: HierarchyViewState;\n }>();\n const operationCache = new WeakMap<\n HierarchyScopeSnapshot,\n WeakMap<HierarchyScopeProvider, Map<string, readonly HierarchyOperationDescriptor[]>>\n >();\n const adapters = new Set<HierarchyViewAdapter>();\n let providers: readonly HierarchyScopeProvider[] = [];\n let activeProvider: HierarchyScopeProvider | null = null;\n let activeScopeKey: string | null = null;\n let authorityToken = 0;\n\n const resolveProvider = (\n candidatesSource = providers,\n ): { provider: HierarchyScopeProvider; snapshot: HierarchyScopeSnapshot } | null => {\n const candidates = candidatesSource\n .flatMap(provider => {\n if (!provider.canProvide()) return [];\n const snapshot = provider.getSnapshot();\n return snapshot ? [{ provider, snapshot }] : [];\n })\n .sort((a, b) => (b.provider.priority ?? 0) - (a.provider.priority ?? 0)\n || a.provider.id.localeCompare(b.provider.id));\n if (candidates.length > 1\n && (candidates[0]!.provider.priority ?? 0) === (candidates[1]!.provider.priority ?? 0)) {\n throw new Error(`Ambiguous Hierarchy scope providers: ${candidates[0]!.provider.id}, ${candidates[1]!.provider.id}.`);\n }\n return candidates[0] ?? null;\n };\n\n const synchronize = (): HierarchyScopeSnapshot | null => {\n const resolved = resolveProvider();\n const nextProvider = resolved?.provider ?? null;\n const snapshot = resolved?.snapshot ?? null;\n if (snapshot && nextProvider) assertMonotonicSnapshotRevision(revisionRecords, nextProvider, snapshot);\n const nextScopeKey = snapshot?.scopeKey ?? null;\n if (activeProvider !== nextProvider || activeScopeKey !== nextScopeKey) {\n if (activeScopeKey) cancelTransientState(viewStates.get(activeScopeKey));\n if (nextScopeKey) cancelTransientState(viewStates.get(nextScopeKey));\n activeProvider = nextProvider;\n activeScopeKey = nextScopeKey;\n authorityToken += 1;\n }\n if (snapshot) sanitizeViewState(getState(snapshot.scopeKey), snapshot);\n return snapshot;\n };\n\n const getState = (scopeKey: string): MutableHierarchyViewState => {\n const current = viewStates.get(scopeKey);\n if (current) return current;\n const created: MutableHierarchyViewState = {\n collapsedIds: new Set(), searchQuery: '', selectionAnchorId: null, rename: null, dragId: null, revision: null,\n dragIds: [],\n observedActiveId: null,\n sanitizedStructureRevision: null,\n projectionRevision: 0,\n selectionGeneration: 0, renameGeneration: 0, dragGeneration: 0,\n pendingSelectionGeneration: null, pendingRenameGeneration: null, pendingDragGeneration: null,\n };\n viewStates.set(scopeKey, created);\n return created;\n };\n\n const createViewModel = (\n snapshot: HierarchyScopeSnapshot,\n provider: HierarchyScopeProvider,\n ): HierarchyViewModel => {\n const state = getState(snapshot.scopeKey);\n const projection = getVisibleProjection(snapshot, state, provider);\n const operations = getCachedOperations(snapshot, provider, createOperationContext(snapshot, snapshot.activeId), 'view');\n return Object.freeze({\n providerId: provider.id,\n authorityToken,\n snapshot,\n state: snapshotViewStateCached(state, viewStateSnapshots),\n projection,\n operations,\n });\n };\n\n const getCachedOperations = (\n snapshot: HierarchyScopeSnapshot,\n provider: HierarchyScopeProvider,\n context: HierarchyOperationContext,\n cacheNamespace: 'view' | 'explicit',\n ): readonly HierarchyOperationDescriptor[] => {\n let byProvider = operationCache.get(snapshot);\n if (!byProvider) {\n byProvider = new WeakMap();\n operationCache.set(snapshot, byProvider);\n }\n let byContext = byProvider.get(provider);\n if (!byContext) {\n byContext = new Map();\n byProvider.set(provider, byContext);\n }\n const key = `${cacheNamespace}\\u0000${context.contextNodeId ?? ''}\\u0000${context.activeId ?? ''}\\u0000${context.targetIds.join('\\u0001')}`;\n const cached = byContext.get(key);\n if (cached) return cached;\n const startingAuthorityToken = authorityToken;\n const operations = Object.freeze([...provider.listOperations(context)]);\n const current = synchronize();\n if (authorityToken !== startingAuthorityToken\n || activeProvider !== provider\n || current?.scopeKey !== snapshot.scopeKey\n || current.revision !== snapshot.revision) return Object.freeze([]);\n byContext.set(key, operations);\n return operations;\n };\n\n const getVisibleProjection = (\n snapshot: HierarchyScopeSnapshot,\n state: MutableHierarchyViewState,\n provider: HierarchyScopeProvider,\n ): HierarchyVisibleProjection => {\n const cached = projections.get(snapshot.scopeKey);\n if (cached\n && cached.provider === provider\n && cached.structureRevision === snapshot.structureRevision\n && cached.projectionRevision === state.projectionRevision) return cached.projection;\n const projection = createVisibleProjection(snapshot, state);\n projections.set(snapshot.scopeKey, {\n provider,\n structureRevision: snapshot.structureRevision,\n projectionRevision: state.projectionRevision,\n projection,\n });\n return projection;\n };\n\n const getViewModel = (): HierarchyViewModel | null => {\n for (let attempt = 0; attempt <= providers.length + 1; attempt += 1) {\n const snapshot = synchronize();\n const provider = activeProvider;\n if (!snapshot || !provider) return null;\n const startingAuthorityToken = authorityToken;\n const model = createViewModel(snapshot, provider);\n if (authorityToken === startingAuthorityToken\n && activeProvider === provider\n && activeScopeKey === snapshot.scopeKey) return model;\n }\n throw new Error('Hierarchy provider authority did not stabilize during operation discovery.');\n };\n\n const notifyAdapters = (model: HierarchyViewModel | null): void => {\n const errors: unknown[] = [];\n for (const adapter of adapters) {\n try {\n adapter.render(model);\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length > 0) throw errors[0];\n };\n\n const render = (): void => {\n notifyAdapters(getViewModel());\n };\n\n const result = (snapshot: HierarchyScopeSnapshot | null, ok = true): HierarchyOperationResult => Object.freeze({\n ok,\n changed: false,\n revision: snapshot?.revision ?? 0,\n diagnostics: Object.freeze([]),\n });\n\n const commitViewMutation = (snapshot: HierarchyScopeSnapshot): HierarchyOperationResult => {\n const committed = Object.freeze({\n ok: true,\n changed: true,\n revision: snapshot.revision,\n diagnostics: Object.freeze([]),\n });\n try {\n render();\n return committed;\n } catch (error) {\n return createViewRenderFailure(committed, snapshot.revision, error);\n }\n };\n\n const execute = async (\n operation: () => HierarchyOperationResult | Promise<HierarchyOperationResult>,\n snapshot: HierarchyScopeSnapshot,\n ): Promise<HierarchyOperationResult> => {\n try {\n const operationResult = snapshotOperationResult(await operation());\n if (operationResult.revision < snapshot.revision) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.revision-regressed',\n new Error(`Hierarchy operation revision regressed from ${snapshot.revision} to ${operationResult.revision}.`),\n );\n }\n return operationResult;\n } catch (error) {\n return createFailureResult(snapshot.revision, 'hierarchy.operation.failed', error);\n }\n };\n\n const kernel: HierarchyKernel = {\n setProviders(nextProviders) {\n const next = Object.freeze([...nextProviders]);\n assertUniqueProviderIds(next);\n const previousProviders = providers;\n const previousActiveProvider = activeProvider;\n const previousActiveScopeKey = activeScopeKey;\n const previousAuthorityToken = authorityToken;\n const previousRevisionRecords = cloneRevisionRecords(revisionRecords);\n const previousViewStates = cloneMutableViewStates(viewStates);\n const previousProjections = new Map(projections);\n let model: HierarchyViewModel | null;\n try {\n providers = next;\n model = getViewModel();\n } catch (error) {\n providers = previousProviders;\n activeProvider = previousActiveProvider;\n activeScopeKey = previousActiveScopeKey;\n authorityToken = previousAuthorityToken;\n replaceMapContents(revisionRecords, previousRevisionRecords);\n replaceMapContents(viewStates, previousViewStates);\n replaceMapContents(projections, previousProjections);\n throw error;\n }\n for (const provider of revisionRecords.keys()) {\n if (!next.includes(provider)) revisionRecords.delete(provider);\n }\n // Provider authority is committed before notifying UI edges. A failing\n // adapter cannot roll the authoritative provider set back underneath an\n // adapter that has already observed the new model.\n notifyAdapters(model);\n },\n getProvider() { synchronize(); return activeProvider; },\n getViewModel,\n listOperations(context, expectedAuthorityToken) {\n const previousProvider = activeProvider;\n const previousScopeKey = activeScopeKey;\n const snapshot = synchronize();\n const provider = activeProvider;\n if (previousProvider !== provider || previousScopeKey !== activeScopeKey) {\n notifyAdapters(getViewModel());\n }\n if (!snapshot || !provider\n || (expectedAuthorityToken !== undefined && expectedAuthorityToken !== authorityToken)\n || context.scopeKey !== snapshot.scopeKey\n || context.expectedRevision !== snapshot.revision) return Object.freeze([]);\n const operations = getCachedOperations(snapshot, provider, context, 'explicit');\n if (activeProvider !== provider || activeScopeKey !== snapshot.scopeKey) {\n notifyAdapters(getViewModel());\n return Object.freeze([]);\n }\n return operations;\n },\n attachView(adapter) {\n let unbind: (() => void) | null = null;\n try {\n unbind = adapter.bind(intent => kernel.dispatch(intent));\n adapters.add(adapter);\n adapter.render(getViewModel());\n } catch (error) {\n adapters.delete(adapter);\n if (unbind) {\n try {\n unbind();\n } catch (cleanupError) {\n const initializationError = new Error(\n `Hierarchy ViewAdapter initialization failed: ${formatError(error)}; cleanup failed: ${formatError(cleanupError)}`,\n );\n Object.assign(initializationError, { retryCleanup: () => unbind?.() });\n throw initializationError;\n }\n }\n throw error;\n }\n let active = true;\n return () => {\n if (!active) return;\n unbind?.();\n adapters.delete(adapter);\n active = false;\n };\n },\n refresh: render,\n async dispatch(intent) {\n let fallbackRevision = activeScopeKey\n ? getRevisionRecord(revisionRecords, activeProvider, activeScopeKey)?.revision\n ?? viewStates.get(activeScopeKey)?.revision ?? 0\n : 0;\n const fallbackDragState = intent.type === 'drag.commit' && activeScopeKey\n ? viewStates.get(activeScopeKey) ?? null\n : null;\n const fallbackDragGeneration = fallbackDragState?.dragGeneration ?? null;\n const fallbackDragId = fallbackDragState?.dragId ?? null;\n try {\n const snapshot = synchronize();\n fallbackRevision = snapshot?.revision ?? 0;\n const provider = activeProvider;\n const startingAuthorityToken = authorityToken;\n if (!snapshot || !provider) {\n return createFailureResult(\n snapshot?.revision ?? 0,\n 'hierarchy.scope.unavailable',\n new Error('No active Hierarchy scope provider is available.'),\n );\n }\n if (intent.expectedAuthorityToken !== undefined && intent.expectedAuthorityToken !== startingAuthorityToken) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.provider-authority-changed',\n new Error('Hierarchy intent authority no longer matches the active provider.'),\n );\n }\n if ((intent.expectedScopeKey !== undefined && intent.expectedScopeKey !== snapshot.scopeKey)\n || (intent.expectedRevision !== undefined && intent.expectedRevision !== snapshot.revision)) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.view-authority-changed',\n new Error('Hierarchy intent no longer matches the rendered scope revision.'),\n );\n }\n const state = getState(snapshot.scopeKey);\n const operations = getCachedOperations(\n snapshot,\n provider,\n createOperationContext(snapshot, snapshot.activeId),\n 'view',\n );\n if (authorityToken !== startingAuthorityToken || activeProvider !== provider || activeScopeKey !== snapshot.scopeKey) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.provider-authority-changed',\n new Error('Hierarchy provider authority changed during operation discovery.'),\n );\n }\n const model: HierarchyViewModel = Object.freeze({\n providerId: provider.id,\n authorityToken: startingAuthorityToken,\n snapshot,\n state: snapshotViewStateCached(state, viewStateSnapshots),\n projection: getVisibleProjection(snapshot, state, provider),\n operations,\n });\n if (intent.type === 'search.change') {\n if (state.searchQuery === intent.value) return result(snapshot, false);\n state.searchQuery = intent.value;\n state.projectionRevision += 1;\n return commitViewMutation(snapshot);\n }\n if (intent.type === 'disclosure.toggle') {\n if (!snapshot.nodeById.has(intent.targetId) || !(snapshot.childrenByParentId.get(intent.targetId)?.length)) return result(snapshot, false);\n if (state.collapsedIds.has(intent.targetId)) state.collapsedIds.delete(intent.targetId); else state.collapsedIds.add(intent.targetId);\n state.projectionRevision += 1;\n return commitViewMutation(snapshot);\n }\n if (intent.type === 'disclosure.expand') {\n if (!snapshot.nodeById.has(intent.targetId)) return result(snapshot, false);\n if (!state.collapsedIds.delete(intent.targetId)) return result(snapshot, false);\n state.projectionRevision += 1;\n return commitViewMutation(snapshot);\n }\n if (intent.type === 'disclosure.reveal') {\n if (!snapshot.nodeById.has(intent.targetId)) return result(snapshot, false);\n let changed = false;\n let parentId = snapshot.nodeById.get(intent.targetId)?.parentId ?? null;\n while (parentId) {\n changed = state.collapsedIds.delete(parentId) || changed;\n parentId = snapshot.nodeById.get(parentId)?.parentId ?? null;\n }\n // Revealing an already-visible target is a successful idempotent\n // navigation. Callers use `ok` to distinguish a missing/stale target\n // from a no-op reveal before continuing with selection.\n if (!changed) return result(snapshot);\n state.projectionRevision += 1;\n return commitViewMutation(snapshot);\n }\n if (intent.type === 'selection' || intent.type === 'selection.set') {\n const resolved = intent.type === 'selection'\n ? resolveHierarchySelection({ snapshot, targetId: intent.targetId, modifier: intent.modifier, projection: model.projection, anchorId: state.selectionAnchorId })\n : normalizeExplicitSelection(snapshot, intent.selectedIds, intent.activeId, intent.anchorId);\n const previousAnchor = state.selectionAnchorId;\n const selectionGeneration = ++state.selectionGeneration;\n state.pendingSelectionGeneration = selectionGeneration;\n const operationResult = await execute(() => provider.applySelection(Object.freeze({\n ...createOperationContext(snapshot, intent.type === 'selection' ? intent.targetId : intent.activeId),\n selectedIds: resolved.selectedIds,\n activeId: resolved.activeId,\n })), snapshot);\n if (operationResult.changed) operationCache.delete(snapshot);\n let currentModel: HierarchyViewModel | null;\n try {\n currentModel = getViewModel();\n } catch (error) {\n if (state.pendingSelectionGeneration === selectionGeneration) state.pendingSelectionGeneration = null;\n return createPostOperationRefreshFailure(operationResult, snapshot.revision, error);\n }\n const current = currentModel?.snapshot ?? null;\n const reconciledResult = currentModel?.authorityToken === startingAuthorityToken\n ? reconcilePostOperationResult(operationResult, snapshot, current)\n : createProviderAuthorityChangedResult(operationResult, snapshot.revision, startingAuthorityToken, currentModel?.authorityToken ?? null);\n if (selectionGeneration === state.selectionGeneration\n && current?.scopeKey === snapshot.scopeKey\n && current.revision === reconciledResult.revision) {\n state.revision = current.revision;\n state.selectionAnchorId = reconciledResult.ok ? resolved.anchorId : previousAnchor;\n }\n if (state.pendingSelectionGeneration === selectionGeneration) state.pendingSelectionGeneration = null;\n try {\n if (current && activeProvider) currentModel = createViewModel(current, activeProvider);\n notifyAdapters(currentModel);\n } catch (error) {\n return createViewRenderFailure(reconciledResult, snapshot.revision, error);\n }\n return reconciledResult;\n }\n if (intent.type === 'rename.begin') {\n const node = snapshot.nodeById.get(intent.targetId);\n if (!snapshot.readonly && snapshot.capabilities.rename && node?.renamable && node.editorLocked !== true) {\n state.renameGeneration += 1;\n state.rename = { id: node.id, value: node.label };\n return commitViewMutation(snapshot);\n }\n return result(snapshot, false);\n }\n if (intent.type === 'rename.change') {\n if (!state.rename) return result(snapshot, false);\n state.renameGeneration += 1;\n state.rename.value = intent.value;\n return commitViewMutation(snapshot);\n }\n if (intent.type === 'rename.cancel') { state.renameGeneration += 1; state.rename = null; return commitViewMutation(snapshot); }\n if (intent.type === 'drag.begin') {\n const node = snapshot.nodeById.get(intent.targetId);\n if (!snapshot.readonly && snapshot.capabilities.reparent && node?.draggable && node.editorLocked !== true) {\n const dragIds = model.projection.getTopLevelSelection(\n snapshot.selectedIds.includes(intent.targetId) ? snapshot.selectedIds : [intent.targetId],\n ).filter(id => {\n const dragNode = snapshot.nodeById.get(id);\n return dragNode?.draggable === true && dragNode.editorLocked !== true;\n });\n if (dragIds.length === 0) return result(snapshot, false);\n state.dragGeneration += 1;\n state.dragId = intent.targetId;\n state.dragIds = Object.freeze(dragIds);\n return commitViewMutation(snapshot);\n }\n return result(snapshot, false);\n }\n if (intent.type === 'drag.cancel') { state.dragGeneration += 1; state.dragId = null; state.dragIds = []; return commitViewMutation(snapshot); }\n if (intent.type === 'context') return result(snapshot);\n\n let operationId: string | undefined;\n let operationInput: Readonly<Record<string, HierarchyJsonValue>> | undefined;\n let contextNodeId = snapshot.activeId;\n if (intent.type === 'primary') { operationId = snapshot.primaryOperationId; contextNodeId = intent.targetId; }\n if (intent.type === 'rename.commit' && state.rename) {\n operationId = 'hierarchy.node.rename'; operationInput = Object.freeze({ targetId: state.rename.id, name: state.rename.value }); contextNodeId = state.rename.id;\n }\n if (intent.type === 'drag.commit' && state.dragId) {\n operationId = intent.operationId;\n operationInput = Object.freeze({ ...(intent.input ?? {}), draggedIds: Object.freeze([...state.dragIds]) });\n contextNodeId = state.dragId;\n }\n if (intent.type === 'operation.execute') {\n operationId = intent.operationId;\n operationInput = intent.input;\n if (intent.context\n && (intent.context.scopeKey !== snapshot.scopeKey || intent.context.expectedRevision !== snapshot.revision)) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.stale',\n new Error('Hierarchy operation context no longer matches the active scope revision.'),\n );\n }\n contextNodeId = intent.context?.contextNodeId ?? contextNodeId;\n }\n if (!operationId) return result(snapshot, false);\n const renameGeneration = state.renameGeneration;\n const dragGeneration = state.dragGeneration;\n if (intent.type === 'rename.commit') state.pendingRenameGeneration = renameGeneration;\n if (intent.type === 'drag.commit') state.pendingDragGeneration = dragGeneration;\n const transientId = intent.type === 'rename.commit' ? state.rename?.id : intent.type === 'drag.commit' ? state.dragId : null;\n const invocationContext = intent.type === 'operation.execute' && intent.context\n ? intent.context\n : intent.type === 'drag.commit'\n ? Object.freeze({\n ...createOperationContext(snapshot, contextNodeId),\n targetIds: Object.freeze([...state.dragIds]),\n })\n : createOperationContext(snapshot, contextNodeId);\n try {\n const discoveredOperations = provider.listOperations(invocationContext);\n const discoveredSnapshot = synchronize();\n const providerAuthorityChanged = authorityToken !== startingAuthorityToken\n || activeProvider !== provider\n || activeScopeKey !== snapshot.scopeKey;\n const revisionChanged = discoveredSnapshot?.revision !== snapshot.revision;\n if (providerAuthorityChanged || revisionChanged) {\n try { notifyAdapters(getViewModel()); } catch { /* preserve the authority failure */ }\n return createFailureResult(\n discoveredSnapshot?.revision ?? snapshot.revision,\n providerAuthorityChanged\n ? 'hierarchy.operation.provider-authority-changed'\n : 'hierarchy.operation.stale',\n new Error(providerAuthorityChanged\n ? 'Hierarchy provider authority changed during operation discovery.'\n : 'Hierarchy scope revision changed during operation discovery.'),\n );\n }\n const operationDescriptor = discoveredOperations.find(operation => operation.id === operationId);\n if (!operationDescriptor) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.unavailable',\n new Error(`Hierarchy operation is unavailable for this context: ${operationId}`),\n );\n }\n if (operationDescriptor.disabledReason) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.disabled',\n new Error(operationDescriptor.disabledReason),\n );\n }\n const operationResult = await execute(() => provider.executeOperation(Object.freeze({\n ...invocationContext, operationId, ...(operationInput ? { input: operationInput } : {}),\n })), snapshot);\n if (operationResult.ok || operationResult.changed) operationCache.delete(snapshot);\n let currentModel: HierarchyViewModel | null;\n try {\n currentModel = getViewModel();\n } catch (error) {\n if (intent.type === 'rename.commit' && state.pendingRenameGeneration === renameGeneration) state.pendingRenameGeneration = null;\n return createPostOperationRefreshFailure(operationResult, snapshot.revision, error);\n }\n const current = currentModel?.snapshot ?? null;\n const reconciledResult = currentModel?.authorityToken === startingAuthorityToken\n ? reconcilePostOperationResult(operationResult, snapshot, current)\n : createProviderAuthorityChangedResult(operationResult, snapshot.revision, startingAuthorityToken, currentModel?.authorityToken ?? null);\n const stillCurrent = current?.scopeKey === snapshot.scopeKey && current.revision === reconciledResult.revision;\n if (stillCurrent && current) state.revision = current.revision;\n if (reconciledResult.ok && intent.type === 'rename.commit' && stillCurrent\n && state.renameGeneration === renameGeneration && state.rename?.id === transientId) state.rename = null;\n if (!reconciledResult.ok && reconciledResult.changed && stillCurrent && current && current.revision !== snapshot.revision) {\n if (intent.type === 'rename.commit' && state.renameGeneration === renameGeneration) state.rename = null;\n }\n if (intent.type === 'rename.commit' && state.pendingRenameGeneration === renameGeneration) state.pendingRenameGeneration = null;\n try {\n if (current && activeProvider) currentModel = createViewModel(current, activeProvider);\n notifyAdapters(currentModel);\n } catch (error) {\n return createViewRenderFailure(reconciledResult, snapshot.revision, error);\n }\n return reconciledResult;\n } finally {\n if (intent.type === 'rename.commit' && state.pendingRenameGeneration === renameGeneration) {\n state.pendingRenameGeneration = null;\n }\n if (intent.type === 'drag.commit' && state.pendingDragGeneration === dragGeneration) {\n state.pendingDragGeneration = null;\n if (state.dragGeneration === dragGeneration && state.dragId === transientId) {\n state.dragId = null;\n state.dragIds = [];\n try { render(); } catch { /* preserve the operation/discovery result */ }\n }\n }\n }\n } catch (error) {\n return createFailureResult(fallbackRevision, 'hierarchy.operation.failed', error);\n } finally {\n if (fallbackDragState\n && fallbackDragGeneration !== null\n && fallbackDragState.dragGeneration === fallbackDragGeneration\n && fallbackDragState.dragId === fallbackDragId) {\n fallbackDragState.pendingDragGeneration = null;\n fallbackDragState.dragId = null;\n fallbackDragState.dragIds = [];\n try { render(); } catch { /* preserve the terminal drag result */ }\n }\n }\n },\n };\n return kernel;\n}\n\nfunction assertUniqueProviderIds(providers: readonly HierarchyScopeProvider[]): void {\n const ids = new Set<string>();\n for (const provider of providers) {\n if (!provider.id.trim()) throw new Error('Hierarchy scope provider id is required.');\n if (ids.has(provider.id)) throw new Error(`Duplicate Hierarchy scope provider id: ${provider.id}.`);\n ids.add(provider.id);\n }\n}\n\nfunction cloneMutableViewStates(\n source: Map<string, MutableHierarchyViewState>,\n): Map<string, MutableHierarchyViewState> {\n return new Map([...source].map(([scopeKey, state]) => [scopeKey, {\n ...state,\n collapsedIds: new Set(state.collapsedIds),\n rename: state.rename ? { ...state.rename } : null,\n }]));\n}\n\nfunction replaceMapContents<TKey, TValue>(\n target: Map<TKey, TValue>,\n source: Map<TKey, TValue>,\n): void {\n target.clear();\n for (const [key, value] of source) target.set(key, value);\n}\n\ninterface HierarchyRevisionRecord {\n revision: number;\n snapshot: HierarchyScopeSnapshot;\n structureRevision: number;\n rootIds: readonly string[];\n nodeById: ReadonlyMap<string, HierarchyNodeSnapshot>;\n childrenByParentId: ReadonlyMap<string | null, readonly string[]>;\n}\n\nfunction cloneRevisionRecords(\n source: Map<HierarchyScopeProvider, Map<string, HierarchyRevisionRecord>>,\n): Map<HierarchyScopeProvider, Map<string, HierarchyRevisionRecord>> {\n return new Map([...source].map(([provider, records]) => [provider, new Map(records)]));\n}\n\nfunction getRevisionRecord(\n records: Map<HierarchyScopeProvider, Map<string, HierarchyRevisionRecord>>,\n provider: HierarchyScopeProvider | null,\n scopeKey: string,\n): HierarchyRevisionRecord | undefined {\n return provider ? records.get(provider)?.get(scopeKey) : undefined;\n}\n\nfunction assertMonotonicSnapshotRevision(\n records: Map<HierarchyScopeProvider, Map<string, HierarchyRevisionRecord>>,\n provider: HierarchyScopeProvider,\n snapshot: HierarchyScopeSnapshot,\n): void {\n let providerRecords = records.get(provider);\n if (!providerRecords) {\n providerRecords = new Map();\n records.set(provider, providerRecords);\n }\n const previous = providerRecords.get(snapshot.scopeKey);\n if (previous && snapshot.revision < previous.revision) {\n throw new Error(\n `Hierarchy scope ${snapshot.scopeKey} revision regressed from ${previous.revision} to ${snapshot.revision}.`,\n );\n }\n if (previous && snapshot.revision === previous.revision && !sameSnapshotAuthority(previous.snapshot, snapshot)) {\n throw new Error(\n `Hierarchy scope ${snapshot.scopeKey} reused revision ${snapshot.revision} for a different authority snapshot.`,\n );\n }\n if (previous && snapshot.structureRevision < previous.structureRevision) {\n throw new Error(\n `Hierarchy scope ${snapshot.scopeKey} structureRevision regressed from ${previous.structureRevision} to ${snapshot.structureRevision}.`,\n );\n }\n if (previous && snapshot.structureRevision === previous.structureRevision\n && (snapshot.rootIds !== previous.rootIds\n || snapshot.nodeById !== previous.nodeById\n || snapshot.childrenByParentId !== previous.childrenByParentId)) {\n throw new Error(\n `Hierarchy scope ${snapshot.scopeKey} must structurally share tree indexes for structureRevision ${snapshot.structureRevision}.`,\n );\n }\n if (!previous || snapshot.revision > previous.revision) {\n providerRecords.set(snapshot.scopeKey, {\n revision: snapshot.revision,\n snapshot,\n structureRevision: snapshot.structureRevision,\n rootIds: snapshot.rootIds,\n nodeById: snapshot.nodeById,\n childrenByParentId: snapshot.childrenByParentId,\n });\n }\n}\n\nfunction sameSnapshotAuthority(left: HierarchyScopeSnapshot, right: HierarchyScopeSnapshot): boolean {\n if (left === right) return true;\n return left.scopeType === right.scopeType\n && left.structureRevision === right.structureRevision\n && left.title === right.title\n && left.searchPlaceholder === right.searchPlaceholder\n && left.readonly === right.readonly\n && left.rootIds === right.rootIds\n && left.nodeById === right.nodeById\n && left.childrenByParentId === right.childrenByParentId\n && left.activeId === right.activeId\n && left.primaryOperationId === right.primaryOperationId\n && sameStringArray(left.selectedIds, right.selectedIds)\n && sameBooleanRecord(left.capabilities, right.capabilities);\n}\n\nfunction sameStringArray(left: readonly string[], right: readonly string[]): boolean {\n return left.length === right.length && left.every((value, index) => value === right[index]);\n}\n\nfunction sameBooleanRecord(left: Readonly<Record<string, boolean | undefined>>, right: Readonly<Record<string, boolean | undefined>>): boolean {\n const keys = new Set([...Object.keys(left), ...Object.keys(right)]);\n for (const key of keys) if (left[key] !== right[key]) return false;\n return true;\n}\n\ninterface MutableHierarchyViewState {\n collapsedIds: Set<string>;\n searchQuery: string;\n selectionAnchorId: string | null;\n rename: { id: string; value: string } | null;\n dragId: string | null;\n dragIds: readonly string[];\n revision: number | null;\n observedActiveId: string | null;\n sanitizedStructureRevision: number | null;\n projectionRevision: number;\n selectionGeneration: number;\n renameGeneration: number;\n dragGeneration: number;\n pendingSelectionGeneration: number | null;\n pendingRenameGeneration: number | null;\n pendingDragGeneration: number | null;\n}\n\nfunction createOperationContext(snapshot: HierarchyScopeSnapshot, contextNodeId: string | null): HierarchyOperationContext {\n return Object.freeze({ scopeKey: snapshot.scopeKey, expectedRevision: snapshot.revision, contextNodeId, targetIds: snapshot.selectedIds, activeId: snapshot.activeId });\n}\n\nfunction sanitizeViewState(state: MutableHierarchyViewState, snapshot: HierarchyScopeSnapshot): void {\n if (state.revision !== null && state.revision !== snapshot.revision) {\n if (state.pendingSelectionGeneration === null) state.selectionGeneration += 1;\n if (state.pendingRenameGeneration === null) {\n state.renameGeneration += 1;\n state.rename = null;\n }\n if (state.pendingDragGeneration === null) {\n state.dragGeneration += 1;\n state.dragId = null;\n state.dragIds = [];\n }\n }\n state.revision = snapshot.revision;\n if (state.observedActiveId !== snapshot.activeId) {\n let projectionChanged = false;\n if (state.collapsedIds.size > 0) {\n let parentId = snapshot.activeId ? snapshot.nodeById.get(snapshot.activeId)?.parentId ?? null : null;\n while (parentId) {\n projectionChanged = state.collapsedIds.delete(parentId) || projectionChanged;\n parentId = snapshot.nodeById.get(parentId)?.parentId ?? null;\n }\n }\n if (projectionChanged) state.projectionRevision += 1;\n state.observedActiveId = snapshot.activeId;\n }\n if (state.sanitizedStructureRevision !== snapshot.structureRevision) {\n if (state.selectionAnchorId && !snapshot.nodeById.has(state.selectionAnchorId)) state.selectionAnchorId = null;\n if (state.rename && !snapshot.nodeById.has(state.rename.id)) state.rename = null;\n if (state.dragId && !snapshot.nodeById.has(state.dragId)) state.dragId = null;\n state.dragIds = state.dragIds.filter(id => snapshot.nodeById.has(id));\n if (!state.dragId || state.dragIds.length === 0) { state.dragId = null; state.dragIds = []; }\n let removedCollapsed = false;\n for (const id of state.collapsedIds) {\n if (!snapshot.nodeById.has(id)) removedCollapsed = state.collapsedIds.delete(id) || removedCollapsed;\n }\n if (removedCollapsed) state.projectionRevision += 1;\n state.sanitizedStructureRevision = snapshot.structureRevision;\n }\n}\n\nfunction cancelTransientState(state: MutableHierarchyViewState | undefined): void {\n if (!state) return;\n state.selectionGeneration += 1;\n state.renameGeneration += 1;\n state.dragGeneration += 1;\n state.pendingSelectionGeneration = null;\n state.pendingRenameGeneration = null;\n state.pendingDragGeneration = null;\n state.selectionAnchorId = null;\n state.rename = null;\n state.dragId = null;\n state.dragIds = [];\n}\n\nfunction normalizeExplicitSelection(\n snapshot: HierarchyScopeSnapshot,\n ids: readonly string[],\n activeId: string | null,\n anchorId: string | null | undefined,\n): Readonly<{ selectedIds: readonly string[]; activeId: string | null; anchorId: string | null }> {\n const selectedIds = uniqueIds(ids).filter(id => snapshot.nodeById.get(id)?.selectable === true);\n const resolvedActiveId = activeId && selectedIds.includes(activeId) ? activeId : selectedIds[0] ?? null;\n const resolvedAnchorId = anchorId && snapshot.nodeById.has(anchorId) ? anchorId : resolvedActiveId;\n return Object.freeze({ selectedIds: Object.freeze(selectedIds), activeId: resolvedActiveId, anchorId: resolvedAnchorId });\n}\n\nfunction createVisibleProjection(\n snapshot: HierarchyScopeSnapshot,\n state: Pick<MutableHierarchyViewState, 'collapsedIds' | 'searchQuery' | 'projectionRevision'>,\n): HierarchyVisibleProjection {\n const query = state.searchQuery.trim().toLocaleLowerCase();\n const included = query ? new Set<string>() : null;\n if (included) {\n for (const node of snapshot.nodeById.values()) {\n if (!node.label.toLocaleLowerCase().includes(query) && !node.id.toLocaleLowerCase().includes(query)) continue;\n let cursor: HierarchyNodeSnapshot | undefined = node;\n while (cursor && !included.has(cursor.id)) {\n included.add(cursor.id);\n cursor = cursor.parentId ? snapshot.nodeById.get(cursor.parentId) : undefined;\n }\n }\n }\n const rows: HierarchyVisibleRow[] = [];\n const indexById = new Map<string, number>();\n const stack = [...snapshot.rootIds].reverse().map(id => ({ id, depth: 0 }));\n while (stack.length > 0) {\n const { id, depth } = stack.pop()!;\n const node = snapshot.nodeById.get(id);\n if (!node || (included && !included.has(id))) continue;\n indexById.set(id, rows.length);\n rows.push(Object.freeze({ id, depth }));\n if (!included && state.collapsedIds.has(id)) continue;\n const children = snapshot.childrenByParentId.get(id) ?? [];\n for (let index = children.length - 1; index >= 0; index -= 1) {\n stack.push({ id: children[index]!, depth: depth + 1 });\n }\n }\n const frozenRows = Object.freeze(rows);\n const emptyIds = Object.freeze([]) as readonly string[];\n const ancestorCache = new Map<string, readonly string[]>();\n const ancestorSetCache = new Map<string, ReadonlySet<string>>();\n const topLevelSelectionCache = new Map<string, readonly string[]>();\n const rememberCachedIds = (\n cache: Map<string, readonly string[]>,\n key: string,\n value: readonly string[],\n ): readonly string[] => {\n if (cache.size > 256) cache.clear();\n cache.set(key, value);\n return value;\n };\n const getAncestors = (id: string | null | undefined): readonly string[] => {\n if (!id) return emptyIds;\n const cached = ancestorCache.get(id);\n if (cached) return cached;\n const ancestors: string[] = [];\n let parentId = snapshot.nodeById.get(id)?.parentId ?? null;\n while (parentId) {\n ancestors.push(parentId);\n parentId = snapshot.nodeById.get(parentId)?.parentId ?? null;\n }\n return rememberCachedIds(ancestorCache, id, Object.freeze(ancestors));\n };\n const getAncestorSet = (id: string): ReadonlySet<string> => {\n const cached = ancestorSetCache.get(id);\n if (cached) return cached;\n if (ancestorSetCache.size > 256) ancestorSetCache.clear();\n const set = new Set(getAncestors(id));\n ancestorSetCache.set(id, set);\n return set;\n };\n const getTopLevelSelection = (ids: readonly string[]): readonly string[] => {\n const normalized = uniqueIds(ids).filter(id => snapshot.nodeById.has(id));\n if (normalized.length === 0) return emptyIds;\n const cacheKey = normalized.join('\\u0000');\n const cached = topLevelSelectionCache.get(cacheKey);\n if (cached) return cached;\n if (normalized.length === 1) return rememberCachedIds(topLevelSelectionCache, cacheKey, Object.freeze([...normalized]));\n const selectedIds = new Set(normalized);\n return rememberCachedIds(\n topLevelSelectionCache,\n cacheKey,\n Object.freeze(normalized.filter(id => !getAncestors(id).some(ancestorId => selectedIds.has(ancestorId)))),\n );\n };\n const isDescendant = (candidateId: string, ancestorId: string): boolean => (\n candidateId !== ancestorId && getAncestorSet(candidateId).has(ancestorId)\n );\n const resolveDrop = (input: HierarchyDropInput): HierarchyDropResolution => {\n const draggedIds = getTopLevelSelection(input.draggedIds);\n const invalid = (reason: string): HierarchyDropResolution => Object.freeze({\n ok: false, reason, placement: input.placement, draggedIds: Object.freeze([]),\n targetId: input.targetId ?? null, parentId: null, beforeId: null, afterId: null,\n });\n if (draggedIds.length === 0) return invalid('empty-drag');\n for (const id of draggedIds) {\n const node = snapshot.nodeById.get(id);\n if (!node?.draggable || node.editorLocked === true) return invalid('dragged-node-not-movable');\n }\n if (input.placement === 'root') {\n return Object.freeze({\n ok: true, placement: 'root', draggedIds, targetId: null, parentId: null, beforeId: null, afterId: null,\n });\n }\n const targetId = input.targetId ?? null;\n const target = targetId ? snapshot.nodeById.get(targetId) : undefined;\n if (!target) return invalid('missing-target');\n const draggedSet = new Set(draggedIds);\n if (draggedSet.has(target.id)) return invalid('cannot-drop-on-self');\n if (draggedIds.some(id => isDescendant(target.id, id))) return invalid('cannot-drop-on-descendant');\n if (input.placement === 'inside') {\n if (!target.canHaveChildren || target.editorLocked === true) return invalid('target-cannot-have-children');\n const children = (snapshot.childrenByParentId.get(target.id) ?? []).filter(id => !draggedSet.has(id));\n return Object.freeze({\n ok: true, placement: 'inside', draggedIds, targetId: target.id, parentId: target.id,\n beforeId: null, afterId: children[children.length - 1] ?? null,\n });\n }\n if (target.role === 'root') return invalid('cannot-reorder-root');\n if (target.editorLocked === true) return invalid('target-node-locked');\n const parent = target.parentId ? snapshot.nodeById.get(target.parentId) : undefined;\n if (parent?.editorLocked === true) return invalid('target-parent-locked');\n const siblings = (snapshot.childrenByParentId.get(target.parentId) ?? []).filter(id => !draggedSet.has(id));\n const targetIndex = siblings.indexOf(target.id);\n return Object.freeze({\n ok: true, placement: input.placement, draggedIds, targetId: target.id, parentId: target.parentId,\n beforeId: input.placement === 'before' ? target.id : siblings[targetIndex + 1] ?? null,\n afterId: input.placement === 'after' ? target.id : siblings[targetIndex - 1] ?? null,\n });\n };\n return Object.freeze({\n structureRevision: snapshot.structureRevision,\n projectionRevision: state.projectionRevision,\n totalCount: frozenRows.length,\n indexOf(id: string | null | undefined) { return id ? indexById.get(id) ?? -1 : -1; },\n getRow(index: number) { return Number.isInteger(index) && index >= 0 ? frozenRows[index] ?? null : null; },\n getWindow(start: number, count: number) {\n const from = Math.max(0, Math.trunc(start));\n const length = Math.max(0, Math.trunc(count));\n return Object.freeze(frozenRows.slice(from, from + length));\n },\n getRange(from: number, to: number) {\n const start = Math.max(0, Math.min(Math.trunc(from), Math.trunc(to)));\n const end = Math.min(frozenRows.length - 1, Math.max(Math.trunc(from), Math.trunc(to)));\n if (end < start) return Object.freeze([]);\n return Object.freeze(frozenRows.slice(start, end + 1).map(row => row.id));\n },\n getAncestors,\n getSelectableChildren(id: string | null | undefined) {\n if (!id) return Object.freeze([]);\n return Object.freeze((snapshot.childrenByParentId.get(id) ?? [])\n .filter(childId => snapshot.nodeById.get(childId)?.selectable === true));\n },\n getSelectableDescendants(id: string | null | undefined) {\n if (!id || !snapshot.nodeById.has(id)) return Object.freeze([]);\n const descendants: string[] = [];\n const stack = [...(snapshot.childrenByParentId.get(id) ?? [])].reverse();\n while (stack.length > 0) {\n const childId = stack.pop()!;\n if (snapshot.nodeById.get(childId)?.selectable === true) descendants.push(childId);\n const children = snapshot.childrenByParentId.get(childId) ?? [];\n for (let index = children.length - 1; index >= 0; index -= 1) stack.push(children[index]!);\n }\n return Object.freeze(descendants);\n },\n getTopLevelSelection,\n isDescendant,\n resolveDrop,\n });\n}\n\nfunction assertAcyclicAndReachable(\n nodes: ReadonlyMap<string, HierarchyNodeSnapshot>,\n children: ReadonlyMap<string | null, readonly string[]>,\n): void {\n const visited = new Set<string>();\n const stack = [...(children.get(null) ?? [])].reverse();\n while (stack.length > 0) {\n const id = stack.pop()!;\n if (visited.has(id)) throw new Error(`Hierarchy contains a parent cycle at node ${id}.`);\n visited.add(id);\n const childIds = children.get(id) ?? [];\n for (let index = childIds.length - 1; index >= 0; index -= 1) stack.push(childIds[index]!);\n }\n if (visited.size !== nodes.size) {\n const unreachable = [...nodes.keys()].find(id => !visited.has(id));\n throw new Error(`Hierarchy contains a parent cycle or unreachable node: ${unreachable ?? 'unknown'}.`);\n }\n}\n\nfunction snapshotOperationResult(value: HierarchyOperationResult): HierarchyOperationResult {\n if (!value || typeof value !== 'object' || typeof value.ok !== 'boolean' || !Number.isSafeInteger(value.revision)) {\n throw new Error('Hierarchy provider returned an invalid operation result.');\n }\n return Object.freeze({ ok: value.ok, changed: value.changed === true, revision: value.revision, diagnostics: Object.freeze([...(value.diagnostics ?? [])]) });\n}\n\nfunction createFailureResult(revision: number, code: string, error: unknown): HierarchyOperationResult {\n return Object.freeze({ ok: false, changed: false, revision, diagnostics: Object.freeze([Object.freeze({ code, message: error instanceof Error ? error.message : String(error), severity: 'error' as const })]) });\n}\n\nfunction createPostOperationRefreshFailure(\n operationResult: HierarchyOperationResult,\n fallbackRevision: number,\n error: unknown,\n): HierarchyOperationResult {\n const commitStatusUnknown = hasProviderExecutionFailure(operationResult);\n return Object.freeze({\n ok: false,\n // The provider operation may already have committed before its follow-up\n // snapshot failed. Preserve that fact instead of reporting a false no-op.\n changed: operationResult.changed || commitStatusUnknown,\n revision: Math.max(fallbackRevision, operationResult.revision),\n diagnostics: Object.freeze([\n ...operationResult.diagnostics,\n Object.freeze({\n code: 'hierarchy.snapshot.refresh-failed-after-operation',\n message: error instanceof Error ? error.message : String(error),\n severity: 'error' as const,\n }),\n ...(commitStatusUnknown ? [Object.freeze({\n code: 'hierarchy.operation.commit-status-unknown',\n message: 'The provider failed before the refreshed snapshot could confirm whether its authored change committed.',\n severity: 'error' as const,\n })] : []),\n ]),\n });\n}\n\nfunction createViewRenderFailure(\n operationResult: HierarchyOperationResult,\n fallbackRevision: number,\n error: unknown,\n): HierarchyOperationResult {\n const commitStatusUnknown = hasProviderExecutionFailure(operationResult);\n return Object.freeze({\n ok: false,\n changed: operationResult.changed || commitStatusUnknown,\n revision: Math.max(fallbackRevision, operationResult.revision),\n diagnostics: Object.freeze([\n ...operationResult.diagnostics,\n Object.freeze({\n code: 'hierarchy.view.render-failed-after-change',\n message: error instanceof Error ? error.message : String(error),\n severity: 'error' as const,\n }),\n ...(commitStatusUnknown ? [Object.freeze({\n code: 'hierarchy.operation.commit-status-unknown',\n message: 'The provider failed before the refreshed snapshot could confirm whether its authored change committed.',\n severity: 'error' as const,\n })] : []),\n ]),\n });\n}\n\nfunction reconcilePostOperationResult(\n operationResult: HierarchyOperationResult,\n startingSnapshot: HierarchyScopeSnapshot,\n currentSnapshot: HierarchyScopeSnapshot | null,\n): HierarchyOperationResult {\n if (!currentSnapshot || currentSnapshot.scopeKey !== startingSnapshot.scopeKey) {\n return createPostOperationRefreshFailure(\n operationResult,\n startingSnapshot.revision,\n new Error(`Hierarchy scope ${startingSnapshot.scopeKey} was unavailable after the operation.`),\n );\n }\n if (currentSnapshot.revision < operationResult.revision) {\n return createPostOperationRefreshFailure(\n operationResult,\n startingSnapshot.revision,\n new Error(\n `Hierarchy operation reported revision ${operationResult.revision}, but the refreshed scope is still at ${currentSnapshot.revision}.`,\n ),\n );\n }\n if (currentSnapshot.revision === operationResult.revision) return operationResult;\n\n const operationThrewAfterPossibleCommit = !operationResult.ok\n && operationResult.diagnostics.some(diagnostic => diagnostic.code === 'hierarchy.operation.failed')\n && currentSnapshot.revision > startingSnapshot.revision;\n return Object.freeze({\n ...operationResult,\n changed: operationResult.changed || operationThrewAfterPossibleCommit,\n revision: currentSnapshot.revision,\n diagnostics: Object.freeze([\n ...operationResult.diagnostics,\n Object.freeze({\n code: operationThrewAfterPossibleCommit\n ? 'hierarchy.operation.failed-after-revision-advanced'\n : 'hierarchy.operation.concurrent-revision-advanced',\n message: operationThrewAfterPossibleCommit\n ? `The operation failed after the scope advanced from revision ${startingSnapshot.revision} to ${currentSnapshot.revision}; the authored result may already be committed.`\n : `The scope advanced to revision ${currentSnapshot.revision} while the operation completed.`,\n severity: operationThrewAfterPossibleCommit ? 'error' as const : 'info' as const,\n }),\n ]),\n });\n}\n\nfunction createProviderAuthorityChangedResult(\n operationResult: HierarchyOperationResult,\n fallbackRevision: number,\n startingAuthorityToken: number,\n currentAuthorityToken: number | null,\n): HierarchyOperationResult {\n const commitStatusUnknown = hasProviderExecutionFailure(operationResult);\n return Object.freeze({\n ok: false,\n changed: operationResult.changed || commitStatusUnknown,\n revision: Math.max(fallbackRevision, operationResult.revision),\n diagnostics: Object.freeze([\n ...operationResult.diagnostics,\n Object.freeze({\n code: 'hierarchy.operation.provider-authority-changed',\n message: `Hierarchy provider authority changed from token ${startingAuthorityToken} to ${currentAuthorityToken ?? 'none'} while the operation was pending.`,\n severity: 'error' as const,\n }),\n ...(commitStatusUnknown ? [Object.freeze({\n code: 'hierarchy.operation.commit-status-unknown',\n message: 'Provider authority changed before the failed operation could confirm whether its authored change committed.',\n severity: 'error' as const,\n })] : []),\n ]),\n });\n}\n\nfunction hasProviderExecutionFailure(result: HierarchyOperationResult): boolean {\n return result.diagnostics.some(diagnostic => diagnostic.code === 'hierarchy.operation.failed');\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction snapshotNode(node: HierarchyNodeSnapshot): HierarchyNodeSnapshot {\n if (!node.id.trim()) throw new Error('Hierarchy node id is required.');\n return Object.freeze({ ...node, parentId: node.parentId ?? null, selectable: node.selectable === true, canHaveChildren: node.canHaveChildren === true, renamable: node.renamable === true, deletable: node.deletable === true, draggable: node.draggable === true });\n}\n\nfunction snapshotViewState(state: MutableHierarchyViewState): HierarchyViewState {\n return Object.freeze({ collapsedIds: new Set(state.collapsedIds), searchQuery: state.searchQuery, selectionAnchorId: state.selectionAnchorId, rename: state.rename ? Object.freeze({ ...state.rename }) : null, dragId: state.dragId, dragIds: Object.freeze([...state.dragIds]) });\n}\n\nfunction snapshotViewStateCached(\n state: MutableHierarchyViewState,\n cache: WeakMap<MutableHierarchyViewState, {\n projectionRevision: number;\n selectionGeneration: number;\n renameGeneration: number;\n dragGeneration: number;\n selectionAnchorId: string | null;\n renameId: string | null;\n renameValue: string | null;\n dragId: string | null;\n dragIds: readonly string[];\n snapshot: HierarchyViewState;\n }>,\n): HierarchyViewState {\n const cached = cache.get(state);\n if (cached\n && cached.projectionRevision === state.projectionRevision\n && cached.selectionGeneration === state.selectionGeneration\n && cached.renameGeneration === state.renameGeneration\n && cached.dragGeneration === state.dragGeneration\n && cached.selectionAnchorId === state.selectionAnchorId\n && cached.renameId === (state.rename?.id ?? null)\n && cached.renameValue === (state.rename?.value ?? null)\n && cached.dragId === state.dragId\n && cached.dragIds === state.dragIds) {\n return cached.snapshot;\n }\n const snapshot = Object.freeze({\n collapsedIds: cached?.projectionRevision === state.projectionRevision\n ? cached.snapshot.collapsedIds\n : new Set(state.collapsedIds),\n searchQuery: state.searchQuery,\n selectionAnchorId: state.selectionAnchorId,\n rename: state.rename ? Object.freeze({ ...state.rename }) : null,\n dragId: state.dragId,\n dragIds: cached?.dragGeneration === state.dragGeneration && cached.dragIds === state.dragIds\n ? cached.snapshot.dragIds\n : Object.freeze([...state.dragIds]),\n });\n cache.set(state, {\n projectionRevision: state.projectionRevision,\n selectionGeneration: state.selectionGeneration,\n renameGeneration: state.renameGeneration,\n dragGeneration: state.dragGeneration,\n selectionAnchorId: state.selectionAnchorId,\n renameId: state.rename?.id ?? null,\n renameValue: state.rename?.value ?? null,\n dragId: state.dragId,\n dragIds: state.dragIds,\n snapshot,\n });\n return snapshot;\n}\n\nfunction uniqueIds(ids: readonly string[]): string[] { return [...new Set(ids.filter(id => id.trim()))]; }\n\nfunction createReadonlyMapView<K, V>(source: ReadonlyMap<K, V>): ReadonlyMap<K, V> {\n let view: ReadonlyMap<K, V>;\n view = Object.freeze({\n get size() { return source.size; }, has(key: K) { return source.has(key); }, get(key: K) { return source.get(key); }, entries() { return source.entries(); }, keys() { return source.keys(); }, values() { return source.values(); },\n forEach(callback: (value: V, key: K, map: ReadonlyMap<K, V>) => void, thisArg?: unknown) { source.forEach((value, key) => callback.call(thisArg, value, key, view)); },\n [Symbol.iterator]() { return source[Symbol.iterator](); },\n });\n return view;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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","sourcesContent":["export const FPS_HIERARCHY_SURFACE_CONTRIBUTION_ID = 'fps.editor.surface.hierarchy' as const;\nexport const FPS_HIERARCHY_SURFACE_CONTRIBUTION_TYPE = 'fps.hierarchy.surface' as const;\n\nexport type HierarchyJsonValue = null | boolean | number | string | readonly HierarchyJsonValue[] | {\n readonly [key: string]: HierarchyJsonValue;\n};\nexport type HierarchySelectionModifier = 'replace' | 'toggle' | 'range';\nexport type HierarchyOperationEffect = 'selection' | 'authoring' | 'view' | 'runtime-transient';\nexport type HierarchyOperationTargetPolicy = 'none' | 'single' | 'multiple';\nexport type HierarchyOperationLegacyPlacement =\n | 'top'\n | 'after-primary'\n | 'after-create'\n | 'after-edit'\n | 'after-clipboard'\n | 'bottom';\n\nexport interface HierarchyAssetPickerInputPresentation {\n readonly kind: 'asset-picker';\n readonly field: string;\n readonly assetKinds: readonly string[];\n readonly multiple: boolean;\n readonly title: string;\n}\n\nexport type HierarchyOperationInputPresentation = HierarchyAssetPickerInputPresentation;\n\nexport interface HierarchyDiagnostic {\n readonly code: string;\n readonly message: string;\n readonly severity: 'info' | 'warning' | 'error';\n}\n\nexport interface HierarchyNodeSnapshot {\n readonly id: string;\n readonly label: string;\n readonly parentId: string | null;\n readonly role?: string;\n readonly icon?: string;\n readonly commandTargetId?: string;\n readonly selectable: boolean;\n readonly canHaveChildren: boolean;\n readonly renamable: boolean;\n readonly deletable: boolean;\n readonly draggable: boolean;\n readonly authoredEnabled?: boolean;\n readonly editorVisible?: boolean;\n readonly editorLocked?: boolean;\n}\n\nexport interface HierarchyScopeCapabilities {\n readonly clearSelection?: boolean;\n readonly rangeSelection?: boolean;\n readonly rename?: boolean;\n readonly reparent?: boolean;\n readonly authoredEnabled?: boolean;\n readonly editorVisibility?: boolean;\n readonly editorLock?: boolean;\n}\n\nexport interface HierarchyTreeSnapshot {\n readonly structureRevision: number;\n readonly rootIds: readonly string[];\n readonly nodeById: ReadonlyMap<string, HierarchyNodeSnapshot>;\n readonly childrenByParentId: ReadonlyMap<string | null, readonly string[]>;\n}\n\nexport interface HierarchyScopeSnapshot {\n readonly scopeKey: string;\n readonly scopeType: string;\n readonly revision: number;\n readonly structureRevision: number;\n readonly title: string;\n readonly searchPlaceholder: string;\n readonly readonly: boolean;\n readonly rootIds: readonly string[];\n readonly nodeById: ReadonlyMap<string, HierarchyNodeSnapshot>;\n readonly childrenByParentId: ReadonlyMap<string | null, readonly string[]>;\n readonly selectedIds: readonly string[];\n readonly activeId: string | null;\n readonly primaryOperationId?: string;\n readonly capabilities: Readonly<HierarchyScopeCapabilities>;\n}\n\nexport interface HierarchyVisibleRow {\n readonly id: string;\n readonly depth: number;\n}\n\nexport type HierarchyDropPlacement = 'inside' | 'before' | 'after' | 'root';\n\nexport interface HierarchyDropInput {\n readonly draggedIds: readonly string[];\n readonly targetId?: string | null;\n readonly placement: HierarchyDropPlacement;\n}\n\nexport interface HierarchyDropResolution {\n readonly ok: boolean;\n readonly reason?: string;\n readonly placement: HierarchyDropPlacement;\n readonly draggedIds: readonly string[];\n readonly targetId: string | null;\n readonly parentId: string | null;\n readonly beforeId: string | null;\n readonly afterId: string | null;\n}\n\nexport interface HierarchyVisibleProjection {\n readonly structureRevision: number;\n readonly projectionRevision: number;\n readonly totalCount: number;\n indexOf(id: string | null | undefined): number;\n getRow(index: number): HierarchyVisibleRow | null;\n getWindow(start: number, count: number): readonly HierarchyVisibleRow[];\n getRange(from: number, to: number): readonly string[];\n getAncestors(id: string | null | undefined): readonly string[];\n getSelectableChildren(id: string | null | undefined): readonly string[];\n getSelectableDescendants(id: string | null | undefined): readonly string[];\n getTopLevelSelection(ids: readonly string[]): readonly string[];\n isDescendant(candidateId: string, ancestorId: string): boolean;\n resolveDrop(input: HierarchyDropInput): HierarchyDropResolution;\n}\n\nexport interface HierarchyOperationDescriptor {\n readonly id: string;\n readonly label: string;\n readonly description?: string;\n readonly effect: HierarchyOperationEffect;\n readonly targetPolicy: HierarchyOperationTargetPolicy;\n readonly menu?: false | Readonly<{\n path?: readonly Readonly<{ id: string; label: string; order?: number }>[];\n group?: string;\n order?: number;\n }>;\n /**\n * @deprecated Use `menu.path`, `menu.group`, and `menu.order` for new\n * recursive context menu presentation. `placement` is retained as a\n * compatibility bridge for project-side operation contributions that were\n * authored before nested Hierarchy menus.\n */\n readonly placement?: HierarchyOperationLegacyPlacement;\n readonly shortcut?: string;\n readonly shortcutScope?: 'editor' | 'hierarchy';\n readonly danger?: boolean;\n readonly disabledReason?: string;\n readonly payload?: Readonly<Record<string, HierarchyJsonValue>>;\n readonly inputPresentation?: HierarchyOperationInputPresentation;\n}\n\nexport interface HierarchyOperationContext {\n readonly scopeKey: string;\n readonly expectedRevision: number;\n readonly contextNodeId: string | null;\n readonly targetIds: readonly string[];\n readonly activeId: string | null;\n}\n\nexport interface HierarchyOperationInvocation extends HierarchyOperationContext {\n readonly operationId: string;\n readonly input?: Readonly<Record<string, HierarchyJsonValue>>;\n}\n\nexport interface HierarchyOperationResult {\n readonly ok: boolean;\n readonly changed: boolean;\n readonly revision: number;\n readonly diagnostics: readonly HierarchyDiagnostic[];\n}\n\nexport interface HierarchySelectionChange extends HierarchyOperationContext {\n readonly selectedIds: readonly string[];\n readonly activeId: string | null;\n}\n\nexport interface HierarchyScopeProvider {\n readonly id: string;\n readonly priority?: number;\n canProvide(): boolean;\n getSnapshot(): HierarchyScopeSnapshot | null;\n applySelection(input: HierarchySelectionChange): HierarchyOperationResult | Promise<HierarchyOperationResult>;\n listOperations(context: HierarchyOperationContext): readonly HierarchyOperationDescriptor[];\n executeOperation(invocation: HierarchyOperationInvocation): HierarchyOperationResult | Promise<HierarchyOperationResult>;\n}\n\ntype HierarchyIntentPayload =\n | { readonly type: 'selection'; readonly targetId: string | null; readonly modifier: HierarchySelectionModifier }\n | { readonly type: 'selection.set'; readonly selectedIds: readonly string[]; readonly activeId: string | null; readonly anchorId?: string | null }\n | { readonly type: 'primary'; readonly targetId: string }\n | { readonly type: 'context'; readonly targetId: string | null }\n | { readonly type: 'disclosure.toggle'; readonly targetId: string }\n | { readonly type: 'disclosure.expand'; readonly targetId: string }\n | { readonly type: 'disclosure.reveal'; readonly targetId: string }\n | { readonly type: 'search.change'; readonly value: string }\n | { readonly type: 'rename.begin'; readonly targetId: string }\n | { readonly type: 'rename.change'; readonly value: string }\n | { readonly type: 'rename.commit' }\n | { readonly type: 'rename.cancel' }\n | { readonly type: 'drag.begin'; readonly targetId: string }\n | { readonly type: 'drag.commit'; readonly operationId: string; readonly input?: Readonly<Record<string, HierarchyJsonValue>> }\n | { readonly type: 'drag.cancel' }\n | {\n readonly type: 'operation.execute';\n readonly operationId: string;\n readonly context?: HierarchyOperationContext;\n readonly input?: Readonly<Record<string, HierarchyJsonValue>>;\n };\n\nexport type HierarchyIntent = HierarchyIntentPayload & {\n readonly expectedAuthorityToken?: number;\n readonly expectedScopeKey?: string;\n readonly expectedRevision?: number;\n};\n\nexport type HierarchyViewIntent = HierarchyIntent & {\n readonly expectedAuthorityToken: number;\n readonly expectedScopeKey: string;\n readonly expectedRevision: number;\n};\n\nexport interface HierarchyViewState {\n readonly collapsedIds: ReadonlySet<string>;\n readonly searchQuery: string;\n readonly selectionAnchorId: string | null;\n readonly rename: Readonly<{ id: string; value: string }> | null;\n readonly dragId: string | null;\n readonly dragIds: readonly string[];\n}\n\nexport interface HierarchyViewModel {\n readonly providerId: string;\n readonly authorityToken: number;\n readonly snapshot: HierarchyScopeSnapshot;\n readonly state: HierarchyViewState;\n readonly projection: HierarchyVisibleProjection;\n readonly operations: readonly HierarchyOperationDescriptor[];\n}\n\nexport interface HierarchyViewAdapter {\n render(model: HierarchyViewModel | null): void;\n bind(dispatch: (intent: HierarchyViewIntent) => Promise<HierarchyOperationResult>): () => void;\n}\n\nexport interface HierarchyKernel {\n setProviders(providers: readonly HierarchyScopeProvider[]): void;\n getProvider(): HierarchyScopeProvider | null;\n getViewModel(): HierarchyViewModel | null;\n patchNodeLabels(labels: Readonly<Record<string, string>>): HierarchyScopeSnapshot | null;\n listOperations(context: HierarchyOperationContext, expectedAuthorityToken?: number): readonly HierarchyOperationDescriptor[];\n attachView(adapter: HierarchyViewAdapter): () => void;\n refresh(): void;\n dispatch(intent: HierarchyIntent): Promise<HierarchyOperationResult>;\n}\n\nexport interface HierarchySurfaceContribution {\n readonly type: typeof FPS_HIERARCHY_SURFACE_CONTRIBUTION_TYPE;\n readonly id: 'hierarchy';\n readonly title: string;\n readonly area: 'left';\n readonly toolbar: 'scoped-hierarchy';\n createKernel(): HierarchyKernel;\n}\n\nexport function createHierarchySurfaceContribution(): HierarchySurfaceContribution {\n return Object.freeze({\n type: FPS_HIERARCHY_SURFACE_CONTRIBUTION_TYPE,\n id: 'hierarchy',\n title: '层级',\n area: 'left',\n toolbar: 'scoped-hierarchy',\n createKernel: createHierarchyKernel,\n });\n}\n\nexport function isHierarchySurfaceContribution(value: unknown): value is HierarchySurfaceContribution {\n if (!value || typeof value !== 'object') return false;\n const candidate = value as Partial<HierarchySurfaceContribution>;\n return candidate.type === FPS_HIERARCHY_SURFACE_CONTRIBUTION_TYPE\n && candidate.id === 'hierarchy'\n && candidate.area === 'left'\n && typeof candidate.createKernel === 'function';\n}\n\nexport function createHierarchyScopeSnapshot(input: {\n readonly scopeKey: string;\n readonly scopeType: string;\n readonly revision: number;\n readonly title: string;\n readonly searchPlaceholder?: string;\n readonly readonly?: boolean;\n readonly structureRevision?: number;\n readonly nodes?: readonly HierarchyNodeSnapshot[];\n readonly tree?: HierarchyTreeSnapshot;\n readonly selectedIds?: readonly string[];\n readonly activeId?: string | null;\n readonly primaryOperationId?: string;\n readonly capabilities?: HierarchyScopeCapabilities;\n}): HierarchyScopeSnapshot {\n if (!input.scopeKey.trim()) throw new Error('Hierarchy scopeKey is required.');\n if (!input.scopeType.trim()) throw new Error('Hierarchy scopeType is required.');\n if (!Number.isSafeInteger(input.revision) || input.revision < 0) throw new Error('Hierarchy revision must be a non-negative safe integer.');\n const tree = input.tree ?? createHierarchyTreeSnapshot({\n structureRevision: input.structureRevision ?? input.revision,\n nodes: input.nodes ?? [],\n });\n if (input.tree && input.nodes) throw new Error('Hierarchy snapshot accepts either tree or nodes, not both.');\n const nodeById = tree.nodeById;\n const childrenByParentId = tree.childrenByParentId;\n const selectedIds = uniqueIds(input.selectedIds ?? []).filter(id => nodeById.get(id)?.selectable === true);\n const activeId = input.activeId && selectedIds.includes(input.activeId) ? input.activeId : selectedIds[0] ?? null;\n return Object.freeze({\n scopeKey: input.scopeKey,\n scopeType: input.scopeType,\n revision: input.revision,\n structureRevision: tree.structureRevision,\n title: input.title,\n searchPlaceholder: input.searchPlaceholder ?? 'Filter hierarchy',\n readonly: input.readonly === true,\n rootIds: tree.rootIds,\n nodeById: tree.nodeById,\n childrenByParentId: tree.childrenByParentId,\n selectedIds: Object.freeze(selectedIds),\n activeId,\n ...(input.primaryOperationId ? { primaryOperationId: input.primaryOperationId } : {}),\n capabilities: Object.freeze({ ...input.capabilities }),\n });\n}\n\nexport function createHierarchyTreeSnapshot(input: {\n readonly structureRevision: number;\n readonly nodes: readonly HierarchyNodeSnapshot[];\n}): HierarchyTreeSnapshot {\n if (!Number.isSafeInteger(input.structureRevision) || input.structureRevision < 0) {\n throw new Error('Hierarchy structureRevision must be a non-negative safe integer.');\n }\n const nodeById = new Map<string, HierarchyNodeSnapshot>();\n const children = new Map<string | null, string[]>();\n for (const candidate of input.nodes) {\n const node = snapshotNode(candidate);\n if (nodeById.has(node.id)) throw new Error(`Duplicate Hierarchy node id: ${node.id}`);\n nodeById.set(node.id, node);\n const siblings = children.get(node.parentId) ?? [];\n siblings.push(node.id);\n children.set(node.parentId, siblings);\n }\n for (const node of nodeById.values()) {\n if (node.parentId !== null && !nodeById.has(node.parentId)) {\n throw new Error(`Hierarchy node ${node.id} references missing parent ${node.parentId}.`);\n }\n }\n assertAcyclicAndReachable(nodeById, children);\n const childrenByParentId = new Map<string | null, readonly string[]>();\n for (const [parentId, ids] of children) childrenByParentId.set(parentId, Object.freeze([...ids]));\n return Object.freeze({\n structureRevision: input.structureRevision,\n rootIds: Object.freeze([...(childrenByParentId.get(null) ?? [])]),\n nodeById: createReadonlyMapView(nodeById),\n childrenByParentId: createReadonlyMapView(childrenByParentId),\n });\n}\n\nexport function resolveHierarchySelection(input: {\n readonly snapshot: HierarchyScopeSnapshot;\n readonly targetId: string | null;\n readonly modifier: HierarchySelectionModifier;\n readonly projection: HierarchyVisibleProjection;\n readonly anchorId: string | null;\n}): Readonly<{ selectedIds: readonly string[]; activeId: string | null; anchorId: string | null }> {\n const { snapshot, targetId, modifier } = input;\n if (targetId === null) {\n if (!snapshot.capabilities.clearSelection) {\n return Object.freeze({ selectedIds: snapshot.selectedIds, activeId: snapshot.activeId, anchorId: input.anchorId });\n }\n return Object.freeze({ selectedIds: Object.freeze([]), activeId: null, anchorId: null });\n }\n if (snapshot.nodeById.get(targetId)?.selectable !== true) {\n return Object.freeze({ selectedIds: snapshot.selectedIds, activeId: snapshot.activeId, anchorId: input.anchorId });\n }\n if (modifier === 'toggle') {\n const selected = new Set(snapshot.selectedIds);\n if (selected.has(targetId)) selected.delete(targetId); else selected.add(targetId);\n const selectedIds = [...selected];\n return Object.freeze({\n selectedIds: Object.freeze(selectedIds),\n activeId: selected.has(targetId) ? targetId : selectedIds[selectedIds.length - 1] ?? null,\n anchorId: targetId,\n });\n }\n if (modifier === 'range' && snapshot.capabilities.rangeSelection && input.anchorId) {\n const start = input.projection.indexOf(input.anchorId);\n const end = input.projection.indexOf(targetId);\n if (start >= 0 && end >= 0) {\n const [from, to] = start <= end ? [start, end] : [end, start];\n const selectedIds = input.projection.getRange(from, to)\n .filter(id => snapshot.nodeById.get(id)?.selectable === true);\n return Object.freeze({ selectedIds: Object.freeze(selectedIds), activeId: targetId, anchorId: input.anchorId });\n }\n }\n return Object.freeze({ selectedIds: Object.freeze([targetId]), activeId: targetId, anchorId: targetId });\n}\n\nexport function createHierarchyVisibleProjection(input: {\n readonly snapshot: HierarchyScopeSnapshot;\n readonly collapsedIds?: ReadonlySet<string>;\n readonly searchQuery?: string;\n readonly projectionRevision?: number;\n}): HierarchyVisibleProjection {\n return createVisibleProjection(input.snapshot, {\n collapsedIds: new Set(input.collapsedIds ?? []),\n searchQuery: input.searchQuery ?? '',\n projectionRevision: input.projectionRevision ?? 0,\n });\n}\n\nexport function createHierarchyKernel(): HierarchyKernel {\n const viewStates = new Map<string, MutableHierarchyViewState>();\n const revisionRecords = new Map<HierarchyScopeProvider, Map<string, HierarchyRevisionRecord>>();\n const projections = new Map<string, {\n provider: HierarchyScopeProvider;\n structureRevision: number;\n projectionRevision: number;\n projection: HierarchyVisibleProjection;\n }>();\n const viewStateSnapshots = new WeakMap<MutableHierarchyViewState, {\n projectionRevision: number;\n selectionGeneration: number;\n renameGeneration: number;\n dragGeneration: number;\n selectionAnchorId: string | null;\n renameId: string | null;\n renameValue: string | null;\n dragId: string | null;\n dragIds: readonly string[];\n snapshot: HierarchyViewState;\n }>();\n const operationCache = new WeakMap<\n HierarchyScopeSnapshot,\n WeakMap<HierarchyScopeProvider, Map<string, readonly HierarchyOperationDescriptor[]>>\n >();\n const labelPresentations = new Map<string, {\n provider: HierarchyScopeProvider;\n structureRevision: number;\n labels: Map<string, string>;\n sourceSnapshot: HierarchyScopeSnapshot | null;\n snapshot: HierarchyScopeSnapshot | null;\n }>();\n const adapters = new Set<HierarchyViewAdapter>();\n let providers: readonly HierarchyScopeProvider[] = [];\n let activeProvider: HierarchyScopeProvider | null = null;\n let activeScopeKey: string | null = null;\n let authorityToken = 0;\n\n const resolveProvider = (\n candidatesSource = providers,\n ): { provider: HierarchyScopeProvider; snapshot: HierarchyScopeSnapshot } | null => {\n const candidates = candidatesSource\n .flatMap(provider => {\n if (!provider.canProvide()) return [];\n const snapshot = provider.getSnapshot();\n return snapshot ? [{ provider, snapshot }] : [];\n })\n .sort((a, b) => (b.provider.priority ?? 0) - (a.provider.priority ?? 0)\n || a.provider.id.localeCompare(b.provider.id));\n if (candidates.length > 1\n && (candidates[0]!.provider.priority ?? 0) === (candidates[1]!.provider.priority ?? 0)) {\n throw new Error(`Ambiguous Hierarchy scope providers: ${candidates[0]!.provider.id}, ${candidates[1]!.provider.id}.`);\n }\n return candidates[0] ?? null;\n };\n\n const synchronize = (): HierarchyScopeSnapshot | null => {\n const resolved = resolveProvider();\n const nextProvider = resolved?.provider ?? null;\n const sourceSnapshot = resolved?.snapshot ?? null;\n if (sourceSnapshot && nextProvider) assertMonotonicSnapshotRevision(revisionRecords, nextProvider, sourceSnapshot);\n const nextScopeKey = sourceSnapshot?.scopeKey ?? null;\n if (activeProvider !== nextProvider || activeScopeKey !== nextScopeKey) {\n if (activeScopeKey) cancelTransientState(viewStates.get(activeScopeKey));\n if (nextScopeKey) cancelTransientState(viewStates.get(nextScopeKey));\n activeProvider = nextProvider;\n activeScopeKey = nextScopeKey;\n authorityToken += 1;\n }\n const snapshot = sourceSnapshot && nextProvider\n ? applyHierarchyLabelPresentation(labelPresentations, nextProvider, sourceSnapshot)\n : null;\n if (snapshot) sanitizeViewState(getState(snapshot.scopeKey), snapshot);\n return snapshot;\n };\n\n const getState = (scopeKey: string): MutableHierarchyViewState => {\n const current = viewStates.get(scopeKey);\n if (current) return current;\n const created: MutableHierarchyViewState = {\n collapsedIds: new Set(), searchQuery: '', selectionAnchorId: null, rename: null, dragId: null, revision: null,\n dragIds: [],\n observedActiveId: null,\n sanitizedStructureRevision: null,\n projectionRevision: 0,\n selectionGeneration: 0, renameGeneration: 0, dragGeneration: 0,\n pendingSelectionGeneration: null, pendingRenameGeneration: null, pendingDragGeneration: null,\n };\n viewStates.set(scopeKey, created);\n return created;\n };\n\n const createViewModel = (\n snapshot: HierarchyScopeSnapshot,\n provider: HierarchyScopeProvider,\n ): HierarchyViewModel => {\n const state = getState(snapshot.scopeKey);\n const projection = getVisibleProjection(snapshot, state, provider);\n const operations = getCachedOperations(snapshot, provider, createOperationContext(snapshot, snapshot.activeId), 'view');\n return Object.freeze({\n providerId: provider.id,\n authorityToken,\n snapshot,\n state: snapshotViewStateCached(state, viewStateSnapshots),\n projection,\n operations,\n });\n };\n\n const getCachedOperations = (\n snapshot: HierarchyScopeSnapshot,\n provider: HierarchyScopeProvider,\n context: HierarchyOperationContext,\n cacheNamespace: 'view' | 'explicit',\n ): readonly HierarchyOperationDescriptor[] => {\n let byProvider = operationCache.get(snapshot);\n if (!byProvider) {\n byProvider = new WeakMap();\n operationCache.set(snapshot, byProvider);\n }\n let byContext = byProvider.get(provider);\n if (!byContext) {\n byContext = new Map();\n byProvider.set(provider, byContext);\n }\n const key = `${cacheNamespace}\\u0000${context.contextNodeId ?? ''}\\u0000${context.activeId ?? ''}\\u0000${context.targetIds.join('\\u0001')}`;\n const cached = byContext.get(key);\n if (cached) return cached;\n const startingAuthorityToken = authorityToken;\n const operations = Object.freeze([...provider.listOperations(context)]);\n const current = synchronize();\n if (authorityToken !== startingAuthorityToken\n || activeProvider !== provider\n || current?.scopeKey !== snapshot.scopeKey\n || current.revision !== snapshot.revision) return Object.freeze([]);\n byContext.set(key, operations);\n return operations;\n };\n\n const getVisibleProjection = (\n snapshot: HierarchyScopeSnapshot,\n state: MutableHierarchyViewState,\n provider: HierarchyScopeProvider,\n ): HierarchyVisibleProjection => {\n const cached = projections.get(snapshot.scopeKey);\n if (cached\n && cached.provider === provider\n && cached.structureRevision === snapshot.structureRevision\n && cached.projectionRevision === state.projectionRevision) return cached.projection;\n const projection = createVisibleProjection(snapshot, state);\n projections.set(snapshot.scopeKey, {\n provider,\n structureRevision: snapshot.structureRevision,\n projectionRevision: state.projectionRevision,\n projection,\n });\n return projection;\n };\n\n const getViewModel = (): HierarchyViewModel | null => {\n for (let attempt = 0; attempt <= providers.length + 1; attempt += 1) {\n const snapshot = synchronize();\n const provider = activeProvider;\n if (!snapshot || !provider) return null;\n const startingAuthorityToken = authorityToken;\n const model = createViewModel(snapshot, provider);\n if (authorityToken === startingAuthorityToken\n && activeProvider === provider\n && activeScopeKey === snapshot.scopeKey) return model;\n }\n throw new Error('Hierarchy provider authority did not stabilize during operation discovery.');\n };\n\n const notifyAdapters = (model: HierarchyViewModel | null): void => {\n const errors: unknown[] = [];\n for (const adapter of adapters) {\n try {\n adapter.render(model);\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length > 0) throw errors[0];\n };\n\n const render = (): void => {\n notifyAdapters(getViewModel());\n };\n\n const result = (snapshot: HierarchyScopeSnapshot | null, ok = true): HierarchyOperationResult => Object.freeze({\n ok,\n changed: false,\n revision: snapshot?.revision ?? 0,\n diagnostics: Object.freeze([]),\n });\n\n const commitViewMutation = (snapshot: HierarchyScopeSnapshot): HierarchyOperationResult => {\n const committed = Object.freeze({\n ok: true,\n changed: true,\n revision: snapshot.revision,\n diagnostics: Object.freeze([]),\n });\n try {\n render();\n return committed;\n } catch (error) {\n return createViewRenderFailure(committed, snapshot.revision, error);\n }\n };\n\n const execute = async (\n operation: () => HierarchyOperationResult | Promise<HierarchyOperationResult>,\n snapshot: HierarchyScopeSnapshot,\n ): Promise<HierarchyOperationResult> => {\n try {\n const operationResult = snapshotOperationResult(await operation());\n if (operationResult.revision < snapshot.revision) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.revision-regressed',\n new Error(`Hierarchy operation revision regressed from ${snapshot.revision} to ${operationResult.revision}.`),\n );\n }\n return operationResult;\n } catch (error) {\n return createFailureResult(snapshot.revision, 'hierarchy.operation.failed', error);\n }\n };\n\n const kernel: HierarchyKernel = {\n setProviders(nextProviders) {\n const next = Object.freeze([...nextProviders]);\n assertUniqueProviderIds(next);\n const previousProviders = providers;\n const previousActiveProvider = activeProvider;\n const previousActiveScopeKey = activeScopeKey;\n const previousAuthorityToken = authorityToken;\n const previousRevisionRecords = cloneRevisionRecords(revisionRecords);\n const previousViewStates = cloneMutableViewStates(viewStates);\n const previousProjections = new Map(projections);\n const previousLabelPresentations = cloneHierarchyLabelPresentations(labelPresentations);\n let model: HierarchyViewModel | null;\n try {\n providers = next;\n model = getViewModel();\n } catch (error) {\n providers = previousProviders;\n activeProvider = previousActiveProvider;\n activeScopeKey = previousActiveScopeKey;\n authorityToken = previousAuthorityToken;\n replaceMapContents(revisionRecords, previousRevisionRecords);\n replaceMapContents(viewStates, previousViewStates);\n replaceMapContents(projections, previousProjections);\n replaceMapContents(labelPresentations, previousLabelPresentations);\n throw error;\n }\n for (const provider of revisionRecords.keys()) {\n if (!next.includes(provider)) revisionRecords.delete(provider);\n }\n for (const [scopeKey, presentation] of labelPresentations) {\n if (!next.includes(presentation.provider)) labelPresentations.delete(scopeKey);\n }\n // Provider authority is committed before notifying UI edges. A failing\n // adapter cannot roll the authoritative provider set back underneath an\n // adapter that has already observed the new model.\n notifyAdapters(model);\n },\n getProvider() { synchronize(); return activeProvider; },\n getViewModel,\n patchNodeLabels(labels) {\n const snapshot = synchronize();\n const provider = activeProvider;\n if (!snapshot || !provider) return null;\n let presentation = labelPresentations.get(snapshot.scopeKey);\n if (presentation?.provider !== provider\n || presentation.structureRevision !== snapshot.structureRevision) {\n presentation = {\n provider,\n structureRevision: snapshot.structureRevision,\n labels: new Map(),\n sourceSnapshot: null,\n snapshot: null,\n };\n labelPresentations.set(snapshot.scopeKey, presentation);\n }\n for (const [id, label] of Object.entries(labels)) {\n if (!label.trim() || !snapshot.nodeById.has(id)) return null;\n }\n for (const [id, label] of Object.entries(labels)) presentation.labels.set(id, label);\n presentation.sourceSnapshot = null;\n presentation.snapshot = null;\n return applyHierarchyLabelPresentation(labelPresentations, provider, snapshot);\n },\n listOperations(context, expectedAuthorityToken) {\n const previousProvider = activeProvider;\n const previousScopeKey = activeScopeKey;\n const snapshot = synchronize();\n const provider = activeProvider;\n if (previousProvider !== provider || previousScopeKey !== activeScopeKey) {\n notifyAdapters(getViewModel());\n }\n if (!snapshot || !provider\n || (expectedAuthorityToken !== undefined && expectedAuthorityToken !== authorityToken)\n || context.scopeKey !== snapshot.scopeKey\n || context.expectedRevision !== snapshot.revision) return Object.freeze([]);\n const operations = getCachedOperations(snapshot, provider, context, 'explicit');\n if (activeProvider !== provider || activeScopeKey !== snapshot.scopeKey) {\n notifyAdapters(getViewModel());\n return Object.freeze([]);\n }\n return operations;\n },\n attachView(adapter) {\n let unbind: (() => void) | null = null;\n try {\n unbind = adapter.bind(intent => kernel.dispatch(intent));\n adapters.add(adapter);\n adapter.render(getViewModel());\n } catch (error) {\n adapters.delete(adapter);\n if (unbind) {\n try {\n unbind();\n } catch (cleanupError) {\n const initializationError = new Error(\n `Hierarchy ViewAdapter initialization failed: ${formatError(error)}; cleanup failed: ${formatError(cleanupError)}`,\n );\n Object.assign(initializationError, { retryCleanup: () => unbind?.() });\n throw initializationError;\n }\n }\n throw error;\n }\n let active = true;\n return () => {\n if (!active) return;\n unbind?.();\n adapters.delete(adapter);\n active = false;\n };\n },\n refresh: render,\n async dispatch(intent) {\n let fallbackRevision = activeScopeKey\n ? getRevisionRecord(revisionRecords, activeProvider, activeScopeKey)?.revision\n ?? viewStates.get(activeScopeKey)?.revision ?? 0\n : 0;\n const fallbackDragState = intent.type === 'drag.commit' && activeScopeKey\n ? viewStates.get(activeScopeKey) ?? null\n : null;\n const fallbackDragGeneration = fallbackDragState?.dragGeneration ?? null;\n const fallbackDragId = fallbackDragState?.dragId ?? null;\n try {\n const snapshot = synchronize();\n fallbackRevision = snapshot?.revision ?? 0;\n const provider = activeProvider;\n const startingAuthorityToken = authorityToken;\n if (!snapshot || !provider) {\n return createFailureResult(\n snapshot?.revision ?? 0,\n 'hierarchy.scope.unavailable',\n new Error('No active Hierarchy scope provider is available.'),\n );\n }\n if (intent.expectedAuthorityToken !== undefined && intent.expectedAuthorityToken !== startingAuthorityToken) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.provider-authority-changed',\n new Error('Hierarchy intent authority no longer matches the active provider.'),\n );\n }\n if ((intent.expectedScopeKey !== undefined && intent.expectedScopeKey !== snapshot.scopeKey)\n || (intent.expectedRevision !== undefined && intent.expectedRevision !== snapshot.revision)) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.view-authority-changed',\n new Error('Hierarchy intent no longer matches the rendered scope revision.'),\n );\n }\n const state = getState(snapshot.scopeKey);\n const operations = getCachedOperations(\n snapshot,\n provider,\n createOperationContext(snapshot, snapshot.activeId),\n 'view',\n );\n if (authorityToken !== startingAuthorityToken || activeProvider !== provider || activeScopeKey !== snapshot.scopeKey) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.provider-authority-changed',\n new Error('Hierarchy provider authority changed during operation discovery.'),\n );\n }\n const model: HierarchyViewModel = Object.freeze({\n providerId: provider.id,\n authorityToken: startingAuthorityToken,\n snapshot,\n state: snapshotViewStateCached(state, viewStateSnapshots),\n projection: getVisibleProjection(snapshot, state, provider),\n operations,\n });\n if (intent.type === 'search.change') {\n if (state.searchQuery === intent.value) return result(snapshot, false);\n state.searchQuery = intent.value;\n state.projectionRevision += 1;\n return commitViewMutation(snapshot);\n }\n if (intent.type === 'disclosure.toggle') {\n if (!snapshot.nodeById.has(intent.targetId) || !(snapshot.childrenByParentId.get(intent.targetId)?.length)) return result(snapshot, false);\n if (state.collapsedIds.has(intent.targetId)) state.collapsedIds.delete(intent.targetId); else state.collapsedIds.add(intent.targetId);\n state.projectionRevision += 1;\n return commitViewMutation(snapshot);\n }\n if (intent.type === 'disclosure.expand') {\n if (!snapshot.nodeById.has(intent.targetId)) return result(snapshot, false);\n if (!state.collapsedIds.delete(intent.targetId)) return result(snapshot, false);\n state.projectionRevision += 1;\n return commitViewMutation(snapshot);\n }\n if (intent.type === 'disclosure.reveal') {\n if (!snapshot.nodeById.has(intent.targetId)) return result(snapshot, false);\n let changed = false;\n let parentId = snapshot.nodeById.get(intent.targetId)?.parentId ?? null;\n while (parentId) {\n changed = state.collapsedIds.delete(parentId) || changed;\n parentId = snapshot.nodeById.get(parentId)?.parentId ?? null;\n }\n // Revealing an already-visible target is a successful idempotent\n // navigation. Callers use `ok` to distinguish a missing/stale target\n // from a no-op reveal before continuing with selection.\n if (!changed) return result(snapshot);\n state.projectionRevision += 1;\n return commitViewMutation(snapshot);\n }\n if (intent.type === 'selection' || intent.type === 'selection.set') {\n const resolved = intent.type === 'selection'\n ? resolveHierarchySelection({ snapshot, targetId: intent.targetId, modifier: intent.modifier, projection: model.projection, anchorId: state.selectionAnchorId })\n : normalizeExplicitSelection(snapshot, intent.selectedIds, intent.activeId, intent.anchorId);\n const previousAnchor = state.selectionAnchorId;\n const selectionGeneration = ++state.selectionGeneration;\n state.pendingSelectionGeneration = selectionGeneration;\n const operationResult = await execute(() => provider.applySelection(Object.freeze({\n ...createOperationContext(snapshot, intent.type === 'selection' ? intent.targetId : intent.activeId),\n selectedIds: resolved.selectedIds,\n activeId: resolved.activeId,\n })), snapshot);\n if (operationResult.changed) operationCache.delete(snapshot);\n let currentModel: HierarchyViewModel | null;\n try {\n currentModel = getViewModel();\n } catch (error) {\n if (state.pendingSelectionGeneration === selectionGeneration) state.pendingSelectionGeneration = null;\n return createPostOperationRefreshFailure(operationResult, snapshot.revision, error);\n }\n const current = currentModel?.snapshot ?? null;\n const reconciledResult = currentModel?.authorityToken === startingAuthorityToken\n ? reconcilePostOperationResult(operationResult, snapshot, current)\n : createProviderAuthorityChangedResult(operationResult, snapshot.revision, startingAuthorityToken, currentModel?.authorityToken ?? null);\n if (selectionGeneration === state.selectionGeneration\n && current?.scopeKey === snapshot.scopeKey\n && current.revision === reconciledResult.revision) {\n state.revision = current.revision;\n state.selectionAnchorId = reconciledResult.ok ? resolved.anchorId : previousAnchor;\n }\n if (state.pendingSelectionGeneration === selectionGeneration) state.pendingSelectionGeneration = null;\n try {\n if (current && activeProvider) currentModel = createViewModel(current, activeProvider);\n notifyAdapters(currentModel);\n } catch (error) {\n return createViewRenderFailure(reconciledResult, snapshot.revision, error);\n }\n return reconciledResult;\n }\n if (intent.type === 'rename.begin') {\n const node = snapshot.nodeById.get(intent.targetId);\n if (!snapshot.readonly && snapshot.capabilities.rename && node?.renamable && node.editorLocked !== true) {\n state.renameGeneration += 1;\n state.rename = { id: node.id, value: node.label };\n return commitViewMutation(snapshot);\n }\n return result(snapshot, false);\n }\n if (intent.type === 'rename.change') {\n if (!state.rename) return result(snapshot, false);\n state.renameGeneration += 1;\n state.rename.value = intent.value;\n return commitViewMutation(snapshot);\n }\n if (intent.type === 'rename.cancel') { state.renameGeneration += 1; state.rename = null; return commitViewMutation(snapshot); }\n if (intent.type === 'drag.begin') {\n const node = snapshot.nodeById.get(intent.targetId);\n if (!snapshot.readonly && snapshot.capabilities.reparent && node?.draggable && node.editorLocked !== true) {\n const dragIds = model.projection.getTopLevelSelection(\n snapshot.selectedIds.includes(intent.targetId) ? snapshot.selectedIds : [intent.targetId],\n ).filter(id => {\n const dragNode = snapshot.nodeById.get(id);\n return dragNode?.draggable === true && dragNode.editorLocked !== true;\n });\n if (dragIds.length === 0) return result(snapshot, false);\n state.dragGeneration += 1;\n state.dragId = intent.targetId;\n state.dragIds = Object.freeze(dragIds);\n return commitViewMutation(snapshot);\n }\n return result(snapshot, false);\n }\n if (intent.type === 'drag.cancel') { state.dragGeneration += 1; state.dragId = null; state.dragIds = []; return commitViewMutation(snapshot); }\n if (intent.type === 'context') return result(snapshot);\n\n let operationId: string | undefined;\n let operationInput: Readonly<Record<string, HierarchyJsonValue>> | undefined;\n let contextNodeId = snapshot.activeId;\n if (intent.type === 'primary') { operationId = snapshot.primaryOperationId; contextNodeId = intent.targetId; }\n if (intent.type === 'rename.commit' && state.rename) {\n operationId = 'hierarchy.node.rename'; operationInput = Object.freeze({ targetId: state.rename.id, name: state.rename.value }); contextNodeId = state.rename.id;\n }\n if (intent.type === 'drag.commit' && state.dragId) {\n operationId = intent.operationId;\n operationInput = Object.freeze({ ...(intent.input ?? {}), draggedIds: Object.freeze([...state.dragIds]) });\n contextNodeId = state.dragId;\n }\n if (intent.type === 'operation.execute') {\n operationId = intent.operationId;\n operationInput = intent.input;\n if (intent.context\n && (intent.context.scopeKey !== snapshot.scopeKey || intent.context.expectedRevision !== snapshot.revision)) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.stale',\n new Error('Hierarchy operation context no longer matches the active scope revision.'),\n );\n }\n contextNodeId = intent.context?.contextNodeId ?? contextNodeId;\n }\n if (!operationId) return result(snapshot, false);\n const renameGeneration = state.renameGeneration;\n const dragGeneration = state.dragGeneration;\n if (intent.type === 'rename.commit') state.pendingRenameGeneration = renameGeneration;\n if (intent.type === 'drag.commit') state.pendingDragGeneration = dragGeneration;\n const transientId = intent.type === 'rename.commit' ? state.rename?.id : intent.type === 'drag.commit' ? state.dragId : null;\n const invocationContext = intent.type === 'operation.execute' && intent.context\n ? intent.context\n : intent.type === 'drag.commit'\n ? Object.freeze({\n ...createOperationContext(snapshot, contextNodeId),\n targetIds: Object.freeze([...state.dragIds]),\n })\n : createOperationContext(snapshot, contextNodeId);\n try {\n const discoveredOperations = provider.listOperations(invocationContext);\n const discoveredSnapshot = synchronize();\n const providerAuthorityChanged = authorityToken !== startingAuthorityToken\n || activeProvider !== provider\n || activeScopeKey !== snapshot.scopeKey;\n const revisionChanged = discoveredSnapshot?.revision !== snapshot.revision;\n if (providerAuthorityChanged || revisionChanged) {\n try { notifyAdapters(getViewModel()); } catch { /* preserve the authority failure */ }\n return createFailureResult(\n discoveredSnapshot?.revision ?? snapshot.revision,\n providerAuthorityChanged\n ? 'hierarchy.operation.provider-authority-changed'\n : 'hierarchy.operation.stale',\n new Error(providerAuthorityChanged\n ? 'Hierarchy provider authority changed during operation discovery.'\n : 'Hierarchy scope revision changed during operation discovery.'),\n );\n }\n const operationDescriptor = discoveredOperations.find(operation => operation.id === operationId);\n if (!operationDescriptor) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.unavailable',\n new Error(`Hierarchy operation is unavailable for this context: ${operationId}`),\n );\n }\n if (operationDescriptor.disabledReason) {\n return createFailureResult(\n snapshot.revision,\n 'hierarchy.operation.disabled',\n new Error(operationDescriptor.disabledReason),\n );\n }\n const operationResult = await execute(() => provider.executeOperation(Object.freeze({\n ...invocationContext, operationId, ...(operationInput ? { input: operationInput } : {}),\n })), snapshot);\n if (operationResult.ok || operationResult.changed) operationCache.delete(snapshot);\n let currentModel: HierarchyViewModel | null;\n try {\n currentModel = getViewModel();\n } catch (error) {\n if (intent.type === 'rename.commit' && state.pendingRenameGeneration === renameGeneration) state.pendingRenameGeneration = null;\n return createPostOperationRefreshFailure(operationResult, snapshot.revision, error);\n }\n const current = currentModel?.snapshot ?? null;\n const reconciledResult = currentModel?.authorityToken === startingAuthorityToken\n ? reconcilePostOperationResult(operationResult, snapshot, current)\n : createProviderAuthorityChangedResult(operationResult, snapshot.revision, startingAuthorityToken, currentModel?.authorityToken ?? null);\n const stillCurrent = current?.scopeKey === snapshot.scopeKey && current.revision === reconciledResult.revision;\n if (stillCurrent && current) state.revision = current.revision;\n if (reconciledResult.ok && intent.type === 'rename.commit' && stillCurrent\n && state.renameGeneration === renameGeneration && state.rename?.id === transientId) state.rename = null;\n if (!reconciledResult.ok && reconciledResult.changed && stillCurrent && current && current.revision !== snapshot.revision) {\n if (intent.type === 'rename.commit' && state.renameGeneration === renameGeneration) state.rename = null;\n }\n if (intent.type === 'rename.commit' && state.pendingRenameGeneration === renameGeneration) state.pendingRenameGeneration = null;\n try {\n if (current && activeProvider) currentModel = createViewModel(current, activeProvider);\n notifyAdapters(currentModel);\n } catch (error) {\n return createViewRenderFailure(reconciledResult, snapshot.revision, error);\n }\n return reconciledResult;\n } finally {\n if (intent.type === 'rename.commit' && state.pendingRenameGeneration === renameGeneration) {\n state.pendingRenameGeneration = null;\n }\n if (intent.type === 'drag.commit' && state.pendingDragGeneration === dragGeneration) {\n state.pendingDragGeneration = null;\n if (state.dragGeneration === dragGeneration && state.dragId === transientId) {\n state.dragId = null;\n state.dragIds = [];\n try { render(); } catch { /* preserve the operation/discovery result */ }\n }\n }\n }\n } catch (error) {\n return createFailureResult(fallbackRevision, 'hierarchy.operation.failed', error);\n } finally {\n if (fallbackDragState\n && fallbackDragGeneration !== null\n && fallbackDragState.dragGeneration === fallbackDragGeneration\n && fallbackDragState.dragId === fallbackDragId) {\n fallbackDragState.pendingDragGeneration = null;\n fallbackDragState.dragId = null;\n fallbackDragState.dragIds = [];\n try { render(); } catch { /* preserve the terminal drag result */ }\n }\n }\n },\n };\n return kernel;\n}\n\nfunction assertUniqueProviderIds(providers: readonly HierarchyScopeProvider[]): void {\n const ids = new Set<string>();\n for (const provider of providers) {\n if (!provider.id.trim()) throw new Error('Hierarchy scope provider id is required.');\n if (ids.has(provider.id)) throw new Error(`Duplicate Hierarchy scope provider id: ${provider.id}.`);\n ids.add(provider.id);\n }\n}\n\nfunction cloneMutableViewStates(\n source: Map<string, MutableHierarchyViewState>,\n): Map<string, MutableHierarchyViewState> {\n return new Map([...source].map(([scopeKey, state]) => [scopeKey, {\n ...state,\n collapsedIds: new Set(state.collapsedIds),\n rename: state.rename ? { ...state.rename } : null,\n }]));\n}\n\nfunction replaceMapContents<TKey, TValue>(\n target: Map<TKey, TValue>,\n source: Map<TKey, TValue>,\n): void {\n target.clear();\n for (const [key, value] of source) target.set(key, value);\n}\n\ninterface HierarchyRevisionRecord {\n revision: number;\n snapshot: HierarchyScopeSnapshot;\n structureRevision: number;\n rootIds: readonly string[];\n nodeById: ReadonlyMap<string, HierarchyNodeSnapshot>;\n childrenByParentId: ReadonlyMap<string | null, readonly string[]>;\n}\n\nfunction applyHierarchyLabelPresentation(\n presentations: Map<string, {\n provider: HierarchyScopeProvider;\n structureRevision: number;\n labels: Map<string, string>;\n sourceSnapshot: HierarchyScopeSnapshot | null;\n snapshot: HierarchyScopeSnapshot | null;\n }>,\n provider: HierarchyScopeProvider,\n sourceSnapshot: HierarchyScopeSnapshot,\n): HierarchyScopeSnapshot {\n const presentation = presentations.get(sourceSnapshot.scopeKey);\n if (!presentation) return sourceSnapshot;\n if (presentation.provider !== provider\n || presentation.structureRevision !== sourceSnapshot.structureRevision) {\n presentations.delete(sourceSnapshot.scopeKey);\n return sourceSnapshot;\n }\n if (presentation.sourceSnapshot === sourceSnapshot && presentation.snapshot) {\n return presentation.snapshot;\n }\n const nodeById = new Map(sourceSnapshot.nodeById);\n let changed = false;\n for (const [id, label] of presentation.labels) {\n const node = nodeById.get(id);\n if (!node || node.label === label) continue;\n nodeById.set(id, Object.freeze({ ...node, label }));\n changed = true;\n }\n const snapshot = changed\n ? Object.freeze({\n ...sourceSnapshot,\n nodeById: createReadonlyMapView(nodeById),\n })\n : sourceSnapshot;\n presentation.sourceSnapshot = sourceSnapshot;\n presentation.snapshot = snapshot;\n return snapshot;\n}\n\nfunction cloneHierarchyLabelPresentations(\n source: Map<string, {\n provider: HierarchyScopeProvider;\n structureRevision: number;\n labels: Map<string, string>;\n sourceSnapshot: HierarchyScopeSnapshot | null;\n snapshot: HierarchyScopeSnapshot | null;\n }>,\n) {\n return new Map([...source].map(([scopeKey, presentation]) => [scopeKey, {\n ...presentation,\n labels: new Map(presentation.labels),\n }]));\n}\n\nfunction cloneRevisionRecords(\n source: Map<HierarchyScopeProvider, Map<string, HierarchyRevisionRecord>>,\n): Map<HierarchyScopeProvider, Map<string, HierarchyRevisionRecord>> {\n return new Map([...source].map(([provider, records]) => [provider, new Map(records)]));\n}\n\nfunction getRevisionRecord(\n records: Map<HierarchyScopeProvider, Map<string, HierarchyRevisionRecord>>,\n provider: HierarchyScopeProvider | null,\n scopeKey: string,\n): HierarchyRevisionRecord | undefined {\n return provider ? records.get(provider)?.get(scopeKey) : undefined;\n}\n\nfunction assertMonotonicSnapshotRevision(\n records: Map<HierarchyScopeProvider, Map<string, HierarchyRevisionRecord>>,\n provider: HierarchyScopeProvider,\n snapshot: HierarchyScopeSnapshot,\n): void {\n let providerRecords = records.get(provider);\n if (!providerRecords) {\n providerRecords = new Map();\n records.set(provider, providerRecords);\n }\n const previous = providerRecords.get(snapshot.scopeKey);\n if (previous && snapshot.revision < previous.revision) {\n throw new Error(\n `Hierarchy scope ${snapshot.scopeKey} revision regressed from ${previous.revision} to ${snapshot.revision}.`,\n );\n }\n if (previous && snapshot.revision === previous.revision && !sameSnapshotAuthority(previous.snapshot, snapshot)) {\n throw new Error(\n `Hierarchy scope ${snapshot.scopeKey} reused revision ${snapshot.revision} for a different authority snapshot.`,\n );\n }\n if (previous && snapshot.structureRevision < previous.structureRevision) {\n throw new Error(\n `Hierarchy scope ${snapshot.scopeKey} structureRevision regressed from ${previous.structureRevision} to ${snapshot.structureRevision}.`,\n );\n }\n if (previous && snapshot.structureRevision === previous.structureRevision\n && (snapshot.rootIds !== previous.rootIds\n || snapshot.nodeById !== previous.nodeById\n || snapshot.childrenByParentId !== previous.childrenByParentId)) {\n throw new Error(\n `Hierarchy scope ${snapshot.scopeKey} must structurally share tree indexes for structureRevision ${snapshot.structureRevision}.`,\n );\n }\n if (!previous || snapshot.revision > previous.revision) {\n providerRecords.set(snapshot.scopeKey, {\n revision: snapshot.revision,\n snapshot,\n structureRevision: snapshot.structureRevision,\n rootIds: snapshot.rootIds,\n nodeById: snapshot.nodeById,\n childrenByParentId: snapshot.childrenByParentId,\n });\n }\n}\n\nfunction sameSnapshotAuthority(left: HierarchyScopeSnapshot, right: HierarchyScopeSnapshot): boolean {\n if (left === right) return true;\n return left.scopeType === right.scopeType\n && left.structureRevision === right.structureRevision\n && left.title === right.title\n && left.searchPlaceholder === right.searchPlaceholder\n && left.readonly === right.readonly\n && left.rootIds === right.rootIds\n && left.nodeById === right.nodeById\n && left.childrenByParentId === right.childrenByParentId\n && left.activeId === right.activeId\n && left.primaryOperationId === right.primaryOperationId\n && sameStringArray(left.selectedIds, right.selectedIds)\n && sameBooleanRecord(left.capabilities, right.capabilities);\n}\n\nfunction sameStringArray(left: readonly string[], right: readonly string[]): boolean {\n return left.length === right.length && left.every((value, index) => value === right[index]);\n}\n\nfunction sameBooleanRecord(left: Readonly<Record<string, boolean | undefined>>, right: Readonly<Record<string, boolean | undefined>>): boolean {\n const keys = new Set([...Object.keys(left), ...Object.keys(right)]);\n for (const key of keys) if (left[key] !== right[key]) return false;\n return true;\n}\n\ninterface MutableHierarchyViewState {\n collapsedIds: Set<string>;\n searchQuery: string;\n selectionAnchorId: string | null;\n rename: { id: string; value: string } | null;\n dragId: string | null;\n dragIds: readonly string[];\n revision: number | null;\n observedActiveId: string | null;\n sanitizedStructureRevision: number | null;\n projectionRevision: number;\n selectionGeneration: number;\n renameGeneration: number;\n dragGeneration: number;\n pendingSelectionGeneration: number | null;\n pendingRenameGeneration: number | null;\n pendingDragGeneration: number | null;\n}\n\nfunction createOperationContext(snapshot: HierarchyScopeSnapshot, contextNodeId: string | null): HierarchyOperationContext {\n return Object.freeze({ scopeKey: snapshot.scopeKey, expectedRevision: snapshot.revision, contextNodeId, targetIds: snapshot.selectedIds, activeId: snapshot.activeId });\n}\n\nfunction sanitizeViewState(state: MutableHierarchyViewState, snapshot: HierarchyScopeSnapshot): void {\n if (state.revision !== null && state.revision !== snapshot.revision) {\n if (state.pendingSelectionGeneration === null) state.selectionGeneration += 1;\n if (state.pendingRenameGeneration === null) {\n state.renameGeneration += 1;\n state.rename = null;\n }\n if (state.pendingDragGeneration === null) {\n state.dragGeneration += 1;\n state.dragId = null;\n state.dragIds = [];\n }\n }\n state.revision = snapshot.revision;\n if (state.observedActiveId !== snapshot.activeId) {\n let projectionChanged = false;\n if (state.collapsedIds.size > 0) {\n let parentId = snapshot.activeId ? snapshot.nodeById.get(snapshot.activeId)?.parentId ?? null : null;\n while (parentId) {\n projectionChanged = state.collapsedIds.delete(parentId) || projectionChanged;\n parentId = snapshot.nodeById.get(parentId)?.parentId ?? null;\n }\n }\n if (projectionChanged) state.projectionRevision += 1;\n state.observedActiveId = snapshot.activeId;\n }\n if (state.sanitizedStructureRevision !== snapshot.structureRevision) {\n if (state.selectionAnchorId && !snapshot.nodeById.has(state.selectionAnchorId)) state.selectionAnchorId = null;\n if (state.rename && !snapshot.nodeById.has(state.rename.id)) state.rename = null;\n if (state.dragId && !snapshot.nodeById.has(state.dragId)) state.dragId = null;\n state.dragIds = state.dragIds.filter(id => snapshot.nodeById.has(id));\n if (!state.dragId || state.dragIds.length === 0) { state.dragId = null; state.dragIds = []; }\n let removedCollapsed = false;\n for (const id of state.collapsedIds) {\n if (!snapshot.nodeById.has(id)) removedCollapsed = state.collapsedIds.delete(id) || removedCollapsed;\n }\n if (removedCollapsed) state.projectionRevision += 1;\n state.sanitizedStructureRevision = snapshot.structureRevision;\n }\n}\n\nfunction cancelTransientState(state: MutableHierarchyViewState | undefined): void {\n if (!state) return;\n state.selectionGeneration += 1;\n state.renameGeneration += 1;\n state.dragGeneration += 1;\n state.pendingSelectionGeneration = null;\n state.pendingRenameGeneration = null;\n state.pendingDragGeneration = null;\n state.selectionAnchorId = null;\n state.rename = null;\n state.dragId = null;\n state.dragIds = [];\n}\n\nfunction normalizeExplicitSelection(\n snapshot: HierarchyScopeSnapshot,\n ids: readonly string[],\n activeId: string | null,\n anchorId: string | null | undefined,\n): Readonly<{ selectedIds: readonly string[]; activeId: string | null; anchorId: string | null }> {\n const selectedIds = uniqueIds(ids).filter(id => snapshot.nodeById.get(id)?.selectable === true);\n const resolvedActiveId = activeId && selectedIds.includes(activeId) ? activeId : selectedIds[0] ?? null;\n const resolvedAnchorId = anchorId && snapshot.nodeById.has(anchorId) ? anchorId : resolvedActiveId;\n return Object.freeze({ selectedIds: Object.freeze(selectedIds), activeId: resolvedActiveId, anchorId: resolvedAnchorId });\n}\n\nfunction createVisibleProjection(\n snapshot: HierarchyScopeSnapshot,\n state: Pick<MutableHierarchyViewState, 'collapsedIds' | 'searchQuery' | 'projectionRevision'>,\n): HierarchyVisibleProjection {\n const query = state.searchQuery.trim().toLocaleLowerCase();\n const included = query ? new Set<string>() : null;\n if (included) {\n for (const node of snapshot.nodeById.values()) {\n if (!node.label.toLocaleLowerCase().includes(query) && !node.id.toLocaleLowerCase().includes(query)) continue;\n let cursor: HierarchyNodeSnapshot | undefined = node;\n while (cursor && !included.has(cursor.id)) {\n included.add(cursor.id);\n cursor = cursor.parentId ? snapshot.nodeById.get(cursor.parentId) : undefined;\n }\n }\n }\n const rows: HierarchyVisibleRow[] = [];\n const indexById = new Map<string, number>();\n const stack = [...snapshot.rootIds].reverse().map(id => ({ id, depth: 0 }));\n while (stack.length > 0) {\n const { id, depth } = stack.pop()!;\n const node = snapshot.nodeById.get(id);\n if (!node || (included && !included.has(id))) continue;\n indexById.set(id, rows.length);\n rows.push(Object.freeze({ id, depth }));\n if (!included && state.collapsedIds.has(id)) continue;\n const children = snapshot.childrenByParentId.get(id) ?? [];\n for (let index = children.length - 1; index >= 0; index -= 1) {\n stack.push({ id: children[index]!, depth: depth + 1 });\n }\n }\n const frozenRows = Object.freeze(rows);\n const emptyIds = Object.freeze([]) as readonly string[];\n const ancestorCache = new Map<string, readonly string[]>();\n const ancestorSetCache = new Map<string, ReadonlySet<string>>();\n const topLevelSelectionCache = new Map<string, readonly string[]>();\n const rememberCachedIds = (\n cache: Map<string, readonly string[]>,\n key: string,\n value: readonly string[],\n ): readonly string[] => {\n if (cache.size > 256) cache.clear();\n cache.set(key, value);\n return value;\n };\n const getAncestors = (id: string | null | undefined): readonly string[] => {\n if (!id) return emptyIds;\n const cached = ancestorCache.get(id);\n if (cached) return cached;\n const ancestors: string[] = [];\n let parentId = snapshot.nodeById.get(id)?.parentId ?? null;\n while (parentId) {\n ancestors.push(parentId);\n parentId = snapshot.nodeById.get(parentId)?.parentId ?? null;\n }\n return rememberCachedIds(ancestorCache, id, Object.freeze(ancestors));\n };\n const getAncestorSet = (id: string): ReadonlySet<string> => {\n const cached = ancestorSetCache.get(id);\n if (cached) return cached;\n if (ancestorSetCache.size > 256) ancestorSetCache.clear();\n const set = new Set(getAncestors(id));\n ancestorSetCache.set(id, set);\n return set;\n };\n const getTopLevelSelection = (ids: readonly string[]): readonly string[] => {\n const normalized = uniqueIds(ids).filter(id => snapshot.nodeById.has(id));\n if (normalized.length === 0) return emptyIds;\n const cacheKey = normalized.join('\\u0000');\n const cached = topLevelSelectionCache.get(cacheKey);\n if (cached) return cached;\n if (normalized.length === 1) return rememberCachedIds(topLevelSelectionCache, cacheKey, Object.freeze([...normalized]));\n const selectedIds = new Set(normalized);\n return rememberCachedIds(\n topLevelSelectionCache,\n cacheKey,\n Object.freeze(normalized.filter(id => !getAncestors(id).some(ancestorId => selectedIds.has(ancestorId)))),\n );\n };\n const isDescendant = (candidateId: string, ancestorId: string): boolean => (\n candidateId !== ancestorId && getAncestorSet(candidateId).has(ancestorId)\n );\n const resolveDrop = (input: HierarchyDropInput): HierarchyDropResolution => {\n const draggedIds = getTopLevelSelection(input.draggedIds);\n const invalid = (reason: string): HierarchyDropResolution => Object.freeze({\n ok: false, reason, placement: input.placement, draggedIds: Object.freeze([]),\n targetId: input.targetId ?? null, parentId: null, beforeId: null, afterId: null,\n });\n if (draggedIds.length === 0) return invalid('empty-drag');\n for (const id of draggedIds) {\n const node = snapshot.nodeById.get(id);\n if (!node?.draggable || node.editorLocked === true) return invalid('dragged-node-not-movable');\n }\n if (input.placement === 'root') {\n return Object.freeze({\n ok: true, placement: 'root', draggedIds, targetId: null, parentId: null, beforeId: null, afterId: null,\n });\n }\n const targetId = input.targetId ?? null;\n const target = targetId ? snapshot.nodeById.get(targetId) : undefined;\n if (!target) return invalid('missing-target');\n const draggedSet = new Set(draggedIds);\n if (draggedSet.has(target.id)) return invalid('cannot-drop-on-self');\n if (draggedIds.some(id => isDescendant(target.id, id))) return invalid('cannot-drop-on-descendant');\n if (input.placement === 'inside') {\n if (!target.canHaveChildren || target.editorLocked === true) return invalid('target-cannot-have-children');\n const children = (snapshot.childrenByParentId.get(target.id) ?? []).filter(id => !draggedSet.has(id));\n return Object.freeze({\n ok: true, placement: 'inside', draggedIds, targetId: target.id, parentId: target.id,\n beforeId: null, afterId: children[children.length - 1] ?? null,\n });\n }\n if (target.role === 'root') return invalid('cannot-reorder-root');\n if (target.editorLocked === true) return invalid('target-node-locked');\n const parent = target.parentId ? snapshot.nodeById.get(target.parentId) : undefined;\n if (parent?.editorLocked === true) return invalid('target-parent-locked');\n const siblings = (snapshot.childrenByParentId.get(target.parentId) ?? []).filter(id => !draggedSet.has(id));\n const targetIndex = siblings.indexOf(target.id);\n return Object.freeze({\n ok: true, placement: input.placement, draggedIds, targetId: target.id, parentId: target.parentId,\n beforeId: input.placement === 'before' ? target.id : siblings[targetIndex + 1] ?? null,\n afterId: input.placement === 'after' ? target.id : siblings[targetIndex - 1] ?? null,\n });\n };\n return Object.freeze({\n structureRevision: snapshot.structureRevision,\n projectionRevision: state.projectionRevision,\n totalCount: frozenRows.length,\n indexOf(id: string | null | undefined) { return id ? indexById.get(id) ?? -1 : -1; },\n getRow(index: number) { return Number.isInteger(index) && index >= 0 ? frozenRows[index] ?? null : null; },\n getWindow(start: number, count: number) {\n const from = Math.max(0, Math.trunc(start));\n const length = Math.max(0, Math.trunc(count));\n return Object.freeze(frozenRows.slice(from, from + length));\n },\n getRange(from: number, to: number) {\n const start = Math.max(0, Math.min(Math.trunc(from), Math.trunc(to)));\n const end = Math.min(frozenRows.length - 1, Math.max(Math.trunc(from), Math.trunc(to)));\n if (end < start) return Object.freeze([]);\n return Object.freeze(frozenRows.slice(start, end + 1).map(row => row.id));\n },\n getAncestors,\n getSelectableChildren(id: string | null | undefined) {\n if (!id) return Object.freeze([]);\n return Object.freeze((snapshot.childrenByParentId.get(id) ?? [])\n .filter(childId => snapshot.nodeById.get(childId)?.selectable === true));\n },\n getSelectableDescendants(id: string | null | undefined) {\n if (!id || !snapshot.nodeById.has(id)) return Object.freeze([]);\n const descendants: string[] = [];\n const stack = [...(snapshot.childrenByParentId.get(id) ?? [])].reverse();\n while (stack.length > 0) {\n const childId = stack.pop()!;\n if (snapshot.nodeById.get(childId)?.selectable === true) descendants.push(childId);\n const children = snapshot.childrenByParentId.get(childId) ?? [];\n for (let index = children.length - 1; index >= 0; index -= 1) stack.push(children[index]!);\n }\n return Object.freeze(descendants);\n },\n getTopLevelSelection,\n isDescendant,\n resolveDrop,\n });\n}\n\nfunction assertAcyclicAndReachable(\n nodes: ReadonlyMap<string, HierarchyNodeSnapshot>,\n children: ReadonlyMap<string | null, readonly string[]>,\n): void {\n const visited = new Set<string>();\n const stack = [...(children.get(null) ?? [])].reverse();\n while (stack.length > 0) {\n const id = stack.pop()!;\n if (visited.has(id)) throw new Error(`Hierarchy contains a parent cycle at node ${id}.`);\n visited.add(id);\n const childIds = children.get(id) ?? [];\n for (let index = childIds.length - 1; index >= 0; index -= 1) stack.push(childIds[index]!);\n }\n if (visited.size !== nodes.size) {\n const unreachable = [...nodes.keys()].find(id => !visited.has(id));\n throw new Error(`Hierarchy contains a parent cycle or unreachable node: ${unreachable ?? 'unknown'}.`);\n }\n}\n\nfunction snapshotOperationResult(value: HierarchyOperationResult): HierarchyOperationResult {\n if (!value || typeof value !== 'object' || typeof value.ok !== 'boolean' || !Number.isSafeInteger(value.revision)) {\n throw new Error('Hierarchy provider returned an invalid operation result.');\n }\n return Object.freeze({ ok: value.ok, changed: value.changed === true, revision: value.revision, diagnostics: Object.freeze([...(value.diagnostics ?? [])]) });\n}\n\nfunction createFailureResult(revision: number, code: string, error: unknown): HierarchyOperationResult {\n return Object.freeze({ ok: false, changed: false, revision, diagnostics: Object.freeze([Object.freeze({ code, message: error instanceof Error ? error.message : String(error), severity: 'error' as const })]) });\n}\n\nfunction createPostOperationRefreshFailure(\n operationResult: HierarchyOperationResult,\n fallbackRevision: number,\n error: unknown,\n): HierarchyOperationResult {\n const commitStatusUnknown = hasProviderExecutionFailure(operationResult);\n return Object.freeze({\n ok: false,\n // The provider operation may already have committed before its follow-up\n // snapshot failed. Preserve that fact instead of reporting a false no-op.\n changed: operationResult.changed || commitStatusUnknown,\n revision: Math.max(fallbackRevision, operationResult.revision),\n diagnostics: Object.freeze([\n ...operationResult.diagnostics,\n Object.freeze({\n code: 'hierarchy.snapshot.refresh-failed-after-operation',\n message: error instanceof Error ? error.message : String(error),\n severity: 'error' as const,\n }),\n ...(commitStatusUnknown ? [Object.freeze({\n code: 'hierarchy.operation.commit-status-unknown',\n message: 'The provider failed before the refreshed snapshot could confirm whether its authored change committed.',\n severity: 'error' as const,\n })] : []),\n ]),\n });\n}\n\nfunction createViewRenderFailure(\n operationResult: HierarchyOperationResult,\n fallbackRevision: number,\n error: unknown,\n): HierarchyOperationResult {\n const commitStatusUnknown = hasProviderExecutionFailure(operationResult);\n return Object.freeze({\n ok: false,\n changed: operationResult.changed || commitStatusUnknown,\n revision: Math.max(fallbackRevision, operationResult.revision),\n diagnostics: Object.freeze([\n ...operationResult.diagnostics,\n Object.freeze({\n code: 'hierarchy.view.render-failed-after-change',\n message: error instanceof Error ? error.message : String(error),\n severity: 'error' as const,\n }),\n ...(commitStatusUnknown ? [Object.freeze({\n code: 'hierarchy.operation.commit-status-unknown',\n message: 'The provider failed before the refreshed snapshot could confirm whether its authored change committed.',\n severity: 'error' as const,\n })] : []),\n ]),\n });\n}\n\nfunction reconcilePostOperationResult(\n operationResult: HierarchyOperationResult,\n startingSnapshot: HierarchyScopeSnapshot,\n currentSnapshot: HierarchyScopeSnapshot | null,\n): HierarchyOperationResult {\n if (!currentSnapshot || currentSnapshot.scopeKey !== startingSnapshot.scopeKey) {\n return createPostOperationRefreshFailure(\n operationResult,\n startingSnapshot.revision,\n new Error(`Hierarchy scope ${startingSnapshot.scopeKey} was unavailable after the operation.`),\n );\n }\n if (currentSnapshot.revision < operationResult.revision) {\n return createPostOperationRefreshFailure(\n operationResult,\n startingSnapshot.revision,\n new Error(\n `Hierarchy operation reported revision ${operationResult.revision}, but the refreshed scope is still at ${currentSnapshot.revision}.`,\n ),\n );\n }\n if (currentSnapshot.revision === operationResult.revision) return operationResult;\n\n const operationThrewAfterPossibleCommit = !operationResult.ok\n && operationResult.diagnostics.some(diagnostic => diagnostic.code === 'hierarchy.operation.failed')\n && currentSnapshot.revision > startingSnapshot.revision;\n return Object.freeze({\n ...operationResult,\n changed: operationResult.changed || operationThrewAfterPossibleCommit,\n revision: currentSnapshot.revision,\n diagnostics: Object.freeze([\n ...operationResult.diagnostics,\n Object.freeze({\n code: operationThrewAfterPossibleCommit\n ? 'hierarchy.operation.failed-after-revision-advanced'\n : 'hierarchy.operation.concurrent-revision-advanced',\n message: operationThrewAfterPossibleCommit\n ? `The operation failed after the scope advanced from revision ${startingSnapshot.revision} to ${currentSnapshot.revision}; the authored result may already be committed.`\n : `The scope advanced to revision ${currentSnapshot.revision} while the operation completed.`,\n severity: operationThrewAfterPossibleCommit ? 'error' as const : 'info' as const,\n }),\n ]),\n });\n}\n\nfunction createProviderAuthorityChangedResult(\n operationResult: HierarchyOperationResult,\n fallbackRevision: number,\n startingAuthorityToken: number,\n currentAuthorityToken: number | null,\n): HierarchyOperationResult {\n const commitStatusUnknown = hasProviderExecutionFailure(operationResult);\n return Object.freeze({\n ok: false,\n changed: operationResult.changed || commitStatusUnknown,\n revision: Math.max(fallbackRevision, operationResult.revision),\n diagnostics: Object.freeze([\n ...operationResult.diagnostics,\n Object.freeze({\n code: 'hierarchy.operation.provider-authority-changed',\n message: `Hierarchy provider authority changed from token ${startingAuthorityToken} to ${currentAuthorityToken ?? 'none'} while the operation was pending.`,\n severity: 'error' as const,\n }),\n ...(commitStatusUnknown ? [Object.freeze({\n code: 'hierarchy.operation.commit-status-unknown',\n message: 'Provider authority changed before the failed operation could confirm whether its authored change committed.',\n severity: 'error' as const,\n })] : []),\n ]),\n });\n}\n\nfunction hasProviderExecutionFailure(result: HierarchyOperationResult): boolean {\n return result.diagnostics.some(diagnostic => diagnostic.code === 'hierarchy.operation.failed');\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction snapshotNode(node: HierarchyNodeSnapshot): HierarchyNodeSnapshot {\n if (!node.id.trim()) throw new Error('Hierarchy node id is required.');\n return Object.freeze({ ...node, parentId: node.parentId ?? null, selectable: node.selectable === true, canHaveChildren: node.canHaveChildren === true, renamable: node.renamable === true, deletable: node.deletable === true, draggable: node.draggable === true });\n}\n\nfunction snapshotViewState(state: MutableHierarchyViewState): HierarchyViewState {\n return Object.freeze({ collapsedIds: new Set(state.collapsedIds), searchQuery: state.searchQuery, selectionAnchorId: state.selectionAnchorId, rename: state.rename ? Object.freeze({ ...state.rename }) : null, dragId: state.dragId, dragIds: Object.freeze([...state.dragIds]) });\n}\n\nfunction snapshotViewStateCached(\n state: MutableHierarchyViewState,\n cache: WeakMap<MutableHierarchyViewState, {\n projectionRevision: number;\n selectionGeneration: number;\n renameGeneration: number;\n dragGeneration: number;\n selectionAnchorId: string | null;\n renameId: string | null;\n renameValue: string | null;\n dragId: string | null;\n dragIds: readonly string[];\n snapshot: HierarchyViewState;\n }>,\n): HierarchyViewState {\n const cached = cache.get(state);\n if (cached\n && cached.projectionRevision === state.projectionRevision\n && cached.selectionGeneration === state.selectionGeneration\n && cached.renameGeneration === state.renameGeneration\n && cached.dragGeneration === state.dragGeneration\n && cached.selectionAnchorId === state.selectionAnchorId\n && cached.renameId === (state.rename?.id ?? null)\n && cached.renameValue === (state.rename?.value ?? null)\n && cached.dragId === state.dragId\n && cached.dragIds === state.dragIds) {\n return cached.snapshot;\n }\n const snapshot = Object.freeze({\n collapsedIds: cached?.projectionRevision === state.projectionRevision\n ? cached.snapshot.collapsedIds\n : new Set(state.collapsedIds),\n searchQuery: state.searchQuery,\n selectionAnchorId: state.selectionAnchorId,\n rename: state.rename ? Object.freeze({ ...state.rename }) : null,\n dragId: state.dragId,\n dragIds: cached?.dragGeneration === state.dragGeneration && cached.dragIds === state.dragIds\n ? cached.snapshot.dragIds\n : Object.freeze([...state.dragIds]),\n });\n cache.set(state, {\n projectionRevision: state.projectionRevision,\n selectionGeneration: state.selectionGeneration,\n renameGeneration: state.renameGeneration,\n dragGeneration: state.dragGeneration,\n selectionAnchorId: state.selectionAnchorId,\n renameId: state.rename?.id ?? null,\n renameValue: state.rename?.value ?? null,\n dragId: state.dragId,\n dragIds: state.dragIds,\n snapshot,\n });\n return snapshot;\n}\n\nfunction uniqueIds(ids: readonly string[]): string[] { return [...new Set(ids.filter(id => id.trim()))]; }\n\nfunction createReadonlyMapView<K, V>(source: ReadonlyMap<K, V>): ReadonlyMap<K, V> {\n let view: ReadonlyMap<K, V>;\n view = Object.freeze({\n get size() { return source.size; }, has(key: K) { return source.has(key); }, get(key: K) { return source.get(key); }, entries() { return source.entries(); }, keys() { return source.keys(); }, values() { return source.values(); },\n forEach(callback: (value: V, key: K, map: ReadonlyMap<K, V>) => void, thisArg?: unknown) { source.forEach((value, key) => callback.call(thisArg, value, key, view)); },\n [Symbol.iterator]() { return source[Symbol.iterator](); },\n });\n return view;\n}\n"]}
|