@sebastianwessel/isostate 0.3.0 → 0.5.0
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/animation/animation-engine.d.ts +1 -0
- package/dist/animation/animation-engine.d.ts.map +1 -1
- package/dist/animation/controller.d.ts +34 -2
- package/dist/animation/controller.d.ts.map +1 -1
- package/dist/browser/isostate.runtime.js +4 -4
- package/dist/browser/isostate.runtime.js.map +12 -11
- package/dist/chunks/{index-B6HlPnov.js → index-CB6XEsbY.js} +257 -43
- package/dist/chunks/index-CB6XEsbY.js.map +1 -0
- package/dist/chunks/{rendering-engine-BgHel7yX.js → rendering-engine-nkqYx0qc.js} +224 -38
- package/dist/chunks/rendering-engine-nkqYx0qc.js.map +1 -0
- package/dist/chunks/{scene-parser-xgVJh2FU.js → scene-parser-F69XGE0l.js} +100 -33
- package/dist/chunks/scene-parser-F69XGE0l.js.map +1 -0
- package/dist/dsl/browser.js +1 -1
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/scene-parser.d.ts.map +1 -1
- package/dist/dsl/scene-validator.d.ts.map +1 -1
- package/dist/editor-support/adapter.d.ts +1 -0
- package/dist/editor-support/adapter.d.ts.map +1 -1
- package/dist/editor-support/index.js +6 -3
- package/dist/editor-support/index.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +470 -4
- package/dist/index.js.map +1 -1
- package/dist/rendering/animation-css.d.ts.map +1 -1
- package/dist/rendering/asset-node.d.ts.map +1 -1
- package/dist/rendering/rendering-engine.d.ts +9 -0
- package/dist/rendering/rendering-engine.d.ts.map +1 -1
- package/dist/rendering/theme.d.ts +4 -0
- package/dist/rendering/theme.d.ts.map +1 -1
- package/dist/runtime/diagnostics-overlay.d.ts +29 -0
- package/dist/runtime/diagnostics-overlay.d.ts.map +1 -0
- package/dist/runtime/export.d.ts +27 -0
- package/dist/runtime/export.d.ts.map +1 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +2 -2
- package/dist/runtime/interactivity.d.ts +56 -0
- package/dist/runtime/interactivity.d.ts.map +1 -0
- package/dist/runtime/mount-scene.d.ts +11 -10
- package/dist/runtime/mount-scene.d.ts.map +1 -1
- package/dist/types/asset-registry.d.ts +1 -0
- package/dist/types/asset-registry.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/node.d.ts +18 -0
- package/dist/types/node.d.ts.map +1 -1
- package/dist/types/runtime-bundle.d.ts +35 -0
- package/dist/types/runtime-bundle.d.ts.map +1 -1
- package/dist/types/scene.d.ts +2 -0
- package/dist/types/scene.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/index-B6HlPnov.js.map +0 -1
- package/dist/chunks/rendering-engine-BgHel7yX.js.map +0 -1
- package/dist/chunks/scene-parser-xgVJh2FU.js.map +0 -1
package/dist/dsl/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { c as compileScene, d as deriveProgresses, f as fromJs, a as fromJson, p as parseScene, r as resolveSceneSnapshots, t as toJs, b as toJson, v as validateScene } from '../chunks/scene-parser-
|
|
1
|
+
export { c as compileScene, d as deriveProgresses, f as fromJs, a as fromJson, p as parseScene, r as resolveSceneSnapshots, t as toJs, b as toJson, v as validateScene } from '../chunks/scene-parser-F69XGE0l.js';
|
|
2
2
|
import '../chunks/sha256-4JuurR-b.js';
|
|
3
3
|
import '../chunks/errors-DyqEkrm5.js';
|
|
4
4
|
import 'yaml';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-parser.d.ts","sourceRoot":"","sources":["../../src/dsl/scene-parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAmBX,aAAa,EAIb,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"scene-parser.d.ts","sourceRoot":"","sources":["../../src/dsl/scene-parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAmBX,aAAa,EAIb,MAAM,mBAAmB,CAAC;AAovB3B;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAkBrD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-validator.d.ts","sourceRoot":"","sources":["../../src/dsl/scene-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAeX,kBAAkB,EAClB,qBAAqB,EAErB,mBAAmB,EACnB,aAAa,EACb,SAAS,EAGT,gBAAgB,EAEhB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"scene-validator.d.ts","sourceRoot":"","sources":["../../src/dsl/scene-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAeX,kBAAkB,EAClB,qBAAqB,EAErB,mBAAmB,EACnB,aAAa,EACb,SAAS,EAGT,gBAAgB,EAEhB,MAAM,mBAAmB,CAAC;AAwE3B,MAAM,WAAW,qBAAqB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC5B;AAqxDD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,gBAAgB,CAiBvE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,qBAAqB,EAAE,CA0GtF;AAsBD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAK9D"}
|
|
@@ -23,6 +23,7 @@ export interface RuntimeObjectMetadata {
|
|
|
23
23
|
export interface EditorRuntimeAdapter {
|
|
24
24
|
mounted: MountedScene;
|
|
25
25
|
setActiveScene(sceneId: string): boolean;
|
|
26
|
+
setProgress(progress: number): void;
|
|
26
27
|
getObjects(sceneId: string): RuntimeObjectMetadata[];
|
|
27
28
|
getObject(id: string): RuntimeObjectMetadata | undefined;
|
|
28
29
|
getLayerOrder(): Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/editor-support/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAQN,KAAK,WAAW,EAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAO1E,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtE,2DAA2D;AAC3D,MAAM,WAAW,qBAAqB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;KAAE,CAAC;CAClH;AAED,iEAAiE;AACjE,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAAC;IACrD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;IACzD,aAAa,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,kBAAkB,IAAI,WAAW,CAAC;IAClC,gBAAgB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,iBAAiB,CAAC;IAC7D,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IACnE,kBAAkB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,iBAAiB,EAAE,CAAC;IAChE,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACnG,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,SAAS,CAAC;IAC3D,OAAO,IAAI,IAAI,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,YAAY,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/editor-support/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAQN,KAAK,WAAW,EAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAO1E,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtE,2DAA2D;AAC3D,MAAM,WAAW,qBAAqB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;KAAE,CAAC;CAClH;AAED,iEAAiE;AACjE,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAAC;IACrD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;IACzD,aAAa,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,kBAAkB,IAAI,WAAW,CAAC;IAClC,gBAAgB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,iBAAiB,CAAC;IAC7D,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IACnE,kBAAkB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,iBAAiB,EAAE,CAAC;IAChE,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACnG,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,SAAS,CAAC;IAC3D,OAAO,IAAI,IAAI,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,YAAY,GAAG,oBAAoB,CAuItF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { g as getResolvedProjectionLayout, p as projectToRaw, a as getResolvedViewBox, b as getCurrentElementBounds, c as getElementState, h as hideElementAfterExit, u as unhideElementOnReadd, d as getConnectorState, e as updateElementTransforms } from '../chunks/rendering-engine-nkqYx0qc.js';
|
|
2
2
|
import { R as RenderError } from '../chunks/errors-DyqEkrm5.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -267,10 +267,13 @@ function createEditorRuntimeAdapter(mounted) {
|
|
|
267
267
|
const scene = bundle.scenes.find((candidate) => candidate.id === sceneId);
|
|
268
268
|
if (!scene)
|
|
269
269
|
return false;
|
|
270
|
-
|
|
271
|
-
applyEditorFrame(mounted);
|
|
270
|
+
this.setProgress(scene.progress);
|
|
272
271
|
return true;
|
|
273
272
|
},
|
|
273
|
+
setProgress(progress) {
|
|
274
|
+
mounted.engine.setProgress(progress);
|
|
275
|
+
applyEditorFrame(mounted);
|
|
276
|
+
},
|
|
274
277
|
getObjects(sceneId) {
|
|
275
278
|
const currentState = mounted.engine.getCurrentState();
|
|
276
279
|
if (!currentState || currentState.id !== sceneId)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/editor-support/geometry.ts","../../src/editor-support/hit-test.ts","../../src/editor-support/adapter.ts"],"sourcesContent":["import { getResolvedProjectionLayout } from \"../rendering/rendering-engine.ts\";\nimport { RenderError } from \"../types/errors.ts\";\nimport type { RuntimeBundle } from \"../types/runtime-bundle.ts\";\n\n/** Screen-space point in SVG user units. */\nexport interface EditorScreenPoint {\n\tx: number;\n\ty: number;\n}\n\n/** Browser client-space pointer coordinates. */\nexport interface EditorClientPoint {\n\tclientX: number;\n\tclientY: number;\n}\n\n/**\n * Project an isometric grid point into SVG screen coordinates.\n * Uses the same projection, bounds, and padding as the renderer.\n */\nexport function projectGridPoint(bundle: RuntimeBundle, point: [number, number]): EditorScreenPoint {\n\tconst layout = getResolvedProjectionLayout(bundle);\n\tconst rawX = layout.cellSize * (point[0] - point[1]) * 0.5;\n\tconst rawY = layout.cellSize * (point[0] + point[1]) * 0.25;\n\treturn {\n\t\tx: rawX - layout.selectedBounds.minX + layout.padding.x,\n\t\ty: rawY - layout.selectedBounds.minY + layout.padding.y,\n\t};\n}\n\n/**\n * Unproject an SVG screen point back into fractional isometric grid coordinates.\n * The editor owns snap-to-grid rounding.\n */\nexport function unprojectScreenPoint(bundle: RuntimeBundle, point: EditorScreenPoint): [number, number] {\n\tconst layout = getResolvedProjectionLayout(bundle);\n\tconst rawX = point.x + layout.selectedBounds.minX - layout.padding.x;\n\tconst rawY = point.y + layout.selectedBounds.minY - layout.padding.y;\n\tconst cellSize = layout.cellSize;\n\tconst gridX = rawX / cellSize + (2 * rawY) / cellSize;\n\tconst gridY = (2 * rawY) / cellSize - rawX / cellSize;\n\treturn [gridX, gridY];\n}\n\n/**\n * Convert browser pointer coordinates into SVG user units using the root SVG\n * screen CTM inverse.\n * @throws {RenderError} `EDITOR_GEOMETRY_UNAVAILABLE` when the CTM is missing or not invertible.\n */\nexport function clientPointToSvgPoint(svg: SVGSVGElement, point: EditorClientPoint): EditorScreenPoint {\n\tconst ctm = svg.getScreenCTM();\n\tif (!ctm) {\n\t\tthrow new RenderError(\"EDITOR_GEOMETRY_UNAVAILABLE\", \"SVG CTM is not available\");\n\t}\n\tlet inverse: DOMMatrix | null = null;\n\ttry {\n\t\tinverse = ctm.inverse();\n\t} catch {\n\t\t// non-invertible matrix\n\t}\n\tif (!inverse) {\n\t\tthrow new RenderError(\"EDITOR_GEOMETRY_UNAVAILABLE\", \"SVG CTM is not invertible\");\n\t}\n\tconst svgPoint = svg.createSVGPoint();\n\tsvgPoint.x = point.clientX;\n\tsvgPoint.y = point.clientY;\n\tconst result = svgPoint.matrixTransform(inverse);\n\treturn { x: result.x, y: result.y };\n}\n\n/**\n * Return the four projected corners of a grid cell in clockwise order.\n */\nexport function getGridCellPolygon(bundle: RuntimeBundle, cell: [number, number]): EditorScreenPoint[] {\n\tconst [x, y] = cell;\n\treturn [\n\t\tprojectGridPoint(bundle, [x, y]),\n\t\tprojectGridPoint(bundle, [x + 1, y]),\n\t\tprojectGridPoint(bundle, [x + 1, y + 1]),\n\t\tprojectGridPoint(bundle, [x, y + 1]),\n\t];\n}\n","import type { ViewBoxRect } from \"../rendering/rendering-engine.ts\";\nimport type { RuntimeBundle } from \"../types/runtime-bundle.ts\";\nimport { projectToRaw } from \"../utils/projection.ts\";\nimport type { EditorRuntimeAdapter } from \"./adapter.ts\";\nimport type { EditorScreenPoint } from \"./geometry.ts\";\n\nexport interface HitTestOptions {\n\tincludeHidden?: boolean;\n\tincludeLocked?: boolean;\n\tkinds?: Array<\"element\" | \"connection\">;\n}\n\nexport interface RuntimeObjectHit {\n\tid: string;\n\tkind: \"element\" | \"connection\";\n\tlayer: string;\n\tbounds: ViewBoxRect;\n}\n\n/**\n * Find the topmost runtime object at a screen point.\n * Hit testing follows the current rendered depth order so the visually\n * topmost object wins.\n */\nexport function getRuntimeObjectAtPoint(\n\tadapter: EditorRuntimeAdapter,\n\tpoint: EditorScreenPoint,\n\toptions: HitTestOptions = {},\n): RuntimeObjectHit | undefined {\n\tconst kinds = options.kinds ?? [\"element\", \"connection\"];\n\tconst currentScene = adapter.mounted.engine.getCurrentState();\n\tif (!currentScene) return undefined;\n\n\tconst objects = adapter.getObjects(currentScene.id);\n\tconst layerOrder = adapter.getLayerOrder();\n\tconst layerRank = new Map(layerOrder.map((l, i) => [l.name, i]));\n\n\tconst candidates = objects\n\t\t.filter((obj) => kinds.includes(obj.kind))\n\t\t.filter((obj) => options.includeHidden || obj.present)\n\t\t.sort((a, b) => {\n\t\t\tconst rankA = layerRank.get(a.layer) ?? -1;\n\t\t\tconst rankB = layerRank.get(b.layer) ?? -1;\n\t\t\treturn rankA - rankB;\n\t\t});\n\n\t// Check topmost (highest layer rank) first\n\tfor (let i = candidates.length - 1; i >= 0; i--) {\n\t\tconst obj = candidates[i];\n\t\tif (pointInBounds(point, obj.bounds)) {\n\t\t\treturn {\n\t\t\t\tid: obj.id,\n\t\t\t\tkind: obj.kind,\n\t\t\t\tlayer: obj.layer,\n\t\t\t\tbounds: obj.bounds,\n\t\t\t};\n\t\t}\n\t}\n\treturn undefined;\n}\n\n/**\n * Compute the union bounds of a selection of runtime objects.\n * Missing ids are ignored. Returns `undefined` if no ids resolve.\n */\nexport function getRuntimeSelectionBounds(adapter: EditorRuntimeAdapter, ids: string[]): ViewBoxRect | undefined {\n\tlet minX = Number.POSITIVE_INFINITY;\n\tlet minY = Number.POSITIVE_INFINITY;\n\tlet maxX = Number.NEGATIVE_INFINITY;\n\tlet maxY = Number.NEGATIVE_INFINITY;\n\n\tfor (const id of ids) {\n\t\tconst obj = adapter.getObject(id);\n\t\tif (!obj?.present) continue;\n\t\tconst b = obj.bounds;\n\t\tminX = Math.min(minX, b.minX);\n\t\tminY = Math.min(minY, b.minY);\n\t\tmaxX = Math.max(maxX, b.minX + b.width);\n\t\tmaxY = Math.max(maxY, b.minY + b.height);\n\t}\n\n\tif (!Number.isFinite(minX)) return undefined;\n\n\treturn {\n\t\tminX,\n\t\tminY,\n\t\twidth: maxX - minX,\n\t\theight: maxY - minY,\n\t};\n}\n\nfunction pointInBounds(\n\tpoint: EditorScreenPoint,\n\tbounds: { minX: number; minY: number; width: number; height: number },\n): boolean {\n\treturn (\n\t\tpoint.x >= bounds.minX &&\n\t\tpoint.x <= bounds.minX + bounds.width &&\n\t\tpoint.y >= bounds.minY &&\n\t\tpoint.y <= bounds.minY + bounds.height\n\t);\n}\n\n/** Compute screen-space bounds for a connector route. */\nexport function getConnectionBounds(route: [number, number][], bundle: RuntimeBundle): ViewBoxRect {\n\tconst layout = resolveLayoutForBounds(bundle);\n\tlet minRawX = Number.POSITIVE_INFINITY;\n\tlet minRawY = Number.POSITIVE_INFINITY;\n\tlet maxRawX = Number.NEGATIVE_INFINITY;\n\tlet maxRawY = Number.NEGATIVE_INFINITY;\n\n\tfor (const [x, y] of route) {\n\t\tconst { rawX, rawY } = projectToRaw(x, y, layout.cellSize);\n\t\tminRawX = Math.min(minRawX, rawX);\n\t\tminRawY = Math.min(minRawY, rawY);\n\t\tmaxRawX = Math.max(maxRawX, rawX);\n\t\tmaxRawY = Math.max(maxRawY, rawY);\n\t}\n\n\tconst offsetX = -layout.selectedBounds.minX + layout.padding.x;\n\tconst offsetY = -layout.selectedBounds.minY + layout.padding.y;\n\n\treturn {\n\t\tminX: minRawX + offsetX,\n\t\tminY: minRawY + offsetY,\n\t\twidth: maxRawX - minRawX,\n\t\theight: maxRawY - minRawY,\n\t};\n}\n\n// Lightweight re-computation of the layout values needed for bounds projection.\nfunction resolveLayoutForBounds(bundle: RuntimeBundle): {\n\tcellSize: number;\n\tpadding: { x: number; y: number };\n\tselectedBounds: { minX: number; minY: number; maxX: number; maxY: number };\n} {\n\tconst cellSize = bundle.grid.cellSize;\n\tconst padding = bundle.layout.padding;\n\n\t// Reproduce content bounds calculation\n\tlet cMinX = Number.POSITIVE_INFINITY;\n\tlet cMinY = Number.POSITIVE_INFINITY;\n\tlet cMaxX = Number.NEGATIVE_INFINITY;\n\tlet cMaxY = Number.NEGATIVE_INFINITY;\n\n\tfor (const stop of bundle.scenes) {\n\t\tfor (const el of stop.elements ?? []) {\n\t\t\tif (el.presence === \"removed\") continue;\n\t\t\tconst { rawX, rawY } = projectToRaw(el.pos[0] + el.size, el.pos[1] + el.size, cellSize);\n\t\t\tconst visualSize = cellSize * el.size;\n\t\t\tconst anchor = bundle.assets?.[el.asset]?.anchor ?? [0.5, 1];\n\t\t\tcMinX = Math.min(cMinX, rawX - visualSize * anchor[0]);\n\t\t\tcMinY = Math.min(cMinY, rawY - visualSize * anchor[1]);\n\t\t\tcMaxX = Math.max(cMaxX, rawX + visualSize * (1 - anchor[0]));\n\t\t\tcMaxY = Math.max(cMaxY, rawY + visualSize * (1 - anchor[1]));\n\t\t}\n\t\tfor (const conn of stop.connectors ?? []) {\n\t\t\tif (conn.presence === \"removed\") continue;\n\t\t\tfor (const [x, y] of conn.route) {\n\t\t\t\tconst { rawX, rawY } = projectToRaw(x, y, cellSize);\n\t\t\t\tcMinX = Math.min(cMinX, rawX);\n\t\t\t\tcMinY = Math.min(cMinY, rawY);\n\t\t\t\tcMaxX = Math.max(cMaxX, rawX);\n\t\t\t\tcMaxY = Math.max(cMaxY, rawY);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!Number.isFinite(cMinX)) {\n\t\tcMinX = 0;\n\t\tcMinY = 0;\n\t\tcMaxX = cellSize;\n\t\tcMaxY = cellSize;\n\t}\n\n\t// Floor bounds\n\tconst [ox, oy] = bundle.floor.origin;\n\tconst [fw, fh] = bundle.floor.size;\n\tconst floorPoints: Array<[number, number]> = [\n\t\t[ox, oy],\n\t\t[ox + fw, oy],\n\t\t[ox, oy + fh],\n\t\t[ox + fw, oy + fh],\n\t];\n\tlet fMinX = Number.POSITIVE_INFINITY;\n\tlet fMinY = Number.POSITIVE_INFINITY;\n\tlet fMaxX = Number.NEGATIVE_INFINITY;\n\tlet fMaxY = Number.NEGATIVE_INFINITY;\n\tfor (const [x, y] of floorPoints) {\n\t\tconst { rawX, rawY } = projectToRaw(x, y, cellSize);\n\t\tfMinX = Math.min(fMinX, rawX);\n\t\tfMinY = Math.min(fMinY, rawY);\n\t\tfMaxX = Math.max(fMaxX, rawX);\n\t\tfMaxY = Math.max(fMaxY, rawY);\n\t}\n\n\t// Select bounds\n\tlet sMinX: number;\n\tlet sMinY: number;\n\tlet sMaxX: number;\n\tlet sMaxY: number;\n\tconst mode = bundle.layout.bounds;\n\tif (mode === \"content\") {\n\t\tsMinX = cMinX;\n\t\tsMinY = cMinY;\n\t\tsMaxX = cMaxX;\n\t\tsMaxY = cMaxY;\n\t} else if (mode === \"floor\") {\n\t\tsMinX = fMinX;\n\t\tsMinY = fMinY;\n\t\tsMaxX = fMaxX;\n\t\tsMaxY = fMaxY;\n\t} else {\n\t\tsMinX = Math.min(cMinX, fMinX);\n\t\tsMinY = Math.min(cMinY, fMinY);\n\t\tsMaxX = Math.max(cMaxX, fMaxX);\n\t\tsMaxY = Math.max(cMaxY, fMaxY);\n\t}\n\n\treturn {\n\t\tcellSize,\n\t\tpadding,\n\t\tselectedBounds: { minX: sMinX, minY: sMinY, maxX: sMaxX, maxY: sMaxY },\n\t};\n}\n","import {\n\tgetConnectorState,\n\tgetCurrentElementBounds,\n\tgetElementState,\n\tgetResolvedViewBox,\n\thideElementAfterExit,\n\tunhideElementOnReadd,\n\tupdateElementTransforms,\n\ttype ViewBoxRect,\n} from \"../rendering/rendering-engine.ts\";\nimport type { MountedScene } from \"../runtime/mount-scene.ts\";\nimport type { RuntimeConnectorState, RuntimeElementState } from \"../types/node.ts\";\nimport type { EditorClientPoint, EditorScreenPoint } from \"./geometry.ts\";\nimport {\n\tclientPointToSvgPoint as geometryClientPointToSvgPoint,\n\tgetGridCellPolygon as geometryGetGridCellPolygon,\n\tprojectGridPoint as geometryProjectGridPoint,\n\tunprojectScreenPoint as geometryUnprojectScreenPoint,\n} from \"./geometry.ts\";\nimport type { HitTestOptions, RuntimeObjectHit } from \"./hit-test.ts\";\nimport { getConnectionBounds, getRuntimeObjectAtPoint, getRuntimeSelectionBounds } from \"./hit-test.ts\";\n\n/** Metadata for a runtime object as seen by the editor. */\nexport interface RuntimeObjectMetadata {\n\tid: string;\n\tkind: \"element\" | \"connection\";\n\tsceneId: string;\n\tlayer: string;\n\tpresent: boolean;\n\tbounds: ViewBoxRect;\n\tgrid: { kind: \"element\"; at: [number, number]; size: number } | { kind: \"connection\"; route: [number, number][] };\n}\n\n/** Adapter wrapping a mounted scene for editor introspection. */\nexport interface EditorRuntimeAdapter {\n\tmounted: MountedScene;\n\tsetActiveScene(sceneId: string): boolean;\n\tgetObjects(sceneId: string): RuntimeObjectMetadata[];\n\tgetObject(id: string): RuntimeObjectMetadata | undefined;\n\tgetLayerOrder(): Array<{ name: string; order: number }>;\n\tgetResolvedViewBox(): ViewBoxRect;\n\tprojectGridPoint(point: [number, number]): EditorScreenPoint;\n\tunprojectScreenPoint(point: EditorScreenPoint): [number, number];\n\tclientPointToSvgPoint(point: EditorClientPoint): EditorScreenPoint;\n\tgetGridCellPolygon(cell: [number, number]): EditorScreenPoint[];\n\tgetObjectAtPoint(point: EditorScreenPoint, options?: HitTestOptions): RuntimeObjectHit | undefined;\n\tgetSelectionBounds(ids: string[]): ViewBoxRect | undefined;\n\tdestroy(): void;\n}\n\n/**\n * Create an editor runtime adapter around an already mounted scene.\n * The adapter does not mutate the mounted scene or create editor UI.\n */\nexport function createEditorRuntimeAdapter(mounted: MountedScene): EditorRuntimeAdapter {\n\tconst bundle = mounted.engine.bundle;\n\tif (!bundle) {\n\t\tthrow new Error(\"EditorRuntimeAdapter requires an initialized mounted scene\");\n\t}\n\n\t// Cache layer order since it is static for the bundle\n\tconst layerOrder = bundle.layers\n\t\t.map((layer) => ({ name: layer.name, order: layer.order }))\n\t\t.sort((a, b) => a.order - b.order || a.name.localeCompare(b.name));\n\n\treturn {\n\t\tmounted,\n\n\t\tsetActiveScene(sceneId: string): boolean {\n\t\t\tconst scene = bundle.scenes.find((candidate) => candidate.id === sceneId);\n\t\t\tif (!scene) return false;\n\t\t\tmounted.engine.setProgress(scene.progress);\n\t\t\tapplyEditorFrame(mounted);\n\t\t\treturn true;\n\t\t},\n\n\t\tgetObjects(sceneId: string): RuntimeObjectMetadata[] {\n\t\t\tconst currentState = mounted.engine.getCurrentState();\n\t\t\tif (!currentState || currentState.id !== sceneId) return [];\n\n\t\t\tconst result: RuntimeObjectMetadata[] = [];\n\n\t\t\t// Elements from current engine frame\n\t\t\tfor (const update of mounted.engine.getFrameUpdates()) {\n\t\t\t\tconst bounds = getCurrentElementBounds(mounted.svg, update.id);\n\t\t\t\tresult.push({\n\t\t\t\t\tid: update.id,\n\t\t\t\t\tkind: \"element\",\n\t\t\t\t\tsceneId: currentState.id,\n\t\t\t\t\tlayer: update.layer,\n\t\t\t\t\tpresent: update.lifecycle !== \"removed\",\n\t\t\t\t\tbounds: bounds ?? { minX: 0, minY: 0, width: 0, height: 0 },\n\t\t\t\t\tgrid: { kind: \"element\", at: update.pos, size: update.size },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Connections from current engine frame\n\t\t\tfor (const update of mounted.engine.getConnectorFrameUpdates()) {\n\t\t\t\tconst bounds = getConnectionBounds(update.route, bundle);\n\t\t\t\tresult.push({\n\t\t\t\t\tid: update.id,\n\t\t\t\t\tkind: \"connection\",\n\t\t\t\t\tsceneId: currentState.id,\n\t\t\t\t\tlayer: update.layer,\n\t\t\t\t\tpresent: update.lifecycle !== \"removed\",\n\t\t\t\t\tbounds,\n\t\t\t\t\tgrid: { kind: \"connection\", route: update.route },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\tgetObject(id: string): RuntimeObjectMetadata | undefined {\n\t\t\tconst currentState = mounted.engine.getCurrentState();\n\t\t\tif (!currentState) return undefined;\n\n\t\t\tconst elementUpdate = mounted.engine.getElementUpdate(id);\n\t\t\tif (elementUpdate && elementUpdate.asset !== \"\") {\n\t\t\t\tconst bounds = getCurrentElementBounds(mounted.svg, id);\n\t\t\t\treturn {\n\t\t\t\t\tid: elementUpdate.id,\n\t\t\t\t\tkind: \"element\",\n\t\t\t\t\tsceneId: currentState.id,\n\t\t\t\t\tlayer: elementUpdate.layer,\n\t\t\t\t\tpresent: elementUpdate.lifecycle !== \"removed\",\n\t\t\t\t\tbounds: bounds ?? { minX: 0, minY: 0, width: 0, height: 0 },\n\t\t\t\t\tgrid: { kind: \"element\", at: elementUpdate.pos, size: elementUpdate.size },\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst connectorUpdate = mounted.engine.getConnectorUpdate(id);\n\t\t\tif (connectorUpdate && connectorUpdate.route.length > 0) {\n\t\t\t\tconst bounds = getConnectionBounds(connectorUpdate.route, bundle);\n\t\t\t\treturn {\n\t\t\t\t\tid: connectorUpdate.id,\n\t\t\t\t\tkind: \"connection\",\n\t\t\t\t\tsceneId: currentState.id,\n\t\t\t\t\tlayer: connectorUpdate.layer,\n\t\t\t\t\tpresent: connectorUpdate.lifecycle !== \"removed\",\n\t\t\t\t\tbounds,\n\t\t\t\t\tgrid: { kind: \"connection\", route: connectorUpdate.route },\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\n\t\tgetLayerOrder() {\n\t\t\treturn layerOrder.slice();\n\t\t},\n\n\t\tgetResolvedViewBox() {\n\t\t\treturn getResolvedViewBox(bundle);\n\t\t},\n\n\t\tprojectGridPoint(point: [number, number]): EditorScreenPoint {\n\t\t\treturn geometryProjectGridPoint(bundle, point);\n\t\t},\n\n\t\tunprojectScreenPoint(point: EditorScreenPoint): [number, number] {\n\t\t\treturn geometryUnprojectScreenPoint(bundle, point);\n\t\t},\n\n\t\tclientPointToSvgPoint(point: EditorClientPoint): EditorScreenPoint {\n\t\t\treturn geometryClientPointToSvgPoint(mounted.svg, point);\n\t\t},\n\n\t\tgetGridCellPolygon(cell: [number, number]): EditorScreenPoint[] {\n\t\t\treturn geometryGetGridCellPolygon(bundle, cell);\n\t\t},\n\n\t\tgetObjectAtPoint(point: EditorScreenPoint, options?: HitTestOptions): RuntimeObjectHit | undefined {\n\t\t\treturn getRuntimeObjectAtPoint(this, point, options);\n\t\t},\n\n\t\tgetSelectionBounds(ids: string[]): ViewBoxRect | undefined {\n\t\t\treturn getRuntimeSelectionBounds(this, ids);\n\t\t},\n\n\t\tdestroy() {\n\t\t\t// Adapter owns no listeners or caches that outlive this call.\n\t\t\t// The editor is responsible for mounted scene cleanup.\n\t\t},\n\t};\n}\n\nfunction applyEditorFrame(mounted: MountedScene): void {\n\tconst elements: RuntimeElementState[] = mounted.engine.getFrameUpdates().map((update) => ({\n\t\tid: update.id,\n\t\tasset: update.asset,\n\t\tpos: update.pos,\n\t\tsize: update.size,\n\t\tlayer: update.layer,\n\t\tpresence: update.lifecycle,\n\t\tenter: update.entry as RuntimeElementState[\"enter\"],\n\t\texit: update.exit as RuntimeElementState[\"exit\"],\n\t\tambient: update.ambient,\n\t\ttext: update.text,\n\t\tprimitive: update.primitive,\n\t}));\n\tconst connectors: RuntimeConnectorState[] = mounted.engine.getConnectorFrameUpdates().map((update) => ({\n\t\tid: update.id,\n\t\troute: update.route,\n\t\tlayer: update.layer,\n\t\tpresence: update.lifecycle,\n\t\tstyle: update.style,\n\t\tstart: update.start,\n\t\tend: update.end,\n\t\tdirection: update.direction,\n\t\tenter: update.entry as RuntimeConnectorState[\"enter\"],\n\t\texit: update.exit as RuntimeConnectorState[\"exit\"],\n\t\tambient: update.ambient,\n\t}));\n\n\tfor (const element of elements) {\n\t\tconst state = getElementState(mounted.svg, element.id);\n\t\tif (!state) continue;\n\t\tif (element.presence === \"removed\") {\n\t\t\tstate.isHidden = true;\n\t\t\thideElementAfterExit(state.node);\n\t\t} else {\n\t\t\tstate.isHidden = false;\n\t\t\tunhideElementOnReadd(state.node);\n\t\t}\n\t}\n\n\tfor (const connector of connectors) {\n\t\tconst state = getConnectorState(mounted.svg, connector.id);\n\t\tif (!state) continue;\n\t\tif (connector.presence === \"removed\") {\n\t\t\tstate.isHidden = true;\n\t\t\thideElementAfterExit(state.node);\n\t\t} else {\n\t\t\tstate.isHidden = false;\n\t\t\tunhideElementOnReadd(state.node);\n\t\t}\n\t}\n\n\tupdateElementTransforms(mounted.svg, elements, connectors);\n}\n"],"names":["geometryProjectGridPoint","geometryUnprojectScreenPoint","geometryClientPointToSvgPoint","geometryGetGridCellPolygon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/editor-support/geometry.ts","../../src/editor-support/hit-test.ts","../../src/editor-support/adapter.ts"],"sourcesContent":["import { getResolvedProjectionLayout } from \"../rendering/rendering-engine.ts\";\nimport { RenderError } from \"../types/errors.ts\";\nimport type { RuntimeBundle } from \"../types/runtime-bundle.ts\";\n\n/** Screen-space point in SVG user units. */\nexport interface EditorScreenPoint {\n\tx: number;\n\ty: number;\n}\n\n/** Browser client-space pointer coordinates. */\nexport interface EditorClientPoint {\n\tclientX: number;\n\tclientY: number;\n}\n\n/**\n * Project an isometric grid point into SVG screen coordinates.\n * Uses the same projection, bounds, and padding as the renderer.\n */\nexport function projectGridPoint(bundle: RuntimeBundle, point: [number, number]): EditorScreenPoint {\n\tconst layout = getResolvedProjectionLayout(bundle);\n\tconst rawX = layout.cellSize * (point[0] - point[1]) * 0.5;\n\tconst rawY = layout.cellSize * (point[0] + point[1]) * 0.25;\n\treturn {\n\t\tx: rawX - layout.selectedBounds.minX + layout.padding.x,\n\t\ty: rawY - layout.selectedBounds.minY + layout.padding.y,\n\t};\n}\n\n/**\n * Unproject an SVG screen point back into fractional isometric grid coordinates.\n * The editor owns snap-to-grid rounding.\n */\nexport function unprojectScreenPoint(bundle: RuntimeBundle, point: EditorScreenPoint): [number, number] {\n\tconst layout = getResolvedProjectionLayout(bundle);\n\tconst rawX = point.x + layout.selectedBounds.minX - layout.padding.x;\n\tconst rawY = point.y + layout.selectedBounds.minY - layout.padding.y;\n\tconst cellSize = layout.cellSize;\n\tconst gridX = rawX / cellSize + (2 * rawY) / cellSize;\n\tconst gridY = (2 * rawY) / cellSize - rawX / cellSize;\n\treturn [gridX, gridY];\n}\n\n/**\n * Convert browser pointer coordinates into SVG user units using the root SVG\n * screen CTM inverse.\n * @throws {RenderError} `EDITOR_GEOMETRY_UNAVAILABLE` when the CTM is missing or not invertible.\n */\nexport function clientPointToSvgPoint(svg: SVGSVGElement, point: EditorClientPoint): EditorScreenPoint {\n\tconst ctm = svg.getScreenCTM();\n\tif (!ctm) {\n\t\tthrow new RenderError(\"EDITOR_GEOMETRY_UNAVAILABLE\", \"SVG CTM is not available\");\n\t}\n\tlet inverse: DOMMatrix | null = null;\n\ttry {\n\t\tinverse = ctm.inverse();\n\t} catch {\n\t\t// non-invertible matrix\n\t}\n\tif (!inverse) {\n\t\tthrow new RenderError(\"EDITOR_GEOMETRY_UNAVAILABLE\", \"SVG CTM is not invertible\");\n\t}\n\tconst svgPoint = svg.createSVGPoint();\n\tsvgPoint.x = point.clientX;\n\tsvgPoint.y = point.clientY;\n\tconst result = svgPoint.matrixTransform(inverse);\n\treturn { x: result.x, y: result.y };\n}\n\n/**\n * Return the four projected corners of a grid cell in clockwise order.\n */\nexport function getGridCellPolygon(bundle: RuntimeBundle, cell: [number, number]): EditorScreenPoint[] {\n\tconst [x, y] = cell;\n\treturn [\n\t\tprojectGridPoint(bundle, [x, y]),\n\t\tprojectGridPoint(bundle, [x + 1, y]),\n\t\tprojectGridPoint(bundle, [x + 1, y + 1]),\n\t\tprojectGridPoint(bundle, [x, y + 1]),\n\t];\n}\n","import type { ViewBoxRect } from \"../rendering/rendering-engine.ts\";\nimport type { RuntimeBundle } from \"../types/runtime-bundle.ts\";\nimport { projectToRaw } from \"../utils/projection.ts\";\nimport type { EditorRuntimeAdapter } from \"./adapter.ts\";\nimport type { EditorScreenPoint } from \"./geometry.ts\";\n\nexport interface HitTestOptions {\n\tincludeHidden?: boolean;\n\tincludeLocked?: boolean;\n\tkinds?: Array<\"element\" | \"connection\">;\n}\n\nexport interface RuntimeObjectHit {\n\tid: string;\n\tkind: \"element\" | \"connection\";\n\tlayer: string;\n\tbounds: ViewBoxRect;\n}\n\n/**\n * Find the topmost runtime object at a screen point.\n * Hit testing follows the current rendered depth order so the visually\n * topmost object wins.\n */\nexport function getRuntimeObjectAtPoint(\n\tadapter: EditorRuntimeAdapter,\n\tpoint: EditorScreenPoint,\n\toptions: HitTestOptions = {},\n): RuntimeObjectHit | undefined {\n\tconst kinds = options.kinds ?? [\"element\", \"connection\"];\n\tconst currentScene = adapter.mounted.engine.getCurrentState();\n\tif (!currentScene) return undefined;\n\n\tconst objects = adapter.getObjects(currentScene.id);\n\tconst layerOrder = adapter.getLayerOrder();\n\tconst layerRank = new Map(layerOrder.map((l, i) => [l.name, i]));\n\n\tconst candidates = objects\n\t\t.filter((obj) => kinds.includes(obj.kind))\n\t\t.filter((obj) => options.includeHidden || obj.present)\n\t\t.sort((a, b) => {\n\t\t\tconst rankA = layerRank.get(a.layer) ?? -1;\n\t\t\tconst rankB = layerRank.get(b.layer) ?? -1;\n\t\t\treturn rankA - rankB;\n\t\t});\n\n\t// Check topmost (highest layer rank) first\n\tfor (let i = candidates.length - 1; i >= 0; i--) {\n\t\tconst obj = candidates[i];\n\t\tif (pointInBounds(point, obj.bounds)) {\n\t\t\treturn {\n\t\t\t\tid: obj.id,\n\t\t\t\tkind: obj.kind,\n\t\t\t\tlayer: obj.layer,\n\t\t\t\tbounds: obj.bounds,\n\t\t\t};\n\t\t}\n\t}\n\treturn undefined;\n}\n\n/**\n * Compute the union bounds of a selection of runtime objects.\n * Missing ids are ignored. Returns `undefined` if no ids resolve.\n */\nexport function getRuntimeSelectionBounds(adapter: EditorRuntimeAdapter, ids: string[]): ViewBoxRect | undefined {\n\tlet minX = Number.POSITIVE_INFINITY;\n\tlet minY = Number.POSITIVE_INFINITY;\n\tlet maxX = Number.NEGATIVE_INFINITY;\n\tlet maxY = Number.NEGATIVE_INFINITY;\n\n\tfor (const id of ids) {\n\t\tconst obj = adapter.getObject(id);\n\t\tif (!obj?.present) continue;\n\t\tconst b = obj.bounds;\n\t\tminX = Math.min(minX, b.minX);\n\t\tminY = Math.min(minY, b.minY);\n\t\tmaxX = Math.max(maxX, b.minX + b.width);\n\t\tmaxY = Math.max(maxY, b.minY + b.height);\n\t}\n\n\tif (!Number.isFinite(minX)) return undefined;\n\n\treturn {\n\t\tminX,\n\t\tminY,\n\t\twidth: maxX - minX,\n\t\theight: maxY - minY,\n\t};\n}\n\nfunction pointInBounds(\n\tpoint: EditorScreenPoint,\n\tbounds: { minX: number; minY: number; width: number; height: number },\n): boolean {\n\treturn (\n\t\tpoint.x >= bounds.minX &&\n\t\tpoint.x <= bounds.minX + bounds.width &&\n\t\tpoint.y >= bounds.minY &&\n\t\tpoint.y <= bounds.minY + bounds.height\n\t);\n}\n\n/** Compute screen-space bounds for a connector route. */\nexport function getConnectionBounds(route: [number, number][], bundle: RuntimeBundle): ViewBoxRect {\n\tconst layout = resolveLayoutForBounds(bundle);\n\tlet minRawX = Number.POSITIVE_INFINITY;\n\tlet minRawY = Number.POSITIVE_INFINITY;\n\tlet maxRawX = Number.NEGATIVE_INFINITY;\n\tlet maxRawY = Number.NEGATIVE_INFINITY;\n\n\tfor (const [x, y] of route) {\n\t\tconst { rawX, rawY } = projectToRaw(x, y, layout.cellSize);\n\t\tminRawX = Math.min(minRawX, rawX);\n\t\tminRawY = Math.min(minRawY, rawY);\n\t\tmaxRawX = Math.max(maxRawX, rawX);\n\t\tmaxRawY = Math.max(maxRawY, rawY);\n\t}\n\n\tconst offsetX = -layout.selectedBounds.minX + layout.padding.x;\n\tconst offsetY = -layout.selectedBounds.minY + layout.padding.y;\n\n\treturn {\n\t\tminX: minRawX + offsetX,\n\t\tminY: minRawY + offsetY,\n\t\twidth: maxRawX - minRawX,\n\t\theight: maxRawY - minRawY,\n\t};\n}\n\n// Lightweight re-computation of the layout values needed for bounds projection.\nfunction resolveLayoutForBounds(bundle: RuntimeBundle): {\n\tcellSize: number;\n\tpadding: { x: number; y: number };\n\tselectedBounds: { minX: number; minY: number; maxX: number; maxY: number };\n} {\n\tconst cellSize = bundle.grid.cellSize;\n\tconst padding = bundle.layout.padding;\n\n\t// Reproduce content bounds calculation\n\tlet cMinX = Number.POSITIVE_INFINITY;\n\tlet cMinY = Number.POSITIVE_INFINITY;\n\tlet cMaxX = Number.NEGATIVE_INFINITY;\n\tlet cMaxY = Number.NEGATIVE_INFINITY;\n\n\tfor (const stop of bundle.scenes) {\n\t\tfor (const el of stop.elements ?? []) {\n\t\t\tif (el.presence === \"removed\") continue;\n\t\t\tconst { rawX, rawY } = projectToRaw(el.pos[0] + el.size, el.pos[1] + el.size, cellSize);\n\t\t\tconst visualSize = cellSize * el.size;\n\t\t\tconst anchor = bundle.assets?.[el.asset]?.anchor ?? [0.5, 1];\n\t\t\tcMinX = Math.min(cMinX, rawX - visualSize * anchor[0]);\n\t\t\tcMinY = Math.min(cMinY, rawY - visualSize * anchor[1]);\n\t\t\tcMaxX = Math.max(cMaxX, rawX + visualSize * (1 - anchor[0]));\n\t\t\tcMaxY = Math.max(cMaxY, rawY + visualSize * (1 - anchor[1]));\n\t\t}\n\t\tfor (const conn of stop.connectors ?? []) {\n\t\t\tif (conn.presence === \"removed\") continue;\n\t\t\tfor (const [x, y] of conn.route) {\n\t\t\t\tconst { rawX, rawY } = projectToRaw(x, y, cellSize);\n\t\t\t\tcMinX = Math.min(cMinX, rawX);\n\t\t\t\tcMinY = Math.min(cMinY, rawY);\n\t\t\t\tcMaxX = Math.max(cMaxX, rawX);\n\t\t\t\tcMaxY = Math.max(cMaxY, rawY);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!Number.isFinite(cMinX)) {\n\t\tcMinX = 0;\n\t\tcMinY = 0;\n\t\tcMaxX = cellSize;\n\t\tcMaxY = cellSize;\n\t}\n\n\t// Floor bounds\n\tconst [ox, oy] = bundle.floor.origin;\n\tconst [fw, fh] = bundle.floor.size;\n\tconst floorPoints: Array<[number, number]> = [\n\t\t[ox, oy],\n\t\t[ox + fw, oy],\n\t\t[ox, oy + fh],\n\t\t[ox + fw, oy + fh],\n\t];\n\tlet fMinX = Number.POSITIVE_INFINITY;\n\tlet fMinY = Number.POSITIVE_INFINITY;\n\tlet fMaxX = Number.NEGATIVE_INFINITY;\n\tlet fMaxY = Number.NEGATIVE_INFINITY;\n\tfor (const [x, y] of floorPoints) {\n\t\tconst { rawX, rawY } = projectToRaw(x, y, cellSize);\n\t\tfMinX = Math.min(fMinX, rawX);\n\t\tfMinY = Math.min(fMinY, rawY);\n\t\tfMaxX = Math.max(fMaxX, rawX);\n\t\tfMaxY = Math.max(fMaxY, rawY);\n\t}\n\n\t// Select bounds\n\tlet sMinX: number;\n\tlet sMinY: number;\n\tlet sMaxX: number;\n\tlet sMaxY: number;\n\tconst mode = bundle.layout.bounds;\n\tif (mode === \"content\") {\n\t\tsMinX = cMinX;\n\t\tsMinY = cMinY;\n\t\tsMaxX = cMaxX;\n\t\tsMaxY = cMaxY;\n\t} else if (mode === \"floor\") {\n\t\tsMinX = fMinX;\n\t\tsMinY = fMinY;\n\t\tsMaxX = fMaxX;\n\t\tsMaxY = fMaxY;\n\t} else {\n\t\tsMinX = Math.min(cMinX, fMinX);\n\t\tsMinY = Math.min(cMinY, fMinY);\n\t\tsMaxX = Math.max(cMaxX, fMaxX);\n\t\tsMaxY = Math.max(cMaxY, fMaxY);\n\t}\n\n\treturn {\n\t\tcellSize,\n\t\tpadding,\n\t\tselectedBounds: { minX: sMinX, minY: sMinY, maxX: sMaxX, maxY: sMaxY },\n\t};\n}\n","import {\n\tgetConnectorState,\n\tgetCurrentElementBounds,\n\tgetElementState,\n\tgetResolvedViewBox,\n\thideElementAfterExit,\n\tunhideElementOnReadd,\n\tupdateElementTransforms,\n\ttype ViewBoxRect,\n} from \"../rendering/rendering-engine.ts\";\nimport type { MountedScene } from \"../runtime/mount-scene.ts\";\nimport type { RuntimeConnectorState, RuntimeElementState } from \"../types/node.ts\";\nimport type { EditorClientPoint, EditorScreenPoint } from \"./geometry.ts\";\nimport {\n\tclientPointToSvgPoint as geometryClientPointToSvgPoint,\n\tgetGridCellPolygon as geometryGetGridCellPolygon,\n\tprojectGridPoint as geometryProjectGridPoint,\n\tunprojectScreenPoint as geometryUnprojectScreenPoint,\n} from \"./geometry.ts\";\nimport type { HitTestOptions, RuntimeObjectHit } from \"./hit-test.ts\";\nimport { getConnectionBounds, getRuntimeObjectAtPoint, getRuntimeSelectionBounds } from \"./hit-test.ts\";\n\n/** Metadata for a runtime object as seen by the editor. */\nexport interface RuntimeObjectMetadata {\n\tid: string;\n\tkind: \"element\" | \"connection\";\n\tsceneId: string;\n\tlayer: string;\n\tpresent: boolean;\n\tbounds: ViewBoxRect;\n\tgrid: { kind: \"element\"; at: [number, number]; size: number } | { kind: \"connection\"; route: [number, number][] };\n}\n\n/** Adapter wrapping a mounted scene for editor introspection. */\nexport interface EditorRuntimeAdapter {\n\tmounted: MountedScene;\n\tsetActiveScene(sceneId: string): boolean;\n\tsetProgress(progress: number): void;\n\tgetObjects(sceneId: string): RuntimeObjectMetadata[];\n\tgetObject(id: string): RuntimeObjectMetadata | undefined;\n\tgetLayerOrder(): Array<{ name: string; order: number }>;\n\tgetResolvedViewBox(): ViewBoxRect;\n\tprojectGridPoint(point: [number, number]): EditorScreenPoint;\n\tunprojectScreenPoint(point: EditorScreenPoint): [number, number];\n\tclientPointToSvgPoint(point: EditorClientPoint): EditorScreenPoint;\n\tgetGridCellPolygon(cell: [number, number]): EditorScreenPoint[];\n\tgetObjectAtPoint(point: EditorScreenPoint, options?: HitTestOptions): RuntimeObjectHit | undefined;\n\tgetSelectionBounds(ids: string[]): ViewBoxRect | undefined;\n\tdestroy(): void;\n}\n\n/**\n * Create an editor runtime adapter around an already mounted scene.\n * The adapter does not mutate the mounted scene or create editor UI.\n */\nexport function createEditorRuntimeAdapter(mounted: MountedScene): EditorRuntimeAdapter {\n\tconst bundle = mounted.engine.bundle;\n\tif (!bundle) {\n\t\tthrow new Error(\"EditorRuntimeAdapter requires an initialized mounted scene\");\n\t}\n\n\t// Cache layer order since it is static for the bundle\n\tconst layerOrder = bundle.layers\n\t\t.map((layer) => ({ name: layer.name, order: layer.order }))\n\t\t.sort((a, b) => a.order - b.order || a.name.localeCompare(b.name));\n\n\treturn {\n\t\tmounted,\n\n\t\tsetActiveScene(sceneId: string): boolean {\n\t\t\tconst scene = bundle.scenes.find((candidate) => candidate.id === sceneId);\n\t\t\tif (!scene) return false;\n\t\t\tthis.setProgress(scene.progress);\n\t\t\treturn true;\n\t\t},\n\n\t\tsetProgress(progress: number): void {\n\t\t\tmounted.engine.setProgress(progress);\n\t\t\tapplyEditorFrame(mounted);\n\t\t},\n\n\t\tgetObjects(sceneId: string): RuntimeObjectMetadata[] {\n\t\t\tconst currentState = mounted.engine.getCurrentState();\n\t\t\tif (!currentState || currentState.id !== sceneId) return [];\n\n\t\t\tconst result: RuntimeObjectMetadata[] = [];\n\n\t\t\t// Elements from current engine frame\n\t\t\tfor (const update of mounted.engine.getFrameUpdates()) {\n\t\t\t\tconst bounds = getCurrentElementBounds(mounted.svg, update.id);\n\t\t\t\tresult.push({\n\t\t\t\t\tid: update.id,\n\t\t\t\t\tkind: \"element\",\n\t\t\t\t\tsceneId: currentState.id,\n\t\t\t\t\tlayer: update.layer,\n\t\t\t\t\tpresent: update.lifecycle !== \"removed\",\n\t\t\t\t\tbounds: bounds ?? { minX: 0, minY: 0, width: 0, height: 0 },\n\t\t\t\t\tgrid: { kind: \"element\", at: update.pos, size: update.size },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Connections from current engine frame\n\t\t\tfor (const update of mounted.engine.getConnectorFrameUpdates()) {\n\t\t\t\tconst bounds = getConnectionBounds(update.route, bundle);\n\t\t\t\tresult.push({\n\t\t\t\t\tid: update.id,\n\t\t\t\t\tkind: \"connection\",\n\t\t\t\t\tsceneId: currentState.id,\n\t\t\t\t\tlayer: update.layer,\n\t\t\t\t\tpresent: update.lifecycle !== \"removed\",\n\t\t\t\t\tbounds,\n\t\t\t\t\tgrid: { kind: \"connection\", route: update.route },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\tgetObject(id: string): RuntimeObjectMetadata | undefined {\n\t\t\tconst currentState = mounted.engine.getCurrentState();\n\t\t\tif (!currentState) return undefined;\n\n\t\t\tconst elementUpdate = mounted.engine.getElementUpdate(id);\n\t\t\tif (elementUpdate && elementUpdate.asset !== \"\") {\n\t\t\t\tconst bounds = getCurrentElementBounds(mounted.svg, id);\n\t\t\t\treturn {\n\t\t\t\t\tid: elementUpdate.id,\n\t\t\t\t\tkind: \"element\",\n\t\t\t\t\tsceneId: currentState.id,\n\t\t\t\t\tlayer: elementUpdate.layer,\n\t\t\t\t\tpresent: elementUpdate.lifecycle !== \"removed\",\n\t\t\t\t\tbounds: bounds ?? { minX: 0, minY: 0, width: 0, height: 0 },\n\t\t\t\t\tgrid: { kind: \"element\", at: elementUpdate.pos, size: elementUpdate.size },\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst connectorUpdate = mounted.engine.getConnectorUpdate(id);\n\t\t\tif (connectorUpdate && connectorUpdate.route.length > 0) {\n\t\t\t\tconst bounds = getConnectionBounds(connectorUpdate.route, bundle);\n\t\t\t\treturn {\n\t\t\t\t\tid: connectorUpdate.id,\n\t\t\t\t\tkind: \"connection\",\n\t\t\t\t\tsceneId: currentState.id,\n\t\t\t\t\tlayer: connectorUpdate.layer,\n\t\t\t\t\tpresent: connectorUpdate.lifecycle !== \"removed\",\n\t\t\t\t\tbounds,\n\t\t\t\t\tgrid: { kind: \"connection\", route: connectorUpdate.route },\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\n\t\tgetLayerOrder() {\n\t\t\treturn layerOrder.slice();\n\t\t},\n\n\t\tgetResolvedViewBox() {\n\t\t\treturn getResolvedViewBox(bundle);\n\t\t},\n\n\t\tprojectGridPoint(point: [number, number]): EditorScreenPoint {\n\t\t\treturn geometryProjectGridPoint(bundle, point);\n\t\t},\n\n\t\tunprojectScreenPoint(point: EditorScreenPoint): [number, number] {\n\t\t\treturn geometryUnprojectScreenPoint(bundle, point);\n\t\t},\n\n\t\tclientPointToSvgPoint(point: EditorClientPoint): EditorScreenPoint {\n\t\t\treturn geometryClientPointToSvgPoint(mounted.svg, point);\n\t\t},\n\n\t\tgetGridCellPolygon(cell: [number, number]): EditorScreenPoint[] {\n\t\t\treturn geometryGetGridCellPolygon(bundle, cell);\n\t\t},\n\n\t\tgetObjectAtPoint(point: EditorScreenPoint, options?: HitTestOptions): RuntimeObjectHit | undefined {\n\t\t\treturn getRuntimeObjectAtPoint(this, point, options);\n\t\t},\n\n\t\tgetSelectionBounds(ids: string[]): ViewBoxRect | undefined {\n\t\t\treturn getRuntimeSelectionBounds(this, ids);\n\t\t},\n\n\t\tdestroy() {\n\t\t\t// Adapter owns no listeners or caches that outlive this call.\n\t\t\t// The editor is responsible for mounted scene cleanup.\n\t\t},\n\t};\n}\n\nfunction applyEditorFrame(mounted: MountedScene): void {\n\tconst elements: RuntimeElementState[] = mounted.engine.getFrameUpdates().map((update) => ({\n\t\tid: update.id,\n\t\tasset: update.asset,\n\t\tpos: update.pos,\n\t\tsize: update.size,\n\t\tlayer: update.layer,\n\t\tpresence: update.lifecycle,\n\t\tenter: update.entry as RuntimeElementState[\"enter\"],\n\t\texit: update.exit as RuntimeElementState[\"exit\"],\n\t\tambient: update.ambient,\n\t\ttext: update.text,\n\t\tprimitive: update.primitive,\n\t}));\n\tconst connectors: RuntimeConnectorState[] = mounted.engine.getConnectorFrameUpdates().map((update) => ({\n\t\tid: update.id,\n\t\troute: update.route,\n\t\tlayer: update.layer,\n\t\tpresence: update.lifecycle,\n\t\tstyle: update.style,\n\t\tstart: update.start,\n\t\tend: update.end,\n\t\tdirection: update.direction,\n\t\tenter: update.entry as RuntimeConnectorState[\"enter\"],\n\t\texit: update.exit as RuntimeConnectorState[\"exit\"],\n\t\tambient: update.ambient,\n\t}));\n\n\tfor (const element of elements) {\n\t\tconst state = getElementState(mounted.svg, element.id);\n\t\tif (!state) continue;\n\t\tif (element.presence === \"removed\") {\n\t\t\tstate.isHidden = true;\n\t\t\thideElementAfterExit(state.node);\n\t\t} else {\n\t\t\tstate.isHidden = false;\n\t\t\tunhideElementOnReadd(state.node);\n\t\t}\n\t}\n\n\tfor (const connector of connectors) {\n\t\tconst state = getConnectorState(mounted.svg, connector.id);\n\t\tif (!state) continue;\n\t\tif (connector.presence === \"removed\") {\n\t\t\tstate.isHidden = true;\n\t\t\thideElementAfterExit(state.node);\n\t\t} else {\n\t\t\tstate.isHidden = false;\n\t\t\tunhideElementOnReadd(state.node);\n\t\t}\n\t}\n\n\tupdateElementTransforms(mounted.svg, elements, connectors);\n}\n"],"names":["geometryProjectGridPoint","geometryUnprojectScreenPoint","geometryClientPointToSvgPoint","geometryGetGridCellPolygon"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,10 +3,13 @@ export type { CameraGridArea, CameraState, CameraZoomOptions, ControllerConfig,
|
|
|
3
3
|
export { AnimationController } from "./animation/controller.ts";
|
|
4
4
|
export { buildSceneDOM, type RenderConfig, } from "./rendering/rendering-engine.ts";
|
|
5
5
|
export { applyThemeToElement } from "./rendering/theme.ts";
|
|
6
|
+
export { attachDiagnosticsOverlay, type DiagnosticsOverlayHandle, type DiagnosticsOverlayOptions, } from "./runtime/diagnostics-overlay.ts";
|
|
7
|
+
export { exportScenePng, exportSceneSvg, type PngSnapshotOptions, type SnapshotOptions, } from "./runtime/export.ts";
|
|
8
|
+
export type { ElementPointerEvent, MountedSceneEvents } from "./runtime/index.ts";
|
|
6
9
|
export { type MountedScene, type MountSceneOptions, mountScene, type ResolvedRuntimeConfig, type RuntimeBundle, } from "./runtime/index.ts";
|
|
7
10
|
export { AssetRegistryImpl, composeTheme, createAssetRegistry, createDefaultRegistry, resolveTheme, } from "./types/asset-registry.ts";
|
|
8
11
|
export { AnimationError, ControllerError, ParseError, RenderError, ValidationErrorClass, } from "./types/errors.ts";
|
|
9
|
-
export type { AmbientAnimation, AssetCatalogEntry, AssetCategory, AssetDefinition, AssetRegistry, CameraEasing, CameraFocus, CameraTarget, CompiledAsset, CompiledFloor, CompiledLayer, CompiledLayout, ElementPatch, ElementPlacement, ElementRemoval, EntryAnimation, ExitAnimation, FloorConfig, GridConfig, LayerDefinition, LayoutBounds, LayoutFit, LifecycleStatus, ResolvedLayoutConfig, RuntimeElementState, RuntimeSceneStop, SceneDocument, SceneHeader, SceneStep, Theme, ValidationError, ValidationReport, ValidationWarning, } from "./types/index.ts";
|
|
12
|
+
export type { AmbientAnimation, AssetCatalogEntry, AssetCategory, AssetDefinition, AssetRegistry, CameraEasing, CameraFocus, CameraTarget, CompiledAsset, CompiledFloor, CompiledLayer, CompiledLayout, ConnectionPatch, ConnectionPlacement, ConnectionRemoval, ElementPatch, ElementPlacement, ElementRemoval, EntryAnimation, ExitAnimation, FloorConfig, GridConfig, LayerDefinition, LayoutBounds, LayoutFit, LifecycleStatus, PrimitiveContent, ResolvedLayoutConfig, RuntimeElementState, RuntimeSceneStop, SceneDocument, SceneHeader, SceneStep, TextContent, Theme, ValidationError, ValidationReport, ValidationWarning, } from "./types/index.ts";
|
|
10
13
|
export { guardEntryAnimation, guardExitAnimation, guardLifecycleStatus, } from "./types/node.ts";
|
|
11
14
|
export { calculateTransform, calculateVisualSize, DEFAULT_CELL_SIZE, type EasingFn, type EasingType, easeInCubic, easeInOutCubic, easeOutCubic, linear, projectToScreen, resolveEasing, } from "./utils/index.ts";
|
|
12
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,GACjB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACX,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACN,aAAa,EACb,KAAK,YAAY,GACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,UAAU,EACV,KAAK,qBAAqB,EAC1B,KAAK,aAAa,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,GACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,cAAc,EACd,eAAe,EACf,UAAU,EACV,WAAW,EACX,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACX,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,YAAY,EACZ,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,SAAS,EACT,KAAK,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,WAAW,EACX,cAAc,EACd,YAAY,EACZ,MAAM,EACN,eAAe,EACf,aAAa,GACb,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,GACjB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACX,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACN,aAAa,EACb,KAAK,YAAY,GACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACN,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,GAC9B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACN,cAAc,EACd,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACpB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,UAAU,EACV,KAAK,qBAAqB,EAC1B,KAAK,aAAa,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,GACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,cAAc,EACd,eAAe,EACf,UAAU,EACV,WAAW,EACX,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACX,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,YAAY,EACZ,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,SAAS,EACT,WAAW,EACX,KAAK,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,WAAW,EACX,cAAc,EACd,YAAY,EACZ,MAAM,EACN,eAAe,EACf,aAAa,GACb,MAAM,kBAAkB,CAAC"}
|