@crediblemark/build 0.22.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 (52) hide show
  1. package/LICENSE +21 -0
  2. package/dist/Editor-XZF6CWVW.css +404 -0
  3. package/dist/Editor-ZC67OU2A.mjs +205 -0
  4. package/dist/Render-JBFI6HYN.mjs +55 -0
  5. package/dist/Render-WCX4AXOX.css +102 -0
  6. package/dist/actions-CEH_5LMY.d.mts +838 -0
  7. package/dist/actions-CEH_5LMY.d.ts +838 -0
  8. package/dist/chunk-3AJBFQU4.mjs +560 -0
  9. package/dist/chunk-4SQOX3ZQ.mjs +476 -0
  10. package/dist/chunk-B4BOBGYB.mjs +42 -0
  11. package/dist/chunk-CDMESQDA.mjs +148 -0
  12. package/dist/chunk-DSXRK4QJ.mjs +704 -0
  13. package/dist/chunk-GUJDGRSM.mjs +469 -0
  14. package/dist/chunk-HHBUU7WF.mjs +35 -0
  15. package/dist/chunk-IJHL7BIR.mjs +11 -0
  16. package/dist/chunk-PHGC6QYB.mjs +105 -0
  17. package/dist/chunk-QF3GD5WQ.mjs +65 -0
  18. package/dist/chunk-U2NVBXAC.mjs +2064 -0
  19. package/dist/chunk-VFD76OD5.mjs +55 -0
  20. package/dist/chunk-VGDMWS44.mjs +107 -0
  21. package/dist/chunk-VKBVSWU3.mjs +8538 -0
  22. package/dist/chunk-YH7AXYKP.mjs +109 -0
  23. package/dist/full-ABQQRJAO.css +301 -0
  24. package/dist/full-LJRK5736.mjs +94 -0
  25. package/dist/index-CkSfgrvw.d.ts +117 -0
  26. package/dist/index-Cxwg4vUV.d.mts +117 -0
  27. package/dist/index.css +2576 -0
  28. package/dist/index.d.mts +310 -0
  29. package/dist/index.d.ts +310 -0
  30. package/dist/index.js +15012 -0
  31. package/dist/index.mjs +83 -0
  32. package/dist/internal.d.mts +27 -0
  33. package/dist/internal.d.ts +27 -0
  34. package/dist/internal.js +960 -0
  35. package/dist/internal.mjs +13 -0
  36. package/dist/loaded-DWCENJKQ.mjs +55 -0
  37. package/dist/loaded-N7VXUR4O.mjs +59 -0
  38. package/dist/loaded-NE2PIHUQ.mjs +56 -0
  39. package/dist/loaded-SMEIWWHS.css +87 -0
  40. package/dist/no-external.css +2574 -0
  41. package/dist/no-external.d.mts +21 -0
  42. package/dist/no-external.d.ts +21 -0
  43. package/dist/no-external.js +15012 -0
  44. package/dist/no-external.mjs +83 -0
  45. package/dist/rsc.css +102 -0
  46. package/dist/rsc.d.mts +27 -0
  47. package/dist/rsc.d.ts +27 -0
  48. package/dist/rsc.js +1466 -0
  49. package/dist/rsc.mjs +147 -0
  50. package/dist/walk-tree-B4ZvMfxS.d.ts +29 -0
  51. package/dist/walk-tree-C78ZVz19.d.mts +29 -0
  52. package/package.json +145 -0
@@ -0,0 +1,2064 @@
1
+ import {
2
+ createReducer,
3
+ getItem,
4
+ makeStatePublic
5
+ } from "./chunk-3AJBFQU4.mjs";
6
+ import {
7
+ defaultAppState,
8
+ defaultViewports,
9
+ getChanged,
10
+ resolveComponentData
11
+ } from "./chunk-CDMESQDA.mjs";
12
+ import {
13
+ get_class_name_factory_default
14
+ } from "./chunk-YH7AXYKP.mjs";
15
+ import {
16
+ generateId,
17
+ walkAppState
18
+ } from "./chunk-GUJDGRSM.mjs";
19
+ import {
20
+ init_react_import
21
+ } from "./chunk-B4BOBGYB.mjs";
22
+
23
+ // ../node_modules/lucide-react/dist/esm/icons/heading.js
24
+ init_react_import();
25
+
26
+ // ../node_modules/lucide-react/dist/esm/createLucideIcon.js
27
+ init_react_import();
28
+ import { forwardRef as forwardRef2, createElement as createElement2 } from "react";
29
+
30
+ // ../node_modules/lucide-react/dist/esm/shared/src/utils.js
31
+ init_react_import();
32
+ var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
33
+ var toCamelCase = (string) => string.replace(
34
+ /^([A-Z])|[\s-_]+(\w)/g,
35
+ (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
36
+ );
37
+ var toPascalCase = (string) => {
38
+ const camelCase = toCamelCase(string);
39
+ return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
40
+ };
41
+ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
42
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
43
+ }).join(" ").trim();
44
+ var hasA11yProp = (props) => {
45
+ for (const prop in props) {
46
+ if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
47
+ return true;
48
+ }
49
+ }
50
+ };
51
+
52
+ // ../node_modules/lucide-react/dist/esm/Icon.js
53
+ init_react_import();
54
+ import { forwardRef, createElement } from "react";
55
+
56
+ // ../node_modules/lucide-react/dist/esm/defaultAttributes.js
57
+ init_react_import();
58
+ var defaultAttributes = {
59
+ xmlns: "http://www.w3.org/2000/svg",
60
+ width: 24,
61
+ height: 24,
62
+ viewBox: "0 0 24 24",
63
+ fill: "none",
64
+ stroke: "currentColor",
65
+ strokeWidth: 2,
66
+ strokeLinecap: "round",
67
+ strokeLinejoin: "round"
68
+ };
69
+
70
+ // ../node_modules/lucide-react/dist/esm/Icon.js
71
+ var Icon = forwardRef(
72
+ ({
73
+ color = "currentColor",
74
+ size = 24,
75
+ strokeWidth = 2,
76
+ absoluteStrokeWidth,
77
+ className = "",
78
+ children,
79
+ iconNode,
80
+ ...rest
81
+ }, ref) => createElement(
82
+ "svg",
83
+ {
84
+ ref,
85
+ ...defaultAttributes,
86
+ width: size,
87
+ height: size,
88
+ stroke: color,
89
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
90
+ className: mergeClasses("lucide", className),
91
+ ...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
92
+ ...rest
93
+ },
94
+ [
95
+ ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
96
+ ...Array.isArray(children) ? children : [children]
97
+ ]
98
+ )
99
+ );
100
+
101
+ // ../node_modules/lucide-react/dist/esm/createLucideIcon.js
102
+ var createLucideIcon = (iconName, iconNode) => {
103
+ const Component = forwardRef2(
104
+ ({ className, ...props }, ref) => createElement2(Icon, {
105
+ ref,
106
+ iconNode,
107
+ className: mergeClasses(
108
+ `lucide-${toKebabCase(toPascalCase(iconName))}`,
109
+ `lucide-${iconName}`,
110
+ className
111
+ ),
112
+ ...props
113
+ })
114
+ );
115
+ Component.displayName = toPascalCase(iconName);
116
+ return Component;
117
+ };
118
+
119
+ // ../node_modules/lucide-react/dist/esm/icons/heading.js
120
+ var __iconNode = [
121
+ ["path", { d: "M6 12h12", key: "8npq4p" }],
122
+ ["path", { d: "M6 20V4", key: "1w1bmo" }],
123
+ ["path", { d: "M18 20V4", key: "o2hl4u" }]
124
+ ];
125
+ var Heading = createLucideIcon("heading", __iconNode);
126
+
127
+ // ../node_modules/lucide-react/dist/esm/icons/list.js
128
+ init_react_import();
129
+ var __iconNode2 = [
130
+ ["path", { d: "M3 5h.01", key: "18ugdj" }],
131
+ ["path", { d: "M3 12h.01", key: "nlz23k" }],
132
+ ["path", { d: "M3 19h.01", key: "noohij" }],
133
+ ["path", { d: "M8 5h13", key: "1pao27" }],
134
+ ["path", { d: "M8 12h13", key: "1za7za" }],
135
+ ["path", { d: "M8 19h13", key: "m83p4d" }]
136
+ ];
137
+ var List = createLucideIcon("list", __iconNode2);
138
+
139
+ // ../node_modules/lucide-react/dist/esm/icons/text-align-start.js
140
+ init_react_import();
141
+ var __iconNode3 = [
142
+ ["path", { d: "M21 5H3", key: "1fi0y6" }],
143
+ ["path", { d: "M15 12H3", key: "6jk70r" }],
144
+ ["path", { d: "M17 19H3", key: "z6ezky" }]
145
+ ];
146
+ var TextAlignStart = createLucideIcon("text-align-start", __iconNode3);
147
+
148
+ // ../node_modules/lucide-react/dist/esm/lucide-react.js
149
+ init_react_import();
150
+
151
+ // ../node_modules/lucide-react/dist/esm/icons/bold.js
152
+ init_react_import();
153
+ var __iconNode4 = [
154
+ [
155
+ "path",
156
+ { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8", key: "mg9rjx" }
157
+ ]
158
+ ];
159
+ var Bold = createLucideIcon("bold", __iconNode4);
160
+
161
+ // ../node_modules/lucide-react/dist/esm/icons/box.js
162
+ init_react_import();
163
+ var __iconNode5 = [
164
+ [
165
+ "path",
166
+ {
167
+ d: "M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",
168
+ key: "hh9hay"
169
+ }
170
+ ],
171
+ ["path", { d: "m3.3 7 8.7 5 8.7-5", key: "g66t2b" }],
172
+ ["path", { d: "M12 22V12", key: "d0xqtd" }]
173
+ ];
174
+ var Box = createLucideIcon("box", __iconNode5);
175
+
176
+ // ../node_modules/lucide-react/dist/esm/icons/chart-column.js
177
+ init_react_import();
178
+ var __iconNode6 = [
179
+ ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }],
180
+ ["path", { d: "M18 17V9", key: "2bz60n" }],
181
+ ["path", { d: "M13 17V5", key: "1frdt8" }],
182
+ ["path", { d: "M8 17v-3", key: "17ska0" }]
183
+ ];
184
+ var ChartColumn = createLucideIcon("chart-column", __iconNode6);
185
+
186
+ // ../node_modules/lucide-react/dist/esm/icons/chevron-down.js
187
+ init_react_import();
188
+ var __iconNode7 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
189
+ var ChevronDown = createLucideIcon("chevron-down", __iconNode7);
190
+
191
+ // ../node_modules/lucide-react/dist/esm/icons/chevron-right.js
192
+ init_react_import();
193
+ var __iconNode8 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
194
+ var ChevronRight = createLucideIcon("chevron-right", __iconNode8);
195
+
196
+ // ../node_modules/lucide-react/dist/esm/icons/chevron-up.js
197
+ init_react_import();
198
+ var __iconNode9 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
199
+ var ChevronUp = createLucideIcon("chevron-up", __iconNode9);
200
+
201
+ // ../node_modules/lucide-react/dist/esm/icons/circle-check-big.js
202
+ init_react_import();
203
+ var __iconNode10 = [
204
+ ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
205
+ ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
206
+ ];
207
+ var CircleCheckBig = createLucideIcon("circle-check-big", __iconNode10);
208
+
209
+ // ../node_modules/lucide-react/dist/esm/icons/code.js
210
+ init_react_import();
211
+ var __iconNode11 = [
212
+ ["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
213
+ ["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
214
+ ];
215
+ var Code = createLucideIcon("code", __iconNode11);
216
+
217
+ // ../node_modules/lucide-react/dist/esm/icons/copy.js
218
+ init_react_import();
219
+ var __iconNode12 = [
220
+ ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
221
+ ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
222
+ ];
223
+ var Copy = createLucideIcon("copy", __iconNode12);
224
+
225
+ // ../node_modules/lucide-react/dist/esm/icons/corner-left-up.js
226
+ init_react_import();
227
+ var __iconNode13 = [
228
+ ["path", { d: "M14 9 9 4 4 9", key: "1af5af" }],
229
+ ["path", { d: "M20 20h-7a4 4 0 0 1-4-4V4", key: "1blwi3" }]
230
+ ];
231
+ var CornerLeftUp = createLucideIcon("corner-left-up", __iconNode13);
232
+
233
+ // ../node_modules/lucide-react/dist/esm/icons/credit-card.js
234
+ init_react_import();
235
+ var __iconNode14 = [
236
+ ["rect", { width: "20", height: "14", x: "2", y: "5", rx: "2", key: "ynyp8z" }],
237
+ ["line", { x1: "2", x2: "22", y1: "10", y2: "10", key: "1b3vmo" }]
238
+ ];
239
+ var CreditCard = createLucideIcon("credit-card", __iconNode14);
240
+
241
+ // ../node_modules/lucide-react/dist/esm/icons/ellipsis-vertical.js
242
+ init_react_import();
243
+ var __iconNode15 = [
244
+ ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
245
+ ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
246
+ ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
247
+ ];
248
+ var EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode15);
249
+
250
+ // ../node_modules/lucide-react/dist/esm/icons/expand.js
251
+ init_react_import();
252
+ var __iconNode16 = [
253
+ ["path", { d: "m15 15 6 6", key: "1s409w" }],
254
+ ["path", { d: "m15 9 6-6", key: "ko1vev" }],
255
+ ["path", { d: "M21 16v5h-5", key: "1ck2sf" }],
256
+ ["path", { d: "M21 8V3h-5", key: "1qoq8a" }],
257
+ ["path", { d: "M3 16v5h5", key: "1t08am" }],
258
+ ["path", { d: "m3 21 6-6", key: "wwnumi" }],
259
+ ["path", { d: "M3 8V3h5", key: "1ln10m" }],
260
+ ["path", { d: "M9 9 3 3", key: "v551iv" }]
261
+ ];
262
+ var Expand = createLucideIcon("expand", __iconNode16);
263
+
264
+ // ../node_modules/lucide-react/dist/esm/icons/external-link.js
265
+ init_react_import();
266
+ var __iconNode17 = [
267
+ ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
268
+ ["path", { d: "M10 14 21 3", key: "gplh6r" }],
269
+ ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
270
+ ];
271
+ var ExternalLink = createLucideIcon("external-link", __iconNode17);
272
+
273
+ // ../node_modules/lucide-react/dist/esm/icons/file-text.js
274
+ init_react_import();
275
+ var __iconNode18 = [
276
+ [
277
+ "path",
278
+ {
279
+ d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
280
+ key: "1oefj6"
281
+ }
282
+ ],
283
+ ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
284
+ ["path", { d: "M10 9H8", key: "b1mrlr" }],
285
+ ["path", { d: "M16 13H8", key: "t4e002" }],
286
+ ["path", { d: "M16 17H8", key: "z1uh3a" }]
287
+ ];
288
+ var FileText = createLucideIcon("file-text", __iconNode18);
289
+
290
+ // ../node_modules/lucide-react/dist/esm/icons/globe.js
291
+ init_react_import();
292
+ var __iconNode19 = [
293
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
294
+ ["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
295
+ ["path", { d: "M2 12h20", key: "9i4pu4" }]
296
+ ];
297
+ var Globe = createLucideIcon("globe", __iconNode19);
298
+
299
+ // ../node_modules/lucide-react/dist/esm/icons/grip-vertical.js
300
+ init_react_import();
301
+ var __iconNode20 = [
302
+ ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }],
303
+ ["circle", { cx: "9", cy: "5", r: "1", key: "hp0tcf" }],
304
+ ["circle", { cx: "9", cy: "19", r: "1", key: "fkjjf6" }],
305
+ ["circle", { cx: "15", cy: "12", r: "1", key: "1tmaij" }],
306
+ ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }],
307
+ ["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }]
308
+ ];
309
+ var GripVertical = createLucideIcon("grip-vertical", __iconNode20);
310
+
311
+ // ../node_modules/lucide-react/dist/esm/icons/hash.js
312
+ init_react_import();
313
+ var __iconNode21 = [
314
+ ["line", { x1: "4", x2: "20", y1: "9", y2: "9", key: "4lhtct" }],
315
+ ["line", { x1: "4", x2: "20", y1: "15", y2: "15", key: "vyu0kd" }],
316
+ ["line", { x1: "10", x2: "8", y1: "3", y2: "21", key: "1ggp8o" }],
317
+ ["line", { x1: "16", x2: "14", y1: "3", y2: "21", key: "weycgp" }]
318
+ ];
319
+ var Hash = createLucideIcon("hash", __iconNode21);
320
+
321
+ // ../node_modules/lucide-react/dist/esm/icons/heading-1.js
322
+ init_react_import();
323
+ var __iconNode22 = [
324
+ ["path", { d: "M4 12h8", key: "17cfdx" }],
325
+ ["path", { d: "M4 18V6", key: "1rz3zl" }],
326
+ ["path", { d: "M12 18V6", key: "zqpxq5" }],
327
+ ["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
328
+ ];
329
+ var Heading1 = createLucideIcon("heading-1", __iconNode22);
330
+
331
+ // ../node_modules/lucide-react/dist/esm/icons/heading-2.js
332
+ init_react_import();
333
+ var __iconNode23 = [
334
+ ["path", { d: "M4 12h8", key: "17cfdx" }],
335
+ ["path", { d: "M4 18V6", key: "1rz3zl" }],
336
+ ["path", { d: "M12 18V6", key: "zqpxq5" }],
337
+ ["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1", key: "9jr5yi" }]
338
+ ];
339
+ var Heading2 = createLucideIcon("heading-2", __iconNode23);
340
+
341
+ // ../node_modules/lucide-react/dist/esm/icons/heading-3.js
342
+ init_react_import();
343
+ var __iconNode24 = [
344
+ ["path", { d: "M4 12h8", key: "17cfdx" }],
345
+ ["path", { d: "M4 18V6", key: "1rz3zl" }],
346
+ ["path", { d: "M12 18V6", key: "zqpxq5" }],
347
+ ["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2", key: "68ncm8" }],
348
+ ["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2", key: "1ejuhz" }]
349
+ ];
350
+ var Heading3 = createLucideIcon("heading-3", __iconNode24);
351
+
352
+ // ../node_modules/lucide-react/dist/esm/icons/heading-4.js
353
+ init_react_import();
354
+ var __iconNode25 = [
355
+ ["path", { d: "M12 18V6", key: "zqpxq5" }],
356
+ ["path", { d: "M17 10v3a1 1 0 0 0 1 1h3", key: "tj5zdr" }],
357
+ ["path", { d: "M21 10v8", key: "1kdml4" }],
358
+ ["path", { d: "M4 12h8", key: "17cfdx" }],
359
+ ["path", { d: "M4 18V6", key: "1rz3zl" }]
360
+ ];
361
+ var Heading4 = createLucideIcon("heading-4", __iconNode25);
362
+
363
+ // ../node_modules/lucide-react/dist/esm/icons/heading-5.js
364
+ init_react_import();
365
+ var __iconNode26 = [
366
+ ["path", { d: "M4 12h8", key: "17cfdx" }],
367
+ ["path", { d: "M4 18V6", key: "1rz3zl" }],
368
+ ["path", { d: "M12 18V6", key: "zqpxq5" }],
369
+ ["path", { d: "M17 13v-3h4", key: "1nvgqp" }],
370
+ [
371
+ "path",
372
+ { d: "M17 17.7c.4.2.8.3 1.3.3 1.5 0 2.7-1.1 2.7-2.5S19.8 13 18.3 13H17", key: "2nebdn" }
373
+ ]
374
+ ];
375
+ var Heading5 = createLucideIcon("heading-5", __iconNode26);
376
+
377
+ // ../node_modules/lucide-react/dist/esm/icons/heading-6.js
378
+ init_react_import();
379
+ var __iconNode27 = [
380
+ ["path", { d: "M4 12h8", key: "17cfdx" }],
381
+ ["path", { d: "M4 18V6", key: "1rz3zl" }],
382
+ ["path", { d: "M12 18V6", key: "zqpxq5" }],
383
+ ["circle", { cx: "19", cy: "16", r: "2", key: "15mx69" }],
384
+ ["path", { d: "M20 10c-2 2-3 3.5-3 6", key: "f35dl0" }]
385
+ ];
386
+ var Heading6 = createLucideIcon("heading-6", __iconNode27);
387
+
388
+ // ../node_modules/lucide-react/dist/esm/icons/image.js
389
+ init_react_import();
390
+ var __iconNode28 = [
391
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
392
+ ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
393
+ ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
394
+ ];
395
+ var Image = createLucideIcon("image", __iconNode28);
396
+
397
+ // ../node_modules/lucide-react/dist/esm/icons/info.js
398
+ init_react_import();
399
+ var __iconNode29 = [
400
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
401
+ ["path", { d: "M12 16v-4", key: "1dtifu" }],
402
+ ["path", { d: "M12 8h.01", key: "e9boi3" }]
403
+ ];
404
+ var Info = createLucideIcon("info", __iconNode29);
405
+
406
+ // ../node_modules/lucide-react/dist/esm/icons/italic.js
407
+ init_react_import();
408
+ var __iconNode30 = [
409
+ ["line", { x1: "19", x2: "10", y1: "4", y2: "4", key: "15jd3p" }],
410
+ ["line", { x1: "14", x2: "5", y1: "20", y2: "20", key: "bu0au3" }],
411
+ ["line", { x1: "15", x2: "9", y1: "4", y2: "20", key: "uljnxc" }]
412
+ ];
413
+ var Italic = createLucideIcon("italic", __iconNode30);
414
+
415
+ // ../node_modules/lucide-react/dist/esm/icons/layers.js
416
+ init_react_import();
417
+ var __iconNode31 = [
418
+ [
419
+ "path",
420
+ {
421
+ d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",
422
+ key: "zw3jo"
423
+ }
424
+ ],
425
+ [
426
+ "path",
427
+ {
428
+ d: "M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",
429
+ key: "1wduqc"
430
+ }
431
+ ],
432
+ [
433
+ "path",
434
+ {
435
+ d: "M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",
436
+ key: "kqbvx6"
437
+ }
438
+ ]
439
+ ];
440
+ var Layers = createLucideIcon("layers", __iconNode31);
441
+
442
+ // ../node_modules/lucide-react/dist/esm/icons/layout-dashboard.js
443
+ init_react_import();
444
+ var __iconNode32 = [
445
+ ["rect", { width: "7", height: "9", x: "3", y: "3", rx: "1", key: "10lvy0" }],
446
+ ["rect", { width: "7", height: "5", x: "14", y: "3", rx: "1", key: "16une8" }],
447
+ ["rect", { width: "7", height: "9", x: "14", y: "12", rx: "1", key: "1hutg5" }],
448
+ ["rect", { width: "7", height: "5", x: "3", y: "16", rx: "1", key: "ldoo1y" }]
449
+ ];
450
+ var LayoutDashboard = createLucideIcon("layout-dashboard", __iconNode32);
451
+
452
+ // ../node_modules/lucide-react/dist/esm/icons/layout-grid.js
453
+ init_react_import();
454
+ var __iconNode33 = [
455
+ ["rect", { width: "7", height: "7", x: "3", y: "3", rx: "1", key: "1g98yp" }],
456
+ ["rect", { width: "7", height: "7", x: "14", y: "3", rx: "1", key: "6d4xhi" }],
457
+ ["rect", { width: "7", height: "7", x: "14", y: "14", rx: "1", key: "nxv5o0" }],
458
+ ["rect", { width: "7", height: "7", x: "3", y: "14", rx: "1", key: "1bb6yr" }]
459
+ ];
460
+ var LayoutGrid = createLucideIcon("layout-grid", __iconNode33);
461
+
462
+ // ../node_modules/lucide-react/dist/esm/icons/layout-template.js
463
+ init_react_import();
464
+ var __iconNode34 = [
465
+ ["rect", { width: "18", height: "7", x: "3", y: "3", rx: "1", key: "f1a2em" }],
466
+ ["rect", { width: "9", height: "7", x: "3", y: "14", rx: "1", key: "jqznyg" }],
467
+ ["rect", { width: "5", height: "7", x: "16", y: "14", rx: "1", key: "q5h2i8" }]
468
+ ];
469
+ var LayoutTemplate = createLucideIcon("layout-template", __iconNode34);
470
+
471
+ // ../node_modules/lucide-react/dist/esm/icons/link.js
472
+ init_react_import();
473
+ var __iconNode35 = [
474
+ ["path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71", key: "1cjeqo" }],
475
+ ["path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71", key: "19qd67" }]
476
+ ];
477
+ var Link = createLucideIcon("link", __iconNode35);
478
+
479
+ // ../node_modules/lucide-react/dist/esm/icons/list-ordered.js
480
+ init_react_import();
481
+ var __iconNode36 = [
482
+ ["path", { d: "M11 5h10", key: "1cz7ny" }],
483
+ ["path", { d: "M11 12h10", key: "1438ji" }],
484
+ ["path", { d: "M11 19h10", key: "11t30w" }],
485
+ ["path", { d: "M4 4h1v5", key: "10yrso" }],
486
+ ["path", { d: "M4 9h2", key: "r1h2o0" }],
487
+ ["path", { d: "M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02", key: "xtkcd5" }]
488
+ ];
489
+ var ListOrdered = createLucideIcon("list-ordered", __iconNode36);
490
+
491
+ // ../node_modules/lucide-react/dist/esm/icons/lock-open.js
492
+ init_react_import();
493
+ var __iconNode37 = [
494
+ ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
495
+ ["path", { d: "M7 11V7a5 5 0 0 1 9.9-1", key: "1mm8w8" }]
496
+ ];
497
+ var LockOpen = createLucideIcon("lock-open", __iconNode37);
498
+
499
+ // ../node_modules/lucide-react/dist/esm/icons/lock.js
500
+ init_react_import();
501
+ var __iconNode38 = [
502
+ ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
503
+ ["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
504
+ ];
505
+ var Lock = createLucideIcon("lock", __iconNode38);
506
+
507
+ // ../node_modules/lucide-react/dist/esm/icons/maximize-2.js
508
+ init_react_import();
509
+ var __iconNode39 = [
510
+ ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
511
+ ["path", { d: "m21 3-7 7", key: "1l2asr" }],
512
+ ["path", { d: "m3 21 7-7", key: "tjx5ai" }],
513
+ ["path", { d: "M9 21H3v-6", key: "wtvkvv" }]
514
+ ];
515
+ var Maximize2 = createLucideIcon("maximize-2", __iconNode39);
516
+
517
+ // ../node_modules/lucide-react/dist/esm/icons/megaphone.js
518
+ init_react_import();
519
+ var __iconNode40 = [
520
+ [
521
+ "path",
522
+ {
523
+ d: "M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z",
524
+ key: "q8bfy3"
525
+ }
526
+ ],
527
+ ["path", { d: "M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14", key: "1853fq" }],
528
+ ["path", { d: "M8 6v8", key: "15ugcq" }]
529
+ ];
530
+ var Megaphone = createLucideIcon("megaphone", __iconNode40);
531
+
532
+ // ../node_modules/lucide-react/dist/esm/icons/minimize-2.js
533
+ init_react_import();
534
+ var __iconNode41 = [
535
+ ["path", { d: "m14 10 7-7", key: "oa77jy" }],
536
+ ["path", { d: "M20 10h-6V4", key: "mjg0md" }],
537
+ ["path", { d: "m3 21 7-7", key: "tjx5ai" }],
538
+ ["path", { d: "M4 14h6v6", key: "rmj7iw" }]
539
+ ];
540
+ var Minimize2 = createLucideIcon("minimize-2", __iconNode41);
541
+
542
+ // ../node_modules/lucide-react/dist/esm/icons/minus.js
543
+ init_react_import();
544
+ var __iconNode42 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
545
+ var Minus = createLucideIcon("minus", __iconNode42);
546
+
547
+ // ../node_modules/lucide-react/dist/esm/icons/monitor.js
548
+ init_react_import();
549
+ var __iconNode43 = [
550
+ ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }],
551
+ ["line", { x1: "8", x2: "16", y1: "21", y2: "21", key: "1svkeh" }],
552
+ ["line", { x1: "12", x2: "12", y1: "17", y2: "21", key: "vw1qmm" }]
553
+ ];
554
+ var Monitor = createLucideIcon("monitor", __iconNode43);
555
+
556
+ // ../node_modules/lucide-react/dist/esm/icons/panel-left.js
557
+ init_react_import();
558
+ var __iconNode44 = [
559
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
560
+ ["path", { d: "M9 3v18", key: "fh3hqa" }]
561
+ ];
562
+ var PanelLeft = createLucideIcon("panel-left", __iconNode44);
563
+
564
+ // ../node_modules/lucide-react/dist/esm/icons/panel-right.js
565
+ init_react_import();
566
+ var __iconNode45 = [
567
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
568
+ ["path", { d: "M15 3v18", key: "14nvp0" }]
569
+ ];
570
+ var PanelRight = createLucideIcon("panel-right", __iconNode45);
571
+
572
+ // ../node_modules/lucide-react/dist/esm/icons/plus.js
573
+ init_react_import();
574
+ var __iconNode46 = [
575
+ ["path", { d: "M5 12h14", key: "1ays0h" }],
576
+ ["path", { d: "M12 5v14", key: "s699le" }]
577
+ ];
578
+ var Plus = createLucideIcon("plus", __iconNode46);
579
+
580
+ // ../node_modules/lucide-react/dist/esm/icons/quote.js
581
+ init_react_import();
582
+ var __iconNode47 = [
583
+ [
584
+ "path",
585
+ {
586
+ d: "M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",
587
+ key: "rib7q0"
588
+ }
589
+ ],
590
+ [
591
+ "path",
592
+ {
593
+ d: "M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",
594
+ key: "1ymkrd"
595
+ }
596
+ ]
597
+ ];
598
+ var Quote = createLucideIcon("quote", __iconNode47);
599
+
600
+ // ../node_modules/lucide-react/dist/esm/icons/rectangle-ellipsis.js
601
+ init_react_import();
602
+ var __iconNode48 = [
603
+ ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }],
604
+ ["path", { d: "M12 12h.01", key: "1mp3jc" }],
605
+ ["path", { d: "M17 12h.01", key: "1m0b6t" }],
606
+ ["path", { d: "M7 12h.01", key: "eqddd0" }]
607
+ ];
608
+ var RectangleEllipsis = createLucideIcon("rectangle-ellipsis", __iconNode48);
609
+
610
+ // ../node_modules/lucide-react/dist/esm/icons/redo-2.js
611
+ init_react_import();
612
+ var __iconNode49 = [
613
+ ["path", { d: "m15 14 5-5-5-5", key: "12vg1m" }],
614
+ ["path", { d: "M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13", key: "6uklza" }]
615
+ ];
616
+ var Redo2 = createLucideIcon("redo-2", __iconNode49);
617
+
618
+ // ../node_modules/lucide-react/dist/esm/icons/search.js
619
+ init_react_import();
620
+ var __iconNode50 = [
621
+ ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
622
+ ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
623
+ ];
624
+ var Search = createLucideIcon("search", __iconNode50);
625
+
626
+ // ../node_modules/lucide-react/dist/esm/icons/settings.js
627
+ init_react_import();
628
+ var __iconNode51 = [
629
+ [
630
+ "path",
631
+ {
632
+ d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",
633
+ key: "1i5ecw"
634
+ }
635
+ ],
636
+ ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
637
+ ];
638
+ var Settings = createLucideIcon("settings", __iconNode51);
639
+
640
+ // ../node_modules/lucide-react/dist/esm/icons/shapes.js
641
+ init_react_import();
642
+ var __iconNode52 = [
643
+ [
644
+ "path",
645
+ {
646
+ d: "M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z",
647
+ key: "1bo67w"
648
+ }
649
+ ],
650
+ ["rect", { x: "3", y: "14", width: "7", height: "7", rx: "1", key: "1bkyp8" }],
651
+ ["circle", { cx: "17.5", cy: "17.5", r: "3.5", key: "w3z12y" }]
652
+ ];
653
+ var Shapes = createLucideIcon("shapes", __iconNode52);
654
+
655
+ // ../node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js
656
+ init_react_import();
657
+ var __iconNode53 = [
658
+ ["path", { d: "M10 5H3", key: "1qgfaw" }],
659
+ ["path", { d: "M12 19H3", key: "yhmn1j" }],
660
+ ["path", { d: "M14 3v4", key: "1sua03" }],
661
+ ["path", { d: "M16 17v4", key: "1q0r14" }],
662
+ ["path", { d: "M21 12h-9", key: "1o4lsq" }],
663
+ ["path", { d: "M21 19h-5", key: "1rlt1p" }],
664
+ ["path", { d: "M21 5h-7", key: "1oszz2" }],
665
+ ["path", { d: "M8 10v4", key: "tgpxqk" }],
666
+ ["path", { d: "M8 12H3", key: "a7s4jb" }]
667
+ ];
668
+ var SlidersHorizontal = createLucideIcon("sliders-horizontal", __iconNode53);
669
+
670
+ // ../node_modules/lucide-react/dist/esm/icons/smartphone.js
671
+ init_react_import();
672
+ var __iconNode54 = [
673
+ ["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }],
674
+ ["path", { d: "M12 18h.01", key: "mhygvu" }]
675
+ ];
676
+ var Smartphone = createLucideIcon("smartphone", __iconNode54);
677
+
678
+ // ../node_modules/lucide-react/dist/esm/icons/square-code.js
679
+ init_react_import();
680
+ var __iconNode55 = [
681
+ ["path", { d: "m10 9-3 3 3 3", key: "1oro0q" }],
682
+ ["path", { d: "m14 15 3-3-3-3", key: "bz13h7" }],
683
+ ["rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", key: "h1oib" }]
684
+ ];
685
+ var SquareCode = createLucideIcon("square-code", __iconNode55);
686
+
687
+ // ../node_modules/lucide-react/dist/esm/icons/strikethrough.js
688
+ init_react_import();
689
+ var __iconNode56 = [
690
+ ["path", { d: "M16 4H9a3 3 0 0 0-2.83 4", key: "43sutm" }],
691
+ ["path", { d: "M14 12a4 4 0 0 1 0 8H6", key: "nlfj13" }],
692
+ ["line", { x1: "4", x2: "20", y1: "12", y2: "12", key: "1e0a9i" }]
693
+ ];
694
+ var Strikethrough = createLucideIcon("strikethrough", __iconNode56);
695
+
696
+ // ../node_modules/lucide-react/dist/esm/icons/tablet.js
697
+ init_react_import();
698
+ var __iconNode57 = [
699
+ ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }],
700
+ ["line", { x1: "12", x2: "12.01", y1: "18", y2: "18", key: "1dp563" }]
701
+ ];
702
+ var Tablet = createLucideIcon("tablet", __iconNode57);
703
+
704
+ // ../node_modules/lucide-react/dist/esm/icons/text-align-center.js
705
+ init_react_import();
706
+ var __iconNode58 = [
707
+ ["path", { d: "M21 5H3", key: "1fi0y6" }],
708
+ ["path", { d: "M17 12H7", key: "16if0g" }],
709
+ ["path", { d: "M19 19H5", key: "vjpgq2" }]
710
+ ];
711
+ var TextAlignCenter = createLucideIcon("text-align-center", __iconNode58);
712
+
713
+ // ../node_modules/lucide-react/dist/esm/icons/text-align-end.js
714
+ init_react_import();
715
+ var __iconNode59 = [
716
+ ["path", { d: "M21 5H3", key: "1fi0y6" }],
717
+ ["path", { d: "M21 12H9", key: "dn1m92" }],
718
+ ["path", { d: "M21 19H7", key: "4cu937" }]
719
+ ];
720
+ var TextAlignEnd = createLucideIcon("text-align-end", __iconNode59);
721
+
722
+ // ../node_modules/lucide-react/dist/esm/icons/text-align-justify.js
723
+ init_react_import();
724
+ var __iconNode60 = [
725
+ ["path", { d: "M3 5h18", key: "1u36vt" }],
726
+ ["path", { d: "M3 12h18", key: "1i2n21" }],
727
+ ["path", { d: "M3 19h18", key: "awlh7x" }]
728
+ ];
729
+ var TextAlignJustify = createLucideIcon("text-align-justify", __iconNode60);
730
+
731
+ // ../node_modules/lucide-react/dist/esm/icons/toy-brick.js
732
+ init_react_import();
733
+ var __iconNode61 = [
734
+ ["rect", { width: "18", height: "12", x: "3", y: "8", rx: "1", key: "158fvp" }],
735
+ ["path", { d: "M10 8V5c0-.6-.4-1-1-1H6a1 1 0 0 0-1 1v3", key: "s0042v" }],
736
+ ["path", { d: "M19 8V5c0-.6-.4-1-1-1h-3a1 1 0 0 0-1 1v3", key: "9wmeh2" }]
737
+ ];
738
+ var ToyBrick = createLucideIcon("toy-brick", __iconNode61);
739
+
740
+ // ../node_modules/lucide-react/dist/esm/icons/trash.js
741
+ init_react_import();
742
+ var __iconNode62 = [
743
+ ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
744
+ ["path", { d: "M3 6h18", key: "d0wm0j" }],
745
+ ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
746
+ ];
747
+ var Trash = createLucideIcon("trash", __iconNode62);
748
+
749
+ // ../node_modules/lucide-react/dist/esm/icons/type.js
750
+ init_react_import();
751
+ var __iconNode63 = [
752
+ ["path", { d: "M12 4v16", key: "1654pz" }],
753
+ ["path", { d: "M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2", key: "e0r10z" }],
754
+ ["path", { d: "M9 20h6", key: "s66wpe" }]
755
+ ];
756
+ var Type = createLucideIcon("type", __iconNode63);
757
+
758
+ // ../node_modules/lucide-react/dist/esm/icons/underline.js
759
+ init_react_import();
760
+ var __iconNode64 = [
761
+ ["path", { d: "M6 4v6a6 6 0 0 0 12 0V4", key: "9kb039" }],
762
+ ["line", { x1: "4", x2: "20", y1: "20", y2: "20", key: "nun2al" }]
763
+ ];
764
+ var Underline = createLucideIcon("underline", __iconNode64);
765
+
766
+ // ../node_modules/lucide-react/dist/esm/icons/undo-2.js
767
+ init_react_import();
768
+ var __iconNode65 = [
769
+ ["path", { d: "M9 14 4 9l5-5", key: "102s5s" }],
770
+ ["path", { d: "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11", key: "f3b9sd" }]
771
+ ];
772
+ var Undo2 = createLucideIcon("undo-2", __iconNode65);
773
+
774
+ // ../node_modules/lucide-react/dist/esm/icons/x.js
775
+ init_react_import();
776
+ var __iconNode66 = [
777
+ ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
778
+ ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
779
+ ];
780
+ var X = createLucideIcon("x", __iconNode66);
781
+
782
+ // ../node_modules/lucide-react/dist/esm/icons/zoom-in.js
783
+ init_react_import();
784
+ var __iconNode67 = [
785
+ ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }],
786
+ ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65", key: "13gj7c" }],
787
+ ["line", { x1: "11", x2: "11", y1: "8", y2: "14", key: "1vmskp" }],
788
+ ["line", { x1: "8", x2: "14", y1: "11", y2: "11", key: "durymu" }]
789
+ ];
790
+ var ZoomIn = createLucideIcon("zoom-in", __iconNode67);
791
+
792
+ // ../node_modules/lucide-react/dist/esm/icons/zoom-out.js
793
+ init_react_import();
794
+ var __iconNode68 = [
795
+ ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }],
796
+ ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65", key: "13gj7c" }],
797
+ ["line", { x1: "8", x2: "14", y1: "11", y2: "11", key: "durymu" }]
798
+ ];
799
+ var ZoomOut = createLucideIcon("zoom-out", __iconNode68);
800
+
801
+ // store/index.ts
802
+ init_react_import();
803
+ import { create as create2, useStore } from "zustand";
804
+ import { subscribeWithSelector as subscribeWithSelector2 } from "zustand/middleware";
805
+ import { createContext, useContext } from "react";
806
+
807
+ // store/slices/history.ts
808
+ init_react_import();
809
+ import { useEffect as useEffect2 } from "react";
810
+
811
+ // lib/use-hotkey.ts
812
+ init_react_import();
813
+ import { useEffect } from "react";
814
+ import { create } from "zustand";
815
+ import { subscribeWithSelector } from "zustand/middleware";
816
+ var keyCodeMap = {
817
+ ControlLeft: "ctrl",
818
+ ControlRight: "ctrl",
819
+ MetaLeft: "meta",
820
+ MetaRight: "meta",
821
+ ShiftLeft: "shift",
822
+ ShiftRight: "shift",
823
+ KeyA: "a",
824
+ KeyB: "b",
825
+ KeyC: "c",
826
+ KeyD: "d",
827
+ KeyE: "e",
828
+ KeyF: "f",
829
+ KeyG: "g",
830
+ KeyH: "h",
831
+ KeyI: "i",
832
+ KeyJ: "j",
833
+ KeyK: "k",
834
+ KeyL: "l",
835
+ KeyM: "m",
836
+ KeyN: "n",
837
+ KeyO: "o",
838
+ KeyP: "p",
839
+ KeyQ: "q",
840
+ KeyR: "r",
841
+ KeyS: "s",
842
+ KeyT: "t",
843
+ KeyU: "u",
844
+ KeyV: "v",
845
+ KeyW: "w",
846
+ KeyX: "x",
847
+ KeyY: "y",
848
+ KeyZ: "z",
849
+ Delete: "delete",
850
+ Backspace: "backspace",
851
+ AltRight: "altRight"
852
+ };
853
+ var useHotkeyStore = create()(
854
+ subscribeWithSelector((set) => ({
855
+ held: {},
856
+ hold: (key) => set((s) => s.held[key] ? s : { held: { ...s.held, [key]: true } }),
857
+ release: (key) => set((s) => s.held[key] ? { held: { ...s.held, [key]: false } } : s),
858
+ reset: (held = {}) => set(() => ({ held })),
859
+ triggers: {}
860
+ }))
861
+ );
862
+ var monitorHotkeys = (doc) => {
863
+ const onKeyDown = (e) => {
864
+ if (e.getModifierState("AltGraph")) {
865
+ useHotkeyStore.getState().hold("altRight");
866
+ return;
867
+ }
868
+ const key = keyCodeMap[e.code];
869
+ if (key) {
870
+ useHotkeyStore.getState().hold(key);
871
+ const { held, triggers } = useHotkeyStore.getState();
872
+ Object.values(triggers).forEach(({ combo, cb }) => {
873
+ const conditionMet = Object.entries(combo).every(
874
+ ([key2, value]) => value === !!held[key2]
875
+ ) && Object.entries(held).every(
876
+ ([key2, value]) => value === !!combo[key2]
877
+ );
878
+ if (conditionMet) {
879
+ const handled = cb(e);
880
+ if (handled !== false) {
881
+ e.preventDefault();
882
+ }
883
+ }
884
+ });
885
+ if (key !== "meta" && key !== "ctrl" && key !== "shift") {
886
+ useHotkeyStore.getState().release(key);
887
+ }
888
+ }
889
+ };
890
+ const onKeyUp = (e) => {
891
+ if (!e.getModifierState("AltGraph") && e.code === "ControlRight") {
892
+ useHotkeyStore.getState().release("altRight");
893
+ return;
894
+ }
895
+ const key = keyCodeMap[e.code];
896
+ if (key) {
897
+ if (key === "meta") {
898
+ useHotkeyStore.getState().reset();
899
+ } else {
900
+ useHotkeyStore.getState().release(key);
901
+ }
902
+ }
903
+ };
904
+ const onVisibilityChanged = (e) => {
905
+ if (document.visibilityState === "hidden") {
906
+ useHotkeyStore.getState().reset();
907
+ }
908
+ };
909
+ const onBlur = () => {
910
+ useHotkeyStore.getState().reset();
911
+ };
912
+ window.addEventListener("blur", onBlur);
913
+ doc.addEventListener("keydown", onKeyDown);
914
+ doc.addEventListener("keyup", onKeyUp);
915
+ doc.addEventListener("visibilitychange", onVisibilityChanged);
916
+ return () => {
917
+ doc.removeEventListener("keydown", onKeyDown);
918
+ doc.removeEventListener("keyup", onKeyUp);
919
+ doc.removeEventListener("visibilitychange", onVisibilityChanged);
920
+ window.removeEventListener("blur", onBlur);
921
+ };
922
+ };
923
+ var useMonitorHotkeys = () => {
924
+ useEffect(() => monitorHotkeys(document), []);
925
+ };
926
+ var useHotkey = (combo, cb) => {
927
+ useEffect(() => {
928
+ const key = `${Object.keys(combo).join("+")}`;
929
+ useHotkeyStore.setState((s) => ({
930
+ triggers: {
931
+ ...s.triggers,
932
+ [key]: { combo, cb }
933
+ }
934
+ }));
935
+ return () => {
936
+ useHotkeyStore.setState((s) => {
937
+ const { [key]: _, ...triggers } = s.triggers;
938
+ return { triggers };
939
+ });
940
+ };
941
+ }, [combo, cb]);
942
+ };
943
+
944
+ // store/slices/history.ts
945
+ var EMPTY_HISTORY_INDEX = 0;
946
+ function debounce(func, timeout = 300) {
947
+ let timer;
948
+ return (...args) => {
949
+ clearTimeout(timer);
950
+ timer = setTimeout(() => {
951
+ func(...args);
952
+ }, timeout);
953
+ };
954
+ }
955
+ var tidyState = (state) => {
956
+ return {
957
+ ...state,
958
+ ui: {
959
+ ...state.ui,
960
+ field: {
961
+ ...state.ui.field,
962
+ focus: null
963
+ }
964
+ }
965
+ };
966
+ };
967
+ var createHistorySlice = (set, get) => {
968
+ const record = debounce((state) => {
969
+ const { histories, index } = get().history;
970
+ const history = {
971
+ state,
972
+ id: generateId("history")
973
+ };
974
+ const newHistories = [...histories.slice(0, index + 1), history];
975
+ set({
976
+ history: {
977
+ ...get().history,
978
+ histories: newHistories,
979
+ index: newHistories.length - 1
980
+ }
981
+ });
982
+ }, 250);
983
+ return {
984
+ initialAppState: {},
985
+ index: EMPTY_HISTORY_INDEX,
986
+ histories: [],
987
+ hasPast: () => get().history.index > EMPTY_HISTORY_INDEX,
988
+ hasFuture: () => get().history.index < get().history.histories.length - 1,
989
+ prevHistory: () => {
990
+ const { history } = get();
991
+ return history.hasPast() ? history.histories[history.index - 1] : null;
992
+ },
993
+ nextHistory: () => {
994
+ const s = get().history;
995
+ return s.hasFuture() ? s.histories[s.index + 1] : null;
996
+ },
997
+ currentHistory: () => get().history.histories[get().history.index],
998
+ back: () => {
999
+ const { history, dispatch } = get();
1000
+ if (history.hasPast()) {
1001
+ const state = tidyState(
1002
+ history.prevHistory()?.state || history.initialAppState
1003
+ );
1004
+ dispatch({
1005
+ type: "set",
1006
+ state
1007
+ });
1008
+ set({ history: { ...history, index: history.index - 1 } });
1009
+ }
1010
+ },
1011
+ forward: () => {
1012
+ const { history, dispatch } = get();
1013
+ if (history.hasFuture()) {
1014
+ const state = history.nextHistory()?.state;
1015
+ dispatch({ type: "set", state: state ? tidyState(state) : {} });
1016
+ set({ history: { ...history, index: history.index + 1 } });
1017
+ }
1018
+ },
1019
+ setHistories: (histories) => {
1020
+ const { dispatch, history } = get();
1021
+ dispatch({
1022
+ type: "set",
1023
+ state: histories[histories.length - 1]?.state || history.initialAppState
1024
+ });
1025
+ set({ history: { ...history, histories, index: histories.length - 1 } });
1026
+ },
1027
+ setHistoryIndex: (index) => {
1028
+ const { dispatch, history } = get();
1029
+ dispatch({
1030
+ type: "set",
1031
+ state: history.histories[index]?.state || history.initialAppState
1032
+ });
1033
+ set({ history: { ...history, index } });
1034
+ },
1035
+ record
1036
+ };
1037
+ };
1038
+ function useRegisterHistorySlice(appStore, {
1039
+ histories,
1040
+ index,
1041
+ initialAppState
1042
+ }) {
1043
+ useEffect2(
1044
+ () => appStore.setState({
1045
+ history: {
1046
+ ...appStore.getState().history,
1047
+ histories,
1048
+ index,
1049
+ initialAppState
1050
+ }
1051
+ }),
1052
+ [histories, index, initialAppState, appStore]
1053
+ );
1054
+ const back = () => {
1055
+ appStore.getState().history.back();
1056
+ };
1057
+ const forward = () => {
1058
+ appStore.getState().history.forward();
1059
+ };
1060
+ useHotkey({ altRight: false, meta: true, z: true }, back);
1061
+ useHotkey({ altRight: false, meta: true, shift: true, z: true }, forward);
1062
+ useHotkey({ altRight: false, meta: true, y: true }, forward);
1063
+ useHotkey({ altRight: false, ctrl: true, z: true }, back);
1064
+ useHotkey({ altRight: false, ctrl: true, shift: true, z: true }, forward);
1065
+ useHotkey({ altRight: false, ctrl: true, y: true }, forward);
1066
+ }
1067
+
1068
+ // store/slices/nodes.ts
1069
+ init_react_import();
1070
+ var createNodesSlice = (_set, _get) => {
1071
+ const registry = /* @__PURE__ */ new Map();
1072
+ return {
1073
+ registerNode: (id, handle) => {
1074
+ registry.set(id, handle);
1075
+ },
1076
+ unregisterNode: (id) => {
1077
+ registry.delete(id);
1078
+ },
1079
+ syncNode: (id) => {
1080
+ if (!id) return;
1081
+ registry.get(id)?.sync();
1082
+ },
1083
+ syncNodes: (ids) => {
1084
+ ids.forEach((id) => {
1085
+ if (!id) return;
1086
+ registry.get(id)?.sync();
1087
+ });
1088
+ },
1089
+ setOverlayVisible: (id, visible) => {
1090
+ if (!id) return;
1091
+ const node = registry.get(id);
1092
+ if (!node) return;
1093
+ if (visible) {
1094
+ node.showOverlay();
1095
+ return;
1096
+ }
1097
+ node.hideOverlay();
1098
+ }
1099
+ };
1100
+ };
1101
+
1102
+ // store/slices/permissions.ts
1103
+ init_react_import();
1104
+ import { useEffect as useEffect3 } from "react";
1105
+
1106
+ // lib/data/flatten-data.ts
1107
+ init_react_import();
1108
+ var flattenData = (state, config) => {
1109
+ const data = [];
1110
+ walkAppState(
1111
+ state,
1112
+ config,
1113
+ (content) => content,
1114
+ (item) => {
1115
+ data.push(item);
1116
+ return item;
1117
+ }
1118
+ );
1119
+ return data;
1120
+ };
1121
+
1122
+ // store/slices/permissions.ts
1123
+ var createPermissionsSlice = (set, get) => {
1124
+ const resolvePermissions = async (params = {}, force) => {
1125
+ const { state, permissions, config } = get();
1126
+ const { cache, globalPermissions } = permissions;
1127
+ const resolvePermissionsForItem = async (item2, force2 = false) => {
1128
+ const { config: config2, state: appState, setComponentLoading } = get();
1129
+ const itemCache = cache[item2.props.id];
1130
+ const nodes = appState.indexes.nodes;
1131
+ const parentId = nodes[item2.props.id]?.parentId;
1132
+ const parentNode = parentId ? nodes[parentId] : null;
1133
+ const parentData = parentNode?.data ?? null;
1134
+ const componentConfig = item2.type === "root" ? config2.root : config2.components[item2.type];
1135
+ if (!componentConfig) {
1136
+ return;
1137
+ }
1138
+ const initialPermissions = {
1139
+ ...globalPermissions,
1140
+ ...componentConfig.permissions
1141
+ };
1142
+ if (componentConfig.resolvePermissions) {
1143
+ const changed = getChanged(item2, itemCache?.lastData);
1144
+ const propsChanged = Object.values(changed).some((el) => el === true);
1145
+ const parentChanged = itemCache?.lastParentId !== parentId;
1146
+ if (propsChanged || parentChanged || force2) {
1147
+ const clearTimeout2 = setComponentLoading(item2.props.id, true, 50);
1148
+ const resolvedPermissions = await componentConfig.resolvePermissions(
1149
+ item2,
1150
+ {
1151
+ changed,
1152
+ lastPermissions: itemCache?.lastPermissions || null,
1153
+ permissions: initialPermissions,
1154
+ appState: makeStatePublic(appState),
1155
+ lastData: itemCache?.lastData || null,
1156
+ parent: parentData
1157
+ }
1158
+ );
1159
+ const latest = get().permissions;
1160
+ set({
1161
+ permissions: {
1162
+ ...latest,
1163
+ cache: {
1164
+ ...latest.cache,
1165
+ [item2.props.id]: {
1166
+ lastParentId: parentId,
1167
+ lastData: item2,
1168
+ lastPermissions: resolvedPermissions
1169
+ }
1170
+ },
1171
+ resolvedPermissions: {
1172
+ ...latest.resolvedPermissions,
1173
+ [item2.props.id]: resolvedPermissions
1174
+ }
1175
+ }
1176
+ });
1177
+ clearTimeout2();
1178
+ }
1179
+ }
1180
+ };
1181
+ const resolvePermissionsForRoot = (force2 = false) => {
1182
+ const { state: appState } = get();
1183
+ resolvePermissionsForItem(
1184
+ // Shim the root data in by conforming to component data shape
1185
+ {
1186
+ type: "root",
1187
+ props: { ...appState.data.root.props, id: "root" }
1188
+ },
1189
+ force2
1190
+ );
1191
+ };
1192
+ const { item, type, root } = params;
1193
+ if (item) {
1194
+ await resolvePermissionsForItem(item, force);
1195
+ } else if (type) {
1196
+ flattenData(state, config).filter((item2) => item2.type === type).map(async (item2) => {
1197
+ await resolvePermissionsForItem(item2, force);
1198
+ });
1199
+ } else if (root) {
1200
+ resolvePermissionsForRoot(force);
1201
+ } else {
1202
+ flattenData(state, config).map(async (item2) => {
1203
+ await resolvePermissionsForItem(item2, force);
1204
+ });
1205
+ }
1206
+ };
1207
+ const refreshPermissions = (params) => resolvePermissions(params, true);
1208
+ return {
1209
+ cache: {},
1210
+ globalPermissions: {
1211
+ drag: true,
1212
+ edit: true,
1213
+ delete: true,
1214
+ duplicate: true,
1215
+ insert: true
1216
+ },
1217
+ resolvedPermissions: {},
1218
+ getPermissions: ({ item, type, root } = {}) => {
1219
+ const { config, permissions } = get();
1220
+ const { globalPermissions, resolvedPermissions } = permissions;
1221
+ if (item) {
1222
+ const componentConfig = config.components[item.type];
1223
+ const initialPermissions = {
1224
+ ...globalPermissions,
1225
+ ...componentConfig?.permissions
1226
+ };
1227
+ const resolvedForItem = resolvedPermissions[item.props.id];
1228
+ return resolvedForItem ? { ...globalPermissions, ...resolvedForItem } : initialPermissions;
1229
+ } else if (type) {
1230
+ const componentConfig = config.components[type];
1231
+ return {
1232
+ ...globalPermissions,
1233
+ ...componentConfig?.permissions
1234
+ };
1235
+ } else if (root) {
1236
+ const rootConfig = config.root;
1237
+ const initialPermissions = {
1238
+ ...globalPermissions,
1239
+ ...rootConfig?.permissions
1240
+ };
1241
+ const resolvedForItem = resolvedPermissions["root"];
1242
+ return resolvedForItem ? { ...globalPermissions, ...resolvedForItem } : initialPermissions;
1243
+ }
1244
+ return globalPermissions;
1245
+ },
1246
+ resolvePermissions,
1247
+ refreshPermissions
1248
+ };
1249
+ };
1250
+ var useRegisterPermissionsSlice = (appStore, globalPermissions) => {
1251
+ useEffect3(() => {
1252
+ const { permissions } = appStore.getState();
1253
+ const { globalPermissions: existingGlobalPermissions } = permissions;
1254
+ appStore.setState({
1255
+ permissions: {
1256
+ ...permissions,
1257
+ globalPermissions: {
1258
+ ...existingGlobalPermissions,
1259
+ ...globalPermissions
1260
+ }
1261
+ }
1262
+ });
1263
+ permissions.resolvePermissions();
1264
+ }, [globalPermissions, appStore]);
1265
+ useEffect3(() => {
1266
+ return appStore.subscribe(
1267
+ (s) => s.state.data,
1268
+ () => {
1269
+ appStore.getState().permissions.resolvePermissions();
1270
+ }
1271
+ );
1272
+ }, [appStore]);
1273
+ useEffect3(() => {
1274
+ return appStore.subscribe(
1275
+ (s) => s.config,
1276
+ () => {
1277
+ appStore.getState().permissions.resolvePermissions();
1278
+ }
1279
+ );
1280
+ }, [appStore]);
1281
+ };
1282
+
1283
+ // store/slices/fields.ts
1284
+ init_react_import();
1285
+ import { useCallback, useEffect as useEffect4 } from "react";
1286
+ var createFieldsSlice = (_set, _get) => {
1287
+ return {
1288
+ fields: {},
1289
+ loading: false,
1290
+ lastResolvedData: {},
1291
+ id: void 0
1292
+ };
1293
+ };
1294
+ var useRegisterFieldsSlice = (appStore, id) => {
1295
+ const resolveFields = useCallback(
1296
+ async (reset) => {
1297
+ const { fields, lastResolvedData } = appStore.getState().fields;
1298
+ const metadata = appStore.getState().metadata;
1299
+ const nodes = appStore.getState().state.indexes.nodes;
1300
+ const node = nodes[id || "root"];
1301
+ const componentData = node?.data;
1302
+ const parentNode = node?.parentId ? nodes[node.parentId] : null;
1303
+ const parent = parentNode?.data || null;
1304
+ const { getComponentConfig, state } = appStore.getState();
1305
+ const componentConfig = getComponentConfig(componentData?.type);
1306
+ if (!componentData || !componentConfig) return;
1307
+ const defaultFields = componentConfig.fields || {};
1308
+ const resolver = componentConfig.resolveFields;
1309
+ let lastFields = fields;
1310
+ if (reset) {
1311
+ appStore.setState((s) => ({
1312
+ fields: { ...s.fields, fields: defaultFields, id }
1313
+ }));
1314
+ lastFields = defaultFields;
1315
+ }
1316
+ if (resolver) {
1317
+ const timeout = setTimeout(() => {
1318
+ appStore.setState((s) => ({
1319
+ fields: { ...s.fields, loading: true }
1320
+ }));
1321
+ }, 50);
1322
+ const lastData = lastResolvedData.props?.id === id ? lastResolvedData : null;
1323
+ const changed = getChanged(componentData, lastData);
1324
+ const newFields = await resolver(componentData, {
1325
+ changed,
1326
+ fields: defaultFields,
1327
+ lastFields,
1328
+ metadata: { ...metadata, ...componentConfig.metadata },
1329
+ lastData,
1330
+ appState: makeStatePublic(state),
1331
+ parent
1332
+ });
1333
+ clearTimeout(timeout);
1334
+ if (appStore.getState().selectedItem?.props.id !== id) {
1335
+ return;
1336
+ }
1337
+ appStore.setState({
1338
+ fields: {
1339
+ fields: newFields,
1340
+ loading: false,
1341
+ lastResolvedData: componentData,
1342
+ id
1343
+ }
1344
+ });
1345
+ } else {
1346
+ appStore.setState((s) => ({
1347
+ fields: { ...s.fields, fields: defaultFields, id }
1348
+ }));
1349
+ }
1350
+ },
1351
+ [id, appStore]
1352
+ );
1353
+ useEffect4(() => {
1354
+ resolveFields(true);
1355
+ return appStore.subscribe(
1356
+ (s) => s.state.indexes.nodes[id || "root"],
1357
+ () => resolveFields()
1358
+ );
1359
+ }, [id, appStore, resolveFields]);
1360
+ };
1361
+
1362
+ // lib/data/to-root.ts
1363
+ init_react_import();
1364
+ var toRoot = (item) => {
1365
+ if ("type" in item && item.type !== "root") {
1366
+ throw new Error("Converting non-root item to root.");
1367
+ }
1368
+ const { readOnly } = item;
1369
+ if (item.props) {
1370
+ if ("id" in item.props) {
1371
+ const { id, ...props } = item.props;
1372
+ return { props, readOnly };
1373
+ }
1374
+ return { props: item.props, readOnly };
1375
+ }
1376
+ return { props: {}, readOnly };
1377
+ };
1378
+
1379
+ // store/index.ts
1380
+ var defaultPageFields = {
1381
+ title: { type: "text" }
1382
+ };
1383
+ var createAppStore = (initialAppStore) => create2()(
1384
+ subscribeWithSelector2((set, get) => ({
1385
+ instanceId: generateId(),
1386
+ state: defaultAppState,
1387
+ config: { components: {} },
1388
+ componentState: {},
1389
+ plugins: [],
1390
+ overrides: {},
1391
+ viewports: defaultViewports,
1392
+ zoomConfig: {
1393
+ autoZoom: 1,
1394
+ rootHeight: 0,
1395
+ zoom: 1
1396
+ },
1397
+ status: "LOADING",
1398
+ iframe: {},
1399
+ _experimentalFullScreenCanvas: false,
1400
+ _experimentalVirtualization: false,
1401
+ metadata: {},
1402
+ fieldTransforms: {},
1403
+ ...initialAppStore,
1404
+ fields: createFieldsSlice(set, get),
1405
+ history: createHistorySlice(set, get),
1406
+ nodes: createNodesSlice(set, get),
1407
+ permissions: createPermissionsSlice(set, get),
1408
+ getCurrentData: () => {
1409
+ const s = get();
1410
+ return s.selectedItem ?? s.state.data.root;
1411
+ },
1412
+ getComponentConfig: (type) => {
1413
+ const { config, selectedItem } = get();
1414
+ const rootFields = config.root?.fields || defaultPageFields;
1415
+ return type && type !== "root" ? config.components[type] : selectedItem ? config.components[selectedItem.type] : { ...config.root, fields: rootFields };
1416
+ },
1417
+ selectedItem: initialAppStore?.state?.ui.itemSelector ? getItem(
1418
+ initialAppStore?.state?.ui.itemSelector,
1419
+ initialAppStore.state
1420
+ ) : null,
1421
+ dispatch: (action) => set((s) => {
1422
+ const { record } = get().history;
1423
+ const reducer = createReducer({
1424
+ record,
1425
+ appStore: s
1426
+ });
1427
+ const state = reducer(s.state, action);
1428
+ const selectedItem = state.ui.itemSelector ? getItem(state.ui.itemSelector, state) : null;
1429
+ return { ...s, state, selectedItem };
1430
+ }),
1431
+ setZoomConfig: (zoomConfig) => set({ zoomConfig }),
1432
+ setStatus: (status) => set({ status }),
1433
+ setComponentState: (componentState) => set({ componentState }),
1434
+ pendingLoadTimeouts: {},
1435
+ setComponentLoading: (id, loading = true, defer = 0) => {
1436
+ const { setComponentState, pendingLoadTimeouts } = get();
1437
+ const loadId = generateId();
1438
+ const setLoading = () => {
1439
+ const { componentState } = get();
1440
+ setComponentState({
1441
+ ...componentState,
1442
+ [id]: {
1443
+ ...componentState[id],
1444
+ loadingCount: (componentState[id]?.loadingCount || 0) + 1
1445
+ }
1446
+ });
1447
+ };
1448
+ const unsetLoading = () => {
1449
+ const { componentState } = get();
1450
+ clearTimeout(timeout);
1451
+ delete pendingLoadTimeouts[loadId];
1452
+ set({ pendingLoadTimeouts });
1453
+ setComponentState({
1454
+ ...componentState,
1455
+ [id]: {
1456
+ ...componentState[id],
1457
+ loadingCount: Math.max(
1458
+ (componentState[id]?.loadingCount || 0) - 1,
1459
+ 0
1460
+ )
1461
+ }
1462
+ });
1463
+ };
1464
+ const timeout = setTimeout(() => {
1465
+ if (loading) {
1466
+ setLoading();
1467
+ } else {
1468
+ unsetLoading();
1469
+ }
1470
+ delete pendingLoadTimeouts[loadId];
1471
+ set({ pendingLoadTimeouts });
1472
+ }, defer);
1473
+ set({
1474
+ pendingLoadTimeouts: {
1475
+ ...pendingLoadTimeouts,
1476
+ [id]: timeout
1477
+ }
1478
+ });
1479
+ return unsetLoading;
1480
+ },
1481
+ unsetComponentLoading: (id) => {
1482
+ const { setComponentLoading } = get();
1483
+ setComponentLoading(id, false);
1484
+ },
1485
+ // Helper
1486
+ setUi: (ui, recordHistory) => set((s) => {
1487
+ const dispatch = createReducer({
1488
+ record: () => {
1489
+ },
1490
+ appStore: s
1491
+ });
1492
+ const state = dispatch(s.state, {
1493
+ type: "setUi",
1494
+ ui,
1495
+ recordHistory
1496
+ });
1497
+ const selectedItem = state.ui.itemSelector ? getItem(state.ui.itemSelector, state) : null;
1498
+ return { ...s, state, selectedItem };
1499
+ }),
1500
+ resolveComponentData: async (componentData, trigger) => {
1501
+ const { config, metadata, setComponentLoading, permissions, state } = get();
1502
+ const componentId = "id" in componentData.props ? componentData.props.id : "root";
1503
+ const parentId = state.indexes.nodes[componentId]?.parentId;
1504
+ const parentNode = parentId ? state.indexes.nodes[parentId] : null;
1505
+ const parentData = parentNode?.data ?? null;
1506
+ const timeouts = {};
1507
+ return await resolveComponentData(
1508
+ componentData,
1509
+ config,
1510
+ metadata,
1511
+ (item) => {
1512
+ const id = "id" in item.props ? item.props.id : "root";
1513
+ timeouts[id] = setComponentLoading(id, true, 50);
1514
+ },
1515
+ async (item) => {
1516
+ const id = "id" in item.props ? item.props.id : "root";
1517
+ if ("type" in item) {
1518
+ await permissions.refreshPermissions({ item });
1519
+ } else {
1520
+ await permissions.refreshPermissions({ root: true });
1521
+ }
1522
+ timeouts[id]();
1523
+ },
1524
+ trigger,
1525
+ parentData
1526
+ );
1527
+ },
1528
+ resolveAndCommitData: async () => {
1529
+ const { config, state, dispatch, resolveComponentData: resolveComponentData2 } = get();
1530
+ walkAppState(
1531
+ state,
1532
+ config,
1533
+ (content) => content,
1534
+ (childItem, path) => {
1535
+ if (path.length > 1) return childItem;
1536
+ resolveComponentData2(childItem, "load").then((resolved) => {
1537
+ const { state: state2 } = get();
1538
+ const node = state2.indexes.nodes[resolved.node.props.id];
1539
+ if (node && resolved.didChange) {
1540
+ if (resolved.node.props.id === "root") {
1541
+ dispatch({
1542
+ type: "replaceRoot",
1543
+ root: toRoot(resolved.node)
1544
+ });
1545
+ } else {
1546
+ const zoneCompound = `${node.parentId}:${node.zone}`;
1547
+ const parentZone = state2.indexes.zones[zoneCompound];
1548
+ const index = parentZone.contentIds.indexOf(
1549
+ resolved.node.props.id
1550
+ );
1551
+ dispatch({
1552
+ type: "replace",
1553
+ data: resolved.node,
1554
+ destinationIndex: index,
1555
+ destinationZone: zoneCompound
1556
+ });
1557
+ }
1558
+ }
1559
+ });
1560
+ return childItem;
1561
+ }
1562
+ );
1563
+ }
1564
+ }))
1565
+ );
1566
+ var appStoreContext = createContext(createAppStore());
1567
+ function useAppStore(selector) {
1568
+ const context = useContext(appStoreContext);
1569
+ return useStore(context, selector);
1570
+ }
1571
+ function useAppStoreApi() {
1572
+ return useContext(appStoreContext);
1573
+ }
1574
+
1575
+ // components/RichTextMenu/lib/use-control-context.ts
1576
+ init_react_import();
1577
+ import { createContext as createContext2, useContext as useContext2 } from "react";
1578
+ var ControlContext = createContext2({});
1579
+ var useControlContext = () => {
1580
+ return useContext2(ControlContext);
1581
+ };
1582
+
1583
+ // components/RichTextMenu/components/SelectControl/index.tsx
1584
+ init_react_import();
1585
+ import { useMemo } from "react";
1586
+
1587
+ // components/Select/index.tsx
1588
+ init_react_import();
1589
+
1590
+ // css-module:/home/crediblemark/Project/NEXT_CMS/packages/components/Select/styles.module.css#css-module
1591
+ init_react_import();
1592
+ var styles_module_default = { "Select": "_Select_16son_1", "Select-button": "_Select-button_16son_6", "Select--hasOptions": "_Select--hasOptions_16son_19", "Select--disabled": "_Select--disabled_16son_23", "Select-buttonIcon": "_Select-buttonIcon_16son_27", "Select--standalone": "_Select--standalone_16son_33", "Select--actionBar": "_Select--actionBar_16son_38", "Select--hasValue": "_Select--hasValue_16son_44", "Select-items": "_Select-items_16son_61", "SelectItem": "_SelectItem_16son_72", "SelectItem--isSelected": "_SelectItem--isSelected_16son_87", "SelectItem-icon": "_SelectItem-icon_16son_93" };
1593
+
1594
+ // components/Select/index.tsx
1595
+ import { useState } from "react";
1596
+ import {
1597
+ Popover,
1598
+ PopoverContent,
1599
+ PopoverPortal,
1600
+ PopoverTrigger
1601
+ } from "@radix-ui/react-popover";
1602
+
1603
+ // lib/index.ts
1604
+ init_react_import();
1605
+
1606
+ // lib/filter.ts
1607
+ init_react_import();
1608
+
1609
+ // lib/data/reorder.ts
1610
+ init_react_import();
1611
+ var reorder = (list, startIndex, endIndex) => {
1612
+ const result = Array.from(list);
1613
+ const [removed] = result.splice(startIndex, 1);
1614
+ result.splice(endIndex, 0, removed);
1615
+ return result;
1616
+ };
1617
+
1618
+ // lib/data/replace.ts
1619
+ init_react_import();
1620
+ var replace = (list, index, newItem) => {
1621
+ const result = Array.from(list);
1622
+ result.splice(index, 1);
1623
+ result.splice(index, 0, newItem);
1624
+ return result;
1625
+ };
1626
+
1627
+ // lib/use-reset-auto-zoom.ts
1628
+ init_react_import();
1629
+ import { useCallback as useCallback2 } from "react";
1630
+
1631
+ // lib/get-zoom-config.ts
1632
+ init_react_import();
1633
+
1634
+ // ../node_modules/css-box-model/dist/css-box-model.esm.js
1635
+ init_react_import();
1636
+
1637
+ // ../node_modules/tiny-invariant/dist/esm/tiny-invariant.js
1638
+ init_react_import();
1639
+ var isProduction = process.env.NODE_ENV === "production";
1640
+ var prefix = "Invariant failed";
1641
+ function invariant(condition, message) {
1642
+ if (condition) {
1643
+ return;
1644
+ }
1645
+ if (isProduction) {
1646
+ throw new Error(prefix);
1647
+ }
1648
+ var provided = typeof message === "function" ? message() : message;
1649
+ var value = provided ? "".concat(prefix, ": ").concat(provided) : prefix;
1650
+ throw new Error(value);
1651
+ }
1652
+
1653
+ // ../node_modules/css-box-model/dist/css-box-model.esm.js
1654
+ var getRect = function getRect2(_ref) {
1655
+ var top = _ref.top, right = _ref.right, bottom = _ref.bottom, left = _ref.left;
1656
+ var width = right - left;
1657
+ var height = bottom - top;
1658
+ var rect = {
1659
+ top,
1660
+ right,
1661
+ bottom,
1662
+ left,
1663
+ width,
1664
+ height,
1665
+ x: left,
1666
+ y: top,
1667
+ center: {
1668
+ x: (right + left) / 2,
1669
+ y: (bottom + top) / 2
1670
+ }
1671
+ };
1672
+ return rect;
1673
+ };
1674
+ var expand = function expand2(target, expandBy) {
1675
+ return {
1676
+ top: target.top - expandBy.top,
1677
+ left: target.left - expandBy.left,
1678
+ bottom: target.bottom + expandBy.bottom,
1679
+ right: target.right + expandBy.right
1680
+ };
1681
+ };
1682
+ var shrink = function shrink2(target, shrinkBy) {
1683
+ return {
1684
+ top: target.top + shrinkBy.top,
1685
+ left: target.left + shrinkBy.left,
1686
+ bottom: target.bottom - shrinkBy.bottom,
1687
+ right: target.right - shrinkBy.right
1688
+ };
1689
+ };
1690
+ var noSpacing = {
1691
+ top: 0,
1692
+ right: 0,
1693
+ bottom: 0,
1694
+ left: 0
1695
+ };
1696
+ var createBox = function createBox2(_ref2) {
1697
+ var borderBox = _ref2.borderBox, _ref2$margin = _ref2.margin, margin = _ref2$margin === void 0 ? noSpacing : _ref2$margin, _ref2$border = _ref2.border, border = _ref2$border === void 0 ? noSpacing : _ref2$border, _ref2$padding = _ref2.padding, padding = _ref2$padding === void 0 ? noSpacing : _ref2$padding;
1698
+ var marginBox = getRect(expand(borderBox, margin));
1699
+ var paddingBox = getRect(shrink(borderBox, border));
1700
+ var contentBox = getRect(shrink(paddingBox, padding));
1701
+ return {
1702
+ marginBox,
1703
+ borderBox: getRect(borderBox),
1704
+ paddingBox,
1705
+ contentBox,
1706
+ margin,
1707
+ border,
1708
+ padding
1709
+ };
1710
+ };
1711
+ var parse = function parse2(raw) {
1712
+ var value = raw.slice(0, -2);
1713
+ var suffix = raw.slice(-2);
1714
+ if (suffix !== "px") {
1715
+ return 0;
1716
+ }
1717
+ var result = Number(value);
1718
+ !!isNaN(result) ? process.env.NODE_ENV !== "production" ? invariant(false, "Could not parse value [raw: " + raw + ", without suffix: " + value + "]") : invariant(false) : void 0;
1719
+ return result;
1720
+ };
1721
+ var calculateBox = function calculateBox2(borderBox, styles) {
1722
+ var margin = {
1723
+ top: parse(styles.marginTop),
1724
+ right: parse(styles.marginRight),
1725
+ bottom: parse(styles.marginBottom),
1726
+ left: parse(styles.marginLeft)
1727
+ };
1728
+ var padding = {
1729
+ top: parse(styles.paddingTop),
1730
+ right: parse(styles.paddingRight),
1731
+ bottom: parse(styles.paddingBottom),
1732
+ left: parse(styles.paddingLeft)
1733
+ };
1734
+ var border = {
1735
+ top: parse(styles.borderTopWidth),
1736
+ right: parse(styles.borderRightWidth),
1737
+ bottom: parse(styles.borderBottomWidth),
1738
+ left: parse(styles.borderLeftWidth)
1739
+ };
1740
+ return createBox({
1741
+ borderBox,
1742
+ margin,
1743
+ padding,
1744
+ border
1745
+ });
1746
+ };
1747
+ var getBox = function getBox2(el) {
1748
+ var borderBox = el.getBoundingClientRect();
1749
+ var styles = window.getComputedStyle(el);
1750
+ return calculateBox(borderBox, styles);
1751
+ };
1752
+
1753
+ // lib/get-zoom-config.ts
1754
+ var RESET_ZOOM_SMALLER_THAN_FRAME = true;
1755
+ var getZoomConfig = (uiViewport, frame, zoom) => {
1756
+ const box = getBox(frame);
1757
+ const { width: frameWidth, height: frameHeight } = box.contentBox;
1758
+ const viewportHeight = uiViewport.height === "auto" ? frameHeight : uiViewport.height;
1759
+ let rootHeight = 0;
1760
+ let autoZoom = 1;
1761
+ if (typeof uiViewport.width === "number" && (uiViewport.width > frameWidth || viewportHeight > frameHeight)) {
1762
+ const widthZoom = Math.min(frameWidth / uiViewport.width, 1);
1763
+ const heightZoom = Math.min(frameHeight / viewportHeight, 1);
1764
+ zoom = widthZoom;
1765
+ if (widthZoom < heightZoom) {
1766
+ rootHeight = viewportHeight / zoom;
1767
+ } else {
1768
+ rootHeight = viewportHeight;
1769
+ zoom = heightZoom;
1770
+ }
1771
+ autoZoom = zoom;
1772
+ } else {
1773
+ if (RESET_ZOOM_SMALLER_THAN_FRAME) {
1774
+ autoZoom = 1;
1775
+ zoom = 1;
1776
+ rootHeight = viewportHeight;
1777
+ }
1778
+ }
1779
+ return { autoZoom, rootHeight, zoom };
1780
+ };
1781
+
1782
+ // lib/use-reset-auto-zoom.ts
1783
+ var useResetAutoZoom = (frameRef) => {
1784
+ const appStoreApi = useAppStoreApi();
1785
+ const resetAutoZoom = useCallback2(
1786
+ (options) => {
1787
+ const { state, zoomConfig, setZoomConfig } = appStoreApi.getState();
1788
+ const { viewports } = state.ui;
1789
+ const newViewports = options?.viewports || viewports;
1790
+ if (frameRef.current) {
1791
+ setZoomConfig(
1792
+ getZoomConfig(newViewports?.current, frameRef.current, zoomConfig.zoom)
1793
+ );
1794
+ }
1795
+ },
1796
+ [appStoreApi, frameRef]
1797
+ );
1798
+ return resetAutoZoom;
1799
+ };
1800
+
1801
+ // components/Select/index.tsx
1802
+ import { jsx, jsxs } from "react/jsx-runtime";
1803
+ var getClassName = get_class_name_factory_default("Select", styles_module_default);
1804
+ var getItemClassName = get_class_name_factory_default("SelectItem", styles_module_default);
1805
+ var Item = ({
1806
+ children,
1807
+ isSelected,
1808
+ onClick
1809
+ }) => {
1810
+ return /* @__PURE__ */ jsx("button", { className: getItemClassName({ isSelected }), onClick, children });
1811
+ };
1812
+ var Select = ({
1813
+ children,
1814
+ options,
1815
+ onChange,
1816
+ value,
1817
+ defaultValue,
1818
+ mode,
1819
+ disabled = false
1820
+ }) => {
1821
+ const [open, setOpen] = useState(false);
1822
+ const hasOptions = options.length > 0;
1823
+ const isDisabled = disabled || !hasOptions;
1824
+ return /* @__PURE__ */ jsx(
1825
+ "div",
1826
+ {
1827
+ className: getClassName({
1828
+ hasValue: value !== defaultValue,
1829
+ hasOptions,
1830
+ actionBar: mode === "actionBar",
1831
+ standalone: mode === "standalone",
1832
+ disabled: isDisabled
1833
+ }),
1834
+ children: /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
1835
+ hasOptions ? /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs("button", { className: getClassName("button"), children: [
1836
+ /* @__PURE__ */ jsx("span", { className: getClassName("buttonIcon"), children }),
1837
+ /* @__PURE__ */ jsx(ChevronDown, { size: 12 })
1838
+ ] }) }) : /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: getClassName("button"), children: [
1839
+ /* @__PURE__ */ jsx("span", { className: getClassName("buttonIcon"), children }),
1840
+ /* @__PURE__ */ jsx(ChevronDown, { size: 12 })
1841
+ ] }) }),
1842
+ options.length > 0 && /* @__PURE__ */ jsx(PopoverPortal, { children: /* @__PURE__ */ jsx(PopoverContent, { align: "start", children: /* @__PURE__ */ jsx("ul", { className: getClassName("items"), "data-credbuild-rte-menu": true, children: options.map((option) => {
1843
+ const Icon2 = option.icon;
1844
+ return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
1845
+ Item,
1846
+ {
1847
+ isSelected: value === option.value,
1848
+ onClick: () => {
1849
+ onChange(option.value);
1850
+ setOpen(false);
1851
+ },
1852
+ children: [
1853
+ Icon2 && /* @__PURE__ */ jsx("div", { className: getItemClassName("icon"), children: /* @__PURE__ */ jsx(Icon2, { size: 16 }) }),
1854
+ option.label
1855
+ ]
1856
+ }
1857
+ ) }, option.value);
1858
+ }) }) }) })
1859
+ ] })
1860
+ }
1861
+ );
1862
+ };
1863
+
1864
+ // components/RichTextMenu/components/SelectControl/index.tsx
1865
+ import { jsx as jsx2 } from "react/jsx-runtime";
1866
+ function SelectControl({
1867
+ renderDefaultIcon,
1868
+ onChange,
1869
+ options,
1870
+ value,
1871
+ defaultValue
1872
+ }) {
1873
+ const { inline, readOnly } = useControlContext();
1874
+ const optionsByValue = useMemo(
1875
+ () => options.reduce(
1876
+ (acc, option) => ({ ...acc, [option.value]: option }),
1877
+ {}
1878
+ ),
1879
+ [options]
1880
+ );
1881
+ const Node = (value && optionsByValue[value]?.icon) ?? renderDefaultIcon;
1882
+ return /* @__PURE__ */ jsx2(
1883
+ Select,
1884
+ {
1885
+ options,
1886
+ onChange,
1887
+ value,
1888
+ defaultValue,
1889
+ mode: inline ? "actionBar" : "standalone",
1890
+ disabled: readOnly,
1891
+ children: /* @__PURE__ */ jsx2(Node, {})
1892
+ }
1893
+ );
1894
+ }
1895
+
1896
+ export {
1897
+ Bold,
1898
+ Box,
1899
+ ChartColumn,
1900
+ ChevronDown,
1901
+ ChevronRight,
1902
+ ChevronUp,
1903
+ CircleCheckBig,
1904
+ Code,
1905
+ Copy,
1906
+ CornerLeftUp,
1907
+ CreditCard,
1908
+ EllipsisVertical,
1909
+ Expand,
1910
+ ExternalLink,
1911
+ FileText,
1912
+ Globe,
1913
+ GripVertical,
1914
+ Hash,
1915
+ Heading1,
1916
+ Heading2,
1917
+ Heading3,
1918
+ Heading4,
1919
+ Heading5,
1920
+ Heading6,
1921
+ Heading,
1922
+ Image,
1923
+ Info,
1924
+ Italic,
1925
+ Layers,
1926
+ LayoutDashboard,
1927
+ LayoutGrid,
1928
+ LayoutTemplate,
1929
+ Link,
1930
+ ListOrdered,
1931
+ List,
1932
+ LockOpen,
1933
+ Lock,
1934
+ Maximize2,
1935
+ Megaphone,
1936
+ Minimize2,
1937
+ Minus,
1938
+ Monitor,
1939
+ PanelLeft,
1940
+ PanelRight,
1941
+ Plus,
1942
+ Quote,
1943
+ RectangleEllipsis,
1944
+ Redo2,
1945
+ Search,
1946
+ Settings,
1947
+ Shapes,
1948
+ SlidersHorizontal,
1949
+ Smartphone,
1950
+ SquareCode,
1951
+ Strikethrough,
1952
+ Tablet,
1953
+ TextAlignCenter,
1954
+ TextAlignEnd,
1955
+ TextAlignJustify,
1956
+ TextAlignStart,
1957
+ ToyBrick,
1958
+ Trash,
1959
+ Type,
1960
+ Underline,
1961
+ Undo2,
1962
+ X,
1963
+ ZoomIn,
1964
+ ZoomOut,
1965
+ reorder,
1966
+ replace,
1967
+ monitorHotkeys,
1968
+ useMonitorHotkeys,
1969
+ useHotkey,
1970
+ useRegisterHistorySlice,
1971
+ useRegisterPermissionsSlice,
1972
+ useRegisterFieldsSlice,
1973
+ createAppStore,
1974
+ appStoreContext,
1975
+ useAppStore,
1976
+ useAppStoreApi,
1977
+ getBox,
1978
+ useResetAutoZoom,
1979
+ ControlContext,
1980
+ useControlContext,
1981
+ SelectControl
1982
+ };
1983
+ /*! Bundled license information:
1984
+
1985
+ lucide-react/dist/esm/shared/src/utils.js:
1986
+ lucide-react/dist/esm/defaultAttributes.js:
1987
+ lucide-react/dist/esm/Icon.js:
1988
+ lucide-react/dist/esm/createLucideIcon.js:
1989
+ lucide-react/dist/esm/icons/heading.js:
1990
+ lucide-react/dist/esm/icons/list.js:
1991
+ lucide-react/dist/esm/icons/text-align-start.js:
1992
+ lucide-react/dist/esm/icons/bold.js:
1993
+ lucide-react/dist/esm/icons/box.js:
1994
+ lucide-react/dist/esm/icons/chart-column.js:
1995
+ lucide-react/dist/esm/icons/chevron-down.js:
1996
+ lucide-react/dist/esm/icons/chevron-right.js:
1997
+ lucide-react/dist/esm/icons/chevron-up.js:
1998
+ lucide-react/dist/esm/icons/circle-check-big.js:
1999
+ lucide-react/dist/esm/icons/code.js:
2000
+ lucide-react/dist/esm/icons/copy.js:
2001
+ lucide-react/dist/esm/icons/corner-left-up.js:
2002
+ lucide-react/dist/esm/icons/credit-card.js:
2003
+ lucide-react/dist/esm/icons/ellipsis-vertical.js:
2004
+ lucide-react/dist/esm/icons/expand.js:
2005
+ lucide-react/dist/esm/icons/external-link.js:
2006
+ lucide-react/dist/esm/icons/file-text.js:
2007
+ lucide-react/dist/esm/icons/globe.js:
2008
+ lucide-react/dist/esm/icons/grip-vertical.js:
2009
+ lucide-react/dist/esm/icons/hash.js:
2010
+ lucide-react/dist/esm/icons/heading-1.js:
2011
+ lucide-react/dist/esm/icons/heading-2.js:
2012
+ lucide-react/dist/esm/icons/heading-3.js:
2013
+ lucide-react/dist/esm/icons/heading-4.js:
2014
+ lucide-react/dist/esm/icons/heading-5.js:
2015
+ lucide-react/dist/esm/icons/heading-6.js:
2016
+ lucide-react/dist/esm/icons/image.js:
2017
+ lucide-react/dist/esm/icons/info.js:
2018
+ lucide-react/dist/esm/icons/italic.js:
2019
+ lucide-react/dist/esm/icons/layers.js:
2020
+ lucide-react/dist/esm/icons/layout-dashboard.js:
2021
+ lucide-react/dist/esm/icons/layout-grid.js:
2022
+ lucide-react/dist/esm/icons/layout-template.js:
2023
+ lucide-react/dist/esm/icons/link.js:
2024
+ lucide-react/dist/esm/icons/list-ordered.js:
2025
+ lucide-react/dist/esm/icons/lock-open.js:
2026
+ lucide-react/dist/esm/icons/lock.js:
2027
+ lucide-react/dist/esm/icons/maximize-2.js:
2028
+ lucide-react/dist/esm/icons/megaphone.js:
2029
+ lucide-react/dist/esm/icons/minimize-2.js:
2030
+ lucide-react/dist/esm/icons/minus.js:
2031
+ lucide-react/dist/esm/icons/monitor.js:
2032
+ lucide-react/dist/esm/icons/panel-left.js:
2033
+ lucide-react/dist/esm/icons/panel-right.js:
2034
+ lucide-react/dist/esm/icons/plus.js:
2035
+ lucide-react/dist/esm/icons/quote.js:
2036
+ lucide-react/dist/esm/icons/rectangle-ellipsis.js:
2037
+ lucide-react/dist/esm/icons/redo-2.js:
2038
+ lucide-react/dist/esm/icons/search.js:
2039
+ lucide-react/dist/esm/icons/settings.js:
2040
+ lucide-react/dist/esm/icons/shapes.js:
2041
+ lucide-react/dist/esm/icons/sliders-horizontal.js:
2042
+ lucide-react/dist/esm/icons/smartphone.js:
2043
+ lucide-react/dist/esm/icons/square-code.js:
2044
+ lucide-react/dist/esm/icons/strikethrough.js:
2045
+ lucide-react/dist/esm/icons/tablet.js:
2046
+ lucide-react/dist/esm/icons/text-align-center.js:
2047
+ lucide-react/dist/esm/icons/text-align-end.js:
2048
+ lucide-react/dist/esm/icons/text-align-justify.js:
2049
+ lucide-react/dist/esm/icons/toy-brick.js:
2050
+ lucide-react/dist/esm/icons/trash.js:
2051
+ lucide-react/dist/esm/icons/type.js:
2052
+ lucide-react/dist/esm/icons/underline.js:
2053
+ lucide-react/dist/esm/icons/undo-2.js:
2054
+ lucide-react/dist/esm/icons/x.js:
2055
+ lucide-react/dist/esm/icons/zoom-in.js:
2056
+ lucide-react/dist/esm/icons/zoom-out.js:
2057
+ lucide-react/dist/esm/lucide-react.js:
2058
+ (**
2059
+ * @license lucide-react v0.556.0 - ISC
2060
+ *
2061
+ * This source code is licensed under the ISC license.
2062
+ * See the LICENSE file in the root directory of this source tree.
2063
+ *)
2064
+ */