@oh-just-another/state 0.59.0 → 0.60.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.
Files changed (149) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +2 -0
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/actions/actionArrange.js +4 -4
  5. package/dist/actions/actionArrange.js.map +1 -1
  6. package/dist/actions/actionClipboard.d.ts.map +1 -1
  7. package/dist/actions/actionClipboard.js +5 -0
  8. package/dist/actions/actionClipboard.js.map +1 -1
  9. package/dist/actions/actionKeyboard.d.ts.map +1 -1
  10. package/dist/actions/actionKeyboard.js +77 -9
  11. package/dist/actions/actionKeyboard.js.map +1 -1
  12. package/dist/actions/actionMode.d.ts +4 -0
  13. package/dist/actions/actionMode.d.ts.map +1 -1
  14. package/dist/actions/actionMode.js +54 -0
  15. package/dist/actions/actionMode.js.map +1 -1
  16. package/dist/actions/actionSelection.d.ts.map +1 -1
  17. package/dist/actions/actionSelection.js +1 -0
  18. package/dist/actions/actionSelection.js.map +1 -1
  19. package/dist/actions/actionView.d.ts +6 -0
  20. package/dist/actions/actionView.d.ts.map +1 -1
  21. package/dist/actions/actionView.js +19 -1
  22. package/dist/actions/actionView.js.map +1 -1
  23. package/dist/actions/actionZoom.d.ts.map +1 -1
  24. package/dist/actions/actionZoom.js +5 -0
  25. package/dist/actions/actionZoom.js.map +1 -1
  26. package/dist/actions/index.d.ts +3 -3
  27. package/dist/actions/index.d.ts.map +1 -1
  28. package/dist/actions/index.js +3 -3
  29. package/dist/actions/index.js.map +1 -1
  30. package/dist/actions/registry.d.ts.map +1 -1
  31. package/dist/actions/registry.js +13 -0
  32. package/dist/actions/registry.js.map +1 -1
  33. package/dist/actions/types.d.ts +9 -0
  34. package/dist/actions/types.d.ts.map +1 -1
  35. package/dist/actions/types.js.map +1 -1
  36. package/dist/clipboard.d.ts +0 -14
  37. package/dist/clipboard.d.ts.map +1 -1
  38. package/dist/clipboard.js +1 -1
  39. package/dist/clipboard.js.map +1 -1
  40. package/dist/constants.d.ts +160 -18
  41. package/dist/constants.d.ts.map +1 -1
  42. package/dist/constants.js +162 -2
  43. package/dist/constants.js.map +1 -1
  44. package/dist/dom-events.d.ts +1 -2
  45. package/dist/dom-events.d.ts.map +1 -1
  46. package/dist/dom-events.js.map +1 -1
  47. package/dist/editor/animation-scene.d.ts +15 -0
  48. package/dist/editor/animation-scene.d.ts.map +1 -1
  49. package/dist/editor/animation-scene.js +123 -0
  50. package/dist/editor/animation-scene.js.map +1 -1
  51. package/dist/editor/applies/create.d.ts +0 -6
  52. package/dist/editor/applies/create.d.ts.map +1 -1
  53. package/dist/editor/applies/create.js +1 -1
  54. package/dist/editor/applies/create.js.map +1 -1
  55. package/dist/editor/applies/link-move.d.ts +0 -8
  56. package/dist/editor/applies/link-move.d.ts.map +1 -1
  57. package/dist/editor/applies/link-move.js +1 -1
  58. package/dist/editor/applies/link-move.js.map +1 -1
  59. package/dist/editor/interaction-state.d.ts +184 -0
  60. package/dist/editor/interaction-state.d.ts.map +1 -0
  61. package/dist/editor/interaction-state.js +139 -0
  62. package/dist/editor/interaction-state.js.map +1 -0
  63. package/dist/editor/link-handle-drag.d.ts +152 -0
  64. package/dist/editor/link-handle-drag.d.ts.map +1 -0
  65. package/dist/editor/link-handle-drag.js +300 -0
  66. package/dist/editor/link-handle-drag.js.map +1 -0
  67. package/dist/editor/pointer-binding.d.ts +9 -11
  68. package/dist/editor/pointer-binding.d.ts.map +1 -1
  69. package/dist/editor/pointer-binding.js +1185 -901
  70. package/dist/editor/pointer-binding.js.map +1 -1
  71. package/dist/editor/public/brush.d.ts +31 -12
  72. package/dist/editor/public/brush.d.ts.map +1 -1
  73. package/dist/editor/public/brush.js +66 -17
  74. package/dist/editor/public/brush.js.map +1 -1
  75. package/dist/editor/public/cursor.d.ts +1 -15
  76. package/dist/editor/public/cursor.d.ts.map +1 -1
  77. package/dist/editor/public/cursor.js +14 -3
  78. package/dist/editor/public/cursor.js.map +1 -1
  79. package/dist/editor/public/eraser.d.ts +55 -0
  80. package/dist/editor/public/eraser.d.ts.map +1 -0
  81. package/dist/editor/public/eraser.js +65 -0
  82. package/dist/editor/public/eraser.js.map +1 -0
  83. package/dist/editor/public/laser.d.ts +38 -0
  84. package/dist/editor/public/laser.d.ts.map +1 -0
  85. package/dist/editor/public/laser.js +42 -0
  86. package/dist/editor/public/laser.js.map +1 -0
  87. package/dist/editor/public/placement.d.ts.map +1 -1
  88. package/dist/editor/public/placement.js +9 -1
  89. package/dist/editor/public/placement.js.map +1 -1
  90. package/dist/editor/public/selection-ops.d.ts +12 -0
  91. package/dist/editor/public/selection-ops.d.ts.map +1 -1
  92. package/dist/editor/public/selection-ops.js +19 -1
  93. package/dist/editor/public/selection-ops.js.map +1 -1
  94. package/dist/editor/public/stroke-eraser-coverage.d.ts +37 -0
  95. package/dist/editor/public/stroke-eraser-coverage.d.ts.map +1 -0
  96. package/dist/editor/public/stroke-eraser-coverage.js +168 -0
  97. package/dist/editor/public/stroke-eraser-coverage.js.map +1 -0
  98. package/dist/editor/public/stroke-eraser.d.ts +50 -0
  99. package/dist/editor/public/stroke-eraser.d.ts.map +1 -0
  100. package/dist/editor/public/stroke-eraser.js +176 -0
  101. package/dist/editor/public/stroke-eraser.js.map +1 -0
  102. package/dist/editor/public/stroke-smoothing.d.ts +21 -0
  103. package/dist/editor/public/stroke-smoothing.d.ts.map +1 -0
  104. package/dist/editor/public/stroke-smoothing.js +37 -0
  105. package/dist/editor/public/stroke-smoothing.js.map +1 -0
  106. package/dist/editor/public/tool-ops.d.ts +130 -0
  107. package/dist/editor/public/tool-ops.d.ts.map +1 -0
  108. package/dist/editor/public/tool-ops.js +392 -0
  109. package/dist/editor/public/tool-ops.js.map +1 -0
  110. package/dist/editor/public/z-order.d.ts +1 -12
  111. package/dist/editor/public/z-order.d.ts.map +1 -1
  112. package/dist/editor/public/z-order.js +1 -1
  113. package/dist/editor/public/z-order.js.map +1 -1
  114. package/dist/editor/public/zoom-pan.d.ts +9 -0
  115. package/dist/editor/public/zoom-pan.d.ts.map +1 -1
  116. package/dist/editor/public/zoom-pan.js +31 -0
  117. package/dist/editor/public/zoom-pan.js.map +1 -1
  118. package/dist/editor/render-orchestrator.d.ts +177 -5
  119. package/dist/editor/render-orchestrator.d.ts.map +1 -1
  120. package/dist/editor/render-orchestrator.js +517 -351
  121. package/dist/editor/render-orchestrator.js.map +1 -1
  122. package/dist/editor/text-edit.d.ts +136 -0
  123. package/dist/editor/text-edit.d.ts.map +1 -0
  124. package/dist/editor/text-edit.js +328 -0
  125. package/dist/editor/text-edit.js.map +1 -0
  126. package/dist/editor.d.ts +504 -239
  127. package/dist/editor.d.ts.map +1 -1
  128. package/dist/editor.js +1557 -706
  129. package/dist/editor.js.map +1 -1
  130. package/dist/handle.d.ts +0 -2
  131. package/dist/handle.d.ts.map +1 -1
  132. package/dist/handle.js +0 -6
  133. package/dist/handle.js.map +1 -1
  134. package/dist/index.d.ts +6 -1
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +7 -1
  137. package/dist/index.js.map +1 -1
  138. package/dist/modes.d.ts +15 -1
  139. package/dist/modes.d.ts.map +1 -1
  140. package/dist/modes.js.map +1 -1
  141. package/dist/overlay.d.ts +91 -2
  142. package/dist/overlay.d.ts.map +1 -1
  143. package/dist/overlay.js +450 -93
  144. package/dist/overlay.js.map +1 -1
  145. package/dist/search.d.ts +37 -0
  146. package/dist/search.d.ts.map +1 -0
  147. package/dist/search.js +45 -0
  148. package/dist/search.js.map +1 -0
  149. package/package.json +4 -4
@@ -0,0 +1,65 @@
1
+ import * as Selection from "../../selection.js";
2
+ import { computeDeleteSelection } from "./selection-ops.js";
3
+ import { ERASER_SAMPLE_STEP } from "../../constants.js";
4
+ export const beginEraseStroke = (world, strokeMode = false) => ({
5
+ pending: new Set(),
6
+ last: world,
7
+ erased: new Map(),
8
+ strokeMode,
9
+ });
10
+ /**
11
+ * Sample points along the segment `from → to` at {@link ERASER_SAMPLE_STEP}
12
+ * spacing, hit-test each through `hitAt`, and mark every hit element in
13
+ * `pending`. Sampling (rather than testing only the endpoint) stops a fast
14
+ * swipe from skipping small shapes between two pointer-move events.
15
+ *
16
+ * `restore` flips the direction: normally hits are ADDED to `pending`
17
+ * (marked-for-erase); with `restore` (Alt held) a hit already in `pending` is
18
+ * REMOVED (un-marked), so dragging back over a marked shape with Alt rescues it
19
+ * — matching the Excalidraw eraser. Returns `true` when `pending` changed (so
20
+ * the caller can skip a redundant re-render). Mutates `pending` in place.
21
+ *
22
+ * In `strokeMode` (Shift), brush hits are skipped here — brushes are cut by the
23
+ * path-based stroke-erase on commit, not added to the object-delete `pending`.
24
+ */
25
+ export const sampleErase = (from, to, hitAt, pending, restore = false, strokeMode = false) => {
26
+ const dx = to.x - from.x;
27
+ const dy = to.y - from.y;
28
+ const dist = Math.hypot(dx, dy);
29
+ const steps = Math.max(1, Math.ceil(dist / ERASER_SAMPLE_STEP));
30
+ let changed = false;
31
+ for (let i = 1; i <= steps; i++) {
32
+ const t = i / steps;
33
+ const hit = hitAt({ x: from.x + dx * t, y: from.y + dy * t });
34
+ if (!hit)
35
+ continue;
36
+ if (strokeMode && hit.type === "brush")
37
+ continue;
38
+ if (restore) {
39
+ if (pending.delete(hit.id))
40
+ changed = true;
41
+ }
42
+ else if (!pending.has(hit.id)) {
43
+ pending.add(hit.id);
44
+ changed = true;
45
+ }
46
+ }
47
+ return changed;
48
+ };
49
+ /**
50
+ * Produce the scene + patches that delete every id in `pending` (dropping any
51
+ * attached links first, exactly like a Delete-key delete). Returns `null` when
52
+ * nothing valid remains to erase. Reuses {@link computeDeleteSelection} so the
53
+ * eraser and the selection-delete share one implementation.
54
+ */
55
+ export const computeEraseCommit = (scene, pending) => {
56
+ let sel = Selection.EMPTY;
57
+ for (const id of pending) {
58
+ if (scene.elements.has(id))
59
+ sel = Selection.add(sel, id);
60
+ }
61
+ if (sel.size === 0)
62
+ return null;
63
+ return computeDeleteSelection(scene, sel, new Set());
64
+ };
65
+ //# sourceMappingURL=eraser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eraser.js","sourceRoot":"","sources":["../../../src/editor/public/eraser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA4BxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAW,EAAE,UAAU,GAAG,KAAK,EAAoB,EAAE,CAAC,CAAC;IACtF,OAAO,EAAE,IAAI,GAAG,EAAa;IAC7B,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,IAAI,GAAG,EAAyB;IACxC,UAAU;CACX,CAAC,CAAC;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAU,EACV,EAAQ,EACR,KAAuC,EACvC,OAAuB,EACvB,OAAO,GAAG,KAAK,EACf,UAAU,GAAG,KAAK,EACT,EAAE;IACX,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC;IAChE,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;YAAE,SAAS;QACjD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,OAAO,GAAG,IAAI,CAAC;QAC7C,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAY,EACZ,OAA+B,EAC8B,EAAE;IAC/D,IAAI,GAAG,GAAwB,SAAS,CAAC,KAAK,CAAC;IAC/C,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,sBAAsB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACvD,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { Vec2 } from "@oh-just-another/types";
2
+ /** One point of a laser trail — world position plus the time it was laid down. */
3
+ export interface LaserPoint {
4
+ readonly x: number;
5
+ readonly y: number;
6
+ /** Birth timestamp (ms, `performance.now()` domain) — drives the fade. */
7
+ readonly t: number;
8
+ }
9
+ /**
10
+ * A single laser stroke: an ordered list of timestamped world points. Purely
11
+ * ephemeral — never enters the scene or history. The overlay ramps each point's
12
+ * opacity from 1 → 0 over {@link LASER_TRAIL_TTL_MS}; the editor prunes points
13
+ * past that age so the trail vanishes shortly after the pointer stops.
14
+ */
15
+ export interface LaserStroke {
16
+ readonly points: LaserPoint[];
17
+ }
18
+ export declare const beginLaserStroke: (world: Vec2, now: number) => LaserStroke;
19
+ export declare const extendLaserStroke: (stroke: LaserStroke, world: Vec2, now: number) => void;
20
+ /**
21
+ * Drop every point older than `ttl` (and any stroke left empty). Returns the
22
+ * surviving strokes plus a `changed` flag; when nothing expired the SAME array
23
+ * reference is returned so the render-overlay memo can skip a rebuild. The
24
+ * returned array is fresh only when a prune actually happened.
25
+ */
26
+ export declare const pruneLaserStrokes: (strokes: readonly LaserStroke[], now: number, ttl?: number) => {
27
+ readonly strokes: LaserStroke[];
28
+ readonly changed: boolean;
29
+ };
30
+ /**
31
+ * Resample a laser trail into a smooth, dense point list for rendering (via the
32
+ * shared {@link smoothStrokePoints} spline resampler). Each resampled point
33
+ * carries a birth timestamp linearly interpolated between its span endpoints, so
34
+ * the overlay's per-segment TTL fade still melts the trail tail-first exactly as
35
+ * it does for the raw points.
36
+ */
37
+ export declare const smoothLaserPoints: (points: readonly LaserPoint[], perSegment?: number) => LaserPoint[];
38
+ //# sourceMappingURL=laser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"laser.d.ts","sourceRoot":"","sources":["../../../src/editor/public/laser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAInD,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,IAAI,EAAE,KAAK,MAAM,KAAG,WAE1D,CAAC;AAEH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,WAAW,EAAE,OAAO,IAAI,EAAE,KAAK,MAAM,KAAG,IAEjF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,SAAS,WAAW,EAAE,EAC/B,KAAK,MAAM,EACX,MAAK,MAA2B,KAC/B;IAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAa9D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,SAAS,UAAU,EAAE,EAC7B,aAAY,MAA8B,KACzC,UAAU,EAKR,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { LASER_SMOOTH_SEGMENTS, LASER_TRAIL_TTL_MS } from "../../constants.js";
2
+ import { smoothStrokePoints } from "./stroke-smoothing.js";
3
+ export const beginLaserStroke = (world, now) => ({
4
+ points: [{ x: world.x, y: world.y, t: now }],
5
+ });
6
+ export const extendLaserStroke = (stroke, world, now) => {
7
+ stroke.points.push({ x: world.x, y: world.y, t: now });
8
+ };
9
+ /**
10
+ * Drop every point older than `ttl` (and any stroke left empty). Returns the
11
+ * surviving strokes plus a `changed` flag; when nothing expired the SAME array
12
+ * reference is returned so the render-overlay memo can skip a rebuild. The
13
+ * returned array is fresh only when a prune actually happened.
14
+ */
15
+ export const pruneLaserStrokes = (strokes, now, ttl = LASER_TRAIL_TTL_MS) => {
16
+ let changed = false;
17
+ const next = [];
18
+ for (const stroke of strokes) {
19
+ const kept = stroke.points.filter((p) => now - p.t < ttl);
20
+ if (kept.length === stroke.points.length) {
21
+ next.push(stroke);
22
+ continue;
23
+ }
24
+ changed = true;
25
+ if (kept.length > 0)
26
+ next.push({ points: kept });
27
+ }
28
+ return changed ? { strokes: next, changed } : { strokes: strokes, changed };
29
+ };
30
+ /**
31
+ * Resample a laser trail into a smooth, dense point list for rendering (via the
32
+ * shared {@link smoothStrokePoints} spline resampler). Each resampled point
33
+ * carries a birth timestamp linearly interpolated between its span endpoints, so
34
+ * the overlay's per-segment TTL fade still melts the trail tail-first exactly as
35
+ * it does for the raw points.
36
+ */
37
+ export const smoothLaserPoints = (points, perSegment = LASER_SMOOTH_SEGMENTS) => smoothStrokePoints(points, perSegment, (a, b, pos, u) => ({
38
+ x: pos.x,
39
+ y: pos.y,
40
+ t: a.t + (b.t - a.t) * u,
41
+ }));
42
+ //# sourceMappingURL=laser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"laser.js","sourceRoot":"","sources":["../../../src/editor/public/laser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAoB3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAW,EAAE,GAAW,EAAe,EAAE,CAAC,CAAC;IAC1E,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAmB,EAAE,KAAW,EAAE,GAAW,EAAQ,EAAE;IACvF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAA+B,EAC/B,GAAW,EACX,MAAc,kBAAkB,EACgC,EAAE;IAClE,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAwB,EAAE,OAAO,EAAE,CAAC;AAC/F,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,MAA6B,EAC7B,aAAqB,qBAAqB,EAC5B,EAAE,CAChB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC,EAAE,GAAG,CAAC,CAAC;IACR,CAAC,EAAE,GAAG,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;CACzB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../../../src/editor/public/placement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../../../src/editor/public/placement.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { addElement, apply, findContainerAt, findNearestAnchor, getAnchorOutwardNormal, getAnchorWorld, getElement, getElementWorldBounds, getLink, isFrame, isText, orderForTop, removeElement, routeElbowLink, snapExcludedAnchors, updateLink, } from "@oh-just-another/scene";
1
+ import { addElement, apply, findContainerAt, findNearestAnchor, getAnchorOutwardNormal, getAnchorWorld, getElement, getElementWorldBounds, getLink, isBrush, isFrame, isText, orderForTop, removeElement, routeElbowLink, snapExcludedAnchors, updateLink, } from "@oh-just-another/scene";
2
2
  import { elementId as castElementId } from "@oh-just-another/types";
3
3
  import { ANCHOR_CLICK_NEW_ELEMENT_GAP, TEXT_DEFAULT_FILL, TEXT_DEFAULT_FONT_FAMILY, TEXT_DEFAULT_FONT_SIZE, } from "../../constants.js";
4
4
  import { req } from "../../util.js";
@@ -123,6 +123,9 @@ export const previewClickCreate = (scene, activeLayerId, fromElement, anchorName
123
123
  const src = getElement(scene, fromElement);
124
124
  if (!src)
125
125
  return null;
126
+ // Brush strokes don't offer a click-create ghost (see computeLinkedElementFromAnchor).
127
+ if (isBrush(src))
128
+ return null;
126
129
  const anchor = { kind: "named", name: anchorName };
127
130
  const normal = getAnchorOutwardNormal(src, anchor);
128
131
  const b = getElementWorldBounds(src);
@@ -195,6 +198,11 @@ export const computeLinkedElementFromAnchor = (scene, activeLayerId, fromElement
195
198
  const src = getElement(scene, fromElement);
196
199
  if (!src)
197
200
  return null;
201
+ // Drawn lines (brush strokes) don't clone-create a connected node from a
202
+ // start-dot click — duplicating a freehand line as a "node" is nonsensical.
203
+ // Dragging a real link from the line still works (that path skips this).
204
+ if (isBrush(src))
205
+ return null;
198
206
  const anchor = { kind: "named", name: anchorName };
199
207
  const normal = getAnchorOutwardNormal(src, anchor);
200
208
  const bounds = getElementWorldBounds(src);
@@ -1 +1 @@
1
- {"version":3,"file":"placement.js","sourceRoot":"","sources":["../../../src/editor/public/placement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"placement.js","sourceRoot":"","sources":["../../../src/editor/public/placement.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,18 @@ export declare const computeUpdateStyle: (scene: Scene, ids: Iterable<ElementId>
57
57
  readonly scene: Scene;
58
58
  readonly patch: Patch;
59
59
  } | null;
60
+ /**
61
+ * Apply a partial {@link TextStyle} overlay to the character range
62
+ * `[from, to)` of a single text element, producing (or updating) its styled
63
+ * runs. Delegates the run splitting/merging to the pure `applyStyleToRange`
64
+ * in `@oh-just-another/scene`; here we only wrap it as a scene update + patch.
65
+ * Returns `null` when `id` is missing, not a text shape, or the operation is
66
+ * a no-op (e.g. an empty range or unchanged runs).
67
+ */
68
+ export declare const computeApplyTextRunStyle: (scene: Scene, id: ElementId, from: number, to: number, partial: Partial<TextStyle>) => {
69
+ readonly scene: Scene;
70
+ readonly patch: Patch;
71
+ } | null;
60
72
  /**
61
73
  * Merge non-style text properties (`fontSize`, `fontFamily`,
62
74
  * `maxWidth`) into every selected text shape. Non-text shapes in `ids`
@@ -1 +1 @@
1
- {"version":3,"file":"selection-ops.d.ts","sourceRoot":"","sources":["../../../src/editor/public/selection-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selection-ops.d.ts","sourceRoot":"","sources":["../../../src/editor/public/selection-ops.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { addElement, getElement, getElementWorldBounds, isText, orderForTop, removeLink, removeElement, updateElement, } from "@oh-just-another/scene";
1
+ import { addElement, applyStyleToRange, getElement, getElementWorldBounds, isText, orderForTop, removeLink, removeElement, updateElement, } from "@oh-just-another/scene";
2
2
  import { elementId as castElementId } from "@oh-just-another/types";
3
3
  import * as Selection from "../../selection.js";
4
4
  import { TEXT_FONT_SIZE_STEP, TEXT_MAX_FONT_SIZE, TEXT_RESIZE_MIN_FONT_SIZE, } from "../../constants.js";
@@ -172,6 +172,24 @@ export const computeUpdateStyle = (scene, ids, partial) => {
172
172
  patch: patches.length === 1 && firstPatch !== undefined ? firstPatch : { kind: "batch", patches },
173
173
  };
174
174
  };
175
+ /**
176
+ * Apply a partial {@link TextStyle} overlay to the character range
177
+ * `[from, to)` of a single text element, producing (or updating) its styled
178
+ * runs. Delegates the run splitting/merging to the pure `applyStyleToRange`
179
+ * in `@oh-just-another/scene`; here we only wrap it as a scene update + patch.
180
+ * Returns `null` when `id` is missing, not a text shape, or the operation is
181
+ * a no-op (e.g. an empty range or unchanged runs).
182
+ */
183
+ export const computeApplyTextRunStyle = (scene, id, from, to, partial) => {
184
+ const el = getElement(scene, id);
185
+ if (el === undefined || !isText(el))
186
+ return null;
187
+ const next = applyStyleToRange(el, from, to, partial);
188
+ if (next === el)
189
+ return null;
190
+ const r = updateElement(scene, id, () => next);
191
+ return { scene: r.scene, patch: r.patch };
192
+ };
175
193
  /**
176
194
  * Merge non-style text properties (`fontSize`, `fontFamily`,
177
195
  * `maxWidth`) into every selected text shape. Non-text shapes in `ids`
@@ -1 +1 @@
1
- {"version":3,"file":"selection-ops.js","sourceRoot":"","sources":["../../../src/editor/public/selection-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selection-ops.js","sourceRoot":"","sources":["../../../src/editor/public/selection-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { BrushElement, BrushPoint } from "@oh-just-another/scene";
2
+ import type { Vec2 } from "@oh-just-another/types";
3
+ /**
4
+ * A covered (erased) span along a brush polyline, in ARC-LENGTH units:
5
+ * `[start, end]` with `start <= end`, both in `[0, total]`. Working in arc length
6
+ * (not vertex index) is what makes the stroke-eraser resolution-independent — a
7
+ * big disc grazing a sparsely-sampled stroke still removes the span it covers.
8
+ */
9
+ export type Interval = readonly [number, number];
10
+ /** Arc-length parametrisation of a brush polyline (lengths in world units). */
11
+ export interface BrushArc {
12
+ readonly pts: readonly BrushPoint[];
13
+ readonly position: Vec2;
14
+ /** `cum[i]` = arc length from point 0 to point i; `cum[n-1]` = `total`. */
15
+ readonly cum: readonly number[];
16
+ readonly total: number;
17
+ }
18
+ /** Precompute the arc-length parametrisation of `brush` (O(points)). */
19
+ export declare const brushArc: (brush: BrushElement) => BrushArc;
20
+ /** Local (position-relative) brush point at arc length `L`, clamped to `[0,total]`. */
21
+ export declare const localPointAtArc: (arc: BrushArc, L: number) => BrushPoint;
22
+ /**
23
+ * Arc-length spans of `arc` covered by the eraser SEGMENT `a → b` at `radius` —
24
+ * i.e. where the brush polyline lies within `radius` of the swept disc. Samples
25
+ * each brush segment whose bounding box (grown by `radius`) meets the eraser
26
+ * segment's, at {@link ERASE_COVERAGE_SAMPLE_FRACTION} × radius spacing, and pins
27
+ * each span's endpoints to the ring by bisection. Returns merged intervals (may
28
+ * be empty). A single-point brush yields `[[0,0]]` when the point is within reach.
29
+ */
30
+ export declare const coveredArcAgainstSegment: (arc: BrushArc, a: Vec2, b: Vec2, radius: number) => Interval[];
31
+ /** Merge overlapping / touching intervals into a sorted, disjoint set. */
32
+ export declare const mergeIntervals: (intervals: readonly Interval[]) => Interval[];
33
+ /** Total covered arc length across `intervals` (assumed disjoint). */
34
+ export declare const coveredLength: (intervals: readonly Interval[]) => number;
35
+ /** The KEPT arc spans: `[0, total]` minus the covered `intervals`. */
36
+ export declare const complementIntervals: (covered: readonly Interval[], total: number) => Interval[];
37
+ //# sourceMappingURL=stroke-eraser-coverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stroke-eraser-coverage.d.ts","sourceRoot":"","sources":["../../../src/editor/public/stroke-eraser-coverage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAOnD;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAIjD,+EAA+E;AAC/E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,SAAS,UAAU,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wEAAwE;AACxE,eAAO,MAAM,QAAQ,GAAI,OAAO,YAAY,KAAG,QAY9C,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,eAAe,GAAI,KAAK,QAAQ,EAAE,GAAG,MAAM,KAAG,UAuB1D,CAAC;AAgCF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,GACnC,KAAK,QAAQ,EACb,GAAG,IAAI,EACP,GAAG,IAAI,EACP,QAAQ,MAAM,KACb,QAAQ,EAsDV,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,cAAc,GAAI,WAAW,SAAS,QAAQ,EAAE,KAAG,QAAQ,EAavE,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,aAAa,GAAI,WAAW,SAAS,QAAQ,EAAE,KAAG,MACV,CAAC;AAEtD,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,GAAI,SAAS,SAAS,QAAQ,EAAE,EAAE,OAAO,MAAM,KAAG,QAAQ,EAUzF,CAAC"}
@@ -0,0 +1,168 @@
1
+ import { hitTest } from "@oh-just-another/math";
2
+ import { req } from "../../util.js";
3
+ import { ERASE_COVERAGE_SAMPLE_FRACTION, ERASE_COVERAGE_MIN_SAMPLE_STEP, ERASE_BOUNDARY_BISECT_ITERS, } from "../../constants.js";
4
+ const EPS = 1e-6;
5
+ /** Precompute the arc-length parametrisation of `brush` (O(points)). */
6
+ export const brushArc = (brush) => {
7
+ const pts = brush.points;
8
+ const n = pts.length;
9
+ const cum = new Array(Math.max(1, n)).fill(0);
10
+ let acc = 0;
11
+ for (let i = 1; i < n; i++) {
12
+ const a = req(pts[i - 1]);
13
+ const b = req(pts[i]);
14
+ acc += Math.hypot(b.x - a.x, b.y - a.y);
15
+ cum[i] = acc;
16
+ }
17
+ return { pts, position: brush.position, cum, total: acc };
18
+ };
19
+ /** Local (position-relative) brush point at arc length `L`, clamped to `[0,total]`. */
20
+ export const localPointAtArc = (arc, L) => {
21
+ const { pts, cum, total } = arc;
22
+ const n = pts.length;
23
+ if (n === 0)
24
+ return { x: 0, y: 0, width: 0 };
25
+ if (n === 1 || L <= 0)
26
+ return { ...req(pts[0]) };
27
+ if (L >= total)
28
+ return { ...req(pts[n - 1]) };
29
+ // Binary-search the segment [lo, lo+1] whose arc span contains L.
30
+ let lo = 0;
31
+ let hi = n - 1;
32
+ while (hi - lo > 1) {
33
+ const mid = (lo + hi) >> 1;
34
+ if (req(cum[mid]) <= L)
35
+ lo = mid;
36
+ else
37
+ hi = mid;
38
+ }
39
+ const a = req(pts[lo]);
40
+ const b = req(pts[lo + 1]);
41
+ const segLen = req(cum[lo + 1]) - req(cum[lo]);
42
+ const t = segLen > 0 ? (L - req(cum[lo])) / segLen : 0;
43
+ return {
44
+ x: a.x + (b.x - a.x) * t,
45
+ y: a.y + (b.y - a.y) * t,
46
+ width: a.width + (b.width - a.width) * t,
47
+ };
48
+ };
49
+ const worldDistSqAtArc = (arc, L, a, b) => {
50
+ const p = localPointAtArc(arc, L);
51
+ return hitTest.distanceToSegmentSq({ x: arc.position.x + p.x, y: arc.position.y + p.y }, a, b);
52
+ };
53
+ /**
54
+ * Refine a covered-span endpoint by bisecting between an UNCOVERED arc position
55
+ * (`loL`) and a COVERED one (`hiL`) until it lands on the eraser ring (distance =
56
+ * radius). Returns the covered-side estimate, so the surviving fragment stops
57
+ * exactly at the ring rather than at the nearest sample. See
58
+ * {@link ERASE_BOUNDARY_BISECT_ITERS}.
59
+ */
60
+ const bisectBoundary = (arc, loL, hiL, a, b, radiusSq) => {
61
+ let lo = loL;
62
+ let hi = hiL;
63
+ for (let i = 0; i < ERASE_BOUNDARY_BISECT_ITERS; i++) {
64
+ const mid = (lo + hi) / 2;
65
+ if (worldDistSqAtArc(arc, mid, a, b) <= radiusSq)
66
+ hi = mid;
67
+ else
68
+ lo = mid;
69
+ }
70
+ return hi;
71
+ };
72
+ /**
73
+ * Arc-length spans of `arc` covered by the eraser SEGMENT `a → b` at `radius` —
74
+ * i.e. where the brush polyline lies within `radius` of the swept disc. Samples
75
+ * each brush segment whose bounding box (grown by `radius`) meets the eraser
76
+ * segment's, at {@link ERASE_COVERAGE_SAMPLE_FRACTION} × radius spacing, and pins
77
+ * each span's endpoints to the ring by bisection. Returns merged intervals (may
78
+ * be empty). A single-point brush yields `[[0,0]]` when the point is within reach.
79
+ */
80
+ export const coveredArcAgainstSegment = (arc, a, b, radius) => {
81
+ const { pts, cum, total } = arc;
82
+ const n = pts.length;
83
+ if (n === 0)
84
+ return [];
85
+ const radiusSq = radius * radius;
86
+ if (total === 0) {
87
+ const p = req(pts[0]);
88
+ const d = hitTest.distanceToSegmentSq({ x: arc.position.x + p.x, y: arc.position.y + p.y }, a, b);
89
+ return d <= radiusSq ? [[0, 0]] : [];
90
+ }
91
+ const exMinX = Math.min(a.x, b.x) - radius;
92
+ const exMaxX = Math.max(a.x, b.x) + radius;
93
+ const exMinY = Math.min(a.y, b.y) - radius;
94
+ const exMaxY = Math.max(a.y, b.y) + radius;
95
+ const px = arc.position.x;
96
+ const py = arc.position.y;
97
+ const step = Math.max(ERASE_COVERAGE_MIN_SAMPLE_STEP, radius * ERASE_COVERAGE_SAMPLE_FRACTION);
98
+ const raw = [];
99
+ for (let i = 0; i < n - 1; i++) {
100
+ const p0 = req(pts[i]);
101
+ const p1 = req(pts[i + 1]);
102
+ // Reject segments whose (radius-grown) bbox misses the eraser segment's.
103
+ if (Math.max(p0.x, p1.x) + px < exMinX ||
104
+ Math.min(p0.x, p1.x) + px > exMaxX ||
105
+ Math.max(p0.y, p1.y) + py < exMinY ||
106
+ Math.min(p0.y, p1.y) + py > exMaxY) {
107
+ continue;
108
+ }
109
+ const segStart = req(cum[i]);
110
+ const segLen = req(cum[i + 1]) - segStart;
111
+ if (segLen <= 0)
112
+ continue;
113
+ const steps = Math.max(1, Math.ceil(segLen / step));
114
+ let runStart = -1;
115
+ let prevL = segStart;
116
+ for (let k = 0; k <= steps; k++) {
117
+ const L = k === steps ? segStart + segLen : segStart + (segLen * k) / steps;
118
+ const cov = worldDistSqAtArc(arc, L, a, b) <= radiusSq;
119
+ if (cov && runStart < 0) {
120
+ runStart = k === 0 ? L : bisectBoundary(arc, prevL, L, a, b, radiusSq);
121
+ }
122
+ else if (!cov && runStart >= 0) {
123
+ raw.push([runStart, bisectBoundary(arc, L, prevL, a, b, radiusSq)]);
124
+ runStart = -1;
125
+ }
126
+ prevL = L;
127
+ }
128
+ if (runStart >= 0)
129
+ raw.push([runStart, segStart + segLen]);
130
+ }
131
+ return mergeIntervals(raw);
132
+ };
133
+ /** Merge overlapping / touching intervals into a sorted, disjoint set. */
134
+ export const mergeIntervals = (intervals) => {
135
+ if (intervals.length <= 1)
136
+ return intervals.map((iv) => [iv[0], iv[1]]);
137
+ const sorted = [...intervals].sort((p, q) => p[0] - q[0]);
138
+ const out = [];
139
+ for (const [s, e] of sorted) {
140
+ const last = out[out.length - 1];
141
+ if (last && s <= last[1] + EPS) {
142
+ if (e > last[1])
143
+ last[1] = e;
144
+ }
145
+ else {
146
+ out.push([s, e]);
147
+ }
148
+ }
149
+ return out;
150
+ };
151
+ /** Total covered arc length across `intervals` (assumed disjoint). */
152
+ export const coveredLength = (intervals) => intervals.reduce((sum, [s, e]) => sum + (e - s), 0);
153
+ /** The KEPT arc spans: `[0, total]` minus the covered `intervals`. */
154
+ export const complementIntervals = (covered, total) => {
155
+ const merged = mergeIntervals(covered);
156
+ const kept = [];
157
+ let cursor = 0;
158
+ for (const [s, e] of merged) {
159
+ if (s > cursor + EPS)
160
+ kept.push([cursor, s]);
161
+ if (e > cursor)
162
+ cursor = e;
163
+ }
164
+ if (total > cursor + EPS)
165
+ kept.push([cursor, total]);
166
+ return kept;
167
+ };
168
+ //# sourceMappingURL=stroke-eraser-coverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stroke-eraser-coverage.js","sourceRoot":"","sources":["../../../src/editor/public/stroke-eraser-coverage.ts"],"names":[],"mappings":"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"}