@fiestaboard/ui 3.1.0 → 3.2.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 (97) hide show
  1. package/dist/components/editor/color-picker-content.d.ts +25 -0
  2. package/dist/components/editor/color-picker-content.js +118 -0
  3. package/dist/components/editor/color-picker-content.js.map +1 -0
  4. package/dist/components/editor/constants.d.ts +87 -0
  5. package/dist/components/editor/constants.js +29 -0
  6. package/dist/components/editor/constants.js.map +1 -0
  7. package/dist/components/editor/draw-char-picker-content.d.ts +22 -0
  8. package/dist/components/editor/draw-char-picker-content.js +79 -0
  9. package/dist/components/editor/draw-char-picker-content.js.map +1 -0
  10. package/dist/components/editor/extensions/color-tile-node.d.ts +10 -0
  11. package/dist/components/editor/extensions/color-tile-node.js +43 -0
  12. package/dist/components/editor/extensions/color-tile-node.js.map +1 -0
  13. package/dist/components/editor/extensions/fill-space-node.d.ts +10 -0
  14. package/dist/components/editor/extensions/fill-space-node.js +40 -0
  15. package/dist/components/editor/extensions/fill-space-node.js.map +1 -0
  16. package/dist/components/editor/extensions/formula-node.d.ts +6 -0
  17. package/dist/components/editor/extensions/formula-node.js +40 -0
  18. package/dist/components/editor/extensions/formula-node.js.map +1 -0
  19. package/dist/components/editor/extensions/line-navigation.d.ts +18 -0
  20. package/dist/components/editor/extensions/line-navigation.js +16 -0
  21. package/dist/components/editor/extensions/line-navigation.js.map +1 -0
  22. package/dist/components/editor/extensions/single-paragraph-doc.d.ts +15 -0
  23. package/dist/components/editor/extensions/single-paragraph-doc.js +11 -0
  24. package/dist/components/editor/extensions/single-paragraph-doc.js.map +1 -0
  25. package/dist/components/editor/extensions/trailing-newline.d.ts +13 -0
  26. package/dist/components/editor/extensions/trailing-newline.js +27 -0
  27. package/dist/components/editor/extensions/trailing-newline.js.map +1 -0
  28. package/dist/components/editor/extensions/variable-node.d.ts +15 -0
  29. package/dist/components/editor/extensions/variable-node.js +56 -0
  30. package/dist/components/editor/extensions/variable-node.js.map +1 -0
  31. package/dist/components/editor/extensions/wrapped-text-node.d.ts +9 -0
  32. package/dist/components/editor/extensions/wrapped-text-node.js +31 -0
  33. package/dist/components/editor/extensions/wrapped-text-node.js.map +1 -0
  34. package/dist/components/editor/filter-picker-content.d.ts +24 -0
  35. package/dist/components/editor/filter-picker-content.js +146 -0
  36. package/dist/components/editor/filter-picker-content.js.map +1 -0
  37. package/dist/components/editor/formatting-picker-content.d.ts +30 -0
  38. package/dist/components/editor/formatting-picker-content.js +154 -0
  39. package/dist/components/editor/formatting-picker-content.js.map +1 -0
  40. package/dist/components/editor/formula/formula-editor-panel.d.ts +102 -0
  41. package/dist/components/editor/formula/formula-editor-panel.js +527 -0
  42. package/dist/components/editor/formula/formula-editor-panel.js.map +1 -0
  43. package/dist/components/editor/node-views/color-tile-node-view.d.ts +21 -0
  44. package/dist/components/editor/node-views/color-tile-node-view.js +66 -0
  45. package/dist/components/editor/node-views/color-tile-node-view.js.map +1 -0
  46. package/dist/components/editor/node-views/fill-space-node-view.d.ts +16 -0
  47. package/dist/components/editor/node-views/fill-space-node-view.js +43 -0
  48. package/dist/components/editor/node-views/fill-space-node-view.js.map +1 -0
  49. package/dist/components/editor/node-views/formula-node-view.d.ts +39 -0
  50. package/dist/components/editor/node-views/formula-node-view.js +109 -0
  51. package/dist/components/editor/node-views/formula-node-view.js.map +1 -0
  52. package/dist/components/editor/node-views/node-view-context.d.ts +58 -0
  53. package/dist/components/editor/node-views/node-view-context.js +22 -0
  54. package/dist/components/editor/node-views/node-view-context.js.map +1 -0
  55. package/dist/components/editor/node-views/variable-node-view.d.ts +16 -0
  56. package/dist/components/editor/node-views/variable-node-view.js +63 -0
  57. package/dist/components/editor/node-views/variable-node-view.js.map +1 -0
  58. package/dist/components/editor/node-views/wrapped-text-view.d.ts +14 -0
  59. package/dist/components/editor/node-views/wrapped-text-view.js +46 -0
  60. package/dist/components/editor/node-views/wrapped-text-view.js.map +1 -0
  61. package/dist/components/editor/template-editor-toolbar.d.ts +146 -0
  62. package/dist/components/editor/template-editor-toolbar.js +434 -0
  63. package/dist/components/editor/template-editor-toolbar.js.map +1 -0
  64. package/dist/components/editor/template-editor.d.ts +109 -0
  65. package/dist/components/editor/template-editor.js +662 -0
  66. package/dist/components/editor/template-editor.js.map +1 -0
  67. package/dist/components/editor/toolbar-dropdown.d.ts +20 -0
  68. package/dist/components/editor/toolbar-dropdown.js +88 -0
  69. package/dist/components/editor/toolbar-dropdown.js.map +1 -0
  70. package/dist/components/editor/utils/draw-mode.d.ts +55 -0
  71. package/dist/components/editor/utils/draw-mode.js +79 -0
  72. package/dist/components/editor/utils/draw-mode.js.map +1 -0
  73. package/dist/components/editor/utils/insertion.d.ts +11 -0
  74. package/dist/components/editor/utils/insertion.js +26 -0
  75. package/dist/components/editor/utils/insertion.js.map +1 -0
  76. package/dist/components/editor/utils/length-calculator.d.ts +36 -0
  77. package/dist/components/editor/utils/length-calculator.js +32 -0
  78. package/dist/components/editor/utils/length-calculator.js.map +1 -0
  79. package/dist/components/editor/utils/serialization.d.ts +34 -0
  80. package/dist/components/editor/utils/serialization.js +184 -0
  81. package/dist/components/editor/utils/serialization.js.map +1 -0
  82. package/dist/components/editor/utils/stroke-transaction.d.ts +36 -0
  83. package/dist/components/editor/utils/stroke-transaction.js +57 -0
  84. package/dist/components/editor/utils/stroke-transaction.js.map +1 -0
  85. package/dist/components/editor/variable-picker-content.d.ts +130 -0
  86. package/dist/components/editor/variable-picker-content.js +422 -0
  87. package/dist/components/editor/variable-picker-content.js.map +1 -0
  88. package/dist/editor.css +164 -0
  89. package/dist/index.d.ts +28 -0
  90. package/dist/index.js +41 -13
  91. package/dist/lib/board-colors.d.ts +16 -0
  92. package/dist/lib/board-colors.js +14 -14
  93. package/dist/lib/board-colors.js.map +1 -1
  94. package/dist/lib/use-deps-changed.d.ts +33 -0
  95. package/dist/lib/use-deps-changed.js +11 -0
  96. package/dist/lib/use-deps-changed.js.map +1 -0
  97. package/package.json +50 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-editor.js","names":[],"sources":["../../../src/components/editor/template-editor.tsx"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export interface ToolbarDropdownLabels {
2
+ /** Accessible name used when the caller passes an empty `label`. */
3
+ menu: string;
4
+ }
5
+ export declare const DEFAULT_TOOLBAR_DROPDOWN_LABELS: ToolbarDropdownLabels;
6
+ export interface ToolbarDropdownProps {
7
+ /** Trigger's accessible name and tooltip copy. Already caller-supplied — localize it app-side. */
8
+ label: string;
9
+ icon?: React.ReactNode;
10
+ children: React.ReactNode | ((close: () => void) => React.ReactNode);
11
+ className?: string;
12
+ onClose?: () => void;
13
+ /** When false, clicking outside will NOT close the dropdown. Default: true */
14
+ closeOnOutsideClick?: boolean;
15
+ /** Disables the trigger button and prevents opening. */
16
+ disabled?: boolean;
17
+ labels?: Partial<ToolbarDropdownLabels>;
18
+ "data-testid"?: string;
19
+ }
20
+ export declare function ToolbarDropdown({ label, icon, children, className, onClose, closeOnOutsideClick, disabled, labels, "data-testid": dataTestId, }: ToolbarDropdownProps): import("react").JSX.Element;
@@ -0,0 +1,88 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import { Box as t } from "../layout/box.js";
4
+ import { Text as n } from "../typography/text.js";
5
+ import { Tooltip as r, TooltipContent as i, TooltipProvider as a, TooltipTrigger as o } from "../overlays/tooltip.js";
6
+ import { useEffect as s, useLayoutEffect as c, useRef as l, useState as u } from "react";
7
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
8
+ //#region src/components/editor/toolbar-dropdown.tsx
9
+ var p = "absolute top-full left-0 mt-1 z-[var(--z-popover)] bg-popover border border-border rounded-md shadow-lg max-w-[calc(100vw-16px)] overflow-x-auto", m = { menu: "Menu" };
10
+ function h({ label: h, icon: g, children: _, className: v, onClose: y, closeOnOutsideClick: b = !0, disabled: x = !1, labels: S, "data-testid": C }) {
11
+ let w = {
12
+ ...m,
13
+ ...S
14
+ }, [T, E] = u(!1), D = l(null), O = l(null), [k, A] = u(0);
15
+ return c(() => {
16
+ if (!T) return;
17
+ let e = () => {
18
+ let e = O.current;
19
+ if (!e) return;
20
+ let t = e.style.transform;
21
+ e.style.transform = "none";
22
+ let n = e.getBoundingClientRect();
23
+ e.style.transform = t;
24
+ let r = document.documentElement.clientWidth, i = 0;
25
+ n.right > r - 8 && (i = r - 8 - n.right), n.left + i < 8 && (i = 8 - n.left), A(i);
26
+ };
27
+ e();
28
+ let t = new ResizeObserver(e);
29
+ return O.current && t.observe(O.current), window.addEventListener("resize", e), () => {
30
+ t.disconnect(), window.removeEventListener("resize", e);
31
+ };
32
+ }, [T]), s(() => {
33
+ if (!T || !b) return;
34
+ function e(e) {
35
+ D.current && !D.current.contains(e.target) && (E(!1), y?.());
36
+ }
37
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
38
+ }, [
39
+ T,
40
+ b,
41
+ y
42
+ ]), s(() => {
43
+ if (!T) return;
44
+ function e(e) {
45
+ e.key === "Escape" && (e.stopPropagation(), E(!1), y?.());
46
+ }
47
+ return document.addEventListener("keydown", e, !0), () => document.removeEventListener("keydown", e, !0);
48
+ }, [T, y]), /* @__PURE__ */ d(a, { children: /* @__PURE__ */ f(t, {
49
+ ref: D,
50
+ className: "relative",
51
+ children: [/* @__PURE__ */ f(r, { children: [/* @__PURE__ */ d(o, {
52
+ asChild: !0,
53
+ children: /* @__PURE__ */ f("button", {
54
+ type: "button",
55
+ disabled: x,
56
+ "data-testid": C,
57
+ onClick: () => {
58
+ x || E(!T);
59
+ },
60
+ className: e("flex items-center justify-center p-1.5 rounded-md", "hover:bg-muted/50 transition-colors", "border border-transparent", T && "bg-muted/70 border-border", x && "opacity-60 cursor-not-allowed", v),
61
+ "aria-expanded": T,
62
+ "aria-haspopup": "true",
63
+ "aria-label": h || w.menu,
64
+ children: [g && /* @__PURE__ */ d(n, {
65
+ as: "span",
66
+ className: "w-4 h-4",
67
+ children: g
68
+ }), h && /* @__PURE__ */ d(n, {
69
+ as: "span",
70
+ className: "sr-only",
71
+ children: h
72
+ })]
73
+ })
74
+ }), h && /* @__PURE__ */ d(i, { children: /* @__PURE__ */ d(n, { children: h }) })] }), T && /* @__PURE__ */ d(t, {
75
+ ref: O,
76
+ "data-testid": "toolbar-dropdown-panel",
77
+ className: p,
78
+ style: { transform: k ? `translateX(${k}px)` : void 0 },
79
+ children: typeof _ == "function" ? _(() => {
80
+ E(!1), y?.();
81
+ }) : _
82
+ })]
83
+ }) });
84
+ }
85
+ //#endregion
86
+ export { m as DEFAULT_TOOLBAR_DROPDOWN_LABELS, h as ToolbarDropdown };
87
+
88
+ //# sourceMappingURL=toolbar-dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar-dropdown.js","names":[],"sources":["../../../src/components/editor/toolbar-dropdown.tsx"],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Draw-mode utilities — cell-level editing of template lines.
3
+ *
4
+ * A "positional" line maps 1:1 to board cells: each literal character is one
5
+ * cell and each color marker ({{red}}) is one cell. Dynamic tokens
6
+ * (variables, fill_space, formulas, wrapped text) have no fixed width, so
7
+ * painting a line drops them (the user is choosing to draw over them; undo
8
+ * restores).
9
+ */
10
+ import { type BoardColorToken } from "../constants";
11
+ /**
12
+ * The active drawing tool: a color brush, the eraser, or a stamp character
13
+ * picked from the toolbar's character dropdown.
14
+ */
15
+ export type DrawBrush = {
16
+ kind: "color";
17
+ color: BoardColorToken;
18
+ } | {
19
+ kind: "eraser";
20
+ } | {
21
+ kind: "char";
22
+ char: string;
23
+ };
24
+ /** One board cell: a single literal character, or a "{{color}}" marker. */
25
+ export type Cell = string;
26
+ export interface CellPaint {
27
+ col: number;
28
+ /** Cell content to write: "{{color}}", a literal character, or " " to erase. */
29
+ cell: Cell;
30
+ }
31
+ /**
32
+ * The stampable character set — every REAL character on the board (A-Z,
33
+ * digits, punctuation incl. °), i.e. BOARD_CHARS codes 1-62 minus blank
34
+ * (that's the eraser) and the undefined placeholder slots (43, 45, 51, 57,
35
+ * 58, 61), which BOARD_CHARS stores as ' ' to keep its indices aligned with
36
+ * the hardware character codes.
37
+ *
38
+ * PORTING NOTE: the app hand-copied this list with a "mirroring BOARD_CHARS"
39
+ * comment. FiestaUI owns BOARD_CHARS, so it is derived here instead — the
40
+ * mirror can no longer fall out of sync with the character set it mirrors.
41
+ * Slicing [1, 63) drops blank (0) and the color tiles (63-71); filtering ' '
42
+ * drops the undefined-code placeholders.
43
+ */
44
+ export declare const DRAW_CHARS: string[];
45
+ /** Maps the active brush to the cell content it writes. */
46
+ export declare function brushToCell(brush: DrawBrush): Cell;
47
+ export declare function lineToCells(line: string): Cell[];
48
+ export declare function cellsToLine(cells: Cell[]): string;
49
+ export declare function isPositionalLine(line: string): boolean;
50
+ export declare function paintLine(line: string, paints: CellPaint[], cols: number): string;
51
+ /**
52
+ * Render a positional line for BoardDisplay's parser, which expects
53
+ * single-bracket color markers ({red}) after server-side rendering.
54
+ */
55
+ export declare function renderPositionalLine(line: string): string;
@@ -0,0 +1,79 @@
1
+ import { BOARD_CHARS as e } from "../../../lib/board-characters.js";
2
+ import { BOARD_CODE_TO_COLOR as t, BOARD_COLOR_CODES as n } from "../constants.js";
3
+ //#region src/components/editor/utils/draw-mode.ts
4
+ var r = e.slice(1, 63).filter((e) => e !== " "), i = /^\{\{([a-z]+)\}\}$/;
5
+ function a(e) {
6
+ return e === "purple" ? "violet" : e;
7
+ }
8
+ function o(e) {
9
+ return `{{${a(e)}}}`;
10
+ }
11
+ function s(e) {
12
+ switch (e.kind) {
13
+ case "color": return o(e.color);
14
+ case "eraser": return " ";
15
+ case "char": {
16
+ let t = e.char.toUpperCase();
17
+ return t.length === 1 && r.includes(t) ? t : (console.warn(`[draw-mode] Invalid stamp character ${JSON.stringify(e.char)} — erasing instead.`), " ");
18
+ }
19
+ }
20
+ }
21
+ function c(e) {
22
+ let r = [], i = !1, a = e;
23
+ for (; a.length > 0;) {
24
+ let e = a.match(/^\{\{([^}]+)\}\}/);
25
+ if (e) {
26
+ let t = e[1].trim().toLowerCase();
27
+ Object.hasOwn(n, t) ? r.push(o(t)) : i = !0, a = a.slice(e[0].length);
28
+ continue;
29
+ }
30
+ let s = a.match(/^\{([a-z0-9]+)\}/i);
31
+ if (s) {
32
+ let e = s[1].toLowerCase(), i = Number(e);
33
+ if (Object.hasOwn(n, e)) {
34
+ r.push(o(e)), a = a.slice(s[0].length);
35
+ continue;
36
+ }
37
+ if (Number.isInteger(i) && i >= 63 && i <= 71) {
38
+ r.push(o(t[i])), a = a.slice(s[0].length);
39
+ continue;
40
+ }
41
+ }
42
+ r.push(a[0]), a = a.slice(1);
43
+ }
44
+ return {
45
+ cells: r,
46
+ droppedDynamic: i
47
+ };
48
+ }
49
+ function l(e) {
50
+ return c(e).cells;
51
+ }
52
+ function u(e) {
53
+ let t = e.length;
54
+ for (; t > 0 && e[t - 1] === " ";) t--;
55
+ return e.slice(0, t).join("");
56
+ }
57
+ function d(e) {
58
+ return !c(e).droppedDynamic;
59
+ }
60
+ function f(e, t, n) {
61
+ let r = l(e);
62
+ r.length > n && (r.length = n);
63
+ let i = t.filter((e) => e.col >= 0 && e.col < n);
64
+ for (let e of i) {
65
+ for (; r.length <= e.col;) r.push(" ");
66
+ r[e.col] = e.cell;
67
+ }
68
+ return u(r);
69
+ }
70
+ function p(e) {
71
+ return l(e).map((e) => {
72
+ let t = e.match(i);
73
+ return t ? `{${t[1]}}` : e;
74
+ }).join("");
75
+ }
76
+ //#endregion
77
+ export { r as DRAW_CHARS, s as brushToCell, u as cellsToLine, d as isPositionalLine, l as lineToCells, f as paintLine, p as renderPositionalLine };
78
+
79
+ //# sourceMappingURL=draw-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draw-mode.js","names":[],"sources":["../../../../src/components/editor/utils/draw-mode.ts"],"mappings":";;;AA0CA,IAAa,IAAuB,EAAY,MAAM,GAAG,EAAE,CAAC,CAAC,QAAQ,MAAS,MAAS,GAAG,GAEpF,IAAgB;AAGtB,SAAS,EAAe,GAAwC;CAC9D,OAAO,MAAU,WAAW,WAAW;AACzC;AAEA,SAAS,EAAU,GAA8B;CAC/C,OAAO,KAAK,EAAe,CAAK,EAAE;AACpC;AAGA,SAAgB,EAAY,GAAwB;CAClD,QAAQ,EAAM,MAAd;EACE,KAAK,SACH,OAAO,EAAU,EAAM,KAAK;EAC9B,KAAK,UACH,OAAO;EACT,KAAK,QAAQ;GACX,IAAM,IAAO,EAAM,KAAK,YAAY;GAGpC,OAFI,EAAK,WAAW,KAAK,EAAW,SAAS,CAAI,IAAU,KAC3D,QAAQ,KAAK,uCAAuC,KAAK,UAAU,EAAM,IAAI,EAAE,oBAAoB,GAC5F;EACT;CACF;AACF;AAMA,SAAS,EAAa,GAA0D;CAC9E,IAAM,IAAgB,CAAC,GACnB,IAAiB,IACjB,IAAY;CAEhB,OAAO,EAAU,SAAS,IAAG;EAC3B,IAAM,IAAM,EAAU,MAAM,kBAAkB;EAC9C,IAAI,GAAK;GACP,IAAM,IAAU,EAAI,EAAE,CAAC,KAAK,CAAC,CAAC,YAAY;GAO1C,AANI,OAAO,OAAO,GAAmB,CAAO,IAC1C,EAAM,KAAK,EAAU,CAA0B,CAAC,IAGhD,IAAiB,IAEnB,IAAY,EAAU,MAAM,EAAI,EAAE,CAAC,MAAM;GACzC;EACF;EAEA,IAAM,IAAS,EAAU,MAAM,mBAAmB;EAClD,IAAI,GAAQ;GACV,IAAM,IAAQ,EAAO,EAAE,CAAC,YAAY,GAC9B,IAAU,OAAO,CAAK;GAC5B,IAAI,OAAO,OAAO,GAAmB,CAAK,GAAG;IAE3C,AADA,EAAM,KAAK,EAAU,CAAwB,CAAC,GAC9C,IAAY,EAAU,MAAM,EAAO,EAAE,CAAC,MAAM;IAC5C;GACF;GACA,IAAI,OAAO,UAAU,CAAO,KAAK,KAAW,MAAM,KAAW,IAAI;IAE/D,AADA,EAAM,KAAK,EAAU,EAAoB,EAAQ,CAAC,GAClD,IAAY,EAAU,MAAM,EAAO,EAAE,CAAC,MAAM;IAC5C;GACF;EAEF;EAGA,AADA,EAAM,KAAK,EAAU,EAAE,GACvB,IAAY,EAAU,MAAM,CAAC;CAC/B;CAEA,OAAO;EAAE;EAAO;CAAe;AACjC;AAEA,SAAgB,EAAY,GAAsB;CAChD,OAAO,EAAa,CAAI,CAAC,CAAC;AAC5B;AAEA,SAAgB,EAAY,GAAuB;CACjD,IAAI,IAAM,EAAM;CAChB,OAAO,IAAM,KAAK,EAAM,IAAM,OAAO,MAAK;CAC1C,OAAO,EAAM,MAAM,GAAG,CAAG,CAAC,CAAC,KAAK,EAAE;AACpC;AAEA,SAAgB,EAAiB,GAAuB;CACtD,OAAO,CAAC,EAAa,CAAI,CAAC,CAAC;AAC7B;AAEA,SAAgB,EAAU,GAAc,GAAqB,GAAsB;CACjF,IAAM,IAAQ,EAAY,CAAI;CAC9B,AAAI,EAAM,SAAS,MAAM,EAAM,SAAS;CAExC,IAAM,IAAc,EAAO,QAAQ,MAAM,EAAE,OAAO,KAAK,EAAE,MAAM,CAAI;CACnE,KAAK,IAAM,KAAS,GAAa;EAC/B,OAAO,EAAM,UAAU,EAAM,MAAK,EAAM,KAAK,GAAG;EAChD,EAAM,EAAM,OAAO,EAAM;CAC3B;CACA,OAAO,EAAY,CAAK;AAC1B;AAMA,SAAgB,EAAqB,GAAsB;CACzD,OAAO,EAAY,CAAI,CAAC,CACrB,KAAK,MAAS;EACb,IAAM,IAAI,EAAK,MAAM,CAAa;EAClC,OAAO,IAAI,IAAI,EAAE,GAAG,KAAK;CAC3B,CAAC,CAAC,CACD,KAAK,EAAE;AACZ"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Utility functions for inserting template content into TipTap editor
3
+ * at the current cursor position
4
+ */
5
+ import type { Editor } from "@tiptap/react";
6
+ /**
7
+ * Insert template content at the current cursor position in the editor
8
+ * @param editor - The TipTap editor instance
9
+ * @param templateString - Template string to insert (e.g., "{{weather.temperature}}", "{red}", "{{fill_space}}")
10
+ */
11
+ export declare function insertTemplateContent(editor: Editor, templateString: string): void;
@@ -0,0 +1,26 @@
1
+ import { parseLineContent as e } from "./serialization.js";
2
+ //#region src/components/editor/utils/insertion.ts
3
+ function t(t, n) {
4
+ if (!t || !t.state) {
5
+ console.warn("Cannot insert content: editor is not available or not initialized");
6
+ return;
7
+ }
8
+ let r = e(n);
9
+ if (r.length === 0) return;
10
+ if (!t.state.selection) {
11
+ console.warn("Cannot insert content: editor selection is not available");
12
+ return;
13
+ }
14
+ let { from: i } = t.state.selection;
15
+ t.chain().focus().insertContent(r).run();
16
+ let a = 0;
17
+ r.forEach(() => {
18
+ a += 1;
19
+ });
20
+ let o = i + a;
21
+ t.commands.setTextSelection(o);
22
+ }
23
+ //#endregion
24
+ export { t as insertTemplateContent };
25
+
26
+ //# sourceMappingURL=insertion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertion.js","names":[],"sources":["../../../../src/components/editor/utils/insertion.ts"],"mappings":";;AAcA,SAAgB,EAAsB,GAAgB,GAA8B;CAClF,IAAI,CAAC,KAAU,CAAC,EAAO,OAAO;EAC5B,QAAQ,KAAK,mEAAmE;EAChF;CACF;CAGA,IAAM,IAAQ,EAAiB,CAAc;CAE7C,IAAI,EAAM,WAAW,GACnB;CAIF,IAAI,CAAC,EAAO,MAAM,WAAW;EAC3B,QAAQ,KAAK,0DAA0D;EACvE;CACF;CAEA,IAAM,EAAE,YAAS,EAAO,MAAM;CAG9B,EAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,CAAK,CAAC,CAAC,IAAI;CAIhD,IAAI,IAAe;CACnB,EAAM,cAAc;EAElB,KAAgB;CAClB,CAAC;CAGD,IAAM,IAAc,IAAO;CAC3B,EAAO,SAAS,iBAAiB,CAAW;AAC9C"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Character counting logic for FiestaBoard.
3
+ *
4
+ * Must match backend logic in src/templates/engine.py `_count_tiles()`. The
5
+ * per-node-type widths below are a parity contract with that function: if the
6
+ * editor and the renderer disagree about how many tiles a token occupies, the
7
+ * overflow warning lies. Change one, change both.
8
+ */
9
+ import type { JSONContent } from "@tiptap/react";
10
+ /**
11
+ * Calculate the rendered length of a line in characters/tiles.
12
+ * Matches backend _count_tiles() logic.
13
+ */
14
+ export declare function calculateLineLength(lineContent: JSONContent[]): number;
15
+ /**
16
+ * Check if a line will overflow the board width.
17
+ *
18
+ * PORTED FIX: the app read a module-level `BOARD_WIDTH` constant here, which
19
+ * hard-coded flagship's 22 columns. Editing a Note template (15 columns) — or
20
+ * any note_array — therefore reported "no overflow" for lines that overflow on
21
+ * the real hardware. `boardWidth` is now a required parameter so the caller's
22
+ * device always decides. Resolve it with `resolveDimensions(deviceType).cols`
23
+ * (see ../constants); reach for DEFAULT_BOARD_WIDTH only when no device is
24
+ * known at all.
25
+ *
26
+ * @param lineContent Inline nodes of a single line.
27
+ * @param boardWidth Columns available on the target device.
28
+ */
29
+ export declare function willOverflow(lineContent: JSONContent[], boardWidth: number): boolean;
30
+ /**
31
+ * Get overflow amount (0 if no overflow).
32
+ *
33
+ * @param lineContent Inline nodes of a single line.
34
+ * @param boardWidth Columns available on the target device.
35
+ */
36
+ export declare function getOverflowAmount(lineContent: JSONContent[], boardWidth: number): number;
@@ -0,0 +1,32 @@
1
+ import "../constants.js";
2
+ //#region src/components/editor/utils/length-calculator.ts
3
+ function e(e) {
4
+ if (!e || e.length === 0) return 0;
5
+ let t = 0;
6
+ for (let n of e) switch (n.type) {
7
+ case "text":
8
+ t += (n.text || "").replaceAll("​", "").length;
9
+ break;
10
+ case "variable":
11
+ t += n.attrs?.maxLength || 10;
12
+ break;
13
+ case "colorTile":
14
+ t += 1;
15
+ break;
16
+ case "fillSpace":
17
+ t += 0;
18
+ break;
19
+ case "formula": t += n.attrs?.estimatedLength ?? 10;
20
+ }
21
+ return t;
22
+ }
23
+ function t(t, n) {
24
+ return e(t) > n;
25
+ }
26
+ function n(t, n) {
27
+ return Math.max(0, e(t) - n);
28
+ }
29
+ //#endregion
30
+ export { e as calculateLineLength, n as getOverflowAmount, t as willOverflow };
31
+
32
+ //# sourceMappingURL=length-calculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"length-calculator.js","names":[],"sources":["../../../../src/components/editor/utils/length-calculator.ts"],"mappings":";;AAiBA,SAAgB,EAAoB,GAAoC;CACtE,IAAI,CAAC,KAAe,EAAY,WAAW,GACzC,OAAO;CAGT,IAAI,IAAY;CAEhB,KAAK,IAAM,KAAQ,GACjB,QAAQ,EAAK,MAAb;EACE,KAAK;GAEH,MAAc,EAAK,QAAQ,GAAA,CAAI,WAAA,KAA0B,EAAE,CAAC,CAAC;GAC7D;EAEF,KAAK;GAEH,KAAa,EAAK,OAAO,aAAa;GACtC;EAEF,KAAK;GAEH,KAAa;GACb;EAEF,KAAK;GAEH,KAAa;GACb;EAEF,KAAK,WAEH,KAAa,EAAK,OAAO,mBAAmB;CAKhD;CAGF,OAAO;AACT;AAgBA,SAAgB,EAAa,GAA4B,GAA6B;CACpF,OAAO,EAAoB,CAAW,IAAI;AAC5C;AAQA,SAAgB,EAAkB,GAA4B,GAA4B;CACxF,OAAO,KAAK,IAAI,GAAG,EAAoB,CAAW,IAAI,CAAU;AAClE"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Template string ↔ TipTap document serialization
3
+ * Handles parsing and serializing template syntax while maintaining compatibility
4
+ */
5
+ import type { JSONContent } from "@tiptap/react";
6
+ /**
7
+ * Simplified parser - treats template as single block with line breaks.
8
+ * @param maxLines Number of lines for this device (6 for Flagship, 3 for Note).
9
+ * Used only for padding (ensures at least maxLines lines).
10
+ */
11
+ export declare function parseTemplateSimple(template: string, maxLines?: number): JSONContent;
12
+ /**
13
+ * Simplified serializer - converts back to plain text with \n.
14
+ * @param maxLines Number of lines for this device (6 for Flagship, 3 for Note).
15
+ */
16
+ export declare function serializeTemplateSimple(doc: JSONContent, maxLines?: number): string;
17
+ /**
18
+ * A parsed variable filter, e.g. `|pad:3` → `{ name: "pad", arg: "3" }`.
19
+ *
20
+ * `arg` (singular string) is the contract: it is what {@link parseVariable}
21
+ * produces, what the filter picker produces, and what VariableNode declares as
22
+ * its `filters` attribute. `args` is tolerated on read only — see below.
23
+ */
24
+ export interface TemplateFilter {
25
+ name: string;
26
+ arg?: string;
27
+ /** @deprecated Legacy plural form; accepted on read, never written. */
28
+ args?: string[];
29
+ }
30
+ /**
31
+ * Parse line content into TipTap nodes
32
+ * Exported for use in insertion utilities
33
+ */
34
+ export declare function parseLineContent(text: string): JSONContent[];
@@ -0,0 +1,184 @@
1
+ import { BOARD_COLOR_CODES as e, DEFAULT_BOARD_LINES as t, FILL_SPACE_REPEAT_VAR as n, FILL_SPACE_VAR as r } from "../constants.js";
2
+ //#region src/components/editor/utils/serialization.ts
3
+ var i = "​";
4
+ function a(e, n = t) {
5
+ let r = e.split("\n"), a = [];
6
+ r.forEach((e, t) => {
7
+ if (a.push({
8
+ type: "text",
9
+ text: i
10
+ }), e) {
11
+ let t = u(e);
12
+ a.push(...t);
13
+ }
14
+ a.push({
15
+ type: "text",
16
+ text: i
17
+ }), t < r.length - 1 && a.push({ type: "hardBreak" });
18
+ });
19
+ let o = r.length;
20
+ for (let e = o; e < n; e++) a.length > 0 && a[a.length - 1].type !== "hardBreak" && a.push({ type: "hardBreak" }), a.push({
21
+ type: "text",
22
+ text: i
23
+ }), a.push({
24
+ type: "text",
25
+ text: i
26
+ }), e < n - 1 && a.push({ type: "hardBreak" });
27
+ return {
28
+ type: "doc",
29
+ content: [{
30
+ type: "paragraph",
31
+ content: a.length > 0 ? a : void 0
32
+ }]
33
+ };
34
+ }
35
+ function o(e, n = t) {
36
+ let r = Array.from({ length: n }, () => "").join("\n");
37
+ if (!e.content || e.content.length === 0) return r;
38
+ let i = [], a = "", o = e.content[0];
39
+ if (!o || !o.content) return r;
40
+ for (let e of o.content) e.type === "hardBreak" ? (i.push(a), a = "") : a += s(e);
41
+ for (i.push(a); i.length < n;) i.push("");
42
+ return i.join("\n");
43
+ }
44
+ function s(e) {
45
+ switch (e.type) {
46
+ case "text": return (e.text || "").replaceAll(i, "").toUpperCase();
47
+ case "variable": {
48
+ let t = (e.attrs?.filters || []).map((e) => `|${e.name}${c(e)}`).join("");
49
+ return `{{${e.attrs?.pluginId}.${e.attrs?.field}${t}}}`;
50
+ }
51
+ case "colorTile": return `{{${e.attrs?.color}}}`;
52
+ case "fillSpace": {
53
+ let t = e.attrs?.repeatChar;
54
+ return t && t !== " " ? `{{${n}:${t}}}` : `{{${r}}}`;
55
+ }
56
+ case "wrappedText": return `{{${e.attrs?.text}|wrap}}`;
57
+ case "formula": return `{{= ${e.attrs?.expression} }}`;
58
+ default: return "";
59
+ }
60
+ }
61
+ function c(e) {
62
+ return e.arg !== void 0 && e.arg !== "" ? `:${e.arg}` : e.args && e.args.length > 0 ? `:${e.args.join(",")}` : "";
63
+ }
64
+ var l = /* @__PURE__ */ new Set([
65
+ "variable",
66
+ "colorTile",
67
+ "fillSpace",
68
+ "formula"
69
+ ]);
70
+ function u(t) {
71
+ let n = [], r = t;
72
+ for (; r.length > 0;) {
73
+ let t = r.match(/^\{\{([^}]+)\}\}/);
74
+ if (t) {
75
+ let i = t[1], a = t[0], o = i.toLowerCase();
76
+ if (Object.hasOwn(e, o)) n.push({
77
+ type: "colorTile",
78
+ attrs: {
79
+ color: o,
80
+ code: e[o]
81
+ }
82
+ });
83
+ else if (i.toLowerCase() === "fill_space") n.push({
84
+ type: "fillSpace",
85
+ attrs: { id: d() }
86
+ });
87
+ else if (i.toLowerCase().startsWith("fill_space_repeat")) {
88
+ let e = " ";
89
+ if (i.includes(":")) {
90
+ let t = i.split(":");
91
+ t.length > 1 && t[1] && (e = t[1]);
92
+ }
93
+ n.push({
94
+ type: "fillSpace",
95
+ attrs: {
96
+ id: d(),
97
+ repeatChar: e
98
+ }
99
+ });
100
+ } else if (i.trimStart().startsWith("=")) {
101
+ let e = i.trimStart().slice(1).trim();
102
+ n.push({
103
+ type: "formula",
104
+ attrs: { expression: e }
105
+ });
106
+ } else {
107
+ let { varPath: e, filters: t } = f(i), r = e.indexOf("."), a = r === -1 ? e : e.slice(0, r), o = r === -1 ? "" : e.slice(r + 1);
108
+ n.push({
109
+ type: "variable",
110
+ attrs: {
111
+ pluginId: a || "",
112
+ field: o || "",
113
+ filters: t
114
+ }
115
+ });
116
+ }
117
+ r = r.slice(a.length);
118
+ continue;
119
+ }
120
+ let i = r.match(/^\{([a-z]+)\}/i);
121
+ if (i) {
122
+ let t = i[1].toLowerCase();
123
+ if (Object.hasOwn(e, t)) {
124
+ n.push({
125
+ type: "colorTile",
126
+ attrs: {
127
+ color: t,
128
+ code: e[t]
129
+ }
130
+ }), r = r.slice(i[0].length);
131
+ continue;
132
+ }
133
+ n.push({
134
+ type: "text",
135
+ text: i[0]
136
+ }), r = r.slice(i[0].length);
137
+ continue;
138
+ }
139
+ let a = r.search(/\{\{|\{[a-z]+\}/i);
140
+ if (a === -1) {
141
+ r && n.push({
142
+ type: "text",
143
+ text: r
144
+ });
145
+ break;
146
+ }
147
+ a > 0 ? (n.push({
148
+ type: "text",
149
+ text: r.slice(0, a)
150
+ }), r = r.slice(a)) : (n.push({
151
+ type: "text",
152
+ text: r[0]
153
+ }), r = r.slice(1));
154
+ }
155
+ let a = [];
156
+ for (let e of n) l.has(e.type) ? (a.push({
157
+ type: "text",
158
+ text: i
159
+ }), a.push(e), a.push({
160
+ type: "text",
161
+ text: i
162
+ })) : a.push(e);
163
+ return a;
164
+ }
165
+ function d() {
166
+ return Math.random().toString(36).slice(2, 11);
167
+ }
168
+ function f(e) {
169
+ let t = e.split("|");
170
+ return {
171
+ varPath: t[0].trim(),
172
+ filters: t.slice(1).map((e) => {
173
+ let t = e.indexOf(":");
174
+ return t === -1 ? { name: e.trim() } : {
175
+ name: e.slice(0, t).trim(),
176
+ arg: e.slice(t + 1).trim()
177
+ };
178
+ })
179
+ };
180
+ }
181
+ //#endregion
182
+ export { u as parseLineContent, a as parseTemplateSimple, o as serializeTemplateSimple };
183
+
184
+ //# sourceMappingURL=serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.js","names":[],"sources":["../../../../src/components/editor/utils/serialization.ts"],"mappings":"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"}