@measured/puck 0.21.0-canary.a5160e5d → 0.21.0-canary.a7a65997

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-F2LSS6SE.css +403 -0
  2. package/dist/Editor-HG76DBFU.mjs +204 -0
  3. package/dist/Render-OFE6QLI2.mjs +55 -0
  4. package/dist/Render-QEMDIDQC.css +101 -0
  5. package/dist/{walk-tree-DkTSFbz_.d.mts → actions-tsxxcX1z.d.mts} +281 -82
  6. package/dist/{walk-tree-DkTSFbz_.d.ts → actions-tsxxcX1z.d.ts} +281 -82
  7. package/dist/chunk-23IZFPL7.mjs +528 -0
  8. package/dist/chunk-45I5SDOI.mjs +134 -0
  9. package/dist/chunk-5ZZVX2Z3.mjs +63 -0
  10. package/dist/chunk-B7REOAA7.mjs +435 -0
  11. package/dist/chunk-BXQQARCR.mjs +708 -0
  12. package/dist/chunk-CSSRLPHM.mjs +11 -0
  13. package/dist/chunk-D2SRL6YA.mjs +1807 -0
  14. package/dist/chunk-IQKX6A5D.mjs +429 -0
  15. package/dist/chunk-LJEGWHDD.mjs +53 -0
  16. package/dist/chunk-LR6HIXPR.mjs +111 -0
  17. package/dist/chunk-M6W7YEVX.mjs +95 -0
  18. package/dist/{chunk-LAV6OYHN.mjs → chunk-Q6MNES6D.mjs} +6893 -8161
  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 +1031 -385
  27. package/dist/index.d.mts +116 -114
  28. package/dist/index.d.ts +116 -114
  29. package/dist/index.js +9540 -5644
  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 +1120 -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 +9593 -5694
  43. package/dist/no-external.mjs +36 -9
  44. package/dist/rsc.css +101 -0
  45. package/dist/rsc.d.mts +17 -2
  46. package/dist/rsc.d.ts +17 -2
  47. package/dist/rsc.js +472 -58
  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-VBJEDLUM.mjs +0 -965
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_1elol_1", "RichTextEditor--editor": "_RichTextEditor--editor_1elol_50", "RichTextEditor--disabled": "_RichTextEditor--disabled_1elol_106", "RichTextEditor--isActive": "_RichTextEditor--isActive_1elol_110", "RichTextEditor-menu": "_RichTextEditor-menu_1elol_116" };
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,32 +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)(
349
- function SlotRenderInternal({ className, style, content, config, metadata }, ref) {
350
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className, style, ref, children: content.map((item) => {
701
+ var SlotRender = (0, import_react5.forwardRef)(
702
+ function SlotRenderInternal({ className, style, content, config, metadata, as }, ref) {
703
+ const El = as != null ? as : "div";
704
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(El, { className, style, ref, children: content.map((item) => {
351
705
  if (!config.components[item.type]) {
352
706
  return null;
353
707
  }
354
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
708
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
355
709
  Item,
356
710
  {
357
711
  config,
@@ -365,7 +719,7 @@ var SlotRender = (0, import_react3.forwardRef)(
365
719
  );
366
720
 
367
721
  // components/ServerRender/index.tsx
368
- var import_jsx_runtime2 = require("react/jsx-runtime");
722
+ var import_jsx_runtime5 = require("react/jsx-runtime");
369
723
  function DropZoneRender({
370
724
  zone,
371
725
  data,
@@ -382,11 +736,11 @@ function DropZoneRender({
382
736
  zoneCompound = `${areaId}:${zone}`;
383
737
  content = setupZone(data, zoneCompound).zones[zoneCompound];
384
738
  }
385
- 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) => {
386
740
  const Component = config.components[item.type];
387
741
  const props = __spreadProps(__spreadValues({}, item.props), {
388
742
  puck: {
389
- renderDropZone: ({ zone: zone2 }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
743
+ renderDropZone: ({ zone: zone2 }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
390
744
  DropZoneRender,
391
745
  {
392
746
  zone: zone2,
@@ -402,9 +756,9 @@ function DropZoneRender({
402
756
  }
403
757
  });
404
758
  const renderItem = __spreadProps(__spreadValues({}, item), { props });
405
- 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 })));
406
760
  if (Component) {
407
- 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);
408
762
  }
409
763
  return null;
410
764
  }) });
@@ -414,12 +768,12 @@ function Render({
414
768
  data,
415
769
  metadata = {}
416
770
  }) {
417
- var _a;
771
+ var _a, _b;
418
772
  const rootProps = "props" in data.root ? data.root.props : data.root;
419
773
  const title = rootProps.title || "";
420
774
  const props = __spreadProps(__spreadValues({}, rootProps), {
421
775
  puck: {
422
- renderDropZone: ({ zone }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
776
+ renderDropZone: ({ zone }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
423
777
  DropZoneRender,
424
778
  {
425
779
  zone,
@@ -436,9 +790,10 @@ function Render({
436
790
  editMode: false,
437
791
  id: "puck-root"
438
792
  });
439
- const propsWithSlots = useSlots(config, { type: "root", props }, (props2) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotRenderPure, __spreadProps(__spreadValues({}, props2), { config, metadata })));
440
- if ((_a = config.root) == null ? void 0 : _a.render) {
441
- 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)(
442
797
  DropZoneRender,
443
798
  {
444
799
  config,
@@ -448,7 +803,7 @@ function Render({
448
803
  }
449
804
  ) }));
450
805
  }
451
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
806
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
452
807
  DropZoneRender,
453
808
  {
454
809
  config,
@@ -459,7 +814,14 @@ function Render({
459
814
  );
460
815
  }
461
816
 
817
+ // lib/resolve-all-data.ts
818
+ init_react_import();
819
+
820
+ // lib/resolve-component-data.ts
821
+ init_react_import();
822
+
462
823
  // lib/get-changed.ts
824
+ init_react_import();
463
825
  var import_fast_equals = require("fast-equals");
464
826
  var getChanged = (newItem, oldItem) => {
465
827
  return newItem ? Object.keys(newItem.props || {}).reduce((acc, item) => {
@@ -474,7 +836,7 @@ var getChanged = (newItem, oldItem) => {
474
836
  // lib/resolve-component-data.ts
475
837
  var import_fast_equals2 = require("fast-equals");
476
838
  var cache = { lastChange: {} };
477
- var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], function* (item, config, metadata = {}, onResolveStart, onResolveEnd, trigger = "replace") {
839
+ var resolveComponentData = (_0, _1, ..._2) => __async(null, [_0, _1, ..._2], function* (item, config, metadata = {}, onResolveStart, onResolveEnd, trigger = "replace") {
478
840
  const configForItem = "type" in item && item.type !== "root" ? config.components[item.type] : config.root;
479
841
  const resolvedItem = __spreadValues({}, item);
480
842
  const shouldRunResolver = (configForItem == null ? void 0 : configForItem.resolveData) && item.props;
@@ -502,11 +864,11 @@ var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], f
502
864
  let itemWithResolvedChildren = yield mapFields(
503
865
  resolvedItem,
504
866
  {
505
- slot: (_02) => __async(void 0, [_02], function* ({ value }) {
867
+ slot: (_02) => __async(null, [_02], function* ({ value }) {
506
868
  const content = value;
507
869
  return yield Promise.all(
508
870
  content.map(
509
- (childItem) => __async(void 0, null, function* () {
871
+ (childItem) => __async(null, null, function* () {
510
872
  return (yield resolveComponentData(
511
873
  childItem,
512
874
  config,
@@ -536,12 +898,14 @@ var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], f
536
898
  });
537
899
 
538
900
  // lib/data/default-data.ts
901
+ init_react_import();
539
902
  var defaultData = (data) => __spreadProps(__spreadValues({}, data), {
540
903
  root: data.root || {},
541
904
  content: data.content || []
542
905
  });
543
906
 
544
907
  // lib/data/to-component.ts
908
+ init_react_import();
545
909
  var toComponent = (item) => {
546
910
  return "type" in item ? item : __spreadProps(__spreadValues({}, item), {
547
911
  props: __spreadProps(__spreadValues({}, item.props), { id: "root" }),
@@ -554,7 +918,7 @@ function resolveAllData(_0, _1) {
554
918
  return __async(this, arguments, function* (data, config, metadata = {}, onResolveStart, onResolveEnd) {
555
919
  var _a;
556
920
  const defaultedData = defaultData(data);
557
- const resolveNode = (_node) => __async(this, null, function* () {
921
+ const resolveNode = (_node) => __async(null, null, function* () {
558
922
  const node = toComponent(_node);
559
923
  onResolveStart == null ? void 0 : onResolveStart(node);
560
924
  const resolved = (yield resolveComponentData(
@@ -575,13 +939,13 @@ function resolveAllData(_0, _1) {
575
939
  onResolveEnd == null ? void 0 : onResolveEnd(toComponent(resolvedDeep));
576
940
  return resolvedDeep;
577
941
  });
578
- const processContent = (content) => __async(this, null, function* () {
942
+ const processContent = (content) => __async(null, null, function* () {
579
943
  return Promise.all(content.map(resolveNode));
580
944
  });
581
- const processZones = () => __async(this, null, function* () {
945
+ const processZones = () => __async(null, null, function* () {
582
946
  var _a2;
583
947
  const zones = (_a2 = data.zones) != null ? _a2 : {};
584
- Object.entries(zones).forEach((_02) => __async(this, [_02], function* ([zoneKey, content]) {
948
+ Object.entries(zones).forEach((_02) => __async(null, [_02], function* ([zoneKey, content]) {
585
949
  zones[zoneKey] = yield Promise.all(content.map(resolveNode));
586
950
  }));
587
951
  return zones;
@@ -591,7 +955,7 @@ function resolveAllData(_0, _1) {
591
955
  content: yield processContent(defaultedData.content),
592
956
  zones: yield processZones()
593
957
  };
594
- Object.keys((_a = defaultedData.zones) != null ? _a : {}).forEach((zoneKey) => __async(this, null, function* () {
958
+ Object.keys((_a = defaultedData.zones) != null ? _a : {}).forEach((zoneKey) => __async(null, null, function* () {
595
959
  const content = defaultedData.zones[zoneKey];
596
960
  dynamic.zones[zoneKey] = yield processContent(content);
597
961
  }), {});
@@ -599,7 +963,11 @@ function resolveAllData(_0, _1) {
599
963
  });
600
964
  }
601
965
 
966
+ // lib/transform-props.ts
967
+ init_react_import();
968
+
602
969
  // lib/data/walk-tree.ts
970
+ init_react_import();
603
971
  function walkTree(data, config, callbackFn) {
604
972
  var _a, _b;
605
973
  const walkItem = (item) => {
@@ -667,11 +1035,19 @@ function transformProps(data, propTransforms, config = { components: {} }) {
667
1035
  return updatedData;
668
1036
  }
669
1037
 
1038
+ // lib/migrate.ts
1039
+ init_react_import();
1040
+
1041
+ // store/default-app-state.ts
1042
+ init_react_import();
1043
+
670
1044
  // components/ViewportControls/default-viewports.ts
1045
+ init_react_import();
671
1046
  var defaultViewports = [
672
1047
  { width: 360, height: "auto", icon: "Smartphone", label: "Small" },
673
1048
  { width: 768, height: "auto", icon: "Tablet", label: "Medium" },
674
- { 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" }
675
1051
  ];
676
1052
 
677
1053
  // store/default-app-state.ts
@@ -693,7 +1069,8 @@ var defaultAppState = {
693
1069
  options: [],
694
1070
  controlsVisible: true
695
1071
  },
696
- field: { focus: null }
1072
+ field: { focus: null },
1073
+ plugin: { current: null }
697
1074
  },
698
1075
  indexes: {
699
1076
  nodes: {},
@@ -701,7 +1078,14 @@ var defaultAppState = {
701
1078
  }
702
1079
  };
703
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
+
704
1087
  // lib/get-zone-id.ts
1088
+ init_react_import();
705
1089
  var getZoneId = (zoneCompound) => {
706
1090
  if (!zoneCompound) {
707
1091
  return [];
@@ -723,18 +1107,39 @@ function forRelatedZones(item, data, cb, path = []) {
723
1107
  }
724
1108
 
725
1109
  // lib/data/flatten-node.ts
1110
+ init_react_import();
726
1111
  var import_flat = __toESM(require("flat"));
727
1112
 
728
1113
  // lib/data/strip-slots.ts
1114
+ init_react_import();
729
1115
  var stripSlots = (data, config) => {
730
1116
  return mapFields(data, { slot: () => null }, config);
731
1117
  };
732
1118
 
733
1119
  // lib/data/flatten-node.ts
734
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
+ }
735
1140
  var flattenNode = (node, config) => {
736
1141
  return __spreadProps(__spreadValues({}, node), {
737
- props: flatten2(stripSlots(node, config).props)
1142
+ props: stripEmptyObjects(flatten2(stripSlots(node, config).props))
738
1143
  });
739
1144
  };
740
1145
 
@@ -993,3 +1398,12 @@ function migrate(data, config, migrationOptions) {
993
1398
  transformProps,
994
1399
  walkTree
995
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
+ */