@fiestaboard/ui 3.1.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/editor/color-picker-content.d.ts +25 -0
- package/dist/components/editor/color-picker-content.js +118 -0
- package/dist/components/editor/color-picker-content.js.map +1 -0
- package/dist/components/editor/constants.d.ts +87 -0
- package/dist/components/editor/constants.js +29 -0
- package/dist/components/editor/constants.js.map +1 -0
- package/dist/components/editor/draw-char-picker-content.d.ts +22 -0
- package/dist/components/editor/draw-char-picker-content.js +79 -0
- package/dist/components/editor/draw-char-picker-content.js.map +1 -0
- package/dist/components/editor/extensions/color-tile-node.d.ts +10 -0
- package/dist/components/editor/extensions/color-tile-node.js +43 -0
- package/dist/components/editor/extensions/color-tile-node.js.map +1 -0
- package/dist/components/editor/extensions/fill-space-node.d.ts +10 -0
- package/dist/components/editor/extensions/fill-space-node.js +40 -0
- package/dist/components/editor/extensions/fill-space-node.js.map +1 -0
- package/dist/components/editor/extensions/formula-node.d.ts +6 -0
- package/dist/components/editor/extensions/formula-node.js +40 -0
- package/dist/components/editor/extensions/formula-node.js.map +1 -0
- package/dist/components/editor/extensions/line-navigation.d.ts +18 -0
- package/dist/components/editor/extensions/line-navigation.js +16 -0
- package/dist/components/editor/extensions/line-navigation.js.map +1 -0
- package/dist/components/editor/extensions/single-paragraph-doc.d.ts +15 -0
- package/dist/components/editor/extensions/single-paragraph-doc.js +11 -0
- package/dist/components/editor/extensions/single-paragraph-doc.js.map +1 -0
- package/dist/components/editor/extensions/trailing-newline.d.ts +13 -0
- package/dist/components/editor/extensions/trailing-newline.js +27 -0
- package/dist/components/editor/extensions/trailing-newline.js.map +1 -0
- package/dist/components/editor/extensions/variable-node.d.ts +15 -0
- package/dist/components/editor/extensions/variable-node.js +56 -0
- package/dist/components/editor/extensions/variable-node.js.map +1 -0
- package/dist/components/editor/extensions/wrapped-text-node.d.ts +9 -0
- package/dist/components/editor/extensions/wrapped-text-node.js +31 -0
- package/dist/components/editor/extensions/wrapped-text-node.js.map +1 -0
- package/dist/components/editor/filter-picker-content.d.ts +24 -0
- package/dist/components/editor/filter-picker-content.js +146 -0
- package/dist/components/editor/filter-picker-content.js.map +1 -0
- package/dist/components/editor/formatting-picker-content.d.ts +30 -0
- package/dist/components/editor/formatting-picker-content.js +154 -0
- package/dist/components/editor/formatting-picker-content.js.map +1 -0
- package/dist/components/editor/formula/formula-editor-panel.d.ts +102 -0
- package/dist/components/editor/formula/formula-editor-panel.js +527 -0
- package/dist/components/editor/formula/formula-editor-panel.js.map +1 -0
- package/dist/components/editor/node-views/color-tile-node-view.d.ts +21 -0
- package/dist/components/editor/node-views/color-tile-node-view.js +66 -0
- package/dist/components/editor/node-views/color-tile-node-view.js.map +1 -0
- package/dist/components/editor/node-views/fill-space-node-view.d.ts +16 -0
- package/dist/components/editor/node-views/fill-space-node-view.js +43 -0
- package/dist/components/editor/node-views/fill-space-node-view.js.map +1 -0
- package/dist/components/editor/node-views/formula-node-view.d.ts +39 -0
- package/dist/components/editor/node-views/formula-node-view.js +109 -0
- package/dist/components/editor/node-views/formula-node-view.js.map +1 -0
- package/dist/components/editor/node-views/node-view-context.d.ts +58 -0
- package/dist/components/editor/node-views/node-view-context.js +22 -0
- package/dist/components/editor/node-views/node-view-context.js.map +1 -0
- package/dist/components/editor/node-views/variable-node-view.d.ts +16 -0
- package/dist/components/editor/node-views/variable-node-view.js +63 -0
- package/dist/components/editor/node-views/variable-node-view.js.map +1 -0
- package/dist/components/editor/node-views/wrapped-text-view.d.ts +14 -0
- package/dist/components/editor/node-views/wrapped-text-view.js +46 -0
- package/dist/components/editor/node-views/wrapped-text-view.js.map +1 -0
- package/dist/components/editor/template-editor-toolbar.d.ts +146 -0
- package/dist/components/editor/template-editor-toolbar.js +434 -0
- package/dist/components/editor/template-editor-toolbar.js.map +1 -0
- package/dist/components/editor/template-editor.d.ts +109 -0
- package/dist/components/editor/template-editor.js +662 -0
- package/dist/components/editor/template-editor.js.map +1 -0
- package/dist/components/editor/toolbar-dropdown.d.ts +20 -0
- package/dist/components/editor/toolbar-dropdown.js +88 -0
- package/dist/components/editor/toolbar-dropdown.js.map +1 -0
- package/dist/components/editor/utils/draw-mode.d.ts +55 -0
- package/dist/components/editor/utils/draw-mode.js +79 -0
- package/dist/components/editor/utils/draw-mode.js.map +1 -0
- package/dist/components/editor/utils/insertion.d.ts +11 -0
- package/dist/components/editor/utils/insertion.js +26 -0
- package/dist/components/editor/utils/insertion.js.map +1 -0
- package/dist/components/editor/utils/length-calculator.d.ts +36 -0
- package/dist/components/editor/utils/length-calculator.js +32 -0
- package/dist/components/editor/utils/length-calculator.js.map +1 -0
- package/dist/components/editor/utils/serialization.d.ts +34 -0
- package/dist/components/editor/utils/serialization.js +184 -0
- package/dist/components/editor/utils/serialization.js.map +1 -0
- package/dist/components/editor/utils/stroke-transaction.d.ts +36 -0
- package/dist/components/editor/utils/stroke-transaction.js +57 -0
- package/dist/components/editor/utils/stroke-transaction.js.map +1 -0
- package/dist/components/editor/variable-picker-content.d.ts +130 -0
- package/dist/components/editor/variable-picker-content.js +422 -0
- package/dist/components/editor/variable-picker-content.js.map +1 -0
- package/dist/editor.css +164 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +41 -13
- package/dist/lib/board-colors.d.ts +16 -0
- package/dist/lib/board-colors.js +14 -14
- package/dist/lib/board-colors.js.map +1 -1
- package/dist/lib/use-deps-changed.d.ts +33 -0
- package/dist/lib/use-deps-changed.js +11 -0
- package/dist/lib/use-deps-changed.js.map +1 -0
- package/package.json +50 -2
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../../lib/utils.js";
|
|
3
|
+
import { Box as t } from "../layout/box.js";
|
|
4
|
+
import { Flex as n } from "../layout/flex.js";
|
|
5
|
+
import { Skeleton as r } from "../feedback/skeleton.js";
|
|
6
|
+
import { Text as i } from "../typography/text.js";
|
|
7
|
+
import { Tooltip as a, TooltipContent as o, TooltipProvider as ee, TooltipTrigger as s } from "../overlays/tooltip.js";
|
|
8
|
+
import { AVAILABLE_COLORS as te, getBoardColor as ne } from "../../lib/board-colors.js";
|
|
9
|
+
import { useDepsChanged as re } from "../../lib/use-deps-changed.js";
|
|
10
|
+
import { ColorPickerContent as ie } from "./color-picker-content.js";
|
|
11
|
+
import { DrawCharPickerContent as ae } from "./draw-char-picker-content.js";
|
|
12
|
+
import { FormattingPickerContent as c } from "./formatting-picker-content.js";
|
|
13
|
+
import { ToolbarDropdown as l } from "./toolbar-dropdown.js";
|
|
14
|
+
import { insertTemplateContent as oe } from "./utils/insertion.js";
|
|
15
|
+
import { AlignCenter as se, AlignLeft as ce, AlignRight as le, ClipboardPaste as ue, Code2 as u, Copy as de, Download as fe, Eraser as d, House as pe, Palette as me, Pencil as he, Redo2 as ge, Scissors as _e, SquareFunction as ve, Type as f, Undo2 as p, WrapText as m } from "lucide-react";
|
|
16
|
+
import { Suspense as ye, lazy as h, useCallback as g, useEffect as _, useRef as be, useState as v } from "react";
|
|
17
|
+
import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
18
|
+
//#region src/components/editor/template-editor-toolbar.tsx
|
|
19
|
+
var xe = h(() => import("./variable-picker-content.js").then((e) => ({ default: e.VariablePickerContent }))), S = {
|
|
20
|
+
drawMode: "Draw on board",
|
|
21
|
+
drawModeActive: "Exit drawing mode",
|
|
22
|
+
undo: "Undo (Ctrl+Z)",
|
|
23
|
+
undoAriaLabel: "Undo",
|
|
24
|
+
redo: "Redo (Ctrl+Shift+Z)",
|
|
25
|
+
redoAriaLabel: "Redo",
|
|
26
|
+
drawColors: {
|
|
27
|
+
red: "Red",
|
|
28
|
+
orange: "Orange",
|
|
29
|
+
yellow: "Yellow",
|
|
30
|
+
green: "Green",
|
|
31
|
+
blue: "Blue",
|
|
32
|
+
violet: "Violet",
|
|
33
|
+
white: "White",
|
|
34
|
+
black: "Black"
|
|
35
|
+
},
|
|
36
|
+
drawEraser: "Eraser",
|
|
37
|
+
drawCharacter: "Stamp character",
|
|
38
|
+
cut: "Cut (Ctrl+X)",
|
|
39
|
+
cutAriaLabel: "Cut",
|
|
40
|
+
copy: "Copy (Ctrl+C)",
|
|
41
|
+
copyAriaLabel: "Copy",
|
|
42
|
+
paste: "Paste (Ctrl+V)",
|
|
43
|
+
pasteAriaLabel: "Paste",
|
|
44
|
+
variables: "Variables",
|
|
45
|
+
variablesNoVarsAvailable: "Variables (no variables available)",
|
|
46
|
+
noVariablesAvailable: "No template variables available. Configure plugins in Settings.",
|
|
47
|
+
homeAssistantEntities: "Home Assistant entities",
|
|
48
|
+
colors: "Colors",
|
|
49
|
+
formatting: "Formatting",
|
|
50
|
+
insertFormula: "Insert formula",
|
|
51
|
+
toggleWrap: "Toggle wrap for current line",
|
|
52
|
+
enableWrap: "Enable wrap. Long text flows into empty or wrap-enabled lines below.",
|
|
53
|
+
disableWrap: "Disable wrap for this line",
|
|
54
|
+
alignLeft: "Align left",
|
|
55
|
+
alignCenter: "Align center",
|
|
56
|
+
alignRight: "Align right",
|
|
57
|
+
syncFromBoard: "Sync from current board display",
|
|
58
|
+
syncFromBoardTooltip: "Populate template from what's currently displayed on the board"
|
|
59
|
+
};
|
|
60
|
+
function C({ editor: h, currentAlignment: C = "left", currentWrapEnabled: w = !1, onAlignmentChange: T, onWrapToggle: Se, className: E, deviceType: D, onSyncFromBoard: O, syncFromBoardPending: k = !1, drawMode: A = !1, onDrawModeToggle: j, drawBrush: Ce, onDrawBrushChange: M, templateVariables: N, isLoadingVariables: we, pluginManifests: Te, isLoadingManifests: Ee, pluginDisplayData: De, resolveIcon: P, entityPickerSlot: F, labels: Oe, variablePickerLabels: ke, colorPickerLabels: Ae, formattingPickerLabels: je }) {
|
|
61
|
+
let I = {
|
|
62
|
+
...S,
|
|
63
|
+
...Oe
|
|
64
|
+
}, L = (e) => I.drawColors?.[e] ?? S.drawColors[e], R = Ce ?? {
|
|
65
|
+
kind: "color",
|
|
66
|
+
color: "red"
|
|
67
|
+
}, z = (e) => {
|
|
68
|
+
h && oe(h, e);
|
|
69
|
+
}, B = (e) => {
|
|
70
|
+
T && T(e);
|
|
71
|
+
}, V = N?.variables && Object.keys(N.variables).length > 0, H = N?.colors && Object.keys(N.colors).length > 0, U = N?.formatting && Object.keys(N.formatting).length > 0, Me = !!F && !!N?.variables?.home_assistant, [W, G] = v(!1), [K, q] = v(!1), [J, Y] = v(!1), [X, Z] = v(!0), [Ne, Q] = v(!1), $ = be(null), Pe = (e) => {
|
|
72
|
+
$.current !== null && cancelAnimationFrame($.current), $.current = requestAnimationFrame(() => {
|
|
73
|
+
$.current = null, z(e);
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
_(() => () => {
|
|
77
|
+
$.current !== null && (cancelAnimationFrame($.current), $.current = null);
|
|
78
|
+
}, []), re([h]) && !h && (G(!1), q(!1), Y(!1)), _(() => {
|
|
79
|
+
if (!h) return;
|
|
80
|
+
let e = () => {
|
|
81
|
+
G(h.can().undo()), q(h.can().redo());
|
|
82
|
+
let { from: e, to: t } = h.state.selection;
|
|
83
|
+
Y(e !== t);
|
|
84
|
+
};
|
|
85
|
+
return e(), h.on("update", e), h.on("selectionUpdate", e), () => {
|
|
86
|
+
h.off("update", e), h.off("selectionUpdate", e);
|
|
87
|
+
};
|
|
88
|
+
}, [h]), _(() => {
|
|
89
|
+
let e = () => {
|
|
90
|
+
Z(!0);
|
|
91
|
+
};
|
|
92
|
+
return document.addEventListener("copy", e), document.addEventListener("cut", e), () => {
|
|
93
|
+
document.removeEventListener("copy", e), document.removeEventListener("cut", e);
|
|
94
|
+
};
|
|
95
|
+
}, []);
|
|
96
|
+
let Fe = () => {
|
|
97
|
+
h && W && h.chain().focus().undo().run();
|
|
98
|
+
}, Ie = () => {
|
|
99
|
+
h && K && h.chain().focus().redo().run();
|
|
100
|
+
}, Le = g(async () => {
|
|
101
|
+
if (h && J) {
|
|
102
|
+
h.view.focus();
|
|
103
|
+
let { from: e, to: t } = h.state.selection, n = h.state.doc.textBetween(e, t, "\n");
|
|
104
|
+
try {
|
|
105
|
+
await navigator.clipboard.writeText(n), h.chain().focus().deleteSelection().run();
|
|
106
|
+
} catch {
|
|
107
|
+
document.execCommand("cut");
|
|
108
|
+
}
|
|
109
|
+
Z(!0);
|
|
110
|
+
}
|
|
111
|
+
}, [h, J]), Re = g(async () => {
|
|
112
|
+
if (h && J) {
|
|
113
|
+
h.view.focus();
|
|
114
|
+
let { from: e, to: t } = h.state.selection, n = h.state.doc.textBetween(e, t, "\n");
|
|
115
|
+
try {
|
|
116
|
+
await navigator.clipboard.writeText(n);
|
|
117
|
+
} catch {
|
|
118
|
+
document.execCommand("copy");
|
|
119
|
+
}
|
|
120
|
+
Z(!0);
|
|
121
|
+
}
|
|
122
|
+
}, [h, J]), ze = g(async () => {
|
|
123
|
+
if (h) try {
|
|
124
|
+
let e = await navigator.clipboard.readText();
|
|
125
|
+
e && h.chain().focus().insertContent(e).run();
|
|
126
|
+
} catch {
|
|
127
|
+
h.commands.focus();
|
|
128
|
+
}
|
|
129
|
+
}, [h]);
|
|
130
|
+
return /* @__PURE__ */ b(ee, {
|
|
131
|
+
skipDelayDuration: 0,
|
|
132
|
+
children: /* @__PURE__ */ x(n, {
|
|
133
|
+
align: "center",
|
|
134
|
+
gap: "1",
|
|
135
|
+
wrap: !0,
|
|
136
|
+
className: e("p-2 border rounded-t-md bg-background", E),
|
|
137
|
+
children: [
|
|
138
|
+
j && /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(n, {
|
|
139
|
+
align: "center",
|
|
140
|
+
gap: "0.5",
|
|
141
|
+
className: "rounded-md border border-border overflow-hidden bg-background",
|
|
142
|
+
children: /* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
143
|
+
asChild: !0,
|
|
144
|
+
children: /* @__PURE__ */ b("button", {
|
|
145
|
+
type: "button",
|
|
146
|
+
onClick: j,
|
|
147
|
+
"data-testid": "draw-mode-toggle",
|
|
148
|
+
"aria-pressed": A,
|
|
149
|
+
className: e("px-2 py-1.5 transition-colors", A ? "bg-primary text-primary-foreground" : "hover:bg-muted/50"),
|
|
150
|
+
"aria-label": A ? I.drawModeActive : I.drawMode,
|
|
151
|
+
children: /* @__PURE__ */ b(he, { className: "w-4 h-4" })
|
|
152
|
+
})
|
|
153
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: A ? I.drawModeActive : I.drawMode }) })] })
|
|
154
|
+
}), /* @__PURE__ */ b(t, { className: "h-6 w-px bg-border mx-1" })] }),
|
|
155
|
+
/* @__PURE__ */ x(n, {
|
|
156
|
+
align: "center",
|
|
157
|
+
gap: "0.5",
|
|
158
|
+
className: "rounded-md border border-border overflow-hidden bg-background",
|
|
159
|
+
children: [/* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
160
|
+
asChild: !0,
|
|
161
|
+
children: /* @__PURE__ */ b("button", {
|
|
162
|
+
type: "button",
|
|
163
|
+
onClick: Fe,
|
|
164
|
+
disabled: !W,
|
|
165
|
+
className: e("px-2 py-1.5 transition-colors", W ? "hover:bg-muted/50" : "opacity-60 cursor-not-allowed", "border-r border-border"),
|
|
166
|
+
"aria-label": I.undoAriaLabel,
|
|
167
|
+
children: /* @__PURE__ */ b(p, { className: "w-4 h-4" })
|
|
168
|
+
})
|
|
169
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: I.undo }) })] }), /* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
170
|
+
asChild: !0,
|
|
171
|
+
children: /* @__PURE__ */ b("button", {
|
|
172
|
+
type: "button",
|
|
173
|
+
onClick: Ie,
|
|
174
|
+
disabled: !K,
|
|
175
|
+
className: e("px-2 py-1.5 transition-colors", K ? "hover:bg-muted/50" : "opacity-60 cursor-not-allowed"),
|
|
176
|
+
"aria-label": I.redoAriaLabel,
|
|
177
|
+
children: /* @__PURE__ */ b(ge, { className: "w-4 h-4" })
|
|
178
|
+
})
|
|
179
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: I.redo }) })] })]
|
|
180
|
+
}),
|
|
181
|
+
/* @__PURE__ */ b(t, { className: "h-6 w-px bg-border mx-1" }),
|
|
182
|
+
A && /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ x(n, {
|
|
183
|
+
align: "center",
|
|
184
|
+
gap: "0.5",
|
|
185
|
+
children: [te.map((t) => {
|
|
186
|
+
let n = R.kind === "color" && R.color === t;
|
|
187
|
+
return /* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
188
|
+
asChild: !0,
|
|
189
|
+
children: /* @__PURE__ */ b("button", {
|
|
190
|
+
type: "button",
|
|
191
|
+
"data-testid": `draw-color-${t}`,
|
|
192
|
+
"aria-pressed": n,
|
|
193
|
+
"aria-label": L(t),
|
|
194
|
+
onClick: () => M?.({
|
|
195
|
+
kind: "color",
|
|
196
|
+
color: t
|
|
197
|
+
}),
|
|
198
|
+
className: e("flex items-center justify-center p-1.5 rounded-md transition-colors", "border border-transparent", n ? "ring-2 ring-primary" : "hover:bg-muted/50"),
|
|
199
|
+
children: /* @__PURE__ */ b(i, {
|
|
200
|
+
as: "span",
|
|
201
|
+
className: "block h-4 w-4 rounded-sm border border-border/50",
|
|
202
|
+
style: { backgroundColor: ne(t) }
|
|
203
|
+
})
|
|
204
|
+
})
|
|
205
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: L(t) }) })] }, t);
|
|
206
|
+
}), /* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
207
|
+
asChild: !0,
|
|
208
|
+
children: /* @__PURE__ */ b("button", {
|
|
209
|
+
type: "button",
|
|
210
|
+
"data-testid": "draw-color-eraser",
|
|
211
|
+
"aria-pressed": R.kind === "eraser",
|
|
212
|
+
"aria-label": I.drawEraser,
|
|
213
|
+
onClick: () => M?.({ kind: "eraser" }),
|
|
214
|
+
className: e("flex items-center justify-center p-1.5 rounded-md transition-colors", "border border-transparent", R.kind === "eraser" ? "ring-2 ring-primary bg-muted/70" : "hover:bg-muted/50"),
|
|
215
|
+
children: /* @__PURE__ */ b(d, { className: "w-4 h-4" })
|
|
216
|
+
})
|
|
217
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: I.drawEraser }) })] })]
|
|
218
|
+
}), /* @__PURE__ */ b(l, {
|
|
219
|
+
label: I.drawCharacter,
|
|
220
|
+
"data-testid": "draw-char-dropdown",
|
|
221
|
+
className: e(R.kind === "char" && "ring-2 ring-primary"),
|
|
222
|
+
icon: R.kind === "char" ? /* @__PURE__ */ b(i, {
|
|
223
|
+
as: "span",
|
|
224
|
+
size: "xs",
|
|
225
|
+
className: "flex h-4 w-4 items-center justify-center rounded-sm border border-border font-mono leading-none",
|
|
226
|
+
children: R.char
|
|
227
|
+
}) : /* @__PURE__ */ b(f, { className: "w-4 h-4" }),
|
|
228
|
+
children: (e) => /* @__PURE__ */ b(ae, {
|
|
229
|
+
current: R,
|
|
230
|
+
onSelect: (t) => {
|
|
231
|
+
M?.(t), e();
|
|
232
|
+
}
|
|
233
|
+
})
|
|
234
|
+
})] }),
|
|
235
|
+
!A && /* @__PURE__ */ x(y, { children: [
|
|
236
|
+
/* @__PURE__ */ x(n, {
|
|
237
|
+
align: "center",
|
|
238
|
+
gap: "0.5",
|
|
239
|
+
className: "rounded-md border border-border overflow-hidden bg-background",
|
|
240
|
+
children: [
|
|
241
|
+
/* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
242
|
+
asChild: !0,
|
|
243
|
+
children: /* @__PURE__ */ b("button", {
|
|
244
|
+
type: "button",
|
|
245
|
+
onClick: Le,
|
|
246
|
+
disabled: !J,
|
|
247
|
+
className: e("px-2 py-1.5 transition-colors", J ? "hover:bg-muted/50" : "opacity-60 cursor-not-allowed", "border-r border-border"),
|
|
248
|
+
"aria-label": I.cutAriaLabel,
|
|
249
|
+
children: /* @__PURE__ */ b(_e, { className: "w-4 h-4" })
|
|
250
|
+
})
|
|
251
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: I.cut }) })] }),
|
|
252
|
+
/* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
253
|
+
asChild: !0,
|
|
254
|
+
children: /* @__PURE__ */ b("button", {
|
|
255
|
+
type: "button",
|
|
256
|
+
onClick: Re,
|
|
257
|
+
disabled: !J,
|
|
258
|
+
className: e("px-2 py-1.5 transition-colors", J ? "hover:bg-muted/50" : "opacity-60 cursor-not-allowed", "border-r border-border"),
|
|
259
|
+
"aria-label": I.copyAriaLabel,
|
|
260
|
+
children: /* @__PURE__ */ b(de, { className: "w-4 h-4" })
|
|
261
|
+
})
|
|
262
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: I.copy }) })] }),
|
|
263
|
+
/* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
264
|
+
asChild: !0,
|
|
265
|
+
children: /* @__PURE__ */ b("button", {
|
|
266
|
+
type: "button",
|
|
267
|
+
onClick: ze,
|
|
268
|
+
disabled: !X,
|
|
269
|
+
className: e("px-2 py-1.5 transition-colors", X ? "hover:bg-muted/50" : "opacity-60 cursor-not-allowed"),
|
|
270
|
+
"aria-label": I.pasteAriaLabel,
|
|
271
|
+
children: /* @__PURE__ */ b(ue, { className: "w-4 h-4" })
|
|
272
|
+
})
|
|
273
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: I.paste }) })] })
|
|
274
|
+
]
|
|
275
|
+
}),
|
|
276
|
+
/* @__PURE__ */ b(t, { className: "h-6 w-px bg-border mx-1" }),
|
|
277
|
+
V ? /* @__PURE__ */ b(l, {
|
|
278
|
+
label: I.variables,
|
|
279
|
+
icon: /* @__PURE__ */ b(u, { className: "w-4 h-4" }),
|
|
280
|
+
children: (e) => /* @__PURE__ */ b(ye, {
|
|
281
|
+
fallback: /* @__PURE__ */ x(t, {
|
|
282
|
+
className: "p-3 min-w-[300px]",
|
|
283
|
+
children: [
|
|
284
|
+
/* @__PURE__ */ b(r, { className: "h-4 w-full mb-2" }),
|
|
285
|
+
/* @__PURE__ */ b(r, { className: "h-4 w-3/4 mb-2" }),
|
|
286
|
+
/* @__PURE__ */ b(r, { className: "h-4 w-1/2" })
|
|
287
|
+
]
|
|
288
|
+
}),
|
|
289
|
+
children: /* @__PURE__ */ b(xe, {
|
|
290
|
+
templateVariables: N,
|
|
291
|
+
isLoadingVariables: we,
|
|
292
|
+
pluginManifests: Te,
|
|
293
|
+
isLoadingManifests: Ee,
|
|
294
|
+
pluginDisplayData: De,
|
|
295
|
+
resolveIcon: P,
|
|
296
|
+
labels: ke,
|
|
297
|
+
onInsert: (t) => {
|
|
298
|
+
z(t), e();
|
|
299
|
+
}
|
|
300
|
+
})
|
|
301
|
+
})
|
|
302
|
+
}) : /* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
303
|
+
asChild: !0,
|
|
304
|
+
children: /* @__PURE__ */ b("button", {
|
|
305
|
+
type: "button",
|
|
306
|
+
disabled: !0,
|
|
307
|
+
className: e("flex items-center justify-center p-1.5 rounded-md", "text-muted-foreground cursor-not-allowed opacity-60", "border border-transparent"),
|
|
308
|
+
"aria-label": I.variablesNoVarsAvailable,
|
|
309
|
+
children: /* @__PURE__ */ b(u, { className: "w-4 h-4" })
|
|
310
|
+
})
|
|
311
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: I.noVariablesAvailable }) })] }),
|
|
312
|
+
Me && /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
313
|
+
asChild: !0,
|
|
314
|
+
children: /* @__PURE__ */ b("button", {
|
|
315
|
+
type: "button",
|
|
316
|
+
"data-testid": "home-assistant-entity-button",
|
|
317
|
+
onClick: () => Q(!0),
|
|
318
|
+
className: e("flex items-center justify-center p-1.5 rounded-md transition-colors", "border border-transparent hover:bg-muted/50"),
|
|
319
|
+
"aria-label": I.homeAssistantEntities,
|
|
320
|
+
children: /* @__PURE__ */ b(pe, { className: "w-4 h-4" })
|
|
321
|
+
})
|
|
322
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: I.homeAssistantEntities }) })] }), F?.({
|
|
323
|
+
open: Ne,
|
|
324
|
+
onClose: () => Q(!1),
|
|
325
|
+
onSelect: Pe
|
|
326
|
+
})] }),
|
|
327
|
+
H && /* @__PURE__ */ b(l, {
|
|
328
|
+
label: I.colors,
|
|
329
|
+
icon: /* @__PURE__ */ b(me, { className: "w-4 h-4" }),
|
|
330
|
+
children: (e) => /* @__PURE__ */ b(ie, {
|
|
331
|
+
onInsert: (t) => {
|
|
332
|
+
z(t), e();
|
|
333
|
+
},
|
|
334
|
+
deviceType: D,
|
|
335
|
+
labels: Ae
|
|
336
|
+
})
|
|
337
|
+
}),
|
|
338
|
+
U && /* @__PURE__ */ b(l, {
|
|
339
|
+
label: I.formatting,
|
|
340
|
+
icon: /* @__PURE__ */ b(f, { className: "w-4 h-4" }),
|
|
341
|
+
children: (e) => /* @__PURE__ */ b(c, {
|
|
342
|
+
formatting: N?.formatting,
|
|
343
|
+
labels: je,
|
|
344
|
+
onInsert: (t) => {
|
|
345
|
+
z(t), e();
|
|
346
|
+
}
|
|
347
|
+
})
|
|
348
|
+
}),
|
|
349
|
+
/* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
350
|
+
asChild: !0,
|
|
351
|
+
children: /* @__PURE__ */ b("button", {
|
|
352
|
+
type: "button",
|
|
353
|
+
onClick: () => {
|
|
354
|
+
h?.chain().focus().insertContent({
|
|
355
|
+
type: "formula",
|
|
356
|
+
attrs: {
|
|
357
|
+
expression: "",
|
|
358
|
+
autoOpen: !0
|
|
359
|
+
}
|
|
360
|
+
}).run();
|
|
361
|
+
},
|
|
362
|
+
className: e("flex items-center gap-1 px-2 py-1.5 rounded-md text-sm font-medium", "hover:bg-muted/50 transition-colors"),
|
|
363
|
+
"aria-label": I.insertFormula,
|
|
364
|
+
children: /* @__PURE__ */ b(ve, { className: "w-4 h-4" })
|
|
365
|
+
})
|
|
366
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: I.insertFormula }) })] }),
|
|
367
|
+
/* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
368
|
+
asChild: !0,
|
|
369
|
+
children: /* @__PURE__ */ b("button", {
|
|
370
|
+
type: "button",
|
|
371
|
+
onClick: Se,
|
|
372
|
+
className: e("flex items-center justify-center p-1.5 rounded-md transition-colors", "border border-transparent", w ? "bg-primary text-primary-foreground" : "hover:bg-muted/50"),
|
|
373
|
+
"aria-label": I.toggleWrap,
|
|
374
|
+
children: /* @__PURE__ */ b(m, { className: "w-4 h-4" })
|
|
375
|
+
})
|
|
376
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: w ? I.disableWrap : I.enableWrap }) })] }),
|
|
377
|
+
(V || H || U) && /* @__PURE__ */ b(t, { className: "h-6 w-px bg-border mx-1" }),
|
|
378
|
+
/* @__PURE__ */ x(n, {
|
|
379
|
+
align: "center",
|
|
380
|
+
gap: "0.5",
|
|
381
|
+
className: "rounded-md border border-border overflow-hidden bg-background",
|
|
382
|
+
children: [
|
|
383
|
+
/* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
384
|
+
asChild: !0,
|
|
385
|
+
children: /* @__PURE__ */ b("button", {
|
|
386
|
+
type: "button",
|
|
387
|
+
onClick: () => B("left"),
|
|
388
|
+
className: e("px-2 py-1.5 transition-colors", C === "left" ? "bg-primary text-primary-foreground" : "hover:bg-muted/50"),
|
|
389
|
+
"aria-label": I.alignLeft,
|
|
390
|
+
children: /* @__PURE__ */ b(ce, { className: "w-4 h-4" })
|
|
391
|
+
})
|
|
392
|
+
}), /* @__PURE__ */ b(o, { children: I.alignLeft })] }),
|
|
393
|
+
/* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
394
|
+
asChild: !0,
|
|
395
|
+
children: /* @__PURE__ */ b("button", {
|
|
396
|
+
type: "button",
|
|
397
|
+
onClick: () => B("center"),
|
|
398
|
+
className: e("px-2 py-1.5 border-x border-border transition-colors", C === "center" ? "bg-primary text-primary-foreground" : "hover:bg-muted/50"),
|
|
399
|
+
"aria-label": I.alignCenter,
|
|
400
|
+
children: /* @__PURE__ */ b(se, { className: "w-4 h-4" })
|
|
401
|
+
})
|
|
402
|
+
}), /* @__PURE__ */ b(o, { children: I.alignCenter })] }),
|
|
403
|
+
/* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
404
|
+
asChild: !0,
|
|
405
|
+
children: /* @__PURE__ */ b("button", {
|
|
406
|
+
type: "button",
|
|
407
|
+
onClick: () => B("right"),
|
|
408
|
+
className: e("px-2 py-1.5 transition-colors", C === "right" ? "bg-primary text-primary-foreground" : "hover:bg-muted/50"),
|
|
409
|
+
"aria-label": I.alignRight,
|
|
410
|
+
children: /* @__PURE__ */ b(le, { className: "w-4 h-4" })
|
|
411
|
+
})
|
|
412
|
+
}), /* @__PURE__ */ b(o, { children: I.alignRight })] })
|
|
413
|
+
]
|
|
414
|
+
}),
|
|
415
|
+
O && /* @__PURE__ */ x(a, { children: [/* @__PURE__ */ b(s, {
|
|
416
|
+
asChild: !0,
|
|
417
|
+
children: /* @__PURE__ */ b("button", {
|
|
418
|
+
type: "button",
|
|
419
|
+
onClick: O,
|
|
420
|
+
disabled: k,
|
|
421
|
+
className: e("flex items-center justify-center p-1.5 rounded-md transition-colors", "hover:bg-muted/50 border border-transparent", k && "opacity-60 cursor-not-allowed"),
|
|
422
|
+
"aria-label": I.syncFromBoard,
|
|
423
|
+
children: /* @__PURE__ */ b(fe, { className: e("w-4 h-4", k && "animate-pulse") })
|
|
424
|
+
})
|
|
425
|
+
}), /* @__PURE__ */ b(o, { children: /* @__PURE__ */ b(i, { children: I.syncFromBoardTooltip }) })] })
|
|
426
|
+
] })
|
|
427
|
+
]
|
|
428
|
+
})
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
//#endregion
|
|
432
|
+
export { S as DEFAULT_TEMPLATE_EDITOR_TOOLBAR_LABELS, C as TemplateEditorToolbar };
|
|
433
|
+
|
|
434
|
+
//# sourceMappingURL=template-editor-toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-editor-toolbar.js","names":[],"sources":["../../../src/components/editor/template-editor-toolbar.tsx"],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { ComponentProps } from "react";
|
|
2
|
+
import type { DeviceType } from "./constants";
|
|
3
|
+
import { TemplateEditorToolbar } from "./template-editor-toolbar";
|
|
4
|
+
import type { DrawBrush } from "./utils/draw-mode";
|
|
5
|
+
export type LineAlignment = "left" | "center" | "right";
|
|
6
|
+
/** A single painted board cell within a stroke, in row/col board coordinates. */
|
|
7
|
+
export interface StrokePaint {
|
|
8
|
+
row: number;
|
|
9
|
+
col: number;
|
|
10
|
+
}
|
|
11
|
+
/** Imperative handle exposed via ref for draw-mode's cell-painting flow. */
|
|
12
|
+
export interface TemplateEditorHandle {
|
|
13
|
+
/** Applies one stroke as ONE undo step. Returns affected row indices. */
|
|
14
|
+
applyStroke(paints: StrokePaint[], brush: DrawBrush): number[];
|
|
15
|
+
undo(): void;
|
|
16
|
+
redo(): void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Reported through onDrawHistoryEvent whenever an undo/redo crosses a
|
|
20
|
+
* history step, on any path (imperative handle, keyboard, toolbar).
|
|
21
|
+
* `stroke` is true when the step crossed was a draw-mode paint stroke
|
|
22
|
+
* (applyStroke), so the host can restore/re-force per-row metadata that
|
|
23
|
+
* lives outside the ProseMirror document.
|
|
24
|
+
*/
|
|
25
|
+
export interface DrawHistoryEvent {
|
|
26
|
+
action: "undo" | "redo";
|
|
27
|
+
stroke: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* User-visible strings, all optional with English defaults.
|
|
31
|
+
*
|
|
32
|
+
* Replaces the app's `useTranslations("templateEditor")`. Keys match that
|
|
33
|
+
* namespace 1:1 so FiestaBoard can map its message catalog across
|
|
34
|
+
* mechanically; interpolated messages (`t("lineCount", { used, max })`)
|
|
35
|
+
* become function-valued labels rather than fragments concatenated in JSX,
|
|
36
|
+
* so a translation can reorder its placeholders.
|
|
37
|
+
*
|
|
38
|
+
* This is the editor's own slice of that namespace. The toolbar and the
|
|
39
|
+
* pickers own theirs (`TemplateEditorToolbarLabels`, …) and receive them
|
|
40
|
+
* through `toolbarProps`, so each component's strings arrive with it.
|
|
41
|
+
*/
|
|
42
|
+
export interface TemplateEditorLabels {
|
|
43
|
+
/** `{used} / {max} lines` */
|
|
44
|
+
lineCount: (used: number, max: number) => string;
|
|
45
|
+
/** Appended to lineCount when the template has more lines than the board. */
|
|
46
|
+
overLineLimit: (max: number) => string;
|
|
47
|
+
/** `(Line {line})` — 1-based. */
|
|
48
|
+
currentLine: (line: number) => string;
|
|
49
|
+
alignment: string;
|
|
50
|
+
alignLeft: string;
|
|
51
|
+
alignCenter: string;
|
|
52
|
+
alignRight: string;
|
|
53
|
+
/**
|
|
54
|
+
* Accessible name of the editing surface. Not in the app's catalog — the
|
|
55
|
+
* app hard-coded an English `aria-label`, which is exactly the kind of
|
|
56
|
+
* string a localizing consumer needs to be able to reach.
|
|
57
|
+
*/
|
|
58
|
+
editorAriaLabel: string;
|
|
59
|
+
}
|
|
60
|
+
export declare const DEFAULT_TEMPLATE_EDITOR_LABELS: TemplateEditorLabels;
|
|
61
|
+
/**
|
|
62
|
+
* Toolbar props the editor does not own itself: resolved data
|
|
63
|
+
* (`templateVariables`, `pluginManifests`…), `isLoading*` flags, the entity
|
|
64
|
+
* picker slot, and the toolbar's own `labels` plus the nested pickers'.
|
|
65
|
+
* Forwarded verbatim, so the toolbar's data contract stays the toolbar's
|
|
66
|
+
* business and this component never learns how to fetch anything.
|
|
67
|
+
*
|
|
68
|
+
* Derived from the toolbar's props rather than restated, so it cannot drift.
|
|
69
|
+
* The editor-owned props (`editor`, alignment/wrap state, device, draw mode)
|
|
70
|
+
* are omitted — the editor passes those itself, from its own state.
|
|
71
|
+
*/
|
|
72
|
+
export type TemplateEditorToolbarSlotProps = Omit<ComponentProps<typeof TemplateEditorToolbar>, "editor" | "currentAlignment" | "currentWrapEnabled" | "onAlignmentChange" | "onWrapToggle" | "deviceType" | "onSyncFromBoard" | "syncFromBoardPending" | "drawMode" | "onDrawModeToggle" | "drawBrush" | "onDrawBrushChange">;
|
|
73
|
+
export interface TemplateEditorProps {
|
|
74
|
+
value: string;
|
|
75
|
+
onChange: (value: string) => void;
|
|
76
|
+
onFocus?: () => void;
|
|
77
|
+
placeholder?: string;
|
|
78
|
+
className?: string;
|
|
79
|
+
showAlignmentControls?: boolean;
|
|
80
|
+
onLineAlignmentChange?: (lineIndex: number, alignment: LineAlignment) => void;
|
|
81
|
+
lineAlignments?: LineAlignment[];
|
|
82
|
+
onLineWrapChange?: (lineIndex: number, wrapEnabled: boolean) => void;
|
|
83
|
+
lineWrapEnabled?: boolean[];
|
|
84
|
+
showToolbar?: boolean;
|
|
85
|
+
/** Characters per line. Defaults to the `deviceType` grid, else 22 (flagship). */
|
|
86
|
+
boardWidth?: number;
|
|
87
|
+
/** Total lines. Defaults to the `deviceType` grid, else 6 (flagship). */
|
|
88
|
+
boardLines?: number;
|
|
89
|
+
onLineCountChange?: (lineCount: number) => void;
|
|
90
|
+
deviceType?: DeviceType;
|
|
91
|
+
onSyncFromBoard?: () => void;
|
|
92
|
+
syncFromBoardPending?: boolean;
|
|
93
|
+
drawMode?: boolean;
|
|
94
|
+
onDrawModeToggle?: () => void;
|
|
95
|
+
drawBrush?: DrawBrush;
|
|
96
|
+
onDrawBrushChange?: (brush: DrawBrush) => void;
|
|
97
|
+
onDrawHistoryEvent?: (event: DrawHistoryEvent) => void;
|
|
98
|
+
/** The editor's own user-visible strings; merged over English defaults. */
|
|
99
|
+
labels?: Partial<TemplateEditorLabels>;
|
|
100
|
+
/**
|
|
101
|
+
* Data, slots and labels forwarded to the built-in toolbar (including the
|
|
102
|
+
* pickers it nests). Ignored when `showToolbar` is false.
|
|
103
|
+
*/
|
|
104
|
+
toolbarProps?: TemplateEditorToolbarSlotProps;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Single TipTap editor for template lines
|
|
108
|
+
*/
|
|
109
|
+
export declare const TemplateEditor: import("react").ForwardRefExoticComponent<TemplateEditorProps & import("react").RefAttributes<TemplateEditorHandle>>;
|