@makeswift/runtime 0.7.12 → 0.7.13

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 (115) hide show
  1. package/dist/Box.cjs.js +1 -0
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +1 -0
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +1 -0
  6. package/dist/Button.cjs.js.map +1 -1
  7. package/dist/Button.es.js +1 -0
  8. package/dist/Button.es.js.map +1 -1
  9. package/dist/Carousel.cjs.js +1 -0
  10. package/dist/Carousel.cjs.js.map +1 -1
  11. package/dist/Carousel.es.js +1 -0
  12. package/dist/Carousel.es.js.map +1 -1
  13. package/dist/Countdown.cjs.js +1 -0
  14. package/dist/Countdown.cjs.js.map +1 -1
  15. package/dist/Countdown.es.js +1 -0
  16. package/dist/Countdown.es.js.map +1 -1
  17. package/dist/Divider.cjs.js +1 -0
  18. package/dist/Divider.cjs.js.map +1 -1
  19. package/dist/Divider.es.js +1 -0
  20. package/dist/Divider.es.js.map +1 -1
  21. package/dist/Embed.cjs.js +1 -0
  22. package/dist/Embed.cjs.js.map +1 -1
  23. package/dist/Embed.es.js +1 -0
  24. package/dist/Embed.es.js.map +1 -1
  25. package/dist/Form.cjs.js +1 -0
  26. package/dist/Form.cjs.js.map +1 -1
  27. package/dist/Form.es.js +1 -0
  28. package/dist/Form.es.js.map +1 -1
  29. package/dist/Image.cjs.js +1 -0
  30. package/dist/Image.cjs.js.map +1 -1
  31. package/dist/Image.es.js +1 -0
  32. package/dist/Image.es.js.map +1 -1
  33. package/dist/LiveProvider.cjs.js +1 -0
  34. package/dist/LiveProvider.cjs.js.map +1 -1
  35. package/dist/LiveProvider.es.js +2 -1
  36. package/dist/LiveProvider.es.js.map +1 -1
  37. package/dist/Navigation.cjs.js +1 -0
  38. package/dist/Navigation.cjs.js.map +1 -1
  39. package/dist/Navigation.es.js +1 -0
  40. package/dist/Navigation.es.js.map +1 -1
  41. package/dist/PreviewProvider.cjs.js +1 -0
  42. package/dist/PreviewProvider.cjs.js.map +1 -1
  43. package/dist/PreviewProvider.es.js +2 -1
  44. package/dist/PreviewProvider.es.js.map +1 -1
  45. package/dist/ReadOnlyText.cjs.js +1 -0
  46. package/dist/ReadOnlyText.cjs.js.map +1 -1
  47. package/dist/ReadOnlyText.es.js +1 -0
  48. package/dist/ReadOnlyText.es.js.map +1 -1
  49. package/dist/Root.cjs.js +1 -0
  50. package/dist/Root.cjs.js.map +1 -1
  51. package/dist/Root.es.js +1 -0
  52. package/dist/Root.es.js.map +1 -1
  53. package/dist/SocialLinks.cjs.js +1 -0
  54. package/dist/SocialLinks.cjs.js.map +1 -1
  55. package/dist/SocialLinks.es.js +1 -0
  56. package/dist/SocialLinks.es.js.map +1 -1
  57. package/dist/Text.cjs.js +1 -0
  58. package/dist/Text.cjs.js.map +1 -1
  59. package/dist/Text.es.js +1 -0
  60. package/dist/Text.es.js.map +1 -1
  61. package/dist/Video.cjs.js +1 -0
  62. package/dist/Video.cjs.js.map +1 -1
  63. package/dist/Video.es.js +1 -0
  64. package/dist/Video.es.js.map +1 -1
  65. package/dist/components.cjs.js +1 -0
  66. package/dist/components.cjs.js.map +1 -1
  67. package/dist/components.es.js +1 -0
  68. package/dist/components.es.js.map +1 -1
  69. package/dist/constants.cjs.js +3 -313
  70. package/dist/constants.cjs.js.map +1 -1
  71. package/dist/constants.es.js +3 -300
  72. package/dist/constants.es.js.map +1 -1
  73. package/dist/controls.es.js +1 -1
  74. package/dist/index.cjs.js +14 -13
  75. package/dist/index.cjs.js.map +1 -1
  76. package/dist/index.cjs2.js +6 -6
  77. package/dist/index.cjs2.js.map +1 -1
  78. package/dist/index.cjs5.js +1 -0
  79. package/dist/index.cjs5.js.map +1 -1
  80. package/dist/index.cjs6.js +3 -2
  81. package/dist/index.cjs6.js.map +1 -1
  82. package/dist/index.es.js +4 -3
  83. package/dist/index.es.js.map +1 -1
  84. package/dist/index.es2.js +1 -1
  85. package/dist/index.es5.js +1 -0
  86. package/dist/index.es5.js.map +1 -1
  87. package/dist/index.es6.js +3 -2
  88. package/dist/index.es6.js.map +1 -1
  89. package/dist/introspection.cjs.js +332 -0
  90. package/dist/introspection.cjs.js.map +1 -0
  91. package/dist/introspection.es.js +317 -0
  92. package/dist/introspection.es.js.map +1 -0
  93. package/dist/main.cjs.js +1 -0
  94. package/dist/main.cjs.js.map +1 -1
  95. package/dist/main.es.js +1 -0
  96. package/dist/main.es.js.map +1 -1
  97. package/dist/next.cjs.js +1 -0
  98. package/dist/next.cjs.js.map +1 -1
  99. package/dist/next.es.js +1 -0
  100. package/dist/next.es.js.map +1 -1
  101. package/dist/prop-controllers.cjs.js +2 -0
  102. package/dist/prop-controllers.cjs.js.map +1 -1
  103. package/dist/prop-controllers.es.js +1 -0
  104. package/dist/prop-controllers.es.js.map +1 -1
  105. package/dist/react.cjs.js +1 -0
  106. package/dist/react.cjs.js.map +1 -1
  107. package/dist/react.es.js +1 -0
  108. package/dist/react.es.js.map +1 -1
  109. package/dist/rich-text.es.js +1 -1
  110. package/dist/types/src/prop-controllers/index.d.ts +1 -0
  111. package/dist/types/src/prop-controllers/index.d.ts.map +1 -1
  112. package/dist/typography.cjs.js +4 -4
  113. package/dist/typography.cjs.js.map +1 -1
  114. package/dist/typography.es.js +1 -1
  115. package/package.json +1 -1
@@ -22,8 +22,7 @@ var redux = require("redux");
22
22
  var thunk = require("redux-thunk");
23
23
  var actions = require("./actions.cjs.js");
24
24
  var richText = require("./rich-text.cjs.js");
25
- require("slate");
26
- require("slate-react");
25
+ var introspection = require("./introspection.cjs.js");
27
26
  function _interopDefaultLegacy(e) {
28
27
  return e && typeof e === "object" && "default" in e ? e : { "default": e };
29
28
  }
@@ -212,302 +211,6 @@ function reducer$1(state = getInitialState(), action) {
212
211
  return state;
213
212
  }
214
213
  }
215
- function isNonNullable(value) {
216
- return value != null;
217
- }
218
- function getElementChildren(descriptor, prop) {
219
- if (prop == null)
220
- return [];
221
- switch (descriptor.type) {
222
- case richText.Types.Grid:
223
- return prop.elements;
224
- case richText.SlotControlType:
225
- return prop.elements;
226
- case richText.ListControlType:
227
- return prop.flatMap(({ value }) => getElementChildren(descriptor.config.type, value));
228
- case richText.ShapeControlType: {
229
- const shapeControlData = prop;
230
- return Object.keys(shapeControlData).flatMap((key) => getElementChildren(descriptor.config.type[key], shapeControlData[key]));
231
- }
232
- default:
233
- return [];
234
- }
235
- }
236
- function getElementId$1(descriptor, prop) {
237
- if (prop == null)
238
- return null;
239
- switch (descriptor.type) {
240
- case richText.Types.ElementID:
241
- return prop;
242
- default:
243
- return null;
244
- }
245
- }
246
- function getBackgroundsSwatchIds(value) {
247
- var _a;
248
- return (_a = value == null ? void 0 : value.flatMap((override) => override.value).flatMap((backgroundItem) => {
249
- var _a2;
250
- switch (backgroundItem.type) {
251
- case "color":
252
- return ((_a2 = backgroundItem.payload) == null ? void 0 : _a2.swatchId) == null ? [] : [backgroundItem.payload.swatchId];
253
- case "gradient":
254
- return backgroundItem.payload.stops.flatMap((stop) => stop.color == null ? [] : stop.color.swatchId);
255
- default:
256
- return [];
257
- }
258
- })) != null ? _a : [];
259
- }
260
- function getBorderSwatchIds(value) {
261
- var _a;
262
- return (_a = value == null ? void 0 : value.flatMap((override) => override.value).flatMap((borderValue) => {
263
- var _a2, _b, _c, _d, _e, _f, _g, _h;
264
- return [
265
- (_b = (_a2 = borderValue.borderTop) == null ? void 0 : _a2.color) == null ? void 0 : _b.swatchId,
266
- (_d = (_c = borderValue.borderRight) == null ? void 0 : _c.color) == null ? void 0 : _d.swatchId,
267
- (_f = (_e = borderValue.borderBottom) == null ? void 0 : _e.color) == null ? void 0 : _f.swatchId,
268
- (_h = (_g = borderValue.borderLeft) == null ? void 0 : _g.color) == null ? void 0 : _h.swatchId
269
- ].filter((swatchId) => swatchId != null);
270
- })) != null ? _a : [];
271
- }
272
- function getBoxShadowsSwatchIds(value) {
273
- var _a;
274
- return (_a = value == null ? void 0 : value.flatMap((override) => override.value).map((item) => {
275
- var _a2;
276
- return (_a2 = item.payload.color) == null ? void 0 : _a2.swatchId;
277
- }).filter((swatchId) => swatchId != null)) != null ? _a : [];
278
- }
279
- function getResponsiveColorSwatchIds(value) {
280
- var _a;
281
- return (_a = value == null ? void 0 : value.map((override) => override.value).map((color) => color.swatchId)) != null ? _a : [];
282
- }
283
- function getTypographyStyleSwatchIds(style) {
284
- var _a;
285
- return (_a = style == null ? void 0 : style.map((override) => override.value).flatMap((typographyStyle) => {
286
- var _a2;
287
- return (_a2 = typographyStyle.color) == null ? void 0 : _a2.swatchId;
288
- }).filter(isNonNullable)) != null ? _a : [];
289
- }
290
- function getElementSwatchIds(descriptor, prop) {
291
- var _a;
292
- if (prop == null)
293
- return [];
294
- switch (descriptor.type) {
295
- case richText.Types.Backgrounds:
296
- return getBackgroundsSwatchIds(prop);
297
- case richText.Types.Border:
298
- return getBorderSwatchIds(prop);
299
- case richText.Types.NavigationLinks: {
300
- const value = prop;
301
- return (_a = value == null ? void 0 : value.flatMap((item) => {
302
- var _a2, _b, _c, _d;
303
- switch (item.type) {
304
- case "button":
305
- case "dropdown":
306
- return [
307
- ...(_b = (_a2 = item.payload.color) == null ? void 0 : _a2.map((override) => override.value).map((color) => color.swatchId)) != null ? _b : [],
308
- ...(_d = (_c = item.payload.textColor) == null ? void 0 : _c.map((override) => override.value).map((color) => color.swatchId)) != null ? _d : []
309
- ];
310
- }
311
- })) != null ? _a : [];
312
- }
313
- case richText.Types.ResponsiveColor:
314
- return getResponsiveColorSwatchIds(prop);
315
- case richText.Types.Shadows:
316
- return getBoxShadowsSwatchIds(prop);
317
- case richText.Types.RichText: {
318
- let getNodeSwatchIds = function(node) {
319
- var _a2, _b, _c, _d;
320
- switch (node.object) {
321
- case "document":
322
- case "block":
323
- case "inline":
324
- return (_b = (_a2 = node.nodes) == null ? void 0 : _a2.flatMap(getNodeSwatchIds)) != null ? _b : [];
325
- case "text":
326
- return (_d = (_c = node.marks) == null ? void 0 : _c.flatMap(getMarkSwatchIds)) != null ? _d : [];
327
- default:
328
- return [];
329
- }
330
- }, getMarkSwatchIds = function(mark) {
331
- var _a2, _b;
332
- return getTypographyStyleSwatchIds((_b = (_a2 = mark.data) == null ? void 0 : _a2.value) == null ? void 0 : _b.style);
333
- };
334
- const value = prop;
335
- if (value == null || value.document == null)
336
- return [];
337
- return getNodeSwatchIds(value.document);
338
- }
339
- case richText.ColorControlType: {
340
- const value = prop;
341
- return (value == null ? void 0 : value.swatchId) == null ? [] : [value.swatchId];
342
- }
343
- default:
344
- return [];
345
- }
346
- }
347
- function getBackgroundsFileIds(value) {
348
- var _a;
349
- return (_a = value == null ? void 0 : value.flatMap((override) => override.value).flatMap((backgroundItem) => {
350
- switch (backgroundItem.type) {
351
- case "image":
352
- return [backgroundItem.payload.imageId];
353
- default:
354
- return [];
355
- }
356
- })) != null ? _a : [];
357
- }
358
- function getFileIds(descriptor, prop) {
359
- var _a;
360
- if (prop == null)
361
- return [];
362
- switch (descriptor.type) {
363
- case richText.Types.Backgrounds:
364
- return getBackgroundsFileIds(prop);
365
- case richText.Types.Image: {
366
- const value = prop;
367
- return value == null ? [] : [value];
368
- }
369
- case richText.Types.Images: {
370
- const value = prop;
371
- return (_a = value == null ? void 0 : value.flatMap((item) => item.props.file == null ? [] : [item.props.file])) != null ? _a : [];
372
- }
373
- case richText.ImageControlType: {
374
- const value = prop;
375
- return value == null ? [] : [value];
376
- }
377
- default:
378
- return [];
379
- }
380
- }
381
- function getTypographyIds(descriptor, prop) {
382
- if (prop == null)
383
- return [];
384
- switch (descriptor.type) {
385
- case richText.Types.RichText: {
386
- let getNodeTypographyIds = function(node) {
387
- var _a, _b, _c, _d;
388
- switch (node.object) {
389
- case "document":
390
- case "block":
391
- case "inline":
392
- return (_b = (_a = node.nodes) == null ? void 0 : _a.flatMap(getNodeTypographyIds)) != null ? _b : [];
393
- case "text":
394
- return (_d = (_c = node.marks) == null ? void 0 : _c.flatMap(getMarkTypographyIds)) != null ? _d : [];
395
- default:
396
- return [];
397
- }
398
- }, getMarkTypographyIds = function(mark) {
399
- var _a, _b;
400
- return [(_b = (_a = mark.data) == null ? void 0 : _a.value) == null ? void 0 : _b.id].filter((id) => id != null);
401
- };
402
- const value = prop;
403
- if (value == null || value.document == null)
404
- return [];
405
- return getNodeTypographyIds(value.document);
406
- }
407
- default:
408
- return [];
409
- }
410
- }
411
- function getTableIds(descriptor, prop) {
412
- if (prop == null)
413
- return [];
414
- switch (descriptor.type) {
415
- case richText.Types.Table: {
416
- const value = prop;
417
- return value == null ? [] : [value];
418
- }
419
- default:
420
- return [];
421
- }
422
- }
423
- function getPageIds(descriptor, prop) {
424
- var _a;
425
- if (prop == null)
426
- return [];
427
- switch (descriptor.type) {
428
- case richText.Types.Link: {
429
- const value = prop;
430
- if (value == null)
431
- return [];
432
- switch (value.type) {
433
- case "OPEN_PAGE":
434
- return value.payload.pageId == null ? [] : [value.payload.pageId];
435
- default:
436
- return [];
437
- }
438
- }
439
- case richText.Types.NavigationLinks: {
440
- const value = prop;
441
- if (value == null)
442
- return [];
443
- return (_a = value == null ? void 0 : value.flatMap((item) => {
444
- var _a2, _b;
445
- switch (item.type) {
446
- case "button": {
447
- if (item.payload.link == null)
448
- return [];
449
- switch (item.payload.link.type) {
450
- case "OPEN_PAGE":
451
- return item.payload.link.payload.pageId == null ? [] : [item.payload.link.payload.pageId];
452
- default:
453
- return [];
454
- }
455
- }
456
- case "dropdown": {
457
- return (_b = (_a2 = item.payload.links) == null ? void 0 : _a2.flatMap((link) => {
458
- if (link.payload.link == null)
459
- return [];
460
- switch (link.payload.link.type) {
461
- case "OPEN_PAGE":
462
- return link.payload.link.payload.pageId == null ? [] : [link.payload.link.payload.pageId];
463
- default:
464
- return [];
465
- }
466
- })) != null ? _b : [];
467
- }
468
- }
469
- })) != null ? _a : [];
470
- }
471
- case richText.Types.RichText: {
472
- let getNodePageIds = function(node) {
473
- var _a2, _b;
474
- switch (node.object) {
475
- case "document":
476
- case "block":
477
- return (_b = (_a2 = node.nodes) == null ? void 0 : _a2.flatMap(getNodePageIds)) != null ? _b : [];
478
- case "inline":
479
- return getInlinePageIds(node);
480
- default:
481
- return [];
482
- }
483
- }, getInlinePageIds = function(inline) {
484
- var _a2, _b, _c, _d;
485
- switch (inline.type) {
486
- case "link": {
487
- const nodePageIds = (_b = (_a2 = inline.nodes) == null ? void 0 : _a2.flatMap(getNodePageIds)) != null ? _b : [];
488
- const dataPageIds = inline.data ? getLinkDataPageIds(inline.data) : [];
489
- return [...nodePageIds, ...dataPageIds];
490
- }
491
- default:
492
- return (_d = (_c = inline.nodes) == null ? void 0 : _c.flatMap(getNodePageIds)) != null ? _d : [];
493
- }
494
- }, getLinkDataPageIds = function(link) {
495
- switch (link.type) {
496
- case "OPEN_PAGE":
497
- return link.payload.pageId == null ? [] : [link.payload.pageId];
498
- default:
499
- return [];
500
- }
501
- };
502
- const value = prop;
503
- if (value == null || value.document == null)
504
- return [];
505
- return getNodePageIds(value.document);
506
- }
507
- default:
508
- return [];
509
- }
510
- }
511
214
  const reducer = redux.combineReducers({
512
215
  documents: reducer$7,
513
216
  reactComponents: reducer$6,
@@ -558,7 +261,7 @@ function normalizeElement(element, descriptors) {
558
261
  continue;
559
262
  const parent = current;
560
263
  const children = Object.entries(elementDescriptors).reduce((acc, [propName, descriptor]) => {
561
- return [...acc, ...getElementChildren(descriptor, parent.props[propName])];
264
+ return [...acc, ...introspection.getElementChildren(descriptor, parent.props[propName])];
562
265
  }, []);
563
266
  remaining.push(...children);
564
267
  }
@@ -606,7 +309,7 @@ function getElementId(state, documentKey, elementKey) {
606
309
  const elementId = Object.entries(descriptors).reduce((acc, [propName, descriptor]) => {
607
310
  if (acc != null)
608
311
  return acc;
609
- return getElementId$1(descriptor, element.props[propName]);
312
+ return introspection.getElementId(descriptor, element.props[propName]);
610
313
  }, null);
611
314
  return elementId;
612
315
  }
@@ -682,10 +385,6 @@ exports.configureStore = configureStore;
682
385
  exports.copyElementTree = copyElementTree;
683
386
  exports.createDocument = createDocument;
684
387
  exports.createDocumentReference = createDocumentReference;
685
- exports.getBackgroundsFileIds = getBackgroundsFileIds;
686
- exports.getBackgroundsSwatchIds = getBackgroundsSwatchIds;
687
- exports.getBorderSwatchIds = getBorderSwatchIds;
688
- exports.getBoxShadowsSwatchIds = getBoxShadowsSwatchIds;
689
388
  exports.getBuilderEditMode = getBuilderEditMode;
690
389
  exports.getComponentPropControllerDescriptors = getComponentPropControllerDescriptors;
691
390
  exports.getComponentPropControllerDescriptors$1 = getComponentPropControllerDescriptors$1;
@@ -694,27 +393,18 @@ exports.getDocument = getDocument;
694
393
  exports.getDocument$1 = getDocument$1;
695
394
  exports.getDocumentKeysSortedByDepth = getDocumentKeysSortedByDepth;
696
395
  exports.getElement = getElement;
697
- exports.getElementChildren = getElementChildren;
698
396
  exports.getElementId = getElementId;
699
397
  exports.getElementPropControllerDescriptors = getElementPropControllerDescriptors;
700
- exports.getElementSwatchIds = getElementSwatchIds;
701
- exports.getFileIds = getFileIds;
702
398
  exports.getInitialState = getInitialState$6;
703
399
  exports.getInitialState$1 = getInitialState;
704
400
  exports.getIsInBuilder = getIsInBuilder;
705
401
  exports.getIsPreview = getIsPreview;
706
- exports.getPageIds = getPageIds;
707
402
  exports.getPropController = getPropController;
708
403
  exports.getPropControllerDescriptors = getPropControllerDescriptors;
709
404
  exports.getPropControllers = getPropControllers;
710
405
  exports.getPropControllersHandle = getPropControllersHandle;
711
406
  exports.getReactComponent = getReactComponent;
712
- exports.getResponsiveColorSwatchIds = getResponsiveColorSwatchIds;
713
- exports.getTableIds = getTableIds;
714
- exports.getTypographyIds = getTypographyIds;
715
- exports.getTypographyStyleSwatchIds = getTypographyStyleSwatchIds;
716
407
  exports.isElementReference = isElementReference;
717
- exports.isNonNullable = isNonNullable;
718
408
  exports.isPropControllersHandle = isPropControllersHandle;
719
409
  exports.reducer = reducer$7;
720
410
  exports.reducer$1 = reducer$6;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs.js","sources":["../src/state/modules/read-only-documents.ts","../src/state/modules/react-components.tsx","../src/state/modules/components-meta.ts","../src/state/modules/prop-controllers.ts","../src/state/modules/prop-controller-handles.ts","../src/state/modules/is-in-builder.ts","../src/state/modules/is-preview.ts","../src/components/utils/isNonNullable.ts","../src/prop-controllers/introspection.ts","../src/state/react-page.ts","../src/components/builtin/constants.ts"],"sourcesContent":["import { Action, ActionTypes } from '../actions'\n\nexport type Data = undefined | null | boolean | number | string | Data[] | { [key: string]: Data }\n\nexport type ElementData = { type: string; key: string; props: Record<string, Data> }\n\nexport type ElementReference = { type: 'reference'; key: string; value: string }\n\nexport type Element = ElementData | ElementReference\n\nexport function isElementReference(element: Element): element is ElementReference {\n return !('props' in element)\n}\n\nexport type DocumentReference = {\n key: string\n}\n\nexport function createDocumentReference(key: string): DocumentReference {\n return { key }\n}\n\nexport type Document = {\n key: string\n rootElement: Element\n}\n\nexport function createDocument(key: string, rootElement: Element): Document {\n return { key, rootElement }\n}\n\nexport type State = Map<string, Document>\n\nexport function getInitialState({\n rootElements = new Map(),\n}: { rootElements?: Map<string, Element> } = {}): State {\n const initialState = new Map()\n\n rootElements.forEach((rootElement, documentKey) => {\n initialState.set(documentKey, createDocument(documentKey, rootElement))\n })\n\n return initialState\n}\n\nexport function getDocuments(state: State): Map<string, Document> {\n return state\n}\n\nexport function getDocument(state: State, documentKey: string): Document | null {\n return getDocuments(state).get(documentKey) ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_DOCUMENT:\n return new Map(state).set(action.payload.documentKey, action.payload.document)\n\n case ActionTypes.UNREGISTER_DOCUMENT: {\n const nextState = new Map(state)\n\n const deleted = nextState.delete(action.payload.documentKey)\n\n return deleted ? nextState : state\n }\n\n default:\n return state\n }\n}\n","import type { Component, PropsWithoutRef, ReactElement, RefAttributes } from 'react'\n\nimport { Action, ActionTypes } from '../actions'\n\nexport type ComponentType<P = Record<string, any>, T = any> =\n | { new (props: PropsWithoutRef<P> & RefAttributes<T>, context?: any): Component<P> }\n | ((props: PropsWithoutRef<P> & RefAttributes<T>, context?: any) => ReactElement<any, any> | null)\n\nexport type State = Map<string, ComponentType>\n\nexport function getInitialState({\n reactComponents = new Map(),\n}: { reactComponents?: Map<string, ComponentType> } = {}): State {\n return reactComponents\n}\n\nfunction getReactComponents(state: State): Map<string, ComponentType> {\n return state\n}\n\nexport function getReactComponent(state: State, type: string): ComponentType | null {\n return getReactComponents(state).get(type) ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action) {\n switch (action.type) {\n case ActionTypes.REGISTER_REACT_COMPONENT:\n return new Map(state).set(action.payload.type, action.payload.component)\n\n case ActionTypes.UNREGISTER_REACT_COMPONENT: {\n const nextState = new Map(state)\n\n const deleted = nextState.delete(action.payload.type)\n\n return deleted ? nextState : state\n }\n\n default:\n return state\n }\n}\n","import { Action, ActionTypes } from '../actions'\n\nexport type ComponentIcon =\n | 'Carousel40'\n | 'Code40'\n | 'Countdown40'\n | 'Cube40'\n | 'Divider40'\n | 'Form40'\n | 'Navigation40'\n | 'SocialLinks40'\n | 'Video40'\n\nexport type ComponentMeta = { label: string; icon: ComponentIcon; hidden: boolean }\n\nexport type State = Map<string, ComponentMeta>\n\nexport function getInitialState({\n componentsMeta = new Map(),\n}: { componentsMeta?: Map<string, ComponentMeta> } = {}): State {\n return componentsMeta\n}\n\nexport function getComponentsMeta(state: State): Map<string, ComponentMeta> {\n return state\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT:\n return new Map(state).set(action.payload.type, action.payload.meta)\n\n case ActionTypes.UNREGISTER_COMPONENT: {\n const nextState = new Map(state)\n\n const deleted = nextState.delete(action.payload.type)\n\n return deleted ? nextState : state\n }\n\n default:\n return state\n }\n}\n","import { Action, ActionTypes } from '../actions'\nimport { PropControllerDescriptor } from '../../prop-controllers'\n\nexport type { PropControllerDescriptor }\n\nexport type State = Map<string, Record<string, PropControllerDescriptor>>\n\nexport function getInitialState({\n propControllerDescriptors = new Map(),\n}: {\n propControllerDescriptors?: Map<string, Record<string, PropControllerDescriptor>>\n} = {}): State {\n return propControllerDescriptors\n}\n\nexport function getPropControllerDescriptors(\n state: State,\n): Map<string, Record<string, PropControllerDescriptor>> {\n return state\n}\n\nexport function getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): Record<string, PropControllerDescriptor> | null {\n return getPropControllerDescriptors(state).get(componentType) ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT:\n return new Map(state).set(action.payload.type, action.payload.propControllerDescriptors)\n\n case ActionTypes.UNREGISTER_COMPONENT: {\n const nextState = new Map(state)\n\n const deleted = nextState.delete(action.payload.type)\n\n return deleted ? nextState : state\n }\n\n default:\n return state\n }\n}\n","import { Action, ActionTypes } from '../actions'\nimport type { DescriptorsPropControllers, PropController } from '../../prop-controllers/instances'\nimport type { Descriptor } from '../../prop-controllers/descriptors'\n\nexport interface PropControllersHandle<\n T extends Record<string, Descriptor> = Record<string, Descriptor>,\n> {\n setPropControllers(propControllers: DescriptorsPropControllers<T> | null): void\n}\n\nexport function isPropControllersHandle(value: unknown): value is PropControllersHandle {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'setPropControllers' in value &&\n typeof (value as { setPropControllers: unknown }).setPropControllers === 'function'\n ) {\n return true\n }\n\n return false\n}\n\nexport type State = {\n handles: Map<string, Map<string, PropControllersHandle>>\n instances: Map<string, Map<string, Record<string, PropController>>>\n}\n\nexport function getInitialState(): State {\n return { handles: new Map(), instances: new Map() }\n}\n\nexport function getPropControllersHandle(\n state: State,\n documentKey: string,\n elementKey: string,\n): PropControllersHandle | null {\n return state.handles.get(documentKey)?.get(elementKey) ?? null\n}\n\nexport function getPropControllers(\n state: State,\n documentKey: string,\n elementKey: string,\n): Record<string, PropController> | null {\n return state.instances.get(documentKey)?.get(elementKey) ?? null\n}\n\nexport function getPropController(\n state: State,\n documentKey: string,\n elementKey: string,\n propName: string,\n): PropController | null {\n return getPropControllers(state, documentKey, elementKey)?.[propName] ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey, handle } = action.payload\n\n return {\n ...state,\n handles: new Map(state.handles).set(\n documentKey,\n new Map(state.handles.get(documentKey) ?? []).set(elementKey, handle),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey } = action.payload\n const nextHandles = new Map(state.handles.get(documentKey) ?? [])\n\n const deleted = nextHandles.delete(elementKey)\n\n return deleted\n ? { ...state, handles: new Map(state.handles).set(documentKey, nextHandles) }\n : state\n }\n\n case ActionTypes.REGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey, propControllers } = action.payload\n\n return {\n ...state,\n instances: new Map(state.instances).set(\n documentKey,\n new Map(state.instances.get(documentKey) ?? []).set(elementKey, propControllers),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey } = action.payload\n const nextInstances = new Map(state.instances.get(documentKey) ?? [])\n\n const deleted = nextInstances.delete(elementKey)\n\n return deleted\n ? { ...state, instances: new Map(state.instances).set(documentKey, nextInstances) }\n : state\n }\n\n default:\n return state\n }\n}\n","import { Action, ActionTypes } from '../actions'\n\nexport type State = boolean\n\nexport function getInitialState(): State {\n return false\n}\n\nexport function getIsInBuilder(state: State): boolean {\n return state\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.SET_IS_IN_BUILDER:\n return action.payload\n\n default:\n return state\n }\n}\n","import { Action } from '../actions'\n\nexport type State = boolean\n\nexport function getInitialState(isPreview = false): State {\n return isPreview\n}\n\nexport function getIsPreview(state: State): boolean {\n return state\n}\n\nexport function reducer(state = getInitialState(), action: Action): State {\n switch (action.type) {\n default:\n return state\n }\n}\n","export function isNonNullable<T>(value: T): value is NonNullable<T> {\n return value != null\n}\n","import {\n BackgroundsValue,\n BorderValue,\n Descriptor,\n ElementIDValue,\n GridValue,\n ImagesValue,\n ImageValue,\n LinkValue,\n NavigationLinksValue,\n ResponsiveColorValue,\n RichTextValue,\n ShadowsValue,\n TableValue,\n Types,\n} from './descriptors'\nimport { Data, Element } from '../state/react-page'\nimport {\n ColorControlData,\n ColorControlType,\n ImageControlData,\n ImageControlType,\n InlineJSON,\n ListControlData,\n ListControlType,\n MarkJSON,\n NodeJSON,\n ShapeControlData,\n ShapeControlType,\n SlotControlData,\n SlotControlType,\n} from '../controls'\nimport { Typography } from '../api'\nimport { isNonNullable } from '../components/utils/isNonNullable'\n\nexport function getElementChildren<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): Element[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case Types.Grid:\n return (prop as GridValue).elements\n\n case SlotControlType:\n return (prop as SlotControlData).elements\n\n case ListControlType:\n return (prop as ListControlData).flatMap(({ value }) =>\n getElementChildren(descriptor.config.type, value),\n )\n\n case ShapeControlType: {\n const shapeControlData = prop as ShapeControlData\n\n return Object.keys(shapeControlData).flatMap(key =>\n getElementChildren(descriptor.config.type[key], shapeControlData[key]),\n )\n }\n\n default:\n return []\n }\n}\n\nexport function getElementId<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string | null {\n if (prop == null) return null\n\n switch (descriptor.type) {\n case Types.ElementID:\n return prop as ElementIDValue\n\n default:\n return null\n }\n}\n\nexport function getBackgroundsSwatchIds(value: BackgroundsValue | null | undefined): string[] {\n return (\n value\n ?.flatMap(override => override.value)\n .flatMap(backgroundItem => {\n switch (backgroundItem.type) {\n case 'color':\n return backgroundItem.payload?.swatchId == null ? [] : [backgroundItem.payload.swatchId]\n\n case 'gradient':\n return backgroundItem.payload.stops.flatMap(stop =>\n stop.color == null ? [] : stop.color.swatchId,\n )\n\n default:\n return []\n }\n }) ?? []\n )\n}\n\nexport function getBorderSwatchIds(value: BorderValue | null | undefined): string[] {\n return (\n value\n ?.flatMap(override => override.value)\n .flatMap(borderValue => {\n return [\n borderValue.borderTop?.color?.swatchId,\n borderValue.borderRight?.color?.swatchId,\n borderValue.borderBottom?.color?.swatchId,\n borderValue.borderLeft?.color?.swatchId,\n ].filter((swatchId): swatchId is NonNullable<typeof swatchId> => swatchId != null)\n }) ?? []\n )\n}\n\nexport function getBoxShadowsSwatchIds(value: ShadowsValue | null | undefined): string[] {\n return (\n value\n ?.flatMap(override => override.value)\n .map(item => item.payload.color?.swatchId)\n .filter((swatchId): swatchId is NonNullable<typeof swatchId> => swatchId != null) ?? []\n )\n}\n\nexport function getResponsiveColorSwatchIds(\n value: ResponsiveColorValue | null | undefined,\n): string[] {\n return value?.map(override => override.value).map(color => color.swatchId) ?? []\n}\n\nexport function getTypographyStyleSwatchIds(\n style: Typography['style'] | null | undefined,\n): string[] {\n return (\n style\n ?.map(override => override.value)\n .flatMap(typographyStyle => typographyStyle.color?.swatchId)\n .filter(isNonNullable) ?? []\n )\n}\n\nexport function getElementSwatchIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case Types.Backgrounds:\n return getBackgroundsSwatchIds(prop as BackgroundsValue)\n\n case Types.Border:\n return getBorderSwatchIds(prop as BorderValue)\n\n case Types.NavigationLinks: {\n const value = prop as NavigationLinksValue\n return (\n value?.flatMap(item => {\n switch (item.type) {\n case 'button':\n case 'dropdown':\n return [\n ...(item.payload.color\n ?.map(override => override.value)\n .map(color => color.swatchId) ?? []),\n ...(item.payload.textColor\n ?.map(override => override.value)\n .map(color => color.swatchId) ?? []),\n ]\n }\n }) ?? []\n )\n }\n\n case Types.ResponsiveColor:\n return getResponsiveColorSwatchIds(prop as ResponsiveColorValue)\n\n case Types.Shadows:\n return getBoxShadowsSwatchIds(prop as ShadowsValue)\n\n case Types.RichText: {\n const value = prop as RichTextValue\n\n if (value == null || value.document == null) return []\n\n return getNodeSwatchIds(value.document)\n\n function getNodeSwatchIds(node: NodeJSON): string[] {\n switch (node.object) {\n case 'document':\n case 'block':\n case 'inline':\n return node.nodes?.flatMap(getNodeSwatchIds) ?? []\n\n case 'text':\n return node.marks?.flatMap(getMarkSwatchIds) ?? []\n\n default:\n return []\n }\n }\n\n function getMarkSwatchIds(mark: MarkJSON): string[] {\n return getTypographyStyleSwatchIds(mark.data?.value?.style)\n }\n }\n\n case ColorControlType: {\n const value = prop as ColorControlData\n return value?.swatchId == null ? [] : [value.swatchId]\n }\n\n default:\n return []\n }\n}\n\nexport function getBackgroundsFileIds(value: BackgroundsValue | null | undefined): string[] {\n return (\n value\n ?.flatMap(override => override.value)\n .flatMap(backgroundItem => {\n switch (backgroundItem.type) {\n case 'image':\n return [backgroundItem.payload.imageId]\n\n default:\n return []\n }\n }) ?? []\n )\n}\n\nexport function getFileIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case Types.Backgrounds:\n return getBackgroundsFileIds(prop as BackgroundsValue)\n\n case Types.Image: {\n const value = prop as ImageValue\n return value == null ? [] : [value]\n }\n\n case Types.Images: {\n const value = prop as ImagesValue\n return value?.flatMap(item => (item.props.file == null ? [] : [item.props.file])) ?? []\n }\n\n case ImageControlType: {\n const value = prop as ImageControlData\n return value == null ? [] : [value]\n }\n\n default:\n return []\n }\n}\n\nexport function getTypographyIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case Types.RichText: {\n const value = prop as RichTextValue\n if (value == null || value.document == null) return []\n\n return getNodeTypographyIds(value.document)\n\n function getNodeTypographyIds(node: NodeJSON): string[] {\n switch (node.object) {\n case 'document':\n case 'block':\n case 'inline':\n return node.nodes?.flatMap(getNodeTypographyIds) ?? []\n\n case 'text':\n return node.marks?.flatMap(getMarkTypographyIds) ?? []\n\n default:\n return []\n }\n }\n\n function getMarkTypographyIds(mark: MarkJSON): string[] {\n return [mark.data?.value?.id].filter(id => id != null)\n }\n }\n\n default:\n return []\n }\n}\n\nexport function getTableIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case Types.Table: {\n const value = prop as TableValue\n return value == null ? [] : [value]\n }\n\n default:\n return []\n }\n}\n\nexport function getPageIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case Types.Link: {\n const value = prop as LinkValue\n if (value == null) return []\n\n switch (value.type) {\n case 'OPEN_PAGE':\n return value.payload.pageId == null ? [] : [value.payload.pageId]\n\n default:\n return []\n }\n }\n\n case Types.NavigationLinks: {\n const value = prop as NavigationLinksValue\n if (value == null) return []\n\n return (\n value?.flatMap(item => {\n switch (item.type) {\n case 'button': {\n if (item.payload.link == null) return []\n\n switch (item.payload.link.type) {\n case 'OPEN_PAGE':\n return item.payload.link.payload.pageId == null\n ? []\n : [item.payload.link.payload.pageId]\n\n default:\n return []\n }\n }\n\n case 'dropdown': {\n return (\n item.payload.links?.flatMap(link => {\n if (link.payload.link == null) return []\n\n switch (link.payload.link.type) {\n case 'OPEN_PAGE':\n return link.payload.link.payload.pageId == null\n ? []\n : [link.payload.link.payload.pageId]\n\n default:\n return []\n }\n }) ?? []\n )\n }\n }\n }) ?? []\n )\n }\n\n case Types.RichText: {\n const value = prop as RichTextValue\n if (value == null || value.document == null) return []\n\n return getNodePageIds(value.document)\n\n function getNodePageIds(node: NodeJSON): string[] {\n switch (node.object) {\n case 'document':\n case 'block':\n return node.nodes?.flatMap(getNodePageIds) ?? []\n\n case 'inline':\n return getInlinePageIds(node)\n\n default:\n return []\n }\n }\n\n function getInlinePageIds(inline: InlineJSON): string[] {\n switch (inline.type) {\n case 'link': {\n const nodePageIds = inline.nodes?.flatMap(getNodePageIds) ?? []\n const dataPageIds = inline.data ? getLinkDataPageIds(inline.data as LinkValue) : []\n\n return [...nodePageIds, ...dataPageIds]\n }\n\n default:\n return inline.nodes?.flatMap(getNodePageIds) ?? []\n }\n }\n\n function getLinkDataPageIds(link: LinkValue): string[] {\n switch (link.type) {\n case 'OPEN_PAGE':\n return link.payload.pageId == null ? [] : [link.payload.pageId]\n\n default:\n return []\n }\n }\n }\n\n default:\n return []\n }\n}\n","import {\n applyMiddleware,\n combineReducers,\n createStore,\n PreloadedState,\n Store as ReduxStore,\n} from 'redux'\nimport thunk, { ThunkDispatch } from 'redux-thunk'\n\nimport * as Documents from './modules/read-only-documents'\nimport * as ReactComponents from './modules/react-components'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Introspection from '../prop-controllers/introspection'\nimport { Action } from './actions'\nimport { copyElementReference } from '../prop-controllers/copy'\nimport { copy as copyFromControl } from '../controls/control'\n\nexport type {\n Data,\n Document,\n DocumentReference,\n Element,\n ElementData,\n ElementReference,\n} from './modules/read-only-documents'\nexport {\n createDocument,\n createDocumentReference,\n isElementReference,\n} from './modules/read-only-documents'\nexport type { ComponentType } from './modules/react-components'\n\nconst reducer = combineReducers({\n documents: Documents.reducer,\n reactComponents: ReactComponents.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nexport function getDocument(state: State, documentKey: string): Documents.Document | null {\n return Documents.getDocument(getDocumentsStateSlice(state), documentKey)\n}\n\nfunction getReactComponentsStateSlice(state: State): ReactComponents.State {\n return state.reactComponents\n}\n\nexport function getReactComponent(\n state: State,\n type: string,\n): ReactComponents.ComponentType | null {\n return ReactComponents.getReactComponent(getReactComponentsStateSlice(state), type)\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nexport function getPropControllerDescriptors(\n state: State,\n): Map<string, Record<string, PropControllers.PropControllerDescriptor>> {\n return PropControllers.getPropControllerDescriptors(getPropControllersStateSlice(state))\n}\n\nexport function getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nexport function getPropControllers(state: State, documentKey: string, elementKey: string) {\n return PropControllerHandles.getPropControllers(\n getPropControllerHandlesStateSlice(state),\n documentKey,\n elementKey,\n )\n}\n\nfunction normalizeElement(\n element: Documents.Element,\n descriptors: Map<string, Record<string, PropControllers.PropControllerDescriptor>>,\n): Map<string, Documents.Element> {\n const elements = new Map<string, Documents.Element>()\n const remaining = [element]\n let current: Documents.Element | undefined\n\n while ((current = remaining.pop())) {\n elements.set(current.key, current)\n\n if (Documents.isElementReference(current)) continue\n\n const elementDescriptors = descriptors.get(current.type)\n\n if (elementDescriptors == null) continue\n\n const parent = current\n const children = Object.entries(elementDescriptors).reduce((acc, [propName, descriptor]) => {\n return [...acc, ...Introspection.getElementChildren(descriptor, parent.props[propName])]\n }, [] as Documents.Element[])\n\n remaining.push(...children)\n }\n\n return elements\n}\n\nfunction getDocumentElements(state: State, documentKey: string): Map<string, Documents.Element> {\n const document = getDocument(state, documentKey)\n const descriptors = getPropControllerDescriptors(state)\n\n if (document == null) return new Map()\n\n return normalizeElement(document.rootElement, descriptors)\n}\n\n/**\n * Returns all document keys sorted by depth, i.e., parent documents come before child documents.\n *\n * @todo Make this selector more efficient.\n */\nexport function getDocumentKeysSortedByDepth(state: State): string[] {\n const documents = Documents.getDocuments(getDocumentsStateSlice(state))\n const keys = Array.from(documents.keys())\n\n if (keys.length < 2) return keys\n\n const elements = new Map<string, Map<string, Documents.Element>>()\n\n keys.forEach(key => {\n elements.set(key, getDocumentElements(state, key))\n })\n\n keys.sort((a, b) => (elements.get(a)?.has(b) ? -1 : 1))\n\n return keys\n}\n\nexport function getElement(\n state: State,\n documentKey: string,\n elementKey: string,\n): Documents.Element | null {\n return getDocumentElements(state, documentKey).get(elementKey) ?? null\n}\n\nexport function getElementPropControllerDescriptors(\n state: State,\n documentKey: string,\n elementKey: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n const element = getElement(state, documentKey, elementKey)\n\n if (element == null || Documents.isElementReference(element)) return null\n\n return getComponentPropControllerDescriptors(state, element.type)\n}\n\nexport function getElementId(state: State, documentKey: string, elementKey: string): string | null {\n const element = getElement(state, documentKey, elementKey)\n\n if (element == null || Documents.isElementReference(element)) return null\n\n const descriptors = getComponentPropControllerDescriptors(state, element.type)\n\n if (descriptors == null) return null\n\n const elementId = Object.entries(descriptors).reduce((acc, [propName, descriptor]) => {\n if (acc != null) return acc\n\n return Introspection.getElementId(descriptor, element.props[propName])\n }, null as string | null)\n\n return elementId\n}\n\nexport type ReplacementContext = {\n elementHtmlIds: Set<string>\n elementKeys: Map<string, string>\n swatchIds: Map<string, string>\n fileIds: Map<string, string>\n typographyIds: Map<string, string>\n tableIds: Map<string, string>\n tableColumnIds: Map<string, string>\n pageIds: Map<string, string>\n globalElementIds: Map<string, string>\n globalElementData: Map<string, Documents.ElementData>\n}\n\nexport type SerializableReplacementContext = {\n elementHtmlIds: string[]\n elementKeys: { [s: string]: string }\n swatchIds: { [s: string]: string }\n fileIds: { [s: string]: string }\n typographyIds: { [s: string]: string }\n tableIds: { [s: string]: string }\n tableColumnIds: { [s: string]: string }\n pageIds: { [s: string]: string }\n globalElementIds: { [s: string]: string }\n globalElementData: { [s: string]: Documents.ElementData }\n}\n\nexport function createReplacementContext(\n serializableReplacementContext: SerializableReplacementContext,\n): ReplacementContext {\n const rc: ReplacementContext = {\n elementHtmlIds: new Set(serializableReplacementContext.elementHtmlIds),\n elementKeys: new Map(\n serializableReplacementContext.elementKeys &&\n Object.entries(serializableReplacementContext.elementKeys),\n ),\n swatchIds: new Map(\n serializableReplacementContext.swatchIds &&\n Object.entries(serializableReplacementContext.swatchIds),\n ),\n fileIds: new Map(\n serializableReplacementContext.fileIds &&\n Object.entries(serializableReplacementContext.fileIds),\n ),\n typographyIds: new Map(\n serializableReplacementContext.typographyIds &&\n Object.entries(serializableReplacementContext.typographyIds),\n ),\n tableIds: new Map(\n serializableReplacementContext.tableIds &&\n Object.entries(serializableReplacementContext.tableIds),\n ),\n tableColumnIds: new Map(\n serializableReplacementContext.tableColumnIds &&\n Object.entries(serializableReplacementContext.tableColumnIds),\n ),\n pageIds: new Map(\n serializableReplacementContext.pageIds &&\n Object.entries(serializableReplacementContext.pageIds),\n ),\n globalElementIds: new Map(\n serializableReplacementContext.globalElementIds &&\n Object.entries(serializableReplacementContext.globalElementIds),\n ),\n globalElementData: new Map(\n serializableReplacementContext.globalElementData &&\n Object.entries(serializableReplacementContext.globalElementData),\n ),\n }\n\n return rc\n}\n\nexport type CopyContext = {\n replacementContext: ReplacementContext\n copyElement: (node: Documents.Element) => Documents.Element\n}\n\nexport function copyElementTree(\n state: State,\n elementTree: Documents.ElementData,\n replacementContext: SerializableReplacementContext,\n) {\n /*\n * This is structured a bit weird.\n *\n * This is done so that we can pass a callable function into some of the copy functions\n * themselves, to enable mutual recursion.\n *\n * Consider the slot control. It has to iterate through its elements, and for each of them,\n * call some version of the below function.\n *\n * That is how the recursing through the tree happens.\n */\n function copyElementTreeNode(state: State, replacementContext: ReplacementContext) {\n return function (node: Documents.Element) {\n const context = {\n replacementContext,\n copyElement: copyElementTreeNode(state, replacementContext),\n }\n\n if (Documents.isElementReference(node)) {\n return { ...node, value: copyElementReference(node.value, context) }\n }\n\n const descriptors = getComponentPropControllerDescriptors(state, node.type)\n\n if (descriptors == null) return node\n\n for (const [propKey, descriptor] of Object.entries(descriptors)) {\n node.props[propKey] = copyFromControl(descriptor, node.props[propKey], context)\n }\n\n return node\n }\n }\n\n const copy = JSON.parse(JSON.stringify(elementTree)) as Documents.ElementData\n\n return copyElementTreeNode(state, createReplacementContext(replacementContext))(copy)\n}\n\nexport function getIsInBuilder(state: State): boolean {\n return state.isInBuilder\n}\n\nexport function getIsPreview(state: State): boolean {\n return IsPreview.getIsPreview(state.isPreview)\n}\n\nexport function getBuilderEditMode(state: State): BuilderEditMode.State {\n return state.builderEditMode\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({\n rootElements,\n preloadedState,\n}: {\n rootElements?: Map<string, Documents.Element>\n preloadedState?: PreloadedState<State>\n} = {}): Store {\n return createStore(\n reducer,\n { ...preloadedState, documents: Documents.getInitialState({ rootElements }) },\n applyMiddleware(thunk),\n )\n}\n","/**\n * These are the element types that have been used since the beginning of Makeswift and are saved in\n * the database.\n */\nexport const MakeswiftComponentType = {\n Box: './components/Box/index.js',\n Button: './components/Button/index.js',\n Carousel: './components/Carousel/index.js',\n Countdown: './components/Countdown/index.js',\n Divider: './components/Divider/index.js',\n Embed: './components/Embed/index.js',\n Form: './components/Form/index.js',\n Image: './components/Image/index.js',\n Navigation: './components/Navigation/index.js',\n Root: './components/Root/index.js',\n SocialLinks: './components/SocialLinks/index.js',\n Text: './components/Text/index.js',\n Video: './components/Video/index.js',\n} as const\n"],"names":["getInitialState","ActionTypes","reactComponents","Map","state","type","getReactComponents","get","action","REGISTER_REACT_COMPONENT","set","payload","component","UNREGISTER_REACT_COMPONENT","nextState","deleted","delete","getPropControllerDescriptors","getPropControllers","Types","SlotControlType","ListControlType","ShapeControlType","ColorControlType","ImageControlType","combineReducers","Documents.reducer","ReactComponents.reducer","ComponentsMeta.reducer","PropControllers.reducer","PropControllerHandles.reducer","IsInBuilder.reducer","IsPreview.reducer","BuilderEditMode.reducer","Documents.getDocument","ReactComponents.getReactComponent","PropControllers.getPropControllerDescriptors","PropControllers.getComponentPropControllerDescriptors","PropControllerHandles.getPropControllers","Documents.isElementReference","Introspection.getElementChildren","Documents.getDocuments","Introspection.getElementId","copyElementReference","copyFromControl","IsPreview.getIsPreview","createStore","Documents.getInitialState","applyMiddleware","thunk"],"mappings":"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"}
1
+ {"version":3,"file":"constants.cjs.js","sources":["../src/state/modules/read-only-documents.ts","../src/state/modules/react-components.tsx","../src/state/modules/components-meta.ts","../src/state/modules/prop-controllers.ts","../src/state/modules/prop-controller-handles.ts","../src/state/modules/is-in-builder.ts","../src/state/modules/is-preview.ts","../src/state/react-page.ts","../src/components/builtin/constants.ts"],"sourcesContent":["import { Action, ActionTypes } from '../actions'\n\nexport type Data = undefined | null | boolean | number | string | Data[] | { [key: string]: Data }\n\nexport type ElementData = { type: string; key: string; props: Record<string, Data> }\n\nexport type ElementReference = { type: 'reference'; key: string; value: string }\n\nexport type Element = ElementData | ElementReference\n\nexport function isElementReference(element: Element): element is ElementReference {\n return !('props' in element)\n}\n\nexport type DocumentReference = {\n key: string\n}\n\nexport function createDocumentReference(key: string): DocumentReference {\n return { key }\n}\n\nexport type Document = {\n key: string\n rootElement: Element\n}\n\nexport function createDocument(key: string, rootElement: Element): Document {\n return { key, rootElement }\n}\n\nexport type State = Map<string, Document>\n\nexport function getInitialState({\n rootElements = new Map(),\n}: { rootElements?: Map<string, Element> } = {}): State {\n const initialState = new Map()\n\n rootElements.forEach((rootElement, documentKey) => {\n initialState.set(documentKey, createDocument(documentKey, rootElement))\n })\n\n return initialState\n}\n\nexport function getDocuments(state: State): Map<string, Document> {\n return state\n}\n\nexport function getDocument(state: State, documentKey: string): Document | null {\n return getDocuments(state).get(documentKey) ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_DOCUMENT:\n return new Map(state).set(action.payload.documentKey, action.payload.document)\n\n case ActionTypes.UNREGISTER_DOCUMENT: {\n const nextState = new Map(state)\n\n const deleted = nextState.delete(action.payload.documentKey)\n\n return deleted ? nextState : state\n }\n\n default:\n return state\n }\n}\n","import type { Component, PropsWithoutRef, ReactElement, RefAttributes } from 'react'\n\nimport { Action, ActionTypes } from '../actions'\n\nexport type ComponentType<P = Record<string, any>, T = any> =\n | { new (props: PropsWithoutRef<P> & RefAttributes<T>, context?: any): Component<P> }\n | ((props: PropsWithoutRef<P> & RefAttributes<T>, context?: any) => ReactElement<any, any> | null)\n\nexport type State = Map<string, ComponentType>\n\nexport function getInitialState({\n reactComponents = new Map(),\n}: { reactComponents?: Map<string, ComponentType> } = {}): State {\n return reactComponents\n}\n\nfunction getReactComponents(state: State): Map<string, ComponentType> {\n return state\n}\n\nexport function getReactComponent(state: State, type: string): ComponentType | null {\n return getReactComponents(state).get(type) ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action) {\n switch (action.type) {\n case ActionTypes.REGISTER_REACT_COMPONENT:\n return new Map(state).set(action.payload.type, action.payload.component)\n\n case ActionTypes.UNREGISTER_REACT_COMPONENT: {\n const nextState = new Map(state)\n\n const deleted = nextState.delete(action.payload.type)\n\n return deleted ? nextState : state\n }\n\n default:\n return state\n }\n}\n","import { Action, ActionTypes } from '../actions'\n\nexport type ComponentIcon =\n | 'Carousel40'\n | 'Code40'\n | 'Countdown40'\n | 'Cube40'\n | 'Divider40'\n | 'Form40'\n | 'Navigation40'\n | 'SocialLinks40'\n | 'Video40'\n\nexport type ComponentMeta = { label: string; icon: ComponentIcon; hidden: boolean }\n\nexport type State = Map<string, ComponentMeta>\n\nexport function getInitialState({\n componentsMeta = new Map(),\n}: { componentsMeta?: Map<string, ComponentMeta> } = {}): State {\n return componentsMeta\n}\n\nexport function getComponentsMeta(state: State): Map<string, ComponentMeta> {\n return state\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT:\n return new Map(state).set(action.payload.type, action.payload.meta)\n\n case ActionTypes.UNREGISTER_COMPONENT: {\n const nextState = new Map(state)\n\n const deleted = nextState.delete(action.payload.type)\n\n return deleted ? nextState : state\n }\n\n default:\n return state\n }\n}\n","import { Action, ActionTypes } from '../actions'\nimport { PropControllerDescriptor } from '../../prop-controllers'\n\nexport type { PropControllerDescriptor }\n\nexport type State = Map<string, Record<string, PropControllerDescriptor>>\n\nexport function getInitialState({\n propControllerDescriptors = new Map(),\n}: {\n propControllerDescriptors?: Map<string, Record<string, PropControllerDescriptor>>\n} = {}): State {\n return propControllerDescriptors\n}\n\nexport function getPropControllerDescriptors(\n state: State,\n): Map<string, Record<string, PropControllerDescriptor>> {\n return state\n}\n\nexport function getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): Record<string, PropControllerDescriptor> | null {\n return getPropControllerDescriptors(state).get(componentType) ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT:\n return new Map(state).set(action.payload.type, action.payload.propControllerDescriptors)\n\n case ActionTypes.UNREGISTER_COMPONENT: {\n const nextState = new Map(state)\n\n const deleted = nextState.delete(action.payload.type)\n\n return deleted ? nextState : state\n }\n\n default:\n return state\n }\n}\n","import { Action, ActionTypes } from '../actions'\nimport type { DescriptorsPropControllers, PropController } from '../../prop-controllers/instances'\nimport type { Descriptor } from '../../prop-controllers/descriptors'\n\nexport interface PropControllersHandle<\n T extends Record<string, Descriptor> = Record<string, Descriptor>,\n> {\n setPropControllers(propControllers: DescriptorsPropControllers<T> | null): void\n}\n\nexport function isPropControllersHandle(value: unknown): value is PropControllersHandle {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'setPropControllers' in value &&\n typeof (value as { setPropControllers: unknown }).setPropControllers === 'function'\n ) {\n return true\n }\n\n return false\n}\n\nexport type State = {\n handles: Map<string, Map<string, PropControllersHandle>>\n instances: Map<string, Map<string, Record<string, PropController>>>\n}\n\nexport function getInitialState(): State {\n return { handles: new Map(), instances: new Map() }\n}\n\nexport function getPropControllersHandle(\n state: State,\n documentKey: string,\n elementKey: string,\n): PropControllersHandle | null {\n return state.handles.get(documentKey)?.get(elementKey) ?? null\n}\n\nexport function getPropControllers(\n state: State,\n documentKey: string,\n elementKey: string,\n): Record<string, PropController> | null {\n return state.instances.get(documentKey)?.get(elementKey) ?? null\n}\n\nexport function getPropController(\n state: State,\n documentKey: string,\n elementKey: string,\n propName: string,\n): PropController | null {\n return getPropControllers(state, documentKey, elementKey)?.[propName] ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey, handle } = action.payload\n\n return {\n ...state,\n handles: new Map(state.handles).set(\n documentKey,\n new Map(state.handles.get(documentKey) ?? []).set(elementKey, handle),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey } = action.payload\n const nextHandles = new Map(state.handles.get(documentKey) ?? [])\n\n const deleted = nextHandles.delete(elementKey)\n\n return deleted\n ? { ...state, handles: new Map(state.handles).set(documentKey, nextHandles) }\n : state\n }\n\n case ActionTypes.REGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey, propControllers } = action.payload\n\n return {\n ...state,\n instances: new Map(state.instances).set(\n documentKey,\n new Map(state.instances.get(documentKey) ?? []).set(elementKey, propControllers),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey } = action.payload\n const nextInstances = new Map(state.instances.get(documentKey) ?? [])\n\n const deleted = nextInstances.delete(elementKey)\n\n return deleted\n ? { ...state, instances: new Map(state.instances).set(documentKey, nextInstances) }\n : state\n }\n\n default:\n return state\n }\n}\n","import { Action, ActionTypes } from '../actions'\n\nexport type State = boolean\n\nexport function getInitialState(): State {\n return false\n}\n\nexport function getIsInBuilder(state: State): boolean {\n return state\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.SET_IS_IN_BUILDER:\n return action.payload\n\n default:\n return state\n }\n}\n","import { Action } from '../actions'\n\nexport type State = boolean\n\nexport function getInitialState(isPreview = false): State {\n return isPreview\n}\n\nexport function getIsPreview(state: State): boolean {\n return state\n}\n\nexport function reducer(state = getInitialState(), action: Action): State {\n switch (action.type) {\n default:\n return state\n }\n}\n","import {\n applyMiddleware,\n combineReducers,\n createStore,\n PreloadedState,\n Store as ReduxStore,\n} from 'redux'\nimport thunk, { ThunkDispatch } from 'redux-thunk'\n\nimport * as Documents from './modules/read-only-documents'\nimport * as ReactComponents from './modules/react-components'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Introspection from '../prop-controllers/introspection'\nimport { Action } from './actions'\nimport { copyElementReference } from '../prop-controllers/copy'\nimport { copy as copyFromControl } from '../controls/control'\n\nexport type {\n Data,\n Document,\n DocumentReference,\n Element,\n ElementData,\n ElementReference,\n} from './modules/read-only-documents'\nexport {\n createDocument,\n createDocumentReference,\n isElementReference,\n} from './modules/read-only-documents'\nexport type { ComponentType } from './modules/react-components'\n\nconst reducer = combineReducers({\n documents: Documents.reducer,\n reactComponents: ReactComponents.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nexport function getDocument(state: State, documentKey: string): Documents.Document | null {\n return Documents.getDocument(getDocumentsStateSlice(state), documentKey)\n}\n\nfunction getReactComponentsStateSlice(state: State): ReactComponents.State {\n return state.reactComponents\n}\n\nexport function getReactComponent(\n state: State,\n type: string,\n): ReactComponents.ComponentType | null {\n return ReactComponents.getReactComponent(getReactComponentsStateSlice(state), type)\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nexport function getPropControllerDescriptors(\n state: State,\n): Map<string, Record<string, PropControllers.PropControllerDescriptor>> {\n return PropControllers.getPropControllerDescriptors(getPropControllersStateSlice(state))\n}\n\nexport function getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nexport function getPropControllers(state: State, documentKey: string, elementKey: string) {\n return PropControllerHandles.getPropControllers(\n getPropControllerHandlesStateSlice(state),\n documentKey,\n elementKey,\n )\n}\n\nfunction normalizeElement(\n element: Documents.Element,\n descriptors: Map<string, Record<string, PropControllers.PropControllerDescriptor>>,\n): Map<string, Documents.Element> {\n const elements = new Map<string, Documents.Element>()\n const remaining = [element]\n let current: Documents.Element | undefined\n\n while ((current = remaining.pop())) {\n elements.set(current.key, current)\n\n if (Documents.isElementReference(current)) continue\n\n const elementDescriptors = descriptors.get(current.type)\n\n if (elementDescriptors == null) continue\n\n const parent = current\n const children = Object.entries(elementDescriptors).reduce((acc, [propName, descriptor]) => {\n return [...acc, ...Introspection.getElementChildren(descriptor, parent.props[propName])]\n }, [] as Documents.Element[])\n\n remaining.push(...children)\n }\n\n return elements\n}\n\nfunction getDocumentElements(state: State, documentKey: string): Map<string, Documents.Element> {\n const document = getDocument(state, documentKey)\n const descriptors = getPropControllerDescriptors(state)\n\n if (document == null) return new Map()\n\n return normalizeElement(document.rootElement, descriptors)\n}\n\n/**\n * Returns all document keys sorted by depth, i.e., parent documents come before child documents.\n *\n * @todo Make this selector more efficient.\n */\nexport function getDocumentKeysSortedByDepth(state: State): string[] {\n const documents = Documents.getDocuments(getDocumentsStateSlice(state))\n const keys = Array.from(documents.keys())\n\n if (keys.length < 2) return keys\n\n const elements = new Map<string, Map<string, Documents.Element>>()\n\n keys.forEach(key => {\n elements.set(key, getDocumentElements(state, key))\n })\n\n keys.sort((a, b) => (elements.get(a)?.has(b) ? -1 : 1))\n\n return keys\n}\n\nexport function getElement(\n state: State,\n documentKey: string,\n elementKey: string,\n): Documents.Element | null {\n return getDocumentElements(state, documentKey).get(elementKey) ?? null\n}\n\nexport function getElementPropControllerDescriptors(\n state: State,\n documentKey: string,\n elementKey: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n const element = getElement(state, documentKey, elementKey)\n\n if (element == null || Documents.isElementReference(element)) return null\n\n return getComponentPropControllerDescriptors(state, element.type)\n}\n\nexport function getElementId(state: State, documentKey: string, elementKey: string): string | null {\n const element = getElement(state, documentKey, elementKey)\n\n if (element == null || Documents.isElementReference(element)) return null\n\n const descriptors = getComponentPropControllerDescriptors(state, element.type)\n\n if (descriptors == null) return null\n\n const elementId = Object.entries(descriptors).reduce((acc, [propName, descriptor]) => {\n if (acc != null) return acc\n\n return Introspection.getElementId(descriptor, element.props[propName])\n }, null as string | null)\n\n return elementId\n}\n\nexport type ReplacementContext = {\n elementHtmlIds: Set<string>\n elementKeys: Map<string, string>\n swatchIds: Map<string, string>\n fileIds: Map<string, string>\n typographyIds: Map<string, string>\n tableIds: Map<string, string>\n tableColumnIds: Map<string, string>\n pageIds: Map<string, string>\n globalElementIds: Map<string, string>\n globalElementData: Map<string, Documents.ElementData>\n}\n\nexport type SerializableReplacementContext = {\n elementHtmlIds: string[]\n elementKeys: { [s: string]: string }\n swatchIds: { [s: string]: string }\n fileIds: { [s: string]: string }\n typographyIds: { [s: string]: string }\n tableIds: { [s: string]: string }\n tableColumnIds: { [s: string]: string }\n pageIds: { [s: string]: string }\n globalElementIds: { [s: string]: string }\n globalElementData: { [s: string]: Documents.ElementData }\n}\n\nexport function createReplacementContext(\n serializableReplacementContext: SerializableReplacementContext,\n): ReplacementContext {\n const rc: ReplacementContext = {\n elementHtmlIds: new Set(serializableReplacementContext.elementHtmlIds),\n elementKeys: new Map(\n serializableReplacementContext.elementKeys &&\n Object.entries(serializableReplacementContext.elementKeys),\n ),\n swatchIds: new Map(\n serializableReplacementContext.swatchIds &&\n Object.entries(serializableReplacementContext.swatchIds),\n ),\n fileIds: new Map(\n serializableReplacementContext.fileIds &&\n Object.entries(serializableReplacementContext.fileIds),\n ),\n typographyIds: new Map(\n serializableReplacementContext.typographyIds &&\n Object.entries(serializableReplacementContext.typographyIds),\n ),\n tableIds: new Map(\n serializableReplacementContext.tableIds &&\n Object.entries(serializableReplacementContext.tableIds),\n ),\n tableColumnIds: new Map(\n serializableReplacementContext.tableColumnIds &&\n Object.entries(serializableReplacementContext.tableColumnIds),\n ),\n pageIds: new Map(\n serializableReplacementContext.pageIds &&\n Object.entries(serializableReplacementContext.pageIds),\n ),\n globalElementIds: new Map(\n serializableReplacementContext.globalElementIds &&\n Object.entries(serializableReplacementContext.globalElementIds),\n ),\n globalElementData: new Map(\n serializableReplacementContext.globalElementData &&\n Object.entries(serializableReplacementContext.globalElementData),\n ),\n }\n\n return rc\n}\n\nexport type CopyContext = {\n replacementContext: ReplacementContext\n copyElement: (node: Documents.Element) => Documents.Element\n}\n\nexport function copyElementTree(\n state: State,\n elementTree: Documents.ElementData,\n replacementContext: SerializableReplacementContext,\n) {\n /*\n * This is structured a bit weird.\n *\n * This is done so that we can pass a callable function into some of the copy functions\n * themselves, to enable mutual recursion.\n *\n * Consider the slot control. It has to iterate through its elements, and for each of them,\n * call some version of the below function.\n *\n * That is how the recursing through the tree happens.\n */\n function copyElementTreeNode(state: State, replacementContext: ReplacementContext) {\n return function (node: Documents.Element) {\n const context = {\n replacementContext,\n copyElement: copyElementTreeNode(state, replacementContext),\n }\n\n if (Documents.isElementReference(node)) {\n return { ...node, value: copyElementReference(node.value, context) }\n }\n\n const descriptors = getComponentPropControllerDescriptors(state, node.type)\n\n if (descriptors == null) return node\n\n for (const [propKey, descriptor] of Object.entries(descriptors)) {\n node.props[propKey] = copyFromControl(descriptor, node.props[propKey], context)\n }\n\n return node\n }\n }\n\n const copy = JSON.parse(JSON.stringify(elementTree)) as Documents.ElementData\n\n return copyElementTreeNode(state, createReplacementContext(replacementContext))(copy)\n}\n\nexport function getIsInBuilder(state: State): boolean {\n return state.isInBuilder\n}\n\nexport function getIsPreview(state: State): boolean {\n return IsPreview.getIsPreview(state.isPreview)\n}\n\nexport function getBuilderEditMode(state: State): BuilderEditMode.State {\n return state.builderEditMode\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({\n rootElements,\n preloadedState,\n}: {\n rootElements?: Map<string, Documents.Element>\n preloadedState?: PreloadedState<State>\n} = {}): Store {\n return createStore(\n reducer,\n { ...preloadedState, documents: Documents.getInitialState({ rootElements }) },\n applyMiddleware(thunk),\n )\n}\n","/**\n * These are the element types that have been used since the beginning of Makeswift and are saved in\n * the database.\n */\nexport const MakeswiftComponentType = {\n Box: './components/Box/index.js',\n Button: './components/Button/index.js',\n Carousel: './components/Carousel/index.js',\n Countdown: './components/Countdown/index.js',\n Divider: './components/Divider/index.js',\n Embed: './components/Embed/index.js',\n Form: './components/Form/index.js',\n Image: './components/Image/index.js',\n Navigation: './components/Navigation/index.js',\n Root: './components/Root/index.js',\n SocialLinks: './components/SocialLinks/index.js',\n Text: './components/Text/index.js',\n Video: './components/Video/index.js',\n} as const\n"],"names":["getInitialState","ActionTypes","reactComponents","Map","state","type","getReactComponents","get","action","REGISTER_REACT_COMPONENT","set","payload","component","UNREGISTER_REACT_COMPONENT","nextState","deleted","delete","getPropControllerDescriptors","getPropControllers","combineReducers","Documents.reducer","ReactComponents.reducer","ComponentsMeta.reducer","PropControllers.reducer","PropControllerHandles.reducer","IsInBuilder.reducer","IsPreview.reducer","BuilderEditMode.reducer","Documents.getDocument","ReactComponents.getReactComponent","PropControllers.getPropControllerDescriptors","PropControllers.getComponentPropControllerDescriptors","PropControllerHandles.getPropControllers","Documents.isElementReference","Introspection.getElementChildren","Documents.getDocuments","Introspection.getElementId","copyElementReference","copyFromControl","IsPreview.getIsPreview","createStore","Documents.getInitialState","applyMiddleware","thunk"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,4BAA4B,SAA+C;AAChF,SAAO,CAAa,YAAA;AACtB;AAMO,iCAAiC,KAAgC;AACtE,SAAO,EAAE,IAAI;AACf;AAOO,wBAAwB,KAAa,aAAgC;AACnE,SAAA,EAAE,KAAK;AAChB;AAIgC,2BAAA;AAAA,EAC9B,mCAAmB,IAAI;AAAA,IACoB,IAAW;AAChD,QAAA,mCAAmB;AAEZ,eAAA,QAAQ,CAAC,aAAa,gBAAgB;AACjD,iBAAa,IAAI,aAAa,eAAe,aAAa,WAAW,CAAC;AAAA,EAAA,CACvE;AAEM,SAAA;AACT;AAEO,sBAAsB,OAAqC;AACzD,SAAA;AACT;AAEO,uBAAqB,OAAc,aAAsC;;AAC9E,SAAO,mBAAa,KAAK,EAAE,IAAI,WAAW,MAAnC,YAAwC;AACjD;AAEwB,mBAAA,QAAeA,kBAAgB,GAAG,QAAuB;AAC/E,UAAQ,OAAO;AAAA,SACRC,QAAY,YAAA;AACR,aAAA,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,QAAQ,aAAa,OAAO,QAAQ,QAAQ;AAAA,SAE1EA,QAAAA,YAAY,qBAAqB;AAC9B,YAAA,YAAY,IAAI,IAAI,KAAK;AAE/B,YAAM,UAAU,UAAU,OAAO,OAAO,QAAQ,WAAW;AAE3D,aAAO,UAAU,YAAY;AAAA,IAC/B;AAAA;AAGS,aAAA;AAAA;AAEb;AC3DgC,2BAAA;AAAA,EAC9BC,sCAAsBC,IAAJ;AAAA,IACkC,IAAW;AACxDD,SAAAA;AACR;AAED,4BAA4BE,OAA0C;AAC7DA,SAAAA;AACR;AAEM,6BAA2BA,OAAcC,MAAoC;;AAC3EC,SAAAA,yBAAmBF,KAAD,EAAQG,IAAIF,IAA9B,MAAAC,YAAuC;AAC/C;AAEuBF,mBAAAA,QAAeJ,kBAAhC,GAAmDQ,QAAgB;AAChEA,UAAAA,OAAOH;AAAAA,SACRJ,QAAYQ,YAAAA;AACR,aAAA,IAAIN,IAAIC,KAAR,EAAeM,IAAIF,OAAOG,QAAQN,MAAMG,OAAOG,QAAQC,SAAvD;AAAA,SAEJX,QAAAA,YAAYY,4BAA4B;AACrCC,YAAAA,YAAY,IAAIX,IAAIC,KAAR;AAEZW,YAAAA,UAAUD,UAAUE,OAAOR,OAAOG,QAAQN,IAAhC;AAEhB,aAAOU,UAAUD,YAAYV;AAAAA,IAC9B;AAAA;AAGQA,aAAAA;AAAAA;AAEZ;ACvB+B,2BAAA;AAAA,EAC9B,qCAAqB,IAAI;AAAA,IAC0B,IAAW;AACvD,SAAA;AACT;AAEO,2BAA2B,OAA0C;AACnE,SAAA;AACT;AAEwB,mBAAA,QAAeJ,kBAAgB,GAAG,QAAuB;AAC/E,UAAQ,OAAO;AAAA,SACRC,QAAY,YAAA;AACR,aAAA,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,QAAQ,MAAM,OAAO,QAAQ,IAAI;AAAA,SAE/DA,QAAAA,YAAY,sBAAsB;AAC/B,YAAA,YAAY,IAAI,IAAI,KAAK;AAE/B,YAAM,UAAU,UAAU,OAAO,OAAO,QAAQ,IAAI;AAEpD,aAAO,UAAU,YAAY;AAAA,IAC/B;AAAA;AAGS,aAAA;AAAA;AAEb;ACpCgC,2BAAA;AAAA,EAC9B,gDAAgC,IAAI;AAAA,IAGlC,IAAW;AACN,SAAA;AACT;AAEO,wCACL,OACuD;AAChD,SAAA;AACT;AAEO,iDACL,OACA,eACiD;;AACjD,SAAOgB,qCAA6B,KAAK,EAAE,IAAI,aAAa,MAArDA,YAA0D;AACnE;AAEwB,mBAAA,QAAejB,kBAAgB,GAAG,QAAuB;AAC/E,UAAQ,OAAO;AAAA,SACRC,QAAY,YAAA;AACR,aAAA,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,QAAQ,MAAM,OAAO,QAAQ,yBAAyB;AAAA,SAEpFA,QAAAA,YAAY,sBAAsB;AAC/B,YAAA,YAAY,IAAI,IAAI,KAAK;AAE/B,YAAM,UAAU,UAAU,OAAO,OAAO,QAAQ,IAAI;AAEpD,aAAO,UAAU,YAAY;AAAA,IAC/B;AAAA;AAGS,aAAA;AAAA;AAEb;AClCO,iCAAiC,OAAgD;AAEpF,MAAA,OAAO,UAAU,YACjB,UAAU,QACV,wBAAwB,SACxB,OAAQ,MAA0C,uBAAuB,YACzE;AACO,WAAA;AAAA,EACT;AAEO,SAAA;AACT;AAOyC,6BAAA;AAChC,SAAA,EAAE,SAAa,oBAAA,IAAA,GAAO,WAAW,oBAAI;AAC9C;AAGE,kCAAA,OACA,aACA,YAC8B;;AAC9B,SAAO,kBAAM,QAAQ,IAAI,WAAW,MAA7B,mBAAgC,IAAI,gBAApC,YAAmD;AAC5D;AAGE,8BAAA,OACA,aACA,YACuC;;AACvC,SAAO,kBAAM,UAAU,IAAI,WAAW,MAA/B,mBAAkC,IAAI,gBAAtC,YAAqD;AAC9D;AAGE,2BAAA,OACA,aACA,YACA,UACuB;;AACvB,SAAOiB,iCAAmB,OAAO,aAAa,UAAU,MAAjDA,mBAAqD,cAArDA,YAAkE;AAC3E;AAEwB,mBAAA,QAAelB,kBAAgB,GAAG,QAAuB;;AAC/E,UAAQ,OAAO;AAAA,SACRC,QAAAA,YAAY,kCAAkC;AACjD,YAAM,EAAE,aAAa,YAAY,WAAW,OAAO;AAE5C,aAAA,iCACF,QADE;AAAA,QAEL,SAAS,IAAI,IAAI,MAAM,OAAO,EAAE,IAC9B,aACA,IAAI,IAAI,YAAM,QAAQ,IAAI,WAAW,MAA7B,YAAkC,CAAA,CAAE,EAAE,IAAI,YAAY,MAAM,CACtE;AAAA,MAAA;AAAA,IAEJ;AAAA,SAEKA,QAAAA,YAAY,oCAAoC;AAC7C,YAAA,EAAE,aAAa,eAAe,OAAO;AACrC,YAAA,cAAc,IAAI,IAAI,YAAM,QAAQ,IAAI,WAAW,MAA7B,YAAkC,CAAA,CAAE;AAE1D,YAAA,UAAU,YAAY,OAAO,UAAU;AAE7C,aAAO,UACH,iCAAK,QAAL,EAAY,SAAS,IAAI,IAAI,MAAM,OAAO,EAAE,IAAI,aAAa,WAAW,OACxE;AAAA,IACN;AAAA,SAEKA,QAAAA,YAAY,2BAA2B;AAC1C,YAAM,EAAE,aAAa,YAAY,oBAAoB,OAAO;AAErD,aAAA,iCACF,QADE;AAAA,QAEL,WAAW,IAAI,IAAI,MAAM,SAAS,EAAE,IAClC,aACA,IAAI,IAAI,YAAM,UAAU,IAAI,WAAW,MAA/B,YAAoC,CAAA,CAAE,EAAE,IAAI,YAAY,eAAe,CACjF;AAAA,MAAA;AAAA,IAEJ;AAAA,SAEKA,QAAAA,YAAY,6BAA6B;AACtC,YAAA,EAAE,aAAa,eAAe,OAAO;AACrC,YAAA,gBAAgB,IAAI,IAAI,YAAM,UAAU,IAAI,WAAW,MAA/B,YAAoC,CAAA,CAAE;AAE9D,YAAA,UAAU,cAAc,OAAO,UAAU;AAE/C,aAAO,UACH,iCAAK,QAAL,EAAY,WAAW,IAAI,IAAI,MAAM,SAAS,EAAE,IAAI,aAAa,aAAa,OAC9E;AAAA,IACN;AAAA;AAGS,aAAA;AAAA;AAEb;ACxGyC,6BAAA;AAChC,SAAA;AACT;AAMwB,mBAAA,QAAeD,kBAAgB,GAAG,QAAuB;AAC/E,UAAQ,OAAO;AAAA,SACRC,QAAY,YAAA;AACf,aAAO,OAAO;AAAA;AAGP,aAAA;AAAA;AAEb;AChBO,yBAAyB,YAAY,OAAc;AACjD,SAAA;AACT;AAEO,wBAAsB,OAAuB;AAC3C,SAAA;AACT;AAEwB,mBAAA,QAAQ,gBAAgB,GAAG,QAAuB;AACxE,UAAQ,OAAO;AAAA;AAEJ,aAAA;AAAA;AAEb;ACoBA,MAAM,UAAUkB,MAAAA,gBAAgB;AAAA,EAC9B,WAAWC;AAAAA,EACX,iBAAiBC;AAAAA,EACjB,gBAAgBC;AAAAA,EAChB,iBAAiBC;AAAAA,EACjB,uBAAuBC;AAAAA,EACvB,aAAaC;AAAAA,EACb,WAAWC;AAAAA,EACX,iBAAiBC,SAAgB;AACnC,CAAC;AAID,gCAAgC,OAA+B;AAC7D,SAAO,MAAM;AACf;AAEO,qBAAqB,OAAc,aAAgD;AACxF,SAAOC,cAAsB,uBAAuB,KAAK,GAAG,WAAW;AACzE;AAEA,sCAAsC,OAAqC;AACzE,SAAO,MAAM;AACf;AAEO,2BACL,OACA,MACsC;AACtC,SAAOC,oBAAkC,6BAA6B,KAAK,GAAG,IAAI;AACpF;AAEA,sCAAsC,OAAqC;AACzE,SAAO,MAAM;AACf;AAEO,sCACL,OACuE;AACvE,SAAOC,+BAA6C,6BAA6B,KAAK,CAAC;AACzF;AAEO,+CACL,OACA,eACiE;AACjE,SAAOC,wCACL,6BAA6B,KAAK,GAClC,aACF;AACF;AAEA,4CAA4C,OAA2C;AACrF,SAAO,MAAM;AACf;AAEmC,4BAAA,OAAc,aAAqB,YAAoB;AACxF,SAAOC,qBACL,mCAAmC,KAAK,GACxC,aACA,UACF;AACF;AAEA,0BACE,SACA,aACgC;AAC1B,QAAA,+BAAe;AACf,QAAA,YAAY,CAAC,OAAO;AACtB,MAAA;AAEI,SAAA,UAAU,UAAU,OAAQ;AACzB,aAAA,IAAI,QAAQ,KAAK,OAAO;AAE7B,QAAAC,mBAA6B,OAAO;AAAG;AAE3C,UAAM,qBAAqB,YAAY,IAAI,QAAQ,IAAI;AAEvD,QAAI,sBAAsB;AAAM;AAEhC,UAAM,SAAS;AACT,UAAA,WAAW,OAAO,QAAQ,kBAAkB,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,gBAAgB;AACnF,aAAA,CAAC,GAAG,KAAK,GAAGC,iCAAiC,YAAY,OAAO,MAAM,SAAS,CAAC;AAAA,IACzF,GAAG,CAAyB,CAAA;AAElB,cAAA,KAAK,GAAG,QAAQ;AAAA,EAC5B;AAEO,SAAA;AACT;AAEA,6BAA6B,OAAc,aAAqD;AACxF,QAAA,WAAW,YAAY,OAAO,WAAW;AACzC,QAAA,cAAc,6BAA6B,KAAK;AAEtD,MAAI,YAAY;AAAM,+BAAW,IAAI;AAE9B,SAAA,iBAAiB,SAAS,aAAa,WAAW;AAC3D;AAOO,sCAAsC,OAAwB;AACnE,QAAM,YAAYC,aAAuB,uBAAuB,KAAK,CAAC;AACtE,QAAM,OAAO,MAAM,KAAK,UAAU,KAAM,CAAA;AAExC,MAAI,KAAK,SAAS;AAAU,WAAA;AAEtB,QAAA,+BAAe;AAErB,OAAK,QAAQ,CAAO,QAAA;AAClB,aAAS,IAAI,KAAK,oBAAoB,OAAO,GAAG,CAAC;AAAA,EAAA,CAClD;AAED,OAAK,KAAK,CAAC,GAAG,MAAA;;AAAO,2BAAS,IAAI,CAAC,MAAd,mBAAiB,IAAI,MAAK,KAAK;AAAA,GAAE;AAE/C,SAAA;AACT;AAGE,oBAAA,OACA,aACA,YAC0B;;AAC1B,SAAO,0BAAoB,OAAO,WAAW,EAAE,IAAI,UAAU,MAAtD,YAA2D;AACpE;AAGE,6CAAA,OACA,aACA,YACiE;AACjE,QAAM,UAAU,WAAW,OAAO,aAAa,UAAU;AAEzD,MAAI,WAAW,QAAQF,mBAA6B,OAAO;AAAU,WAAA;AAE9D,SAAA,sCAAsC,OAAO,QAAQ,IAAI;AAClE;AAE6B,sBAAA,OAAc,aAAqB,YAAmC;AACjG,QAAM,UAAU,WAAW,OAAO,aAAa,UAAU;AAEzD,MAAI,WAAW,QAAQA,mBAA6B,OAAO;AAAU,WAAA;AAErE,QAAM,cAAc,sCAAsC,OAAO,QAAQ,IAAI;AAE7E,MAAI,eAAe;AAAa,WAAA;AAE1B,QAAA,YAAY,OAAO,QAAQ,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,gBAAgB;AACpF,QAAI,OAAO;AAAa,aAAA;AAExB,WAAOG,cAAAA,aAA2B,YAAY,QAAQ,MAAM,SAAS;AAAA,KACpE,IAAqB;AAEjB,SAAA;AACT;AA4BO,kCACL,gCACoB;AACpB,QAAM,KAAyB;AAAA,IAC7B,gBAAgB,IAAI,IAAI,+BAA+B,cAAc;AAAA,IACrE,aAAa,IAAI,IACf,+BAA+B,eAC7B,OAAO,QAAQ,+BAA+B,WAAW,CAC7D;AAAA,IACA,WAAW,IAAI,IACb,+BAA+B,aAC7B,OAAO,QAAQ,+BAA+B,SAAS,CAC3D;AAAA,IACA,SAAS,IAAI,IACX,+BAA+B,WAC7B,OAAO,QAAQ,+BAA+B,OAAO,CACzD;AAAA,IACA,eAAe,IAAI,IACjB,+BAA+B,iBAC7B,OAAO,QAAQ,+BAA+B,aAAa,CAC/D;AAAA,IACA,UAAU,IAAI,IACZ,+BAA+B,YAC7B,OAAO,QAAQ,+BAA+B,QAAQ,CAC1D;AAAA,IACA,gBAAgB,IAAI,IAClB,+BAA+B,kBAC7B,OAAO,QAAQ,+BAA+B,cAAc,CAChE;AAAA,IACA,SAAS,IAAI,IACX,+BAA+B,WAC7B,OAAO,QAAQ,+BAA+B,OAAO,CACzD;AAAA,IACA,kBAAkB,IAAI,IACpB,+BAA+B,oBAC7B,OAAO,QAAQ,+BAA+B,gBAAgB,CAClE;AAAA,IACA,mBAAmB,IAAI,IACrB,+BAA+B,qBAC7B,OAAO,QAAQ,+BAA+B,iBAAiB,CACnE;AAAA,EAAA;AAGK,SAAA;AACT;AAQE,yBAAA,OACA,aACA,oBACA;AAYA,+BAA6B,QAAc,qBAAwC;AACjF,WAAO,SAAU,MAAyB;AACxC,YAAM,UAAU;AAAA,QACd,oBAAA;AAAA,QACA,aAAa,oBAAoB,QAAO,mBAAkB;AAAA,MAAA;AAGxD,UAAAH,mBAA6B,IAAI,GAAG;AACtC,eAAO,iCAAK,OAAL,EAAW,OAAOI,SAAAA,qBAAqB,KAAK,OAAO,OAAO;MACnE;AAEA,YAAM,cAAc,sCAAsC,QAAO,KAAK,IAAI;AAE1E,UAAI,eAAe;AAAa,eAAA;AAEhC,iBAAW,CAAC,SAAS,eAAe,OAAO,QAAQ,WAAW,GAAG;AAC/D,aAAK,MAAM,WAAWC,cAAgB,YAAY,KAAK,MAAM,UAAU,OAAO;AAAA,MAChF;AAEO,aAAA;AAAA,IAAA;AAAA,EAEX;AAEA,QAAM,OAAO,KAAK,MAAM,KAAK,UAAU,WAAW,CAAC;AAEnD,SAAO,oBAAoB,OAAO,yBAAyB,kBAAkB,CAAC,EAAE,IAAI;AACtF;AAEO,wBAAwB,OAAuB;AACpD,SAAO,MAAM;AACf;AAEO,sBAAsB,OAAuB;AAC3C,SAAAC,eAAuB,MAAM,SAAS;AAC/C;AAEO,4BAA4B,OAAqC;AACtE,SAAO,MAAM;AACf;AAM+B,wBAAA;AAAA,EAC7B;AAAA,EACA;AAAA,IAIE,IAAW;AACb,SAAOC,MACL,YAAA,SACA,iCAAK,iBAAL,EAAqB,WAAWC,kBAA0B,EAAE,aAAc,CAAA,EAC1E,IAAAC,sBAAgBC,eAAAA,UAAK,CACvB;AACF;ACvVO,MAAM,yBAAyB;AAAA,EACpC,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,WAAW;AAAA,EACX,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}