@measured/puck 0.21.0-canary.38e79ba8 → 0.21.0-canary.41d0882b

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/dist/Editor-IQP25PUX.css +404 -0
  2. package/dist/Editor-L3JAAT2X.mjs +204 -0
  3. package/dist/Render-3OV4N4MT.css +102 -0
  4. package/dist/Render-FXZX6NFH.mjs +55 -0
  5. package/dist/{walk-tree-bsPSSmt9.d.mts → actions-tsxxcX1z.d.mts} +225 -37
  6. package/dist/{walk-tree-bsPSSmt9.d.ts → actions-tsxxcX1z.d.ts} +225 -37
  7. package/dist/chunk-23IZFPL7.mjs +528 -0
  8. package/dist/chunk-3SDLQIUZ.mjs +429 -0
  9. package/dist/chunk-45I5SDOI.mjs +134 -0
  10. package/dist/chunk-5ZZVX2Z3.mjs +63 -0
  11. package/dist/chunk-AOEDIUVK.mjs +11 -0
  12. package/dist/chunk-B7REOAA7.mjs +435 -0
  13. package/dist/chunk-BXQQARCR.mjs +708 -0
  14. package/dist/{chunk-CISJM3HZ.mjs → chunk-CQUAWHOK.mjs} +6920 -7968
  15. package/dist/chunk-D2SRL6YA.mjs +1807 -0
  16. package/dist/chunk-LJEGWHDD.mjs +53 -0
  17. package/dist/chunk-M6W7YEVX.mjs +95 -0
  18. package/dist/chunk-PBAAIKXA.mjs +111 -0
  19. package/dist/chunk-U4VSQKO3.mjs +33 -0
  20. package/dist/chunk-V5I7CVLT.mjs +103 -0
  21. package/dist/chunk-Y2EFNT5P.mjs +108 -0
  22. package/dist/full-2GJTAAZE.css +301 -0
  23. package/dist/full-L7DWVNTZ.mjs +93 -0
  24. package/dist/index-Ca6V6NQD.d.ts +118 -0
  25. package/dist/index-mQvUCH3C.d.mts +118 -0
  26. package/dist/index.css +1032 -385
  27. package/dist/index.d.mts +115 -115
  28. package/dist/index.d.ts +115 -115
  29. package/dist/index.js +9979 -5862
  30. package/dist/index.mjs +34 -12
  31. package/dist/internal.d.mts +27 -0
  32. package/dist/internal.d.ts +27 -0
  33. package/dist/internal.js +927 -0
  34. package/dist/internal.mjs +13 -0
  35. package/dist/loaded-2HLHDP2G.mjs +57 -0
  36. package/dist/loaded-LZUXYAGW.mjs +60 -0
  37. package/dist/loaded-RVWBFK7L.css +87 -0
  38. package/dist/loaded-UHVTB6OD.mjs +57 -0
  39. package/dist/no-external.css +1121 -470
  40. package/dist/no-external.d.mts +19 -2
  41. package/dist/no-external.d.ts +19 -2
  42. package/dist/no-external.js +9982 -5862
  43. package/dist/no-external.mjs +36 -9
  44. package/dist/rsc.css +102 -0
  45. package/dist/rsc.d.mts +17 -2
  46. package/dist/rsc.d.ts +17 -2
  47. package/dist/rsc.js +462 -49
  48. package/dist/rsc.mjs +18 -9
  49. package/dist/walk-tree-Bh85NMeo.d.ts +29 -0
  50. package/dist/walk-tree-CDA3K5S3.d.mts +29 -0
  51. package/package.json +31 -4
  52. package/dist/chunk-JA7SEUEH.mjs +0 -966
package/dist/rsc.js CHANGED
@@ -34,6 +34,12 @@ var __objRest = (source, exclude) => {
34
34
  }
35
35
  return target;
36
36
  };
37
+ var __esm = (fn, res) => function __init() {
38
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
39
+ };
40
+ var __commonJS = (cb, mod) => function __require() {
41
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
42
+ };
37
43
  var __export = (target, all) => {
38
44
  for (var name in all)
39
45
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -76,6 +82,276 @@ var __async = (__this, __arguments, generator) => {
76
82
  });
77
83
  };
78
84
 
85
+ // ../tsup-config/react-import.js
86
+ var import_react;
87
+ var init_react_import = __esm({
88
+ "../tsup-config/react-import.js"() {
89
+ "use strict";
90
+ import_react = __toESM(require("react"));
91
+ }
92
+ });
93
+
94
+ // ../../node_modules/classnames/index.js
95
+ var require_classnames = __commonJS({
96
+ "../../node_modules/classnames/index.js"(exports2, module2) {
97
+ "use strict";
98
+ init_react_import();
99
+ (function() {
100
+ "use strict";
101
+ var hasOwn = {}.hasOwnProperty;
102
+ function classNames() {
103
+ var classes = "";
104
+ for (var i = 0; i < arguments.length; i++) {
105
+ var arg = arguments[i];
106
+ if (arg) {
107
+ classes = appendClass(classes, parseValue(arg));
108
+ }
109
+ }
110
+ return classes;
111
+ }
112
+ function parseValue(arg) {
113
+ if (typeof arg === "string" || typeof arg === "number") {
114
+ return arg;
115
+ }
116
+ if (typeof arg !== "object") {
117
+ return "";
118
+ }
119
+ if (Array.isArray(arg)) {
120
+ return classNames.apply(null, arg);
121
+ }
122
+ if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
123
+ return arg.toString();
124
+ }
125
+ var classes = "";
126
+ for (var key in arg) {
127
+ if (hasOwn.call(arg, key) && arg[key]) {
128
+ classes = appendClass(classes, key);
129
+ }
130
+ }
131
+ return classes;
132
+ }
133
+ function appendClass(value, newClass) {
134
+ if (!newClass) {
135
+ return value;
136
+ }
137
+ if (value) {
138
+ return value + " " + newClass;
139
+ }
140
+ return value + newClass;
141
+ }
142
+ if (typeof module2 !== "undefined" && module2.exports) {
143
+ classNames.default = classNames;
144
+ module2.exports = classNames;
145
+ } else if (typeof define === "function" && typeof define.amd === "object" && define.amd) {
146
+ define("classnames", [], function() {
147
+ return classNames;
148
+ });
149
+ } else {
150
+ window.classNames = classNames;
151
+ }
152
+ })();
153
+ }
154
+ });
155
+
156
+ // lib/get-class-name-factory.ts
157
+ var import_classnames, getClassNameFactory, get_class_name_factory_default;
158
+ var init_get_class_name_factory = __esm({
159
+ "lib/get-class-name-factory.ts"() {
160
+ "use strict";
161
+ init_react_import();
162
+ import_classnames = __toESM(require_classnames());
163
+ getClassNameFactory = (rootClass, styles, config = { baseClass: "" }) => (options = {}) => {
164
+ if (typeof options === "string") {
165
+ const descendant = options;
166
+ const style = styles[`${rootClass}-${descendant}`];
167
+ if (style) {
168
+ return config.baseClass + styles[`${rootClass}-${descendant}`] || "";
169
+ }
170
+ return "";
171
+ } else if (typeof options === "object") {
172
+ const modifiers = options;
173
+ const prefixedModifiers = {};
174
+ for (let modifier in modifiers) {
175
+ prefixedModifiers[styles[`${rootClass}--${modifier}`]] = modifiers[modifier];
176
+ }
177
+ const c = styles[rootClass];
178
+ return config.baseClass + (0, import_classnames.default)(__spreadValues({
179
+ [c]: !!c
180
+ }, prefixedModifiers));
181
+ } else {
182
+ return config.baseClass + styles[rootClass] || "";
183
+ }
184
+ };
185
+ get_class_name_factory_default = getClassNameFactory;
186
+ }
187
+ });
188
+
189
+ // css-module:/home/runner/work/puck/puck/packages/core/components/RichTextEditor/styles.module.css/#css-module-data
190
+ var init_css_module_data = __esm({
191
+ "css-module:/home/runner/work/puck/puck/packages/core/components/RichTextEditor/styles.module.css/#css-module-data"() {
192
+ }
193
+ });
194
+
195
+ // css-module:/home/runner/work/puck/puck/packages/core/components/RichTextEditor/styles.module.css#css-module
196
+ var styles_module_default;
197
+ var init_styles_module = __esm({
198
+ "css-module:/home/runner/work/puck/puck/packages/core/components/RichTextEditor/styles.module.css#css-module"() {
199
+ "use strict";
200
+ init_react_import();
201
+ init_css_module_data();
202
+ styles_module_default = { "RichTextEditor": "_RichTextEditor_z25h4_1", "RichTextEditor--editor": "_RichTextEditor--editor_z25h4_50", "RichTextEditor--disabled": "_RichTextEditor--disabled_z25h4_107", "RichTextEditor--isActive": "_RichTextEditor--isActive_z25h4_111", "RichTextEditor-menu": "_RichTextEditor-menu_z25h4_117" };
203
+ }
204
+ });
205
+
206
+ // components/RichTextEditor/extension.ts
207
+ var import_core, import_extension_blockquote, import_extension_bold, import_extension_code, import_extension_code_block, import_extension_document, import_extension_hard_break, import_extension_heading, import_extension_horizontal_rule, import_extension_italic, import_extension_link, import_extension_list, import_extension_paragraph, import_extension_strike, import_extension_text, import_extension_text_align, import_extension_underline, defaultPuckRichTextOptions, PuckRichText;
208
+ var init_extension = __esm({
209
+ "components/RichTextEditor/extension.ts"() {
210
+ "use strict";
211
+ init_react_import();
212
+ import_core = require("@tiptap/core");
213
+ import_extension_blockquote = require("@tiptap/extension-blockquote");
214
+ import_extension_bold = require("@tiptap/extension-bold");
215
+ import_extension_code = require("@tiptap/extension-code");
216
+ import_extension_code_block = require("@tiptap/extension-code-block");
217
+ import_extension_document = require("@tiptap/extension-document");
218
+ import_extension_hard_break = require("@tiptap/extension-hard-break");
219
+ import_extension_heading = require("@tiptap/extension-heading");
220
+ import_extension_horizontal_rule = require("@tiptap/extension-horizontal-rule");
221
+ import_extension_italic = require("@tiptap/extension-italic");
222
+ import_extension_link = require("@tiptap/extension-link");
223
+ import_extension_list = require("@tiptap/extension-list");
224
+ import_extension_paragraph = require("@tiptap/extension-paragraph");
225
+ import_extension_strike = require("@tiptap/extension-strike");
226
+ import_extension_text = require("@tiptap/extension-text");
227
+ import_extension_text_align = __toESM(require("@tiptap/extension-text-align"));
228
+ import_extension_underline = require("@tiptap/extension-underline");
229
+ defaultPuckRichTextOptions = {
230
+ textAlign: {
231
+ types: ["heading", "paragraph"]
232
+ }
233
+ };
234
+ PuckRichText = import_core.Extension.create({
235
+ name: "puckRichText",
236
+ addExtensions() {
237
+ const extensions = [];
238
+ const options = __spreadValues(__spreadValues({}, this.options), defaultPuckRichTextOptions);
239
+ if (options.bold !== false) {
240
+ extensions.push(import_extension_bold.Bold.configure(options.bold));
241
+ }
242
+ if (options.blockquote !== false) {
243
+ extensions.push(import_extension_blockquote.Blockquote.configure(options.blockquote));
244
+ }
245
+ if (options.bulletList !== false) {
246
+ extensions.push(import_extension_list.BulletList.configure(options.bulletList));
247
+ }
248
+ if (options.code !== false) {
249
+ extensions.push(import_extension_code.Code.configure(options.code));
250
+ }
251
+ if (options.codeBlock !== false) {
252
+ extensions.push(import_extension_code_block.CodeBlock.configure(options.codeBlock));
253
+ }
254
+ if (options.document !== false) {
255
+ extensions.push(import_extension_document.Document.configure(options.document));
256
+ }
257
+ if (options.hardBreak !== false) {
258
+ extensions.push(import_extension_hard_break.HardBreak.configure(options.hardBreak));
259
+ }
260
+ if (options.heading !== false) {
261
+ extensions.push(import_extension_heading.Heading.configure(options.heading));
262
+ }
263
+ if (options.horizontalRule !== false) {
264
+ extensions.push(import_extension_horizontal_rule.HorizontalRule.configure(options.horizontalRule));
265
+ }
266
+ if (options.italic !== false) {
267
+ extensions.push(import_extension_italic.Italic.configure(options.italic));
268
+ }
269
+ if (options.listItem !== false) {
270
+ extensions.push(import_extension_list.ListItem.configure(options.listItem));
271
+ }
272
+ if (options.listKeymap !== false) {
273
+ extensions.push(import_extension_list.ListKeymap.configure(options == null ? void 0 : options.listKeymap));
274
+ }
275
+ if (options.link !== false) {
276
+ extensions.push(import_extension_link.Link.configure(options == null ? void 0 : options.link));
277
+ }
278
+ if (options.orderedList !== false) {
279
+ extensions.push(import_extension_list.OrderedList.configure(options.orderedList));
280
+ }
281
+ if (options.paragraph !== false) {
282
+ extensions.push(import_extension_paragraph.Paragraph.configure(options.paragraph));
283
+ }
284
+ if (options.strike !== false) {
285
+ extensions.push(import_extension_strike.Strike.configure(options.strike));
286
+ }
287
+ if (options.text !== false) {
288
+ extensions.push(import_extension_text.Text.configure(options.text));
289
+ }
290
+ if (options.textAlign !== false) {
291
+ extensions.push(import_extension_text_align.default.configure(options.textAlign));
292
+ }
293
+ if (options.underline !== false) {
294
+ extensions.push(import_extension_underline.Underline.configure(options == null ? void 0 : options.underline));
295
+ }
296
+ return extensions;
297
+ }
298
+ });
299
+ }
300
+ });
301
+
302
+ // components/RichTextEditor/components/Render.tsx
303
+ var Render_exports = {};
304
+ __export(Render_exports, {
305
+ RichTextRender: () => RichTextRender
306
+ });
307
+ function RichTextRender({
308
+ content,
309
+ field
310
+ }) {
311
+ const { tiptap = {}, options } = field;
312
+ const { extensions = [] } = tiptap;
313
+ const loadedExtensions = (0, import_react3.useMemo)(
314
+ () => [PuckRichText.configure(options), ...extensions],
315
+ [field, extensions]
316
+ );
317
+ const normalized = (0, import_react3.useMemo)(() => {
318
+ if (typeof content === "object" && (content == null ? void 0 : content.type) === "doc") {
319
+ return content;
320
+ }
321
+ if (typeof content === "string") {
322
+ const isHtml = /<\/?[a-z][\s\S]*>/i.test(content);
323
+ if (isHtml) {
324
+ return (0, import_html.generateJSON)(content, loadedExtensions);
325
+ }
326
+ return {
327
+ type: "doc",
328
+ content: [
329
+ { type: "paragraph", content: [{ type: "text", text: content }] }
330
+ ]
331
+ };
332
+ }
333
+ return { type: "doc", content: [] };
334
+ }, [content, loadedExtensions]);
335
+ const html = (0, import_react3.useMemo)(() => {
336
+ return (0, import_html.generateHTML)(normalized, loadedExtensions);
337
+ }, [normalized, loadedExtensions]);
338
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: getClassName2(), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "rich-text", dangerouslySetInnerHTML: { __html: html } }) });
339
+ }
340
+ var import_html, import_react3, import_jsx_runtime2, getClassName2;
341
+ var init_Render = __esm({
342
+ "components/RichTextEditor/components/Render.tsx"() {
343
+ "use strict";
344
+ init_react_import();
345
+ import_html = require("@tiptap/html");
346
+ import_react3 = require("react");
347
+ init_get_class_name_factory();
348
+ init_styles_module();
349
+ init_extension();
350
+ import_jsx_runtime2 = require("react/jsx-runtime");
351
+ getClassName2 = get_class_name_factory_default("RichTextEditor", styles_module_default);
352
+ }
353
+ });
354
+
79
355
  // bundle/rsc.tsx
80
356
  var rsc_exports = {};
81
357
  __export(rsc_exports, {
@@ -86,16 +362,19 @@ __export(rsc_exports, {
86
362
  walkTree: () => walkTree
87
363
  });
88
364
  module.exports = __toCommonJS(rsc_exports);
365
+ init_react_import();
89
366
 
90
- // ../tsup-config/react-import.js
91
- var import_react = __toESM(require("react"));
367
+ // components/ServerRender/index.tsx
368
+ init_react_import();
92
369
 
93
370
  // lib/root-droppable-id.ts
371
+ init_react_import();
94
372
  var rootAreaId = "root";
95
373
  var rootZone = "default-zone";
96
374
  var rootDroppableId = `${rootAreaId}:${rootZone}`;
97
375
 
98
376
  // lib/data/setup-zone.ts
377
+ init_react_import();
99
378
  var setupZone = (data, zoneKey) => {
100
379
  if (zoneKey === rootDroppableId) {
101
380
  return data;
@@ -107,10 +386,18 @@ var setupZone = (data, zoneKey) => {
107
386
  return newData;
108
387
  };
109
388
 
389
+ // lib/use-slots.tsx
390
+ init_react_import();
391
+
110
392
  // lib/field-transforms/use-field-transforms.tsx
393
+ init_react_import();
111
394
  var import_react2 = require("react");
112
395
 
396
+ // lib/data/map-fields.ts
397
+ init_react_import();
398
+
113
399
  // lib/data/default-slots.ts
400
+ init_react_import();
114
401
  var defaultSlots = (value, fields) => Object.keys(fields).reduce(
115
402
  (acc, fieldName) => fields[fieldName].type === "slot" ? __spreadValues({ [fieldName]: [] }, acc) : acc,
116
403
  value
@@ -242,12 +529,12 @@ var walkObject = ({
242
529
  }
243
530
  return flatten(newProps);
244
531
  };
245
- function mapFields(item, mappers, config, recurseSlots = false) {
532
+ function mapFields(item, mappers, config, recurseSlots = false, shouldDefaultSlots = true) {
246
533
  var _a, _b, _c, _d, _e;
247
534
  const itemType = "type" in item ? item.type : "root";
248
535
  const componentConfig = itemType === "root" ? config.root : (_a = config.components) == null ? void 0 : _a[itemType];
249
536
  const newProps = walkObject({
250
- value: defaultSlots((_b = item.props) != null ? _b : {}, (_c = componentConfig == null ? void 0 : componentConfig.fields) != null ? _c : {}),
537
+ value: shouldDefaultSlots ? defaultSlots((_b = item.props) != null ? _b : {}, (_c = componentConfig == null ? void 0 : componentConfig.fields) != null ? _c : {}) : item.props,
251
538
  fields: (_d = componentConfig == null ? void 0 : componentConfig.fields) != null ? _d : {},
252
539
  mappers,
253
540
  id: item.props ? (_e = item.props.id) != null ? _e : "root" : "root",
@@ -265,32 +552,38 @@ function mapFields(item, mappers, config, recurseSlots = false) {
265
552
  });
266
553
  }
267
554
 
555
+ // lib/field-transforms/build-mappers.ts
556
+ init_react_import();
557
+ function buildMappers(transforms, readOnly, forceReadOnly) {
558
+ return Object.keys(transforms).reduce((acc, _fieldType) => {
559
+ const fieldType = _fieldType;
560
+ return __spreadProps(__spreadValues({}, acc), {
561
+ [fieldType]: (_a) => {
562
+ var _b = _a, {
563
+ parentId
564
+ } = _b, params = __objRest(_b, [
565
+ "parentId"
566
+ ]);
567
+ const wildcardPath = params.propPath.replace(/\[\d+\]/g, "[*]");
568
+ const isReadOnly = (readOnly == null ? void 0 : readOnly[params.propPath]) || (readOnly == null ? void 0 : readOnly[wildcardPath]) || forceReadOnly || false;
569
+ const fn = transforms[fieldType];
570
+ return fn == null ? void 0 : fn(__spreadProps(__spreadValues({}, params), {
571
+ isReadOnly,
572
+ componentId: parentId
573
+ }));
574
+ }
575
+ });
576
+ }, {});
577
+ }
578
+
268
579
  // lib/field-transforms/use-field-transforms.tsx
269
580
  function useFieldTransforms(config, item, transforms, readOnly, forceReadOnly) {
270
- const mappers = (0, import_react2.useMemo)(() => {
271
- return Object.keys(transforms).reduce((acc, _fieldType) => {
272
- const fieldType = _fieldType;
273
- return __spreadProps(__spreadValues({}, acc), {
274
- [fieldType]: (_a) => {
275
- var _b = _a, {
276
- parentId
277
- } = _b, params = __objRest(_b, [
278
- "parentId"
279
- ]);
280
- const wildcardPath = params.propPath.replace(/\[\d+\]/g, "[*]");
281
- const isReadOnly = (readOnly == null ? void 0 : readOnly[params.propPath]) || (readOnly == null ? void 0 : readOnly[wildcardPath]) || forceReadOnly || false;
282
- const fn = transforms[fieldType];
283
- return fn == null ? void 0 : fn(__spreadProps(__spreadValues({}, params), {
284
- isReadOnly,
285
- componentId: parentId
286
- }));
287
- }
288
- });
289
- }, {});
290
- }, [transforms, readOnly, forceReadOnly]);
581
+ const mappers = (0, import_react2.useMemo)(
582
+ () => buildMappers(transforms, readOnly, forceReadOnly),
583
+ [transforms, readOnly, forceReadOnly]
584
+ );
291
585
  const transformedProps = (0, import_react2.useMemo)(() => {
292
- const mapped = mapFields(item, mappers, config).props;
293
- return mapped;
586
+ return mapFields(item, mappers, config).props;
294
587
  }, [config, item, mappers]);
295
588
  const mergedProps = (0, import_react2.useMemo)(
296
589
  () => __spreadValues(__spreadValues({}, item.props), transformedProps),
@@ -300,6 +593,7 @@ function useFieldTransforms(config, item, transforms, readOnly, forceReadOnly) {
300
593
  }
301
594
 
302
595
  // lib/field-transforms/default-transforms/slot-transform.tsx
596
+ init_react_import();
303
597
  var getSlotTransform = (renderSlotEdit, renderSlotRender = renderSlotEdit) => ({
304
598
  slot: ({ value: content, propName, field, isReadOnly }) => {
305
599
  const render = isReadOnly ? renderSlotRender : renderSlotEdit;
@@ -326,33 +620,92 @@ function useSlots(config, item, renderSlotEdit, renderSlotRender = renderSlotEdi
326
620
  }
327
621
 
328
622
  // components/SlotRender/server.tsx
329
- var import_react3 = require("react");
623
+ init_react_import();
624
+ var import_react5 = require("react");
625
+
626
+ // components/RichTextEditor/lib/use-richtext-props.tsx
627
+ init_react_import();
628
+ var import_react4 = require("react");
629
+
630
+ // components/RichTextEditor/components/RenderFallback.tsx
631
+ init_react_import();
632
+ init_get_class_name_factory();
633
+ init_styles_module();
330
634
  var import_jsx_runtime = require("react/jsx-runtime");
331
- var SlotRenderPure = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SlotRender, __spreadValues({}, props));
635
+ var getClassName = get_class_name_factory_default("RichTextEditor", styles_module_default);
636
+ function RichTextRenderFallback({ content }) {
637
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: getClassName(), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
638
+ "div",
639
+ {
640
+ className: "rich-text",
641
+ dangerouslySetInnerHTML: { __html: content }
642
+ }
643
+ ) });
644
+ }
645
+
646
+ // components/RichTextEditor/lib/use-richtext-props.tsx
647
+ var import_jsx_runtime3 = require("react/jsx-runtime");
648
+ function useRichtextProps(fields, props) {
649
+ const findAllRichtextKeys = (fields2) => {
650
+ if (!fields2) return [];
651
+ const result = [];
652
+ for (const [key, field] of Object.entries(fields2)) {
653
+ if (field.type === "richtext") {
654
+ result.push(key);
655
+ }
656
+ }
657
+ return result;
658
+ };
659
+ const richtextKeys = (0, import_react4.useMemo)(() => findAllRichtextKeys(fields), [fields]);
660
+ const richtextProps = (0, import_react4.useMemo)(() => {
661
+ if (!(richtextKeys == null ? void 0 : richtextKeys.length)) return {};
662
+ const RichTextRender2 = (0, import_react4.lazy)(
663
+ () => Promise.resolve().then(() => (init_Render(), Render_exports)).then((m) => ({
664
+ default: m.RichTextRender
665
+ }))
666
+ );
667
+ return richtextKeys.reduce((acc, key) => {
668
+ acc[key] = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react4.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(RichTextRenderFallback, { content: props[key] }), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
669
+ RichTextRender2,
670
+ {
671
+ content: props[key],
672
+ field: fields[key]
673
+ }
674
+ ) });
675
+ return acc;
676
+ }, {});
677
+ }, [richtextKeys, props, fields]);
678
+ return richtextProps;
679
+ }
680
+
681
+ // components/SlotRender/server.tsx
682
+ var import_jsx_runtime4 = require("react/jsx-runtime");
683
+ var SlotRenderPure = (props) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SlotRender, __spreadValues({}, props));
332
684
  var Item = ({
333
685
  config,
334
686
  item,
335
687
  metadata
336
688
  }) => {
337
689
  const Component = config.components[item.type];
338
- const props = useSlots(config, item, (slotProps) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SlotRenderPure, __spreadProps(__spreadValues({}, slotProps), { config, metadata })));
339
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
690
+ const props = useSlots(config, item, (slotProps) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SlotRenderPure, __spreadProps(__spreadValues({}, slotProps), { config, metadata })));
691
+ const richtextProps = useRichtextProps(Component.fields, props);
692
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
340
693
  Component.render,
341
- __spreadProps(__spreadValues({}, props), {
694
+ __spreadProps(__spreadValues(__spreadValues({}, props), richtextProps), {
342
695
  puck: __spreadProps(__spreadValues({}, props.puck), {
343
696
  metadata: metadata || {}
344
697
  })
345
698
  })
346
699
  );
347
700
  };
348
- var SlotRender = (0, import_react3.forwardRef)(
701
+ var SlotRender = (0, import_react5.forwardRef)(
349
702
  function SlotRenderInternal({ className, style, content, config, metadata, as }, ref) {
350
703
  const El = as != null ? as : "div";
351
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(El, { className, style, ref, children: content.map((item) => {
704
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(El, { className, style, ref, children: content.map((item) => {
352
705
  if (!config.components[item.type]) {
353
706
  return null;
354
707
  }
355
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
708
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
356
709
  Item,
357
710
  {
358
711
  config,
@@ -366,7 +719,7 @@ var SlotRender = (0, import_react3.forwardRef)(
366
719
  );
367
720
 
368
721
  // components/ServerRender/index.tsx
369
- var import_jsx_runtime2 = require("react/jsx-runtime");
722
+ var import_jsx_runtime5 = require("react/jsx-runtime");
370
723
  function DropZoneRender({
371
724
  zone,
372
725
  data,
@@ -383,11 +736,11 @@ function DropZoneRender({
383
736
  zoneCompound = `${areaId}:${zone}`;
384
737
  content = setupZone(data, zoneCompound).zones[zoneCompound];
385
738
  }
386
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: content.map((item) => {
739
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: content.map((item) => {
387
740
  const Component = config.components[item.type];
388
741
  const props = __spreadProps(__spreadValues({}, item.props), {
389
742
  puck: {
390
- renderDropZone: ({ zone: zone2 }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
743
+ renderDropZone: ({ zone: zone2 }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
391
744
  DropZoneRender,
392
745
  {
393
746
  zone: zone2,
@@ -403,9 +756,9 @@ function DropZoneRender({
403
756
  }
404
757
  });
405
758
  const renderItem = __spreadProps(__spreadValues({}, item), { props });
406
- const propsWithSlots = useSlots(config, renderItem, (props2) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotRenderPure, __spreadProps(__spreadValues({}, props2), { config, metadata })));
759
+ const propsWithSlots = useSlots(config, renderItem, (props2) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SlotRenderPure, __spreadProps(__spreadValues({}, props2), { config, metadata })));
407
760
  if (Component) {
408
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Component.render, __spreadValues({}, propsWithSlots), renderItem.props.id);
761
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Component.render, __spreadValues({}, propsWithSlots), renderItem.props.id);
409
762
  }
410
763
  return null;
411
764
  }) });
@@ -415,12 +768,12 @@ function Render({
415
768
  data,
416
769
  metadata = {}
417
770
  }) {
418
- var _a;
771
+ var _a, _b;
419
772
  const rootProps = "props" in data.root ? data.root.props : data.root;
420
773
  const title = rootProps.title || "";
421
774
  const props = __spreadProps(__spreadValues({}, rootProps), {
422
775
  puck: {
423
- renderDropZone: ({ zone }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
776
+ renderDropZone: ({ zone }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
424
777
  DropZoneRender,
425
778
  {
426
779
  zone,
@@ -437,9 +790,10 @@ function Render({
437
790
  editMode: false,
438
791
  id: "puck-root"
439
792
  });
440
- const propsWithSlots = useSlots(config, { type: "root", props }, (props2) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotRenderPure, __spreadProps(__spreadValues({}, props2), { config, metadata })));
441
- if ((_a = config.root) == null ? void 0 : _a.render) {
442
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(config.root.render, __spreadProps(__spreadValues({}, propsWithSlots), { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
793
+ const propsWithSlots = useSlots(config, { type: "root", props }, (props2) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SlotRenderPure, __spreadProps(__spreadValues({}, props2), { config, metadata })));
794
+ const richtextProps = useRichtextProps((_a = config.root) == null ? void 0 : _a.fields, props);
795
+ if ((_b = config.root) == null ? void 0 : _b.render) {
796
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(config.root.render, __spreadProps(__spreadValues(__spreadValues({}, propsWithSlots), richtextProps), { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
443
797
  DropZoneRender,
444
798
  {
445
799
  config,
@@ -449,7 +803,7 @@ function Render({
449
803
  }
450
804
  ) }));
451
805
  }
452
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
806
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
453
807
  DropZoneRender,
454
808
  {
455
809
  config,
@@ -460,7 +814,14 @@ function Render({
460
814
  );
461
815
  }
462
816
 
817
+ // lib/resolve-all-data.ts
818
+ init_react_import();
819
+
820
+ // lib/resolve-component-data.ts
821
+ init_react_import();
822
+
463
823
  // lib/get-changed.ts
824
+ init_react_import();
464
825
  var import_fast_equals = require("fast-equals");
465
826
  var getChanged = (newItem, oldItem) => {
466
827
  return newItem ? Object.keys(newItem.props || {}).reduce((acc, item) => {
@@ -537,12 +898,14 @@ var resolveComponentData = (_0, _1, ..._2) => __async(null, [_0, _1, ..._2], fun
537
898
  });
538
899
 
539
900
  // lib/data/default-data.ts
901
+ init_react_import();
540
902
  var defaultData = (data) => __spreadProps(__spreadValues({}, data), {
541
903
  root: data.root || {},
542
904
  content: data.content || []
543
905
  });
544
906
 
545
907
  // lib/data/to-component.ts
908
+ init_react_import();
546
909
  var toComponent = (item) => {
547
910
  return "type" in item ? item : __spreadProps(__spreadValues({}, item), {
548
911
  props: __spreadProps(__spreadValues({}, item.props), { id: "root" }),
@@ -600,7 +963,11 @@ function resolveAllData(_0, _1) {
600
963
  });
601
964
  }
602
965
 
966
+ // lib/transform-props.ts
967
+ init_react_import();
968
+
603
969
  // lib/data/walk-tree.ts
970
+ init_react_import();
604
971
  function walkTree(data, config, callbackFn) {
605
972
  var _a, _b;
606
973
  const walkItem = (item) => {
@@ -668,11 +1035,19 @@ function transformProps(data, propTransforms, config = { components: {} }) {
668
1035
  return updatedData;
669
1036
  }
670
1037
 
1038
+ // lib/migrate.ts
1039
+ init_react_import();
1040
+
1041
+ // store/default-app-state.ts
1042
+ init_react_import();
1043
+
671
1044
  // components/ViewportControls/default-viewports.ts
1045
+ init_react_import();
672
1046
  var defaultViewports = [
673
1047
  { width: 360, height: "auto", icon: "Smartphone", label: "Small" },
674
1048
  { width: 768, height: "auto", icon: "Tablet", label: "Medium" },
675
- { width: 1280, height: "auto", icon: "Monitor", label: "Large" }
1049
+ { width: 1280, height: "auto", icon: "Monitor", label: "Large" },
1050
+ { width: "100%", height: "auto", icon: "FullWidth", label: "Full-width" }
676
1051
  ];
677
1052
 
678
1053
  // store/default-app-state.ts
@@ -694,7 +1069,8 @@ var defaultAppState = {
694
1069
  options: [],
695
1070
  controlsVisible: true
696
1071
  },
697
- field: { focus: null }
1072
+ field: { focus: null },
1073
+ plugin: { current: null }
698
1074
  },
699
1075
  indexes: {
700
1076
  nodes: {},
@@ -702,7 +1078,14 @@ var defaultAppState = {
702
1078
  }
703
1079
  };
704
1080
 
1081
+ // lib/data/walk-app-state.ts
1082
+ init_react_import();
1083
+
1084
+ // lib/data/for-related-zones.ts
1085
+ init_react_import();
1086
+
705
1087
  // lib/get-zone-id.ts
1088
+ init_react_import();
706
1089
  var getZoneId = (zoneCompound) => {
707
1090
  if (!zoneCompound) {
708
1091
  return [];
@@ -724,18 +1107,39 @@ function forRelatedZones(item, data, cb, path = []) {
724
1107
  }
725
1108
 
726
1109
  // lib/data/flatten-node.ts
1110
+ init_react_import();
727
1111
  var import_flat = __toESM(require("flat"));
728
1112
 
729
1113
  // lib/data/strip-slots.ts
1114
+ init_react_import();
730
1115
  var stripSlots = (data, config) => {
731
1116
  return mapFields(data, { slot: () => null }, config);
732
1117
  };
733
1118
 
734
1119
  // lib/data/flatten-node.ts
735
1120
  var { flatten: flatten2, unflatten } = import_flat.default;
1121
+ function isEmptyArrayOrObject(val) {
1122
+ if (Array.isArray(val)) {
1123
+ return val.length === 0;
1124
+ }
1125
+ if (val != null && Object.prototype.toString.call(val) === "[object Object]") {
1126
+ return Object.keys(val).length === 0;
1127
+ }
1128
+ return false;
1129
+ }
1130
+ function stripEmptyObjects(props) {
1131
+ const result = {};
1132
+ for (const key in props) {
1133
+ if (!Object.prototype.hasOwnProperty.call(props, key)) continue;
1134
+ const val = props[key];
1135
+ if (isEmptyArrayOrObject(val)) continue;
1136
+ result[key] = val;
1137
+ }
1138
+ return result;
1139
+ }
736
1140
  var flattenNode = (node, config) => {
737
1141
  return __spreadProps(__spreadValues({}, node), {
738
- props: flatten2(stripSlots(node, config).props)
1142
+ props: stripEmptyObjects(flatten2(stripSlots(node, config).props))
739
1143
  });
740
1144
  };
741
1145
 
@@ -994,3 +1398,12 @@ function migrate(data, config, migrationOptions) {
994
1398
  transformProps,
995
1399
  walkTree
996
1400
  });
1401
+ /*! Bundled license information:
1402
+
1403
+ classnames/index.js:
1404
+ (*!
1405
+ Copyright (c) 2018 Jed Watson.
1406
+ Licensed under the MIT License (MIT), see
1407
+ http://jedwatson.github.io/classnames
1408
+ *)
1409
+ */