@oh-just-another/scene 0.61.0 → 0.63.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/CHANGELOG.md +27 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/a11y.d.ts +1 -1
- package/dist/a11y.d.ts.map +1 -1
- package/dist/{annotation-geometry.d.ts → annotations/annotation-geometry.d.ts} +1 -1
- package/dist/annotations/annotation-geometry.d.ts.map +1 -0
- package/dist/{annotation-geometry.js → annotations/annotation-geometry.js} +1 -1
- package/dist/annotations/annotation-geometry.js.map +1 -0
- package/dist/annotations/annotation.d.ts.map +1 -0
- package/dist/{annotation.js.map → annotations/annotation.js.map} +1 -1
- package/dist/constants.d.ts +34 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +62 -0
- package/dist/constants.js.map +1 -1
- package/dist/edges/edge-curve.d.ts.map +1 -0
- package/dist/{edge-curve.js → edges/edge-curve.js} +1 -1
- package/dist/edges/edge-curve.js.map +1 -0
- package/dist/{edge-geometry.d.ts → edges/edge-geometry.d.ts} +1 -1
- package/dist/edges/edge-geometry.d.ts.map +1 -0
- package/dist/{edge-geometry.js → edges/edge-geometry.js} +5 -5
- package/dist/edges/edge-geometry.js.map +1 -0
- package/dist/edges/edge-label.d.ts.map +1 -0
- package/dist/{edge-label.js → edges/edge-label.js} +1 -1
- package/dist/edges/edge-label.js.map +1 -0
- package/dist/{edge.d.ts → edges/edge.d.ts} +1 -1
- package/dist/edges/edge.d.ts.map +1 -0
- package/dist/edges/edge.js.map +1 -0
- package/dist/{elbow-link.d.ts → edges/elbow-link.d.ts} +1 -1
- package/dist/edges/elbow-link.d.ts.map +1 -0
- package/dist/{elbow-link.js → edges/elbow-link.js} +3 -3
- package/dist/edges/elbow-link.js.map +1 -0
- package/dist/edges/elbow-router.d.ts.map +1 -0
- package/dist/{elbow-router.js → edges/elbow-router.js} +1 -1
- package/dist/edges/elbow-router.js.map +1 -0
- package/dist/{heading.d.ts → edges/heading.d.ts} +1 -1
- package/dist/edges/heading.d.ts.map +1 -0
- package/dist/{heading.js → edges/heading.js} +1 -1
- package/dist/edges/heading.js.map +1 -0
- package/dist/{anchors.d.ts → geometry/anchors.d.ts} +2 -2
- package/dist/geometry/anchors.d.ts.map +1 -0
- package/dist/{anchors.js → geometry/anchors.js} +2 -2
- package/dist/geometry/anchors.js.map +1 -0
- package/dist/{outline.d.ts → geometry/outline.d.ts} +1 -1
- package/dist/geometry/outline.d.ts.map +1 -0
- package/dist/{outline.js → geometry/outline.js} +4 -4
- package/dist/geometry/outline.js.map +1 -0
- package/dist/{snap.d.ts → geometry/snap.d.ts} +1 -1
- package/dist/geometry/snap.d.ts.map +1 -0
- package/dist/{snap.js → geometry/snap.js} +1 -1
- package/dist/geometry/snap.js.map +1 -0
- package/dist/index.d.ts +53 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -33
- package/dist/index.js.map +1 -1
- package/dist/{layout-registry.d.ts → layout/layout-registry.d.ts} +2 -2
- package/dist/layout/layout-registry.d.ts.map +1 -0
- package/dist/layout/layout-registry.js.map +1 -0
- package/dist/{layout.d.ts → layout/layout.d.ts} +3 -3
- package/dist/layout/layout.d.ts.map +1 -0
- package/dist/{layout.js → layout/layout.js} +7 -7
- package/dist/layout/layout.js.map +1 -0
- package/dist/model/diff.d.ts.map +1 -0
- package/dist/model/diff.js.map +1 -0
- package/dist/{file.d.ts → model/file.d.ts} +9 -0
- package/dist/model/file.d.ts.map +1 -0
- package/dist/model/file.js +42 -0
- package/dist/model/file.js.map +1 -0
- package/dist/{hydrate.d.ts → model/hydrate.d.ts} +2 -0
- package/dist/model/hydrate.d.ts.map +1 -0
- package/dist/{hydrate.js → model/hydrate.js} +2 -0
- package/dist/model/hydrate.js.map +1 -0
- package/dist/model/layer.d.ts.map +1 -0
- package/dist/model/layer.js.map +1 -0
- package/dist/{operations.d.ts → model/operations.d.ts} +3 -3
- package/dist/model/operations.d.ts.map +1 -0
- package/dist/model/operations.js.map +1 -0
- package/dist/model/order.d.ts.map +1 -0
- package/dist/model/order.js.map +1 -0
- package/dist/{patch.d.ts → model/patch.d.ts} +3 -3
- package/dist/model/patch.d.ts.map +1 -0
- package/dist/model/patch.js.map +1 -0
- package/dist/{scene.d.ts → model/scene.d.ts} +3 -3
- package/dist/model/scene.d.ts.map +1 -0
- package/dist/model/scene.js.map +1 -0
- package/dist/{three-way-merge.d.ts → model/three-way-merge.d.ts} +1 -1
- package/dist/model/three-way-merge.d.ts.map +1 -0
- package/dist/model/three-way-merge.js.map +1 -0
- package/dist/{viewport.d.ts → model/viewport.d.ts} +18 -0
- package/dist/model/viewport.d.ts.map +1 -0
- package/dist/{viewport.js → model/viewport.js} +3 -1
- package/dist/model/viewport.js.map +1 -0
- package/dist/{queries.d.ts → query/queries.d.ts} +12 -7
- package/dist/query/queries.d.ts.map +1 -0
- package/dist/{queries.js → query/queries.js} +20 -10
- package/dist/query/queries.js.map +1 -0
- package/dist/query/spatial.d.ts.map +1 -0
- package/dist/query/spatial.js.map +1 -0
- package/dist/shapes/brush-outline.d.ts.map +1 -0
- package/dist/{brush-outline.js → shapes/brush-outline.js} +1 -1
- package/dist/shapes/brush-outline.js.map +1 -0
- package/dist/{container.d.ts → shapes/container.d.ts} +1 -1
- package/dist/shapes/container.d.ts.map +1 -0
- package/dist/{container.js → shapes/container.js} +1 -1
- package/dist/shapes/container.js.map +1 -0
- package/dist/shapes/ellipse.d.ts.map +1 -0
- package/dist/shapes/ellipse.js.map +1 -0
- package/dist/shapes/render-bounds.d.ts.map +1 -0
- package/dist/shapes/render-bounds.js.map +1 -0
- package/dist/shapes/shape-transform.d.ts.map +1 -0
- package/dist/shapes/shape-transform.js.map +1 -0
- package/dist/{shape.d.ts → shapes/shape.d.ts} +130 -3
- package/dist/shapes/shape.d.ts.map +1 -0
- package/dist/{shape.js → shapes/shape.js} +30 -5
- package/dist/shapes/shape.js.map +1 -0
- package/dist/text/paragraphs.d.ts +44 -0
- package/dist/text/paragraphs.d.ts.map +1 -0
- package/dist/text/paragraphs.js +133 -0
- package/dist/text/paragraphs.js.map +1 -0
- package/dist/text/placeholder.d.ts +9 -0
- package/dist/text/placeholder.d.ts.map +1 -0
- package/dist/text/placeholder.js +29 -0
- package/dist/text/placeholder.js.map +1 -0
- package/dist/{style.d.ts → text/style.d.ts} +6 -0
- package/dist/text/style.d.ts.map +1 -0
- package/dist/{style.js → text/style.js} +1 -1
- package/dist/text/style.js.map +1 -0
- package/dist/text/text-measure.d.ts.map +1 -0
- package/dist/text/text-measure.js.map +1 -0
- package/dist/{text-runs.d.ts → text/text-runs.d.ts} +1 -1
- package/dist/text/text-runs.d.ts.map +1 -0
- package/dist/text/text-runs.js.map +1 -0
- package/package.json +1 -1
- package/dist/anchors.d.ts.map +0 -1
- package/dist/anchors.js.map +0 -1
- package/dist/annotation-geometry.d.ts.map +0 -1
- package/dist/annotation-geometry.js.map +0 -1
- package/dist/annotation.d.ts.map +0 -1
- package/dist/brush-outline.d.ts.map +0 -1
- package/dist/brush-outline.js.map +0 -1
- package/dist/container.d.ts.map +0 -1
- package/dist/container.js.map +0 -1
- package/dist/diff.d.ts.map +0 -1
- package/dist/diff.js.map +0 -1
- package/dist/edge-curve.d.ts.map +0 -1
- package/dist/edge-curve.js.map +0 -1
- package/dist/edge-geometry.d.ts.map +0 -1
- package/dist/edge-geometry.js.map +0 -1
- package/dist/edge-label.d.ts.map +0 -1
- package/dist/edge-label.js.map +0 -1
- package/dist/edge.d.ts.map +0 -1
- package/dist/edge.js.map +0 -1
- package/dist/elbow-link.d.ts.map +0 -1
- package/dist/elbow-link.js.map +0 -1
- package/dist/elbow-router.d.ts.map +0 -1
- package/dist/elbow-router.js.map +0 -1
- package/dist/ellipse.d.ts.map +0 -1
- package/dist/ellipse.js.map +0 -1
- package/dist/file.d.ts.map +0 -1
- package/dist/file.js +0 -13
- package/dist/file.js.map +0 -1
- package/dist/heading.d.ts.map +0 -1
- package/dist/heading.js.map +0 -1
- package/dist/hydrate.d.ts.map +0 -1
- package/dist/hydrate.js.map +0 -1
- package/dist/layer.d.ts.map +0 -1
- package/dist/layer.js.map +0 -1
- package/dist/layout-registry.d.ts.map +0 -1
- package/dist/layout-registry.js.map +0 -1
- package/dist/layout.d.ts.map +0 -1
- package/dist/layout.js.map +0 -1
- package/dist/operations.d.ts.map +0 -1
- package/dist/operations.js.map +0 -1
- package/dist/order.d.ts.map +0 -1
- package/dist/order.js.map +0 -1
- package/dist/outline.d.ts.map +0 -1
- package/dist/outline.js.map +0 -1
- package/dist/patch.d.ts.map +0 -1
- package/dist/patch.js.map +0 -1
- package/dist/queries.d.ts.map +0 -1
- package/dist/queries.js.map +0 -1
- package/dist/render-bounds.d.ts.map +0 -1
- package/dist/render-bounds.js.map +0 -1
- package/dist/scene.d.ts.map +0 -1
- package/dist/scene.js.map +0 -1
- package/dist/shape-transform.d.ts.map +0 -1
- package/dist/shape-transform.js.map +0 -1
- package/dist/shape.d.ts.map +0 -1
- package/dist/shape.js.map +0 -1
- package/dist/snap.d.ts.map +0 -1
- package/dist/snap.js.map +0 -1
- package/dist/spatial.d.ts.map +0 -1
- package/dist/spatial.js.map +0 -1
- package/dist/style.d.ts.map +0 -1
- package/dist/style.js.map +0 -1
- package/dist/text-measure.d.ts.map +0 -1
- package/dist/text-measure.js.map +0 -1
- package/dist/text-runs.d.ts.map +0 -1
- package/dist/text-runs.js.map +0 -1
- package/dist/three-way-merge.d.ts.map +0 -1
- package/dist/three-way-merge.js.map +0 -1
- package/dist/viewport.d.ts.map +0 -1
- package/dist/viewport.js.map +0 -1
- /package/dist/{annotation.d.ts → annotations/annotation.d.ts} +0 -0
- /package/dist/{annotation.js → annotations/annotation.js} +0 -0
- /package/dist/{edge-curve.d.ts → edges/edge-curve.d.ts} +0 -0
- /package/dist/{edge-label.d.ts → edges/edge-label.d.ts} +0 -0
- /package/dist/{edge.js → edges/edge.js} +0 -0
- /package/dist/{elbow-router.d.ts → edges/elbow-router.d.ts} +0 -0
- /package/dist/{layout-registry.js → layout/layout-registry.js} +0 -0
- /package/dist/{diff.d.ts → model/diff.d.ts} +0 -0
- /package/dist/{diff.js → model/diff.js} +0 -0
- /package/dist/{layer.d.ts → model/layer.d.ts} +0 -0
- /package/dist/{layer.js → model/layer.js} +0 -0
- /package/dist/{operations.js → model/operations.js} +0 -0
- /package/dist/{order.d.ts → model/order.d.ts} +0 -0
- /package/dist/{order.js → model/order.js} +0 -0
- /package/dist/{patch.js → model/patch.js} +0 -0
- /package/dist/{scene.js → model/scene.js} +0 -0
- /package/dist/{three-way-merge.js → model/three-way-merge.js} +0 -0
- /package/dist/{spatial.d.ts → query/spatial.d.ts} +0 -0
- /package/dist/{spatial.js → query/spatial.js} +0 -0
- /package/dist/{brush-outline.d.ts → shapes/brush-outline.d.ts} +0 -0
- /package/dist/{ellipse.d.ts → shapes/ellipse.d.ts} +0 -0
- /package/dist/{ellipse.js → shapes/ellipse.js} +0 -0
- /package/dist/{render-bounds.d.ts → shapes/render-bounds.d.ts} +0 -0
- /package/dist/{render-bounds.js → shapes/render-bounds.js} +0 -0
- /package/dist/{shape-transform.d.ts → shapes/shape-transform.d.ts} +0 -0
- /package/dist/{shape-transform.js → shapes/shape-transform.js} +0 -0
- /package/dist/{text-measure.d.ts → text/text-measure.d.ts} +0 -0
- /package/dist/{text-measure.js → text/text-measure.js} +0 -0
- /package/dist/{text-runs.js → text/text-runs.js} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { bounds as B } from "@oh-just-another/math";
|
|
2
|
-
import { getElementWorldBounds, getElementLocalBounds, isPolygon, isEllipse, isRectangle, isImage, isText, isPath, isGroup, } from "
|
|
3
|
-
import { getCornerRadius } from "
|
|
2
|
+
import { getElementWorldBounds, getElementLocalBounds, isPolygon, isEllipse, isRectangle, isImage, isText, isPath, isGroup, } from "../shapes/shape.js";
|
|
3
|
+
import { getCornerRadius } from "../text/style.js";
|
|
4
4
|
import { SpatialGrid } from "./spatial.js";
|
|
5
|
-
import { byOrderAsc } from "
|
|
6
|
-
import { localToWorld } from "
|
|
7
|
-
import { ellipseOutlinePoint } from "
|
|
5
|
+
import { byOrderAsc } from "../model/order.js";
|
|
6
|
+
import { localToWorld } from "../shapes/shape-transform.js";
|
|
7
|
+
import { ellipseOutlinePoint } from "../shapes/ellipse.js";
|
|
8
8
|
// --- direct lookups ---
|
|
9
9
|
export const getElement = (scene, id) => scene.elements.get(id);
|
|
10
10
|
export const getLink = (scene, id) => scene.links.get(id);
|
|
@@ -307,8 +307,12 @@ export const getElementsCoveredByBounds = (scene, range, minCoverageRatio = 0.5)
|
|
|
307
307
|
* within each layer top-to-bottom; returns the first hit. Hit-test here is the
|
|
308
308
|
* conservative AABB test; renderer-specific shape-precise hit-tests belong
|
|
309
309
|
* with the renderer.
|
|
310
|
+
*
|
|
311
|
+
* `accept` filters candidates: a shape it rejects is skipped and the scan
|
|
312
|
+
* continues to the shapes beneath it (click-through), instead of shadowing
|
|
313
|
+
* them the way a post-hoc filter on the topmost hit would.
|
|
310
314
|
*/
|
|
311
|
-
export const getElementAt = (scene, point) => {
|
|
315
|
+
export const getElementAt = (scene, point, accept) => {
|
|
312
316
|
const layers = getLayersInOrder(scene);
|
|
313
317
|
for (let i = layers.length - 1; i >= 0; i--) {
|
|
314
318
|
const layer = layers[i];
|
|
@@ -319,8 +323,11 @@ export const getElementAt = (scene, point) => {
|
|
|
319
323
|
const s = shapes[j];
|
|
320
324
|
if (s === undefined)
|
|
321
325
|
continue;
|
|
322
|
-
if (B.contains(getElementWorldBounds(s), point))
|
|
323
|
-
|
|
326
|
+
if (!B.contains(getElementWorldBounds(s), point))
|
|
327
|
+
continue;
|
|
328
|
+
if (accept && !accept(s))
|
|
329
|
+
continue;
|
|
330
|
+
return s;
|
|
324
331
|
}
|
|
325
332
|
}
|
|
326
333
|
return undefined;
|
|
@@ -361,9 +368,10 @@ export const queryByIndex = (scene, grid, range) => {
|
|
|
361
368
|
* pre-filters candidates through `grid.query` — O(k) where k is the
|
|
362
369
|
* shapes overlapping the point's cell. Walks layers top-to-bottom for
|
|
363
370
|
* stable z-order; within a layer picks the highest-`order` shape that
|
|
364
|
-
* actually contains the point.
|
|
371
|
+
* actually contains the point. `accept` skips rejected shapes and keeps
|
|
372
|
+
* scanning beneath them (same click-through contract as `getElementAt`).
|
|
365
373
|
*/
|
|
366
|
-
export const getElementAtIndexed = (scene, grid, point) => {
|
|
374
|
+
export const getElementAtIndexed = (scene, grid, point, accept) => {
|
|
367
375
|
const pointRange = { x: point.x, y: point.y, width: 0, height: 0 };
|
|
368
376
|
const candidates = grid.query(pointRange);
|
|
369
377
|
if (candidates.size === 0)
|
|
@@ -378,6 +386,8 @@ export const getElementAtIndexed = (scene, grid, point) => {
|
|
|
378
386
|
continue;
|
|
379
387
|
if (!B.contains(getElementWorldBounds(shape), point))
|
|
380
388
|
continue;
|
|
389
|
+
if (accept && !accept(shape))
|
|
390
|
+
continue;
|
|
381
391
|
const layer = scene.layers.get(shape.layerId);
|
|
382
392
|
if (!layer?.visible)
|
|
383
393
|
continue;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/query/queries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,GAGR,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,yBAAyB;AAEzB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAY,EAAE,EAAa,EAAuB,EAAE,CAC7E,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAEzB,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAU,EAAoB,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE3F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,EAAW,EAAqB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE/F,+BAA+B;AAE/B;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAoB,EAAE,CACjE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAE9C,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAE,OAAgB,EAAsB,EAAE,CACvF,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,OAAgB,EAAmB,EAAE,CACjF,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAElF,sCAAsC;AAEtC,2DAA2D;AAC3D,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,kEAAkE;AAClE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC;IACtC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IAClB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IAC5B,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;IACvC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;CAC9B,CAAC;AAEF,2CAA2C;AAC3C,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,iFAAiF;AACjF,MAAM,eAAe,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IACvD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,EAAU,EAAE,IAAY,EAAE,EAAU,EAAU,EAAE;QACvE,MAAM,GAAG,GAAW,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5B,OAAO;QACL,yEAAyE;QACzE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC;QAChD,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;QACxC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;KAC3C,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,QAAgC,EAAU,EAAE;IAC/D,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,IAAI,GAAG,GAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACrC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC;oBACP,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC3D,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;iBAC5D,CAAC,CAAC;YACL,CAAC;YACD,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC;oBACP,CAAC,EACC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;wBACd,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;wBAC5B,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;wBAC5B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;oBACjB,CAAC,EACC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;wBACd,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;wBAC5B,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;wBAC5B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;iBAClB,CAAC,CAAC;YACL,CAAC;YACD,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QACb,CAAC;QACD,+DAA+D;IACjE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAWF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkC,CAAC;AAEnE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAE,QAAgC,EAAQ,EAAE;IAC7F,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAmB,EAAE;IAC5D,IAAI,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACvB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,MAAM,GAAG,GAAW,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,uBAAuB,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACpE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,0EAA0E;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAAE,KAAc,EAAY,EAAE;IAC1E,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IACD,6CAA6C;IAC7C,MAAM,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,yCAAyC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAY,EAAE,QAAmB,EAAsB,EAAE;IACrF,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,KAAc,EAAW,EAAE;IACvE,IAAI,OAAO,GAAwB,KAAK,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,KAAc,EAAW,EAAE;IACvE,IAAI,OAAO,GAAwB,KAAK,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAY,EAAE,SAAoB,EAAuB,EAAE;IACrF,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM;YAAE,MAAM;QACnB,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAE,QAAmB,EAAsB,EAAE;IACxF,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAgB,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM;QAC7B,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,SAAS;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,wCAAwC;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAY,EAAE,KAAa,EAAsB,EAAE;IACrF,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,KAAY,EACZ,KAAa,EACb,gBAAgB,GAAG,GAAG,EACF,EAAE;IACtB,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC;YAAE,SAAS;QACtC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;QAChC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACZ,SAAS;QACX,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;QACpB,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;QACpB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACjC,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;QAClC,IAAI,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACZ,SAAS;QACX,CAAC;QACD,+DAA+D;QAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QAC7C,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,IAAI,gBAAgB,EAAE,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAY,EACZ,KAAW,EACX,MAAoC,EACf,EAAE;IACvB,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,OAAO;YAAE,SAAS;QAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,SAAS;gBAAE,SAAS;YAC9B,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;gBAAE,SAAS;YAC3D,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAE,SAAS;YACnC,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,gCAAgC;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAAE,QAAiB,EAAe,EAAE;IAChF,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAY,EACZ,IAAiB,EACjB,KAAa,EACO,EAAE;IACtB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,KAAY,EACZ,IAAiB,EACjB,KAAW,EACX,MAAoC,EACf,EAAE;IACvB,MAAM,UAAU,GAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,IAAyB,CAAC;IAC9B,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,SAAS;QAC/D,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,SAAS;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,OAAO;YAAE,SAAS;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAe,CAAC;QACzC,IACE,CAAC,OAAO;YACR,UAAU,GAAG,cAAc;YAC3B,CAAC,UAAU,KAAK,cAAc,IAAI,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC,EACjE,CAAC;YACD,IAAI,GAAG,KAAK,CAAC;YACb,cAAc,GAAG,UAAU,CAAC;YAC5B,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;YAC/B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spatial.d.ts","sourceRoot":"","sources":["../../src/query/spatial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,qBAAa,WAAW;IACtB,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAE3D,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE3C,QAAQ,SAAM;IAK1B,gCAAgC;IAChC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAetC,MAAM,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAY3B,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtC;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC;IAU5C,wBAAwB;IACxB,KAAK,IAAI,IAAI;IAKb,0CAA0C;IAC1C,OAAO,CAAC,QAAQ;CAWjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spatial.js","sourceRoot":"","sources":["../../src/query/spatial.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brush-outline.d.ts","sourceRoot":"","sources":["../../src/shapes/brush-outline.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,SAAS,UAAU,EAAE,KAAG,IAAI,EAoEhE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { vec2 } from "@oh-just-another/math";
|
|
2
2
|
import { req } from "@oh-just-another/types";
|
|
3
|
-
import { BRUSH_OUTLINE_ARC_STEP, BRUSH_OUTLINE_MITER_LIMIT } from "
|
|
3
|
+
import { BRUSH_OUTLINE_ARC_STEP, BRUSH_OUTLINE_MITER_LIMIT } from "../constants.js";
|
|
4
4
|
/**
|
|
5
5
|
* The single closed outline polygon of a variable-width brush stroke: the left
|
|
6
6
|
* offset side forward, a round end cap, the right offset side back, a round start
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brush-outline.js","sourceRoot":"","sources":["../../src/shapes/brush-outline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAa,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEpF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAA6B,EAAU,EAAE;IACpE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAQ,EAAE;QAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAE9D,iEAAiE;IACjE,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,IAAI,GAAW,EAAE,CAAC;IACxB,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1B,mDAAmD;YACnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QACD,4EAA4E;QAC5E,6EAA6E;QAC7E,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,kEAAkE;IAClE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAW,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,SAAS,GAAG,CAAC,CAAO,EAAE,KAAW,EAAE,KAAW,EAAE,CAAS,EAAE,IAAY,EAAU,EAAE;IACvF,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,6BAA6B;IAC7D,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,yBAAyB,EAAE,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,GAAG,CAAC,CAAO,EAAE,KAAW,EAAE,KAAW,EAAE,CAAS,EAAE,IAAY,EAAU,EAAE,CACrF,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAElF;;;;;GAKG;AACH,MAAM,MAAM,GAAG,CAAC,CAAO,EAAE,GAAS,EAAE,CAAS,EAAE,YAAqB,EAAU,EAAE;IAC9E,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,GAAG,GAAG,CAAC,CAAO,EAAE,MAAc,EAAE,EAAU,EAAE,EAAU,EAAU,EAAE;IACtE,IAAI,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,OAAO,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI;QAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACpD,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI;QAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Bounds, ElementId, Vec2 } from "@oh-just-another/types";
|
|
2
|
-
import type { Scene } from "
|
|
2
|
+
import type { Scene } from "../model/scene.js";
|
|
3
3
|
import type { Element, ElementBase } from "./shape.js";
|
|
4
4
|
/**
|
|
5
5
|
* Container behaviour spec. Carried on a shape via
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/shapes/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGvD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,aAAa,GAAG,IAAI,CAAC;AAI7E;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAI,UAAU,iBAAiB,KAAG,IAEvE,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,WAAW,GAAI,GAAG,WAAW,KAAG,OAAuC,CAAC;AAErF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,GAAI,GAAG,WAAW,KAAG,aAAa,GAAG,IA2CjE,CAAC;AAYF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,GAAG,WAAW,KAAG,MAAM,GAAG,IAS1D,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;AAItF,sEAAsE;AACtE,eAAO,MAAM,8BAA8B,GAAI,UAAU,sBAAsB,KAAG,IAEjF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,GAAG,WAAW,KAAG,SAAS,MAAM,EAcjE,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,KAAK,EACZ,YAAY,IAAI,EAChB,UAAS,WAAW,CAAC,SAAS,CAAa,KAC1C,OAAO,GAAG,IAgBZ,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,GAAI,WAAW,WAAW,EAAE,YAAY,MAAM,KAAG,MAAM,GAAG,IAuCzF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC/B,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,EAC/D,UAAU,MAAM,KACf;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,IAAI,CAAA;CAcvD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { bounds as B } from "@oh-just-another/math";
|
|
2
|
-
import { getLayersInOrder, getElementsInLayer } from "
|
|
2
|
+
import { getLayersInOrder, getElementsInLayer } from "../query/queries.js";
|
|
3
3
|
const resolvers = [];
|
|
4
4
|
/**
|
|
5
5
|
* Plug in a resolver. Called in registration order — first non-null
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/shapes/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ellipse.d.ts","sourceRoot":"","sources":["../../src/shapes/ellipse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,IAAI,MAAM,EACV,IAAI,MAAM,EACV,IAAI,MAAM,EACV,IAAI,MAAM,EACV,OAAO,MAAM,KACZ,IAGF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ellipse.js","sourceRoot":"","sources":["../../src/shapes/ellipse.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,KAAa,EACP,EAAE;IACR,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,mBAAmB;IACpE,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AACxE,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-bounds.d.ts","sourceRoot":"","sources":["../../src/shapes/render-bounds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,KAAK,sBAAsB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,cAAc,CAAC;AAIrE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,EAAE,IAAI,sBAAsB,KAAG,IAEjF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,WAAW,KAAG,MAgB3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-bounds.js","sourceRoot":"","sources":["../../src/shapes/render-bounds.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAoB,MAAM,YAAY,CAAC;AAuBrE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAE,EAA0B,EAAQ,EAAE;IACvF,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAkB,EAAU,EAAE;IACnE,MAAM,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC;IAClB,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACzB,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACrE,OAAO;QACL,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;QACb,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK;QAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,GAAG,GAAG,MAAM;KAChC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape-transform.d.ts","sourceRoot":"","sources":["../../src/shapes/shape-transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,WAAW,EAAE,OAAO,IAAI,KAAG,IAS9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,WAAW,EAAE,OAAO,IAAI,KAAG,IAY9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape-transform.js","sourceRoot":"","sources":["../../src/shapes/shape-transform.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAkB,EAAE,KAAW,EAAQ,EAAE;IACpE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO;QACL,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;QAC3C,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;KAC5C,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAkB,EAAE,KAAW,EAAQ,EAAE;IACpE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrC,uBAAuB;IACvB,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IAChC,OAAO;QACL,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;KAChD,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Bounds, FileId, LayerId, ElementId, Vec2 } from "@oh-just-another/types";
|
|
2
2
|
import type { FractionalIndex } from "fractional-keys";
|
|
3
|
-
import type { AnchorRef } from "
|
|
4
|
-
import type { Style, TextStyle } from "
|
|
5
|
-
import type { TextRun } from "
|
|
3
|
+
import type { AnchorRef } from "../edges/edge.js";
|
|
4
|
+
import type { Style, TextStyle } from "../text/style.js";
|
|
5
|
+
import type { TextRun } from "../text/text-runs.js";
|
|
6
6
|
/**
|
|
7
7
|
* Fields shared by every shape variant. `order` is a fractional-index string
|
|
8
8
|
* used for z-ordering within the parent layer — insertions are O(1) and never
|
|
@@ -91,6 +91,15 @@ export interface ElementBase {
|
|
|
91
91
|
* shape.
|
|
92
92
|
*/
|
|
93
93
|
readonly hidden?: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Embedded text label — the shape's own text content, drawn inside its
|
|
96
|
+
* bounds (wrapped to the width, aligned via `style.textAlign` /
|
|
97
|
+
* `style.textBaseline`, `middle`+`center` by default). Shares the text
|
|
98
|
+
* element's building blocks (styled runs, list paragraphs) as data;
|
|
99
|
+
* layout is the renderer's job. Double-click opens the inline editor
|
|
100
|
+
* on shapes that support it (see `canCarryLabel`).
|
|
101
|
+
*/
|
|
102
|
+
readonly label?: ShapeLabel;
|
|
94
103
|
/**
|
|
95
104
|
* Element-level hyperlink. Any shape — text, image,
|
|
96
105
|
* rectangle — can carry one. The host opens it on Cmd/Ctrl-click or via
|
|
@@ -154,6 +163,90 @@ export interface TextElement extends ElementBase {
|
|
|
154
163
|
* (renders exactly like a plain text block). See {@link TextRun}.
|
|
155
164
|
*/
|
|
156
165
|
readonly runs?: readonly TextRun[];
|
|
166
|
+
/**
|
|
167
|
+
* Optional per-paragraph attributes (lists / nesting), aligned by index
|
|
168
|
+
* with `text.split("\n")`. A shorter array leaves the trailing
|
|
169
|
+
* paragraphs plain; omitted = every paragraph plain. Numbering for
|
|
170
|
+
* `"numbered"` items is derived at render time (consecutive numbered
|
|
171
|
+
* paragraphs at the same indent count up), never stored.
|
|
172
|
+
*/
|
|
173
|
+
readonly paragraphs?: readonly TextParagraph[];
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Embedded text carried by a non-text shape (see `ElementBase.label`).
|
|
177
|
+
* Field-for-field compatible with the text element's content model so
|
|
178
|
+
* the text pipeline (runs, paragraphs, layout, inline editing) applies
|
|
179
|
+
* unchanged.
|
|
180
|
+
*/
|
|
181
|
+
export interface ShapeLabel {
|
|
182
|
+
readonly text: string;
|
|
183
|
+
readonly fontFamily: string;
|
|
184
|
+
readonly fontSize: number;
|
|
185
|
+
/**
|
|
186
|
+
* Auto-fit mode (sticky notes): the RENDERED font size is derived so
|
|
187
|
+
* the text fills the shape body, scaling with the shape; `fontSize`
|
|
188
|
+
* then only serves as the fallback / upper hint. Picking an explicit
|
|
189
|
+
* size in the toolbar clears the flag.
|
|
190
|
+
*/
|
|
191
|
+
readonly autoFit?: boolean;
|
|
192
|
+
/** Optional style overlay; `textAlign`/`textBaseline` default to center/middle. */
|
|
193
|
+
readonly style?: TextStyle;
|
|
194
|
+
readonly runs?: readonly TextRun[];
|
|
195
|
+
readonly paragraphs?: readonly TextParagraph[];
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Sticky note — a bounded card whose text lives in the shared embedded
|
|
199
|
+
* `label` (double-click to edit). Background comes from `style.fill`;
|
|
200
|
+
* `authorName` renders along the bottom edge when `showAuthor` is on.
|
|
201
|
+
* Registered as a plugin-style type: not part of the built-in `Element`
|
|
202
|
+
* union, handled through the renderer / bounder registries and the
|
|
203
|
+
* custom-element wire schema.
|
|
204
|
+
*/
|
|
205
|
+
export interface StickyElement extends ElementBase {
|
|
206
|
+
readonly type: "sticky";
|
|
207
|
+
readonly width: number;
|
|
208
|
+
readonly height: number;
|
|
209
|
+
readonly authorName?: string;
|
|
210
|
+
readonly showAuthor?: boolean;
|
|
211
|
+
/** Free-form tags, rendered as small pills along the bottom edge. */
|
|
212
|
+
readonly tags?: readonly string[];
|
|
213
|
+
/**
|
|
214
|
+
* Emoji reactions. Each glyph tracks WHO reacted (`users` — collab
|
|
215
|
+
* user ids); the visible counter is `users.length`. A user's click on
|
|
216
|
+
* a glyph they already reacted with removes their reaction (toggle),
|
|
217
|
+
* anyone else's click adds theirs. The add button lives in the host
|
|
218
|
+
* UI at the sticky's bottom-left corner.
|
|
219
|
+
*/
|
|
220
|
+
readonly reactions?: readonly {
|
|
221
|
+
readonly glyph: string;
|
|
222
|
+
readonly users: readonly string[];
|
|
223
|
+
}[];
|
|
224
|
+
}
|
|
225
|
+
/** True when the shape is a sticky note. */
|
|
226
|
+
export declare const isSticky: (shape: ElementBase) => shape is StickyElement;
|
|
227
|
+
/**
|
|
228
|
+
* Emoji element — a single glyph drawn at `size` world units. The glyph
|
|
229
|
+
* is replaced via the toolbar picker. Plugin-style type like `sticky`.
|
|
230
|
+
*/
|
|
231
|
+
export interface EmojiElement extends ElementBase {
|
|
232
|
+
readonly type: "emoji";
|
|
233
|
+
readonly glyph: string;
|
|
234
|
+
readonly size: number;
|
|
235
|
+
}
|
|
236
|
+
/** True when the shape is an emoji element. */
|
|
237
|
+
export declare const isEmoji: (shape: ElementBase) => shape is EmojiElement;
|
|
238
|
+
/** True when the shape's type supports an embedded text label. */
|
|
239
|
+
export declare const canCarryLabel: (shape: ElementBase) => boolean;
|
|
240
|
+
/**
|
|
241
|
+
* Paragraph-level attributes for a {@link TextElement}. Both fields are
|
|
242
|
+
* optional so plain paragraphs serialize as `{}` (or are omitted entirely
|
|
243
|
+
* via a short array).
|
|
244
|
+
*/
|
|
245
|
+
export interface TextParagraph {
|
|
246
|
+
/** List marker kind; omitted = plain paragraph. */
|
|
247
|
+
readonly list?: "bullet" | "numbered";
|
|
248
|
+
/** 0-based nesting level. Omitted = 0. */
|
|
249
|
+
readonly indent?: number;
|
|
157
250
|
}
|
|
158
251
|
/**
|
|
159
252
|
* Normalised crop rectangle for an {@link ImageElement}. All four
|
|
@@ -171,6 +264,29 @@ export interface ImageCrop {
|
|
|
171
264
|
readonly width: number;
|
|
172
265
|
readonly height: number;
|
|
173
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Shape mask applied to an image element's BOX (after crop): pixels
|
|
269
|
+
* outside the mask are clipped away by the renderer (`RenderTarget.clip`
|
|
270
|
+
* — canvas2d clip / svg clipPath / webgl2 stencil). Coordinates are
|
|
271
|
+
* normalised to the element box (0..1 on both axes), so the mask scales
|
|
272
|
+
* with the shape. Additive: scenes and renderers that predate masks
|
|
273
|
+
* ignore it and draw the full box.
|
|
274
|
+
*
|
|
275
|
+
* - `ellipse` — inscribed ellipse (circle on a square box).
|
|
276
|
+
* - `round-rect` — rounded rectangle; `radius` is a fraction of the
|
|
277
|
+
* SHORTER box side (0..0.5; 0.5 = capsule).
|
|
278
|
+
* - `polygon` — arbitrary closed ring of normalised points (≥ 3). The
|
|
279
|
+
* built-in presets live in {@link IMAGE_MASK_POLYGON_PRESETS}.
|
|
280
|
+
*/
|
|
281
|
+
export type ImageMask = {
|
|
282
|
+
readonly kind: "ellipse";
|
|
283
|
+
} | {
|
|
284
|
+
readonly kind: "round-rect";
|
|
285
|
+
readonly radius: number;
|
|
286
|
+
} | {
|
|
287
|
+
readonly kind: "polygon";
|
|
288
|
+
readonly points: readonly Vec2[];
|
|
289
|
+
};
|
|
174
290
|
export interface ImageElement extends ElementBase {
|
|
175
291
|
readonly type: "image";
|
|
176
292
|
/**
|
|
@@ -185,6 +301,11 @@ export interface ImageElement extends ElementBase {
|
|
|
185
301
|
* cropping simply ignore it and draw the full bitmap.
|
|
186
302
|
*/
|
|
187
303
|
readonly crop?: ImageCrop;
|
|
304
|
+
/**
|
|
305
|
+
* Optional shape mask clipping the drawn box. Omitted = no mask.
|
|
306
|
+
* Independent of (and applied after) `crop`. See {@link ImageMask}.
|
|
307
|
+
*/
|
|
308
|
+
readonly mask?: ImageMask;
|
|
188
309
|
/**
|
|
189
310
|
* Id of the `BinaryFile` in `Scene.files` that backs this image.
|
|
190
311
|
* When present, hosts should resolve through the file registry
|
|
@@ -194,6 +315,12 @@ export interface ImageElement extends ElementBase {
|
|
|
194
315
|
readonly fileId?: FileId;
|
|
195
316
|
readonly width: number;
|
|
196
317
|
readonly height: number;
|
|
318
|
+
/**
|
|
319
|
+
* Accessible description of the image content. Surfaced as `<title>`
|
|
320
|
+
* in SVG output and available to hosts for `aria` wiring. Omitted =
|
|
321
|
+
* decorative / undescribed.
|
|
322
|
+
*/
|
|
323
|
+
readonly alt?: string;
|
|
197
324
|
/**
|
|
198
325
|
* Animated-content hint (opt-in). When set, the
|
|
199
326
|
* renderer's image path consults `getAnimationAdapter(kind)`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../src/shapes/shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAKpD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAEvD;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAE9B;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAE7B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAE5B;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GACzC;IAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GACzC;IAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GAC3F;IAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC;AAE3B,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAChD;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAChD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CAC/F;AAED,4CAA4C;AAC5C,eAAO,MAAM,QAAQ,GAAI,OAAO,WAAW,KAAG,KAAK,IAAI,aAAwC,CAAC;AAEhG;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,+CAA+C;AAC/C,eAAO,MAAM,OAAO,GAAI,OAAO,WAAW,KAAG,KAAK,IAAI,YAAsC,CAAC;AAW7F,kEAAkE;AAClE,eAAO,MAAM,aAAa,GAAI,OAAO,WAAW,KAAG,OAA0C,CAAC;AAE9F;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACtC,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAA;CAAE,CAAC;AAEnE,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IACtD,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,iFAAiF;IACjF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,WAAW,GACX,WAAW,GACX,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,YAAY,GACZ,iBAAiB,GACjB,YAAY,CAAC;AAEjB;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG,WAAW,CAAC;AAInD,eAAO,MAAM,WAAW,GAAI,GAAG,WAAW,KAAG,CAAC,IAAI,gBAA0C,CAAC;AAC7F,eAAO,MAAM,SAAS,GAAI,GAAG,WAAW,KAAG,CAAC,IAAI,cAAsC,CAAC;AACvF,eAAO,MAAM,SAAS,GAAI,GAAG,WAAW,KAAG,CAAC,IAAI,cAAsC,CAAC;AACvF,eAAO,MAAM,MAAM,GAAI,GAAG,WAAW,KAAG,CAAC,IAAI,WAAgC,CAAC;AAC9E,eAAO,MAAM,MAAM,GAAI,GAAG,WAAW,KAAG,CAAC,IAAI,WAAgC,CAAC;AAC9E,eAAO,MAAM,OAAO,GAAI,GAAG,WAAW,KAAG,CAAC,IAAI,YAAkC,CAAC;AACjF,eAAO,MAAM,UAAU,GAAI,GAAG,WAAW,KAAG,CAAC,IAAI,eAAwC,CAAC;AAC1F,eAAO,MAAM,OAAO,GAAI,GAAG,WAAW,KAAG,CAAC,IAAI,YAAkC,CAAC;AACjF,eAAO,MAAM,OAAO,GAAI,GAAG,WAAW,KAAG,CAAC,IAAI,YAAkC,CAAC;AACjF,eAAO,MAAM,YAAY,GAAI,GAAG,WAAW,KAAG,CAAC,IAAI,iBAA6C,CAAC;AACjG,eAAO,MAAM,OAAO,GAAI,GAAG,WAAW,KAAG,CAAC,IAAI,YAAkC,CAAC;AAEjF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,MAA8C,CAAC;AAI7F;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;AAIvF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,WAAW,EACnD,MAAM,CAAC,CAAC,MAAM,CAAC,EACf,SAAS,cAAc,CAAC,CAAC,CAAC,KACzB,IAEF,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,cAAc,GAAG,SAAsC,CAAC;AAElG;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,WAAW,KAAG,MAM1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,WAAW,KAAG,MAoB1D,CAAC"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { bounds as B } from "@oh-just-another/math";
|
|
2
|
-
import { TEXT_APPROX_CHAR_WIDTH_FACTOR, TEXT_LINE_HEIGHT_FACTOR } from "
|
|
3
|
-
import { getTextMeasurer } from "
|
|
2
|
+
import { TEXT_APPROX_CHAR_WIDTH_FACTOR, TEXT_LINE_HEIGHT_FACTOR } from "../constants.js";
|
|
3
|
+
import { getTextMeasurer } from "../text/text-measure.js";
|
|
4
|
+
import { pickTextPlaceholder } from "../text/placeholder.js";
|
|
5
|
+
/** True when the shape is a sticky note. */
|
|
6
|
+
export const isSticky = (shape) => shape.type === "sticky";
|
|
7
|
+
/** True when the shape is an emoji element. */
|
|
8
|
+
export const isEmoji = (shape) => shape.type === "emoji";
|
|
9
|
+
/** Shape types whose body can host an embedded label. */
|
|
10
|
+
const LABELABLE_TYPES = new Set([
|
|
11
|
+
"rectangle",
|
|
12
|
+
"ellipse",
|
|
13
|
+
"polygon",
|
|
14
|
+
"block-arrow",
|
|
15
|
+
"sticky",
|
|
16
|
+
]);
|
|
17
|
+
/** True when the shape's type supports an embedded text label. */
|
|
18
|
+
export const canCarryLabel = (shape) => LABELABLE_TYPES.has(shape.type);
|
|
4
19
|
// --- type guards ---
|
|
5
20
|
export const isRectangle = (s) => s.type === "rectangle";
|
|
6
21
|
export const isEllipse = (s) => s.type === "ellipse";
|
|
@@ -81,6 +96,13 @@ registerBounder("ellipse", (s) => ({
|
|
|
81
96
|
height: s.height,
|
|
82
97
|
}));
|
|
83
98
|
registerBounder("polygon", (s) => B.fromPoints(s.points));
|
|
99
|
+
registerBounder("sticky", (s) => ({
|
|
100
|
+
x: 0,
|
|
101
|
+
y: 0,
|
|
102
|
+
width: s.width,
|
|
103
|
+
height: s.height,
|
|
104
|
+
}));
|
|
105
|
+
registerBounder("emoji", (s) => ({ x: 0, y: 0, width: s.size, height: s.size }));
|
|
84
106
|
registerBounder("path", (s) => {
|
|
85
107
|
const points = [];
|
|
86
108
|
let cursor = { x: 0, y: 0 };
|
|
@@ -114,7 +136,11 @@ registerBounder("text", (s) => {
|
|
|
114
136
|
// estimate (`chars × fontSize × factor`) headless / in tests. Height
|
|
115
137
|
// is line count × line-height; hard newlines honoured in both modes.
|
|
116
138
|
const lineHeight = s.fontSize * TEXT_LINE_HEIGHT_FACTOR;
|
|
117
|
-
|
|
139
|
+
// An empty element is sized by its placeholder prompt (the renderer draws
|
|
140
|
+
// it while the text is being written), so the selection box and the
|
|
141
|
+
// dirty rect cover exactly what is on screen; the box snaps to the real
|
|
142
|
+
// text from the first keystroke.
|
|
143
|
+
const paragraphs = (s.text === "" ? pickTextPlaceholder(s.id) : s.text).split("\n");
|
|
118
144
|
const measurer = getTextMeasurer();
|
|
119
145
|
// Pass weight/style so the measured width matches the rendered (bold /
|
|
120
146
|
// italic) glyphs — otherwise the box wouldn't grow when text is bolded.
|
|
@@ -132,8 +158,7 @@ registerBounder("text", (s) => {
|
|
|
132
158
|
};
|
|
133
159
|
if (s.maxWidth === undefined) {
|
|
134
160
|
// Auto-width: widest paragraph drives width, one visual line per
|
|
135
|
-
// paragraph.
|
|
136
|
-
// selectable / editable.
|
|
161
|
+
// paragraph.
|
|
137
162
|
let width = 0;
|
|
138
163
|
for (const p of paragraphs)
|
|
139
164
|
width = Math.max(width, measureLine(p));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape.js","sourceRoot":"","sources":["../../src/shapes/shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { TextParagraph } from "../shapes/shape.js";
|
|
2
|
+
/**
|
|
3
|
+
* Paragraph-attribute helpers for text lists. A "paragraph" is a
|
|
4
|
+
* `\n`-separated block of a text element's flat `text`; attributes
|
|
5
|
+
* (`TextParagraph`) are stored in an array aligned by paragraph index.
|
|
6
|
+
* These helpers keep that array consistent as the text is edited and
|
|
7
|
+
* answer range queries for the toolbar.
|
|
8
|
+
*/
|
|
9
|
+
/** Number of paragraphs in `text` (always ≥ 1; empty text = one empty paragraph). */
|
|
10
|
+
export declare const paragraphCount: (text: string) => number;
|
|
11
|
+
/**
|
|
12
|
+
* Paragraph index range `[first, last]` (inclusive) covered by the source
|
|
13
|
+
* offset range `[from, to]`. Offsets outside the text are clamped.
|
|
14
|
+
*/
|
|
15
|
+
export declare const paragraphRangeForOffsets: (text: string, from: number, to: number) => {
|
|
16
|
+
readonly first: number;
|
|
17
|
+
readonly last: number;
|
|
18
|
+
};
|
|
19
|
+
/** Attrs for a paragraph index (missing / short array → plain). */
|
|
20
|
+
export declare const paragraphAt: (paragraphs: readonly TextParagraph[] | undefined, index: number) => TextParagraph;
|
|
21
|
+
/**
|
|
22
|
+
* Canonical form: trailing plain paragraphs are dropped; an all-plain
|
|
23
|
+
* array collapses to `undefined` so plain text stays byte-identical on
|
|
24
|
+
* the wire.
|
|
25
|
+
*/
|
|
26
|
+
export declare const normalizeParagraphs: (paragraphs: readonly TextParagraph[]) => readonly TextParagraph[] | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Re-align the paragraph-attribute array after a text change. Paragraphs
|
|
29
|
+
* are matched by the longest common prefix and suffix of the old / new
|
|
30
|
+
* paragraph lists; the edited middle keeps the first edited paragraph's
|
|
31
|
+
* attrs and lets inserted paragraphs inherit them — so pressing Enter
|
|
32
|
+
* inside a list item continues the list, and deleting a line drops its
|
|
33
|
+
* attrs with it. Pure and heuristic by design: it has no caret input, so
|
|
34
|
+
* pathological multi-paragraph pastes may inherit conservatively (plain).
|
|
35
|
+
*/
|
|
36
|
+
export declare const remapParagraphsForTextChange: (oldText: string, newText: string, paragraphs: readonly TextParagraph[] | undefined) => readonly TextParagraph[] | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Derived list markers, one per paragraph: `"•"` for bullets, `"N."` for
|
|
39
|
+
* numbered items (consecutive numbered paragraphs at the SAME indent
|
|
40
|
+
* count up; any other paragraph kind resets the counter), `null` for
|
|
41
|
+
* plain paragraphs.
|
|
42
|
+
*/
|
|
43
|
+
export declare const listMarkers: (paragraphs: readonly TextParagraph[] | undefined, count: number) => readonly (string | null)[];
|
|
44
|
+
//# sourceMappingURL=paragraphs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paragraphs.d.ts","sourceRoot":"","sources":["../../src/text/paragraphs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;;GAMG;AAEH,qFAAqF;AACrF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,MAI7C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACnC,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,IAAI,MAAM,KACT;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAajD,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,WAAW,GACtB,YAAY,SAAS,aAAa,EAAE,GAAG,SAAS,EAChD,OAAO,MAAM,KACZ,aAA0C,CAAC;AAI9C;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,YAAY,SAAS,aAAa,EAAE,KACnC,SAAS,aAAa,EAAE,GAAG,SAK7B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,GACvC,SAAS,MAAM,EACf,SAAS,MAAM,EACf,YAAY,SAAS,aAAa,EAAE,GAAG,SAAS,KAC/C,SAAS,aAAa,EAAE,GAAG,SAoC7B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GACtB,YAAY,SAAS,aAAa,EAAE,GAAG,SAAS,EAChD,OAAO,MAAM,KACZ,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAoB1B,CAAC"}
|