@measured/puck 0.21.0-canary.bd7b613d → 0.21.0-canary.be633f20

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-Cvtjzg9C.d.mts → actions-tsxxcX1z.d.mts} +265 -75
  6. package/dist/{walk-tree-Cvtjzg9C.d.ts → actions-tsxxcX1z.d.ts} +265 -75
  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-DBHXESEC.mjs → chunk-CQUAWHOK.mjs} +5908 -7735
  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 +403 -133
  27. package/dist/index.d.mts +106 -115
  28. package/dist/index.d.ts +106 -115
  29. package/dist/index.js +6859 -3525
  30. package/dist/index.mjs +28 -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 +550 -276
  40. package/dist/no-external.d.mts +19 -2
  41. package/dist/no-external.d.ts +19 -2
  42. package/dist/no-external.js +6860 -3523
  43. package/dist/no-external.mjs +30 -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 +486 -79
  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-FPQ7BWRD.mjs +0 -971
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
@@ -130,32 +417,27 @@ var walkField = ({
130
417
  config,
131
418
  recurseSlots = false
132
419
  }) => {
133
- var _a, _b, _c, _d;
420
+ var _a, _b, _c;
134
421
  const fieldType = (_a = fields[propKey]) == null ? void 0 : _a.type;
135
422
  const map = mappers[fieldType];
136
423
  if (map && fieldType === "slot") {
137
424
  const content = value || [];
138
- let mappedContent = content;
139
- if (recurseSlots) {
140
- for (let i = 0; i < content.length; i++) {
141
- const el = content[i];
142
- const componentConfig = config.components[el.type];
143
- if (!componentConfig) {
144
- continue;
145
- }
146
- const fields2 = (_b = componentConfig.fields) != null ? _b : {};
147
- mappedContent.push(
148
- walkField({
149
- value: __spreadProps(__spreadValues({}, el), { props: defaultSlots(el.props, fields2) }),
150
- fields: fields2,
151
- mappers,
152
- id: el.props.id,
153
- config,
154
- recurseSlots
155
- })
156
- );
425
+ const mappedContent = recurseSlots ? content.map((el) => {
426
+ var _a2;
427
+ const componentConfig = config.components[el.type];
428
+ if (!componentConfig) {
429
+ throw new Error(`Could not find component config for ${el.type}`);
157
430
  }
158
- }
431
+ const fields2 = (_a2 = componentConfig.fields) != null ? _a2 : {};
432
+ return walkField({
433
+ value: __spreadProps(__spreadValues({}, el), { props: defaultSlots(el.props, fields2) }),
434
+ fields: fields2,
435
+ mappers,
436
+ id: el.props.id,
437
+ config,
438
+ recurseSlots
439
+ });
440
+ }) : content;
159
441
  if (containsPromise(mappedContent)) {
160
442
  return Promise.all(mappedContent);
161
443
  }
@@ -177,7 +459,7 @@ var walkField = ({
177
459
  }
178
460
  if (value && typeof value === "object") {
179
461
  if (Array.isArray(value)) {
180
- const arrayFields = ((_c = fields[propKey]) == null ? void 0 : _c.type) === "array" ? fields[propKey].arrayFields : null;
462
+ const arrayFields = ((_b = fields[propKey]) == null ? void 0 : _b.type) === "array" ? fields[propKey].arrayFields : null;
181
463
  if (!arrayFields) return value;
182
464
  const newValue = value.map(
183
465
  (el, idx) => walkField({
@@ -198,7 +480,7 @@ var walkField = ({
198
480
  } else if ("$$typeof" in value) {
199
481
  return value;
200
482
  } else {
201
- const objectFields = ((_d = fields[propKey]) == null ? void 0 : _d.type) === "object" ? fields[propKey].objectFields : fields;
483
+ const objectFields = ((_c = fields[propKey]) == null ? void 0 : _c.type) === "object" ? fields[propKey].objectFields : fields;
202
484
  return walkObject({
203
485
  value,
204
486
  fields: objectFields,
@@ -247,12 +529,12 @@ var walkObject = ({
247
529
  }
248
530
  return flatten(newProps);
249
531
  };
250
- function mapFields(item, mappers, config, recurseSlots = false) {
532
+ function mapFields(item, mappers, config, recurseSlots = false, shouldDefaultSlots = true) {
251
533
  var _a, _b, _c, _d, _e;
252
534
  const itemType = "type" in item ? item.type : "root";
253
535
  const componentConfig = itemType === "root" ? config.root : (_a = config.components) == null ? void 0 : _a[itemType];
254
536
  const newProps = walkObject({
255
- 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,
256
538
  fields: (_d = componentConfig == null ? void 0 : componentConfig.fields) != null ? _d : {},
257
539
  mappers,
258
540
  id: item.props ? (_e = item.props.id) != null ? _e : "root" : "root",
@@ -270,32 +552,38 @@ function mapFields(item, mappers, config, recurseSlots = false) {
270
552
  });
271
553
  }
272
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
+
273
579
  // lib/field-transforms/use-field-transforms.tsx
274
580
  function useFieldTransforms(config, item, transforms, readOnly, forceReadOnly) {
275
- const mappers = (0, import_react2.useMemo)(() => {
276
- return Object.keys(transforms).reduce((acc, _fieldType) => {
277
- const fieldType = _fieldType;
278
- return __spreadProps(__spreadValues({}, acc), {
279
- [fieldType]: (_a) => {
280
- var _b = _a, {
281
- parentId
282
- } = _b, params = __objRest(_b, [
283
- "parentId"
284
- ]);
285
- const wildcardPath = params.propPath.replace(/\[\d+\]/g, "[*]");
286
- const isReadOnly = (readOnly == null ? void 0 : readOnly[params.propPath]) || (readOnly == null ? void 0 : readOnly[wildcardPath]) || forceReadOnly || false;
287
- const fn = transforms[fieldType];
288
- return fn == null ? void 0 : fn(__spreadProps(__spreadValues({}, params), {
289
- isReadOnly,
290
- componentId: parentId
291
- }));
292
- }
293
- });
294
- }, {});
295
- }, [transforms, readOnly, forceReadOnly]);
581
+ const mappers = (0, import_react2.useMemo)(
582
+ () => buildMappers(transforms, readOnly, forceReadOnly),
583
+ [transforms, readOnly, forceReadOnly]
584
+ );
296
585
  const transformedProps = (0, import_react2.useMemo)(() => {
297
- const mapped = mapFields(item, mappers, config).props;
298
- return mapped;
586
+ return mapFields(item, mappers, config).props;
299
587
  }, [config, item, mappers]);
300
588
  const mergedProps = (0, import_react2.useMemo)(
301
589
  () => __spreadValues(__spreadValues({}, item.props), transformedProps),
@@ -305,6 +593,7 @@ function useFieldTransforms(config, item, transforms, readOnly, forceReadOnly) {
305
593
  }
306
594
 
307
595
  // lib/field-transforms/default-transforms/slot-transform.tsx
596
+ init_react_import();
308
597
  var getSlotTransform = (renderSlotEdit, renderSlotRender = renderSlotEdit) => ({
309
598
  slot: ({ value: content, propName, field, isReadOnly }) => {
310
599
  const render = isReadOnly ? renderSlotRender : renderSlotEdit;
@@ -331,32 +620,92 @@ function useSlots(config, item, renderSlotEdit, renderSlotRender = renderSlotEdi
331
620
  }
332
621
 
333
622
  // components/SlotRender/server.tsx
334
- 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();
335
634
  var import_jsx_runtime = require("react/jsx-runtime");
336
- 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));
337
684
  var Item = ({
338
685
  config,
339
686
  item,
340
687
  metadata
341
688
  }) => {
342
689
  const Component = config.components[item.type];
343
- const props = useSlots(config, item, (slotProps) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SlotRenderPure, __spreadProps(__spreadValues({}, slotProps), { config, metadata })));
344
- 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)(
345
693
  Component.render,
346
- __spreadProps(__spreadValues({}, props), {
694
+ __spreadProps(__spreadValues(__spreadValues({}, props), richtextProps), {
347
695
  puck: __spreadProps(__spreadValues({}, props.puck), {
348
696
  metadata: metadata || {}
349
697
  })
350
698
  })
351
699
  );
352
700
  };
353
- var SlotRender = (0, import_react3.forwardRef)(
354
- function SlotRenderInternal({ className, style, content, config, metadata }, ref) {
355
- 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) => {
356
705
  if (!config.components[item.type]) {
357
706
  return null;
358
707
  }
359
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
708
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
360
709
  Item,
361
710
  {
362
711
  config,
@@ -370,7 +719,7 @@ var SlotRender = (0, import_react3.forwardRef)(
370
719
  );
371
720
 
372
721
  // components/ServerRender/index.tsx
373
- var import_jsx_runtime2 = require("react/jsx-runtime");
722
+ var import_jsx_runtime5 = require("react/jsx-runtime");
374
723
  function DropZoneRender({
375
724
  zone,
376
725
  data,
@@ -387,11 +736,11 @@ function DropZoneRender({
387
736
  zoneCompound = `${areaId}:${zone}`;
388
737
  content = setupZone(data, zoneCompound).zones[zoneCompound];
389
738
  }
390
- 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) => {
391
740
  const Component = config.components[item.type];
392
741
  const props = __spreadProps(__spreadValues({}, item.props), {
393
742
  puck: {
394
- renderDropZone: ({ zone: zone2 }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
743
+ renderDropZone: ({ zone: zone2 }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
395
744
  DropZoneRender,
396
745
  {
397
746
  zone: zone2,
@@ -407,9 +756,9 @@ function DropZoneRender({
407
756
  }
408
757
  });
409
758
  const renderItem = __spreadProps(__spreadValues({}, item), { props });
410
- 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 })));
411
760
  if (Component) {
412
- 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);
413
762
  }
414
763
  return null;
415
764
  }) });
@@ -419,12 +768,12 @@ function Render({
419
768
  data,
420
769
  metadata = {}
421
770
  }) {
422
- var _a;
771
+ var _a, _b;
423
772
  const rootProps = "props" in data.root ? data.root.props : data.root;
424
773
  const title = rootProps.title || "";
425
774
  const props = __spreadProps(__spreadValues({}, rootProps), {
426
775
  puck: {
427
- renderDropZone: ({ zone }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
776
+ renderDropZone: ({ zone }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
428
777
  DropZoneRender,
429
778
  {
430
779
  zone,
@@ -441,9 +790,10 @@ function Render({
441
790
  editMode: false,
442
791
  id: "puck-root"
443
792
  });
444
- const propsWithSlots = useSlots(config, { type: "root", props }, (props2) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotRenderPure, __spreadProps(__spreadValues({}, props2), { config, metadata })));
445
- if ((_a = config.root) == null ? void 0 : _a.render) {
446
- 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)(
447
797
  DropZoneRender,
448
798
  {
449
799
  config,
@@ -453,7 +803,7 @@ function Render({
453
803
  }
454
804
  ) }));
455
805
  }
456
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
806
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
457
807
  DropZoneRender,
458
808
  {
459
809
  config,
@@ -464,7 +814,14 @@ function Render({
464
814
  );
465
815
  }
466
816
 
817
+ // lib/resolve-all-data.ts
818
+ init_react_import();
819
+
820
+ // lib/resolve-component-data.ts
821
+ init_react_import();
822
+
467
823
  // lib/get-changed.ts
824
+ init_react_import();
468
825
  var import_fast_equals = require("fast-equals");
469
826
  var getChanged = (newItem, oldItem) => {
470
827
  return newItem ? Object.keys(newItem.props || {}).reduce((acc, item) => {
@@ -479,7 +836,7 @@ var getChanged = (newItem, oldItem) => {
479
836
  // lib/resolve-component-data.ts
480
837
  var import_fast_equals2 = require("fast-equals");
481
838
  var cache = { lastChange: {} };
482
- 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") {
483
840
  const configForItem = "type" in item && item.type !== "root" ? config.components[item.type] : config.root;
484
841
  const resolvedItem = __spreadValues({}, item);
485
842
  const shouldRunResolver = (configForItem == null ? void 0 : configForItem.resolveData) && item.props;
@@ -507,11 +864,11 @@ var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], f
507
864
  let itemWithResolvedChildren = yield mapFields(
508
865
  resolvedItem,
509
866
  {
510
- slot: (_02) => __async(void 0, [_02], function* ({ value }) {
867
+ slot: (_02) => __async(null, [_02], function* ({ value }) {
511
868
  const content = value;
512
869
  return yield Promise.all(
513
870
  content.map(
514
- (childItem) => __async(void 0, null, function* () {
871
+ (childItem) => __async(null, null, function* () {
515
872
  return (yield resolveComponentData(
516
873
  childItem,
517
874
  config,
@@ -541,12 +898,14 @@ var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], f
541
898
  });
542
899
 
543
900
  // lib/data/default-data.ts
901
+ init_react_import();
544
902
  var defaultData = (data) => __spreadProps(__spreadValues({}, data), {
545
903
  root: data.root || {},
546
904
  content: data.content || []
547
905
  });
548
906
 
549
907
  // lib/data/to-component.ts
908
+ init_react_import();
550
909
  var toComponent = (item) => {
551
910
  return "type" in item ? item : __spreadProps(__spreadValues({}, item), {
552
911
  props: __spreadProps(__spreadValues({}, item.props), { id: "root" }),
@@ -559,7 +918,7 @@ function resolveAllData(_0, _1) {
559
918
  return __async(this, arguments, function* (data, config, metadata = {}, onResolveStart, onResolveEnd) {
560
919
  var _a;
561
920
  const defaultedData = defaultData(data);
562
- const resolveNode = (_node) => __async(this, null, function* () {
921
+ const resolveNode = (_node) => __async(null, null, function* () {
563
922
  const node = toComponent(_node);
564
923
  onResolveStart == null ? void 0 : onResolveStart(node);
565
924
  const resolved = (yield resolveComponentData(
@@ -580,13 +939,13 @@ function resolveAllData(_0, _1) {
580
939
  onResolveEnd == null ? void 0 : onResolveEnd(toComponent(resolvedDeep));
581
940
  return resolvedDeep;
582
941
  });
583
- const processContent = (content) => __async(this, null, function* () {
942
+ const processContent = (content) => __async(null, null, function* () {
584
943
  return Promise.all(content.map(resolveNode));
585
944
  });
586
- const processZones = () => __async(this, null, function* () {
945
+ const processZones = () => __async(null, null, function* () {
587
946
  var _a2;
588
947
  const zones = (_a2 = data.zones) != null ? _a2 : {};
589
- Object.entries(zones).forEach((_02) => __async(this, [_02], function* ([zoneKey, content]) {
948
+ Object.entries(zones).forEach((_02) => __async(null, [_02], function* ([zoneKey, content]) {
590
949
  zones[zoneKey] = yield Promise.all(content.map(resolveNode));
591
950
  }));
592
951
  return zones;
@@ -596,7 +955,7 @@ function resolveAllData(_0, _1) {
596
955
  content: yield processContent(defaultedData.content),
597
956
  zones: yield processZones()
598
957
  };
599
- 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* () {
600
959
  const content = defaultedData.zones[zoneKey];
601
960
  dynamic.zones[zoneKey] = yield processContent(content);
602
961
  }), {});
@@ -604,7 +963,11 @@ function resolveAllData(_0, _1) {
604
963
  });
605
964
  }
606
965
 
966
+ // lib/transform-props.ts
967
+ init_react_import();
968
+
607
969
  // lib/data/walk-tree.ts
970
+ init_react_import();
608
971
  function walkTree(data, config, callbackFn) {
609
972
  var _a, _b;
610
973
  const walkItem = (item) => {
@@ -672,7 +1035,14 @@ function transformProps(data, propTransforms, config = { components: {} }) {
672
1035
  return updatedData;
673
1036
  }
674
1037
 
1038
+ // lib/migrate.ts
1039
+ init_react_import();
1040
+
1041
+ // store/default-app-state.ts
1042
+ init_react_import();
1043
+
675
1044
  // components/ViewportControls/default-viewports.ts
1045
+ init_react_import();
676
1046
  var defaultViewports = [
677
1047
  { width: 360, height: "auto", icon: "Smartphone", label: "Small" },
678
1048
  { width: 768, height: "auto", icon: "Tablet", label: "Medium" },
@@ -708,7 +1078,14 @@ var defaultAppState = {
708
1078
  }
709
1079
  };
710
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
+
711
1087
  // lib/get-zone-id.ts
1088
+ init_react_import();
712
1089
  var getZoneId = (zoneCompound) => {
713
1090
  if (!zoneCompound) {
714
1091
  return [];
@@ -730,18 +1107,39 @@ function forRelatedZones(item, data, cb, path = []) {
730
1107
  }
731
1108
 
732
1109
  // lib/data/flatten-node.ts
1110
+ init_react_import();
733
1111
  var import_flat = __toESM(require("flat"));
734
1112
 
735
1113
  // lib/data/strip-slots.ts
1114
+ init_react_import();
736
1115
  var stripSlots = (data, config) => {
737
1116
  return mapFields(data, { slot: () => null }, config);
738
1117
  };
739
1118
 
740
1119
  // lib/data/flatten-node.ts
741
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
+ }
742
1140
  var flattenNode = (node, config) => {
743
1141
  return __spreadProps(__spreadValues({}, node), {
744
- props: flatten2(stripSlots(node, config).props)
1142
+ props: stripEmptyObjects(flatten2(stripSlots(node, config).props))
745
1143
  });
746
1144
  };
747
1145
 
@@ -1000,3 +1398,12 @@ function migrate(data, config, migrationOptions) {
1000
1398
  transformProps,
1001
1399
  walkTree
1002
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
+ */