@makeswift/runtime 0.9.0 → 0.9.1

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 (183) hide show
  1. package/dist/Box.cjs.js +15 -14
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +10 -9
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +12 -11
  6. package/dist/Button.cjs.js.map +1 -1
  7. package/dist/Button.es.js +10 -9
  8. package/dist/Button.es.js.map +1 -1
  9. package/dist/Carousel.cjs.js +26 -25
  10. package/dist/Carousel.cjs.js.map +1 -1
  11. package/dist/Carousel.es.js +5 -4
  12. package/dist/Carousel.es.js.map +1 -1
  13. package/dist/Countdown.cjs.js +15 -14
  14. package/dist/Countdown.cjs.js.map +1 -1
  15. package/dist/Countdown.es.js +7 -6
  16. package/dist/Countdown.es.js.map +1 -1
  17. package/dist/Divider.cjs.js +12 -11
  18. package/dist/Divider.cjs.js.map +1 -1
  19. package/dist/Divider.es.js +10 -9
  20. package/dist/Divider.es.js.map +1 -1
  21. package/dist/Embed.cjs.js +4 -29
  22. package/dist/Embed.cjs.js.map +1 -1
  23. package/dist/Embed.es.js +3 -28
  24. package/dist/Embed.es.js.map +1 -1
  25. package/dist/Form.cjs.js +51 -50
  26. package/dist/Form.cjs.js.map +1 -1
  27. package/dist/Form.es.js +7 -6
  28. package/dist/Form.es.js.map +1 -1
  29. package/dist/Image.cjs.js +8 -7
  30. package/dist/Image.cjs.js.map +1 -1
  31. package/dist/Image.es.js +7 -6
  32. package/dist/Image.es.js.map +1 -1
  33. package/dist/LiveProvider.cjs.js +4 -3
  34. package/dist/LiveProvider.cjs.js.map +1 -1
  35. package/dist/LiveProvider.es.js +6 -5
  36. package/dist/LiveProvider.es.js.map +1 -1
  37. package/dist/Navigation.cjs.js +26 -25
  38. package/dist/Navigation.cjs.js.map +1 -1
  39. package/dist/Navigation.es.js +5 -4
  40. package/dist/Navigation.es.js.map +1 -1
  41. package/dist/PreviewProvider.cjs.js +6 -5
  42. package/dist/PreviewProvider.cjs.js.map +1 -1
  43. package/dist/PreviewProvider.es.js +6 -5
  44. package/dist/PreviewProvider.es.js.map +1 -1
  45. package/dist/ReadOnlyText.cjs.js +14 -13
  46. package/dist/ReadOnlyText.cjs.js.map +1 -1
  47. package/dist/ReadOnlyText.es.js +9 -8
  48. package/dist/ReadOnlyText.es.js.map +1 -1
  49. package/dist/ReadOnlyTextV2.cjs.js +11 -10
  50. package/dist/ReadOnlyTextV2.cjs.js.map +1 -1
  51. package/dist/ReadOnlyTextV2.es.js +7 -6
  52. package/dist/ReadOnlyTextV2.es.js.map +1 -1
  53. package/dist/Root.cjs.js +7 -6
  54. package/dist/Root.cjs.js.map +1 -1
  55. package/dist/Root.es.js +5 -4
  56. package/dist/Root.es.js.map +1 -1
  57. package/dist/SocialLinks.cjs.js +14 -13
  58. package/dist/SocialLinks.cjs.js.map +1 -1
  59. package/dist/SocialLinks.es.js +10 -9
  60. package/dist/SocialLinks.es.js.map +1 -1
  61. package/dist/Text.cjs.js +4 -3
  62. package/dist/Text.cjs.js.map +1 -1
  63. package/dist/Text.es.js +5 -4
  64. package/dist/Text.es.js.map +1 -1
  65. package/dist/Video.cjs.js +4 -29
  66. package/dist/Video.cjs.js.map +1 -1
  67. package/dist/Video.es.js +3 -28
  68. package/dist/Video.es.js.map +1 -1
  69. package/dist/builder.cjs.js +5 -0
  70. package/dist/builder.cjs.js.map +1 -1
  71. package/dist/builder.es.js +5 -0
  72. package/dist/builder.es.js.map +1 -1
  73. package/dist/components.cjs.js +9 -8
  74. package/dist/components.cjs.js.map +1 -1
  75. package/dist/components.es.js +9 -8
  76. package/dist/components.es.js.map +1 -1
  77. package/dist/control-serialization.cjs.js +88 -9
  78. package/dist/control-serialization.cjs.js.map +1 -1
  79. package/dist/control-serialization.es.js +89 -10
  80. package/dist/control-serialization.es.js.map +1 -1
  81. package/dist/controls.cjs.js +10 -0
  82. package/dist/controls.cjs.js.map +1 -1
  83. package/dist/controls.es.js +6 -1
  84. package/dist/controls.es.js.map +1 -1
  85. package/dist/deepEqual.cjs.js +40 -0
  86. package/dist/deepEqual.cjs.js.map +1 -0
  87. package/dist/deepEqual.es.js +39 -0
  88. package/dist/deepEqual.es.js.map +1 -0
  89. package/dist/index.cjs.js +62 -91
  90. package/dist/index.cjs.js.map +1 -1
  91. package/dist/index.cjs10.js +8 -7
  92. package/dist/index.cjs10.js.map +1 -1
  93. package/dist/index.cjs2.js +13 -13
  94. package/dist/index.cjs2.js.map +1 -1
  95. package/dist/index.cjs4.js +2 -1
  96. package/dist/index.cjs4.js.map +1 -1
  97. package/dist/index.cjs8.js +4 -3
  98. package/dist/index.cjs8.js.map +1 -1
  99. package/dist/index.cjs9.js +69 -105
  100. package/dist/index.cjs9.js.map +1 -1
  101. package/dist/index.es.js +47 -75
  102. package/dist/index.es.js.map +1 -1
  103. package/dist/index.es10.js +5 -4
  104. package/dist/index.es10.js.map +1 -1
  105. package/dist/index.es2.js +2 -2
  106. package/dist/index.es3.js +1 -1
  107. package/dist/index.es4.js +2 -1
  108. package/dist/index.es4.js.map +1 -1
  109. package/dist/index.es6.js +1 -1
  110. package/dist/index.es8.js +4 -3
  111. package/dist/index.es8.js.map +1 -1
  112. package/dist/index.es9.js +71 -107
  113. package/dist/index.es9.js.map +1 -1
  114. package/dist/leaf.cjs.js +1 -1
  115. package/dist/leaf.cjs.js.map +1 -1
  116. package/dist/leaf.es.js +2 -2
  117. package/dist/main.cjs.js +5 -0
  118. package/dist/main.cjs.js.map +1 -1
  119. package/dist/main.es.js +5 -0
  120. package/dist/main.es.js.map +1 -1
  121. package/dist/next.cjs.js +4 -3
  122. package/dist/next.cjs.js.map +1 -1
  123. package/dist/next.es.js +5 -4
  124. package/dist/next.es.js.map +1 -1
  125. package/dist/prop-controllers.cjs.js +5 -0
  126. package/dist/prop-controllers.cjs.js.map +1 -1
  127. package/dist/prop-controllers.es.js +5 -0
  128. package/dist/prop-controllers.es.js.map +1 -1
  129. package/dist/react-page.cjs.js +376 -203
  130. package/dist/react-page.cjs.js.map +1 -1
  131. package/dist/react-page.es.js +349 -204
  132. package/dist/react-page.es.js.map +1 -1
  133. package/dist/react.cjs.js +4 -3
  134. package/dist/react.cjs.js.map +1 -1
  135. package/dist/react.es.js +4 -3
  136. package/dist/react.es.js.map +1 -1
  137. package/dist/slate.cjs.js +88 -4
  138. package/dist/slate.cjs.js.map +1 -1
  139. package/dist/slate.es.js +89 -5
  140. package/dist/slate.es.js.map +1 -1
  141. package/dist/types/src/builder/serialization/control-serialization.d.ts +3 -3
  142. package/dist/types/src/builder/serialization/control-serialization.d.ts.map +1 -1
  143. package/dist/types/src/builder/serialization/controls/rich-text-v2.d.ts +2 -2
  144. package/dist/types/src/builder/serialization/controls/rich-text-v2.d.ts.map +1 -1
  145. package/dist/types/src/builder/serialization/controls/style-v2.d.ts +5 -0
  146. package/dist/types/src/builder/serialization/controls/style-v2.d.ts.map +1 -0
  147. package/dist/types/src/components/builtin/Button/Button.d.ts +1 -1
  148. package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  149. package/dist/types/src/components/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  150. package/dist/types/src/components/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  151. package/dist/types/src/controls/control.d.ts +3 -2
  152. package/dist/types/src/controls/control.d.ts.map +1 -1
  153. package/dist/types/src/controls/index.d.ts +1 -0
  154. package/dist/types/src/controls/index.d.ts.map +1 -1
  155. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts +8 -3
  156. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  157. package/dist/types/src/controls/style-v2.d.ts +55 -0
  158. package/dist/types/src/controls/style-v2.d.ts.map +1 -0
  159. package/dist/types/src/prop-controllers/descriptors.d.ts +4 -3
  160. package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
  161. package/dist/types/src/prop-controllers/instances.d.ts +2 -2
  162. package/dist/types/src/prop-controllers/instances.d.ts.map +1 -1
  163. package/dist/types/src/runtimes/react/controls/control.d.ts +3 -2
  164. package/dist/types/src/runtimes/react/controls/control.d.ts.map +1 -1
  165. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts +2 -1
  166. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts.map +1 -1
  167. package/dist/types/src/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts +1 -1
  168. package/dist/types/src/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  169. package/dist/types/src/runtimes/react/controls/style-v2.d.ts +4 -0
  170. package/dist/types/src/runtimes/react/controls/style-v2.d.ts.map +1 -0
  171. package/dist/types/src/runtimes/react/controls.d.ts.map +1 -1
  172. package/dist/types/src/slate/BlockPlugin/index.d.ts +3 -0
  173. package/dist/types/src/slate/BlockPlugin/index.d.ts.map +1 -1
  174. package/dist/types/src/slate/InlineModePlugin/index.d.ts +1 -0
  175. package/dist/types/src/slate/InlineModePlugin/index.d.ts.map +1 -1
  176. package/dist/types/src/slate/TextAlignPlugin/index.d.ts +9 -0
  177. package/dist/types/src/slate/TextAlignPlugin/index.d.ts.map +1 -0
  178. package/dist/types/src/slate/index.d.ts +1 -0
  179. package/dist/types/src/slate/index.d.ts.map +1 -1
  180. package/dist/types/src/slate/types.d.ts +18 -0
  181. package/dist/types/src/slate/types.d.ts.map +1 -1
  182. package/dist/useMediaQuery.es.js +1 -1
  183. package/package.json +1 -1
@@ -18,6 +18,18 @@ var __spreadValues = (a, b) => {
18
18
  return a;
19
19
  };
20
20
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ var __objRest = (source, exclude) => {
22
+ var target = {};
23
+ for (var prop in source)
24
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
+ target[prop] = source[prop];
26
+ if (source != null && __getOwnPropSymbols)
27
+ for (var prop of __getOwnPropSymbols(source)) {
28
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
+ target[prop] = source[prop];
30
+ }
31
+ return target;
32
+ };
21
33
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
22
34
  var React = require("react");
23
35
  var slate = require("slate");
@@ -35,14 +47,15 @@ var jsxRuntime = require("react/jsx-runtime");
35
47
  require("redux");
36
48
  require("redux-thunk");
37
49
  require("./actions.cjs.js");
38
- require("use-sync-external-store/shim/with-selector");
39
- require("next/dynamic");
40
50
  require("@emotion/serialize");
41
51
  require("@emotion/utils");
52
+ require("use-sync-external-store/shim/with-selector");
53
+ require("next/dynamic");
42
54
  require("./text-input.cjs.js");
43
55
  require("./combobox.cjs.js");
44
56
  require("use-sync-external-store/shim");
45
57
  require("./types.cjs.js");
58
+ require("./deepEqual.cjs.js");
46
59
  require("./box-models.cjs.js");
47
60
  require("css-box-model");
48
61
  require("color");
@@ -87,6 +100,50 @@ function useSyncDOMSelection(editor, isEnabled) {
87
100
  }
88
101
  });
89
102
  }
103
+ function RichTextV2Element(_a) {
104
+ var _b = _a, {
105
+ definition,
106
+ plugins
107
+ } = _b, props = __objRest(_b, [
108
+ "definition",
109
+ "plugins"
110
+ ]);
111
+ const blockStyles = [reactPage.useStyle({
112
+ margin: 0
113
+ })];
114
+ function initialRenderElement(props2) {
115
+ switch (props2.element.type) {
116
+ case reactPage.BlockType.Default:
117
+ default:
118
+ if (definition.config.mode === reactPage.RichTextV2Mode.Inline) {
119
+ return /* @__PURE__ */ jsxRuntime.jsx("span", __spreadProps(__spreadValues({}, props2.attributes), {
120
+ className: css.cx(...blockStyles),
121
+ children: props2.children
122
+ }));
123
+ }
124
+ return /* @__PURE__ */ jsxRuntime.jsx("p", __spreadProps(__spreadValues({}, props2.attributes), {
125
+ className: css.cx(...blockStyles),
126
+ children: props2.children
127
+ }));
128
+ }
129
+ }
130
+ const renderElement = plugins.reduce((renderFn, plugin) => (props2) => {
131
+ const {
132
+ control,
133
+ renderElement: renderElement2
134
+ } = plugin;
135
+ if ((control == null ? void 0 : control.definition) == null || renderElement2 == null)
136
+ return renderFn(props2);
137
+ if (control.getElementValue == null)
138
+ return renderElement2(renderFn, void 0)(props2);
139
+ return /* @__PURE__ */ jsxRuntime.jsx(next.ControlValue, {
140
+ definition: control.definition,
141
+ data: control.getElementValue(props2.element),
142
+ children: (value) => renderElement2(renderFn, value)(props2)
143
+ });
144
+ }, initialRenderElement);
145
+ return renderElement(props);
146
+ }
90
147
  const defaultText = [{
91
148
  type: reactPage.BlockType.Default,
92
149
  children: [{
@@ -95,13 +152,14 @@ const defaultText = [{
95
152
  }];
96
153
  function EditableTextV2({
97
154
  text,
155
+ definition,
98
156
  control
99
157
  }) {
100
158
  const plugins = React.useMemo(() => {
101
- var _a, _b, _c, _d, _e;
102
- const plugins2 = [...(_c = (_b = (_a = control == null ? void 0 : control.descriptor) == null ? void 0 : _a.config) == null ? void 0 : _b.plugins) != null ? _c : [], ...((_e = (_d = control == null ? void 0 : control.descriptor) == null ? void 0 : _d.config) == null ? void 0 : _e.mode) === reactPage.RichTextV2Mode.Inline ? [index.InlineModePlugin] : []];
159
+ var _a, _b, _c;
160
+ const plugins2 = [...(_b = (_a = definition == null ? void 0 : definition.config) == null ? void 0 : _a.plugins) != null ? _b : [], ...((_c = definition == null ? void 0 : definition.config) == null ? void 0 : _c.mode) === reactPage.RichTextV2Mode.Inline ? [index.InlineModePlugin] : []];
103
161
  return plugins2;
104
- }, [control == null ? void 0 : control.descriptor.config]);
162
+ }, [definition]);
105
163
  const [editor] = React.useState(() => plugins.reduceRight((editor2, plugin) => {
106
164
  var _a, _b;
107
165
  return (_b = (_a = plugin == null ? void 0 : plugin.withPlugin) == null ? void 0 : _a.call(plugin, editor2)) != null ? _b : editor2;
@@ -118,106 +176,12 @@ function EditableTextV2({
118
176
  onBoxModelChange: (boxModel) => control.changeBoxModel(boxModel)
119
177
  });
120
178
  }, [editor, control]);
121
- const renderElement = React.useCallback(({
122
- attributes,
123
- children,
124
- element
125
- }) => {
126
- const blockStyles = [next.useStyle({
127
- margin: 0
128
- })];
129
- const quoteStyles = next.useStyle({
130
- padding: "0.5em 10px",
131
- fontSize: "1.25em",
132
- fontWeight: "300",
133
- borderLeft: "5px solid rgba(0, 0, 0, 0.1)"
134
- });
135
- switch (element.type) {
136
- case reactPage.BlockType.Text:
137
- return /* @__PURE__ */ jsxRuntime.jsx("span", __spreadProps(__spreadValues({}, attributes), {
138
- className: css.cx(...blockStyles),
139
- children
140
- }));
141
- case reactPage.BlockType.Paragraph:
142
- return /* @__PURE__ */ jsxRuntime.jsx("p", __spreadProps(__spreadValues({}, attributes), {
143
- className: css.cx(...blockStyles),
144
- children
145
- }));
146
- case reactPage.BlockType.Heading1:
147
- return /* @__PURE__ */ jsxRuntime.jsx("h1", __spreadProps(__spreadValues({}, attributes), {
148
- className: css.cx(...blockStyles),
149
- children
150
- }));
151
- case reactPage.BlockType.Heading2:
152
- return /* @__PURE__ */ jsxRuntime.jsx("h2", __spreadProps(__spreadValues({}, attributes), {
153
- className: css.cx(...blockStyles),
154
- children
155
- }));
156
- case reactPage.BlockType.Heading3:
157
- return /* @__PURE__ */ jsxRuntime.jsx("h3", __spreadProps(__spreadValues({}, attributes), {
158
- className: css.cx(...blockStyles),
159
- children
160
- }));
161
- case reactPage.BlockType.Heading4:
162
- return /* @__PURE__ */ jsxRuntime.jsx("h4", __spreadProps(__spreadValues({}, attributes), {
163
- className: css.cx(...blockStyles),
164
- children
165
- }));
166
- case reactPage.BlockType.Heading5:
167
- return /* @__PURE__ */ jsxRuntime.jsx("h5", __spreadProps(__spreadValues({}, attributes), {
168
- className: css.cx(...blockStyles),
169
- children
170
- }));
171
- case reactPage.BlockType.Heading6:
172
- return /* @__PURE__ */ jsxRuntime.jsx("h6", __spreadProps(__spreadValues({}, attributes), {
173
- className: css.cx(...blockStyles),
174
- children
175
- }));
176
- case reactPage.BlockType.BlockQuote:
177
- return /* @__PURE__ */ jsxRuntime.jsx("blockquote", __spreadProps(__spreadValues({}, attributes), {
178
- className: css.cx(...blockStyles, quoteStyles),
179
- children
180
- }));
181
- case reactPage.BlockType.OrderedList:
182
- return /* @__PURE__ */ jsxRuntime.jsx("ol", __spreadProps(__spreadValues({}, attributes), {
183
- className: css.cx(...blockStyles),
184
- style: {
185
- listStylePosition: "inside"
186
- },
187
- children
188
- }));
189
- case reactPage.BlockType.UnorderedList:
190
- return /* @__PURE__ */ jsxRuntime.jsx("ul", __spreadProps(__spreadValues({}, attributes), {
191
- className: css.cx(...blockStyles),
192
- style: {
193
- listStylePosition: "inside"
194
- },
195
- children
196
- }));
197
- case reactPage.BlockType.ListItem:
198
- return /* @__PURE__ */ jsxRuntime.jsx("li", __spreadProps(__spreadValues({}, attributes), {
199
- className: css.cx(...blockStyles),
200
- children
201
- }));
202
- case reactPage.BlockType.ListItemChild:
203
- return /* @__PURE__ */ jsxRuntime.jsx("span", __spreadProps(__spreadValues({}, attributes), {
204
- className: css.cx(...blockStyles),
205
- children
206
- }));
207
- case reactPage.BlockType.Default:
208
- default:
209
- if ((control == null ? void 0 : control.descriptor.config.mode) === reactPage.RichTextV2Mode.Inline) {
210
- return /* @__PURE__ */ jsxRuntime.jsx("span", __spreadProps(__spreadValues({}, attributes), {
211
- className: css.cx(...blockStyles),
212
- children
213
- }));
214
- }
215
- return /* @__PURE__ */ jsxRuntime.jsx("p", __spreadProps(__spreadValues({}, attributes), {
216
- className: css.cx(...blockStyles),
217
- children
218
- }));
219
- }
220
- }, []);
179
+ const renderElement = React.useCallback((props) => {
180
+ return /* @__PURE__ */ jsxRuntime.jsx(RichTextV2Element, __spreadProps(__spreadValues({}, props), {
181
+ definition,
182
+ plugins
183
+ }));
184
+ }, [plugins, definition]);
221
185
  const renderLeaf = React.useCallback(({
222
186
  attributes,
223
187
  children
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs9.js","sources":["../src/runtimes/react/controls/rich-text-v2/EditableTextV2/useSyncDOMSelection.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.tsx"],"sourcesContent":["import { Editor, Range as SlateRange } from 'slate'\nimport { useIsomorphicLayoutEffect } from '../../../../../components/hooks/useIsomorphicLayoutEffect'\nimport { MutableRefObject } from 'react'\nimport { ReactEditor } from 'slate-react'\n\n/**\n * Clicking outside of the host blurs our `<Editable />`.\n * `<Editable />` only updates the DOM's selection to match slate when it is focused.\n * In the case of a panel being clicked this hook updates the DOM selection to match slate.\n */\nexport function useSyncDOMSelection(editor: Editor, isEnabled: MutableRefObject<boolean>) {\n useIsomorphicLayoutEffect(() => {\n if (!isEnabled.current || editor.selection == null || ReactEditor.isFocused(editor)) return\n try {\n const root = ReactEditor.findDocumentOrShadowRoot(editor) as Document\n const domSelection = root.getSelection()\n const newDomRange: Range | null = ReactEditor.toDOMRange(editor, editor.selection)\n\n if (newDomRange) {\n if (SlateRange.isBackward(editor.selection!)) {\n domSelection?.setBaseAndExtent(\n newDomRange.endContainer,\n newDomRange.endOffset,\n newDomRange.startContainer,\n newDomRange.startOffset,\n )\n } else {\n domSelection?.setBaseAndExtent(\n newDomRange.startContainer,\n newDomRange.startOffset,\n newDomRange.endContainer,\n newDomRange.endOffset,\n )\n }\n } else {\n domSelection?.removeAllRanges()\n }\n } catch (e) {\n console.error(e)\n }\n })\n}\n","import {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { Descendant, createEditor } from 'slate'\nimport isHotkey from 'is-hotkey'\nimport { withHistory, HistoryEditor } from 'slate-history'\nimport {\n withReact,\n ReactEditor,\n RenderElementProps,\n RenderLeafProps,\n Slate,\n Editable,\n} from 'slate-react'\n\nimport {\n RichTextV2Control,\n RichTextV2ControlData,\n RichTextV2ControlDefinition,\n RichTextV2Mode,\n} from '../../../../../controls'\nimport { useBuilderEditMode } from '../../..'\nimport { BuilderEditMode } from '../../../../../state/modules/builder-edit-mode'\nimport { pollBoxModel } from '../../../poll-box-model'\nimport { InlineModePlugin, withBuilder } from '../../../../../slate'\nimport { useSyncDOMSelection } from './useSyncDOMSelection'\nimport { BlockType } from '../../../../../slate'\nimport { useStyle } from '../../../use-style'\nimport { cx } from '@emotion/css'\n\nexport type RichTextV2ControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextV2ControlDefinition }\n\nconst defaultText: Descendant[] = [{ type: BlockType.Default, children: [{ text: '' }] }]\n\ntype Props = {\n text: RichTextV2ControlData\n control: RichTextV2Control | null\n}\n\nexport function EditableTextV2({ text, control }: Props) {\n const plugins = useMemo(() => {\n const plugins = [\n ...(control?.descriptor?.config?.plugins ?? []),\n ...(control?.descriptor?.config?.mode === RichTextV2Mode.Inline ? [InlineModePlugin] : []),\n ]\n return plugins\n }, [control?.descriptor.config])\n\n const [editor] = useState(() =>\n plugins.reduceRight(\n (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,\n withBuilder(withHistory(withReact(createEditor()))),\n ),\n )\n\n const isPreservingFocus = useRef(false)\n useSyncDOMSelection(editor, isPreservingFocus)\n\n const editMode = useBuilderEditMode()\n\n useEffect(() => {\n if (control == null) return\n\n const element = ReactEditor.toDOMNode(editor, editor)\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeBoxModel(boxModel),\n })\n }, [editor, control])\n\n const renderElement = useCallback(({ attributes, children, element }: RenderElementProps) => {\n // TODO: move this markup into the block plugin once we have a way of composing render functionality.\n const blockStyles = [useStyle({ margin: 0 })]\n const quoteStyles = useStyle({\n padding: '0.5em 10px',\n fontSize: '1.25em',\n fontWeight: '300',\n borderLeft: '5px solid rgba(0, 0, 0, 0.1)',\n })\n\n switch (element.type) {\n case BlockType.Text:\n return (\n <span {...attributes} className={cx(...blockStyles)}>\n {children}\n </span>\n )\n case BlockType.Paragraph:\n return (\n <p {...attributes} className={cx(...blockStyles)}>\n {children}\n </p>\n )\n case BlockType.Heading1:\n return (\n <h1 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h1>\n )\n case BlockType.Heading2:\n return (\n <h2 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h2>\n )\n case BlockType.Heading3:\n return (\n <h3 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h3>\n )\n case BlockType.Heading4:\n return (\n <h4 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h4>\n )\n case BlockType.Heading5:\n return (\n <h5 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h5>\n )\n case BlockType.Heading6:\n return (\n <h6 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h6>\n )\n case BlockType.BlockQuote:\n return (\n <blockquote {...attributes} className={cx(...blockStyles, quoteStyles)}>\n {children}\n </blockquote>\n )\n case BlockType.OrderedList:\n return (\n <ol\n {...attributes}\n className={cx(...blockStyles)}\n style={{ listStylePosition: 'inside' }}\n >\n {children}\n </ol>\n )\n case BlockType.UnorderedList:\n return (\n <ul\n {...attributes}\n className={cx(...blockStyles)}\n style={{ listStylePosition: 'inside' }}\n >\n {children}\n </ul>\n )\n case BlockType.ListItem:\n return (\n <li {...attributes} className={cx(...blockStyles)}>\n {children}\n </li>\n )\n case BlockType.ListItemChild:\n return (\n <span {...attributes} className={cx(...blockStyles)}>\n {children}\n </span>\n )\n case BlockType.Default:\n default:\n if (control?.descriptor.config.mode === RichTextV2Mode.Inline) {\n return (\n <span {...attributes} className={cx(...blockStyles)}>\n {children}\n </span>\n )\n }\n\n return (\n <p {...attributes} className={cx(...blockStyles)}>\n {children}\n </p>\n )\n }\n }, [])\n\n const renderLeaf = useCallback(({ attributes, children }: RenderLeafProps) => {\n return <span {...attributes}>{children}</span>\n }, [])\n\n const initialValue = useMemo(() => text ?? defaultText, [text])\n\n useEffect(() => {\n /**\n * This is required because clicking on the overlay has `relatedTarget` null just like the sidebar, but\n * - in the case of the overlay we switch to BUILD mode\n * - in the case of the sidebar we preserve the selection\n */\n if (editMode !== BuilderEditMode.CONTENT) {\n isPreservingFocus.current = false\n ReactEditor.deselect(editor)\n }\n }, [editMode])\n\n useEffect(() => {\n control?.setEditor(editor)\n control?.setDefaultValue(defaultText)\n }, [control, editor, defaultText])\n\n const handleFocus = useCallback(() => {\n isPreservingFocus.current = true\n control?.select()\n }, [control])\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isHotkey('mod+shift+z', e)) return HistoryEditor.redo(editor)\n if (isHotkey('mod+z', e)) return HistoryEditor.undo(editor)\n if (isHotkey('escape')(e)) {\n isPreservingFocus.current = false\n ReactEditor.blur(editor)\n control?.switchToBuildMode()\n }\n\n plugins.forEach(plugin => plugin?.onKeyDown?.(e, editor))\n },\n [control, plugins, editor],\n )\n\n const handleKeyUp = useCallback(\n (e: KeyboardEvent) => {\n if (editMode === BuilderEditMode.CONTENT) e.preventDefault()\n },\n [control, editor, editMode],\n )\n\n const handleClick = useCallback(\n (e: MouseEvent) => {\n if (editMode === BuilderEditMode.CONTENT) e.stopPropagation()\n },\n [editMode],\n )\n\n const handleBlur = useCallback((e: FocusEvent) => {\n // outside of iframe (overlay, sidebar, etc)\n if (e.relatedTarget == null) return\n // another text\n if (e.relatedTarget?.getAttribute('contenteditable') === 'true')\n isPreservingFocus.current = false\n }, [])\n\n const handleOnChange = useCallback(\n (value: Descendant[]) => {\n control?.onChange(value)\n },\n [control],\n )\n\n return (\n <Slate editor={editor} onChange={handleOnChange} value={initialValue}>\n <Editable\n renderLeaf={renderLeaf}\n renderElement={renderElement}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onClick={handleClick}\n onBlur={handleBlur}\n readOnly={editMode !== BuilderEditMode.CONTENT}\n placeholder=\"Write some text...\"\n />\n </Slate>\n )\n}\n\nexport default EditableTextV2\n"],"names":["editor","isEnabled","useIsomorphicLayoutEffect","current","selection","ReactEditor","isFocused","root","findDocumentOrShadowRoot","domSelection","getSelection","newDomRange","toDOMRange","SlateRange","isBackward","setBaseAndExtent","endContainer","endOffset","startContainer","startOffset","removeAllRanges","e","console","error","defaultText","type","BlockType","Default","children","text","control","plugins","useMemo","descriptor","config","mode","RichTextV2Mode","Inline","InlineModePlugin","useState","reduceRight","plugin","withPlugin","withBuilder","withHistory","withReact","createEditor","isPreservingFocus","useRef","useSyncDOMSelection","editMode","useBuilderEditMode","useEffect","element","toDOMNode","pollBoxModel","onBoxModelChange","boxModel","changeBoxModel","renderElement","useCallback","attributes","blockStyles","useStyle","margin","quoteStyles","padding","fontSize","fontWeight","borderLeft","Text","cx","Paragraph","Heading1","Heading2","Heading3","Heading4","Heading5","Heading6","BlockQuote","OrderedList","listStylePosition","UnorderedList","ListItem","ListItemChild","renderLeaf","initialValue","BuilderEditMode","CONTENT","deselect","setEditor","setDefaultValue","handleFocus","select","handleKeyDown","isHotkey","HistoryEditor","redo","undo","blur","switchToBuildMode","forEach","onKeyDown","handleKeyUp","preventDefault","handleClick","stopPropagation","handleBlur","relatedTarget","getAttribute","handleOnChange","value","onChange","Slate","Editable"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs9.js","sources":["../src/runtimes/react/controls/rich-text-v2/EditableTextV2/useSyncDOMSelection.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.tsx"],"sourcesContent":["import { Editor, Range as SlateRange } from 'slate'\nimport { useIsomorphicLayoutEffect } from '../../../../../components/hooks/useIsomorphicLayoutEffect'\nimport { MutableRefObject } from 'react'\nimport { ReactEditor } from 'slate-react'\n\n/**\n * Clicking outside of the host blurs our `<Editable />`.\n * `<Editable />` only updates the DOM's selection to match slate when it is focused.\n * In the case of a panel being clicked this hook updates the DOM selection to match slate.\n */\nexport function useSyncDOMSelection(editor: Editor, isEnabled: MutableRefObject<boolean>) {\n useIsomorphicLayoutEffect(() => {\n if (!isEnabled.current || editor.selection == null || ReactEditor.isFocused(editor)) return\n try {\n const root = ReactEditor.findDocumentOrShadowRoot(editor) as Document\n const domSelection = root.getSelection()\n const newDomRange: Range | null = ReactEditor.toDOMRange(editor, editor.selection)\n\n if (newDomRange) {\n if (SlateRange.isBackward(editor.selection!)) {\n domSelection?.setBaseAndExtent(\n newDomRange.endContainer,\n newDomRange.endOffset,\n newDomRange.startContainer,\n newDomRange.startOffset,\n )\n } else {\n domSelection?.setBaseAndExtent(\n newDomRange.startContainer,\n newDomRange.startOffset,\n newDomRange.endContainer,\n newDomRange.endOffset,\n )\n }\n } else {\n domSelection?.removeAllRanges()\n }\n } catch (e) {\n console.error(e)\n }\n })\n}\n","import {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { Descendant, createEditor } from 'slate'\nimport isHotkey from 'is-hotkey'\nimport { withHistory, HistoryEditor } from 'slate-history'\nimport {\n withReact,\n ReactEditor,\n RenderElementProps,\n RenderLeafProps,\n Slate,\n Editable,\n} from 'slate-react'\n\nimport {\n RichTextV2Control,\n RichTextV2ControlData,\n RichTextV2ControlDefinition,\n RichTextV2Mode,\n RichTextV2Plugin,\n} from '../../../../../controls'\nimport { useBuilderEditMode } from '../../..'\nimport { BuilderEditMode } from '../../../../../state/modules/builder-edit-mode'\nimport { pollBoxModel } from '../../../poll-box-model'\nimport { InlineModePlugin, withBuilder } from '../../../../../slate'\nimport { useSyncDOMSelection } from './useSyncDOMSelection'\nimport { BlockType } from '../../../../../slate'\nimport { useStyle } from '../../../use-style'\nimport { cx } from '@emotion/css'\nimport { ControlValue } from '../../control'\n\ntype RichTextV2ElementProps = RenderElementProps & {\n definition: RichTextV2ControlDefinition\n plugins: RichTextV2Plugin[]\n}\n\nfunction RichTextV2Element({ definition, plugins, ...props }: RichTextV2ElementProps) {\n const blockStyles = [useStyle({ margin: 0 })]\n\n function initialRenderElement(props: RenderElementProps) {\n switch (props.element.type) {\n case BlockType.Default:\n default:\n if (definition.config.mode === RichTextV2Mode.Inline) {\n return (\n <span {...props.attributes} className={cx(...blockStyles)}>\n {props.children}\n </span>\n )\n }\n\n return (\n <p {...props.attributes} className={cx(...blockStyles)}>\n {props.children}\n </p>\n )\n }\n }\n\n const renderElement = plugins.reduce(\n (renderFn, plugin) => (props: RenderElementProps) => {\n const { control, renderElement } = plugin\n\n if (control?.definition == null || renderElement == null) return renderFn(props)\n\n if (control.getElementValue == null) return renderElement(renderFn, undefined)(props)\n\n return (\n <ControlValue definition={control.definition} data={control.getElementValue(props.element)}>\n {value => renderElement(renderFn, value)(props)}\n </ControlValue>\n )\n },\n initialRenderElement,\n )\n\n return renderElement(props)\n}\n\nexport type RichTextV2ControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextV2ControlDefinition }\n\nconst defaultText: Descendant[] = [{ type: BlockType.Default, children: [{ text: '' }] }]\n\ntype Props = {\n text: RichTextV2ControlData\n definition: RichTextV2ControlDefinition\n control: RichTextV2Control | null\n}\n\nexport function EditableTextV2({ text, definition, control }: Props) {\n const plugins = useMemo(() => {\n const plugins = [\n ...(definition?.config?.plugins ?? []),\n ...(definition?.config?.mode === RichTextV2Mode.Inline ? [InlineModePlugin] : []),\n ]\n return plugins\n }, [definition])\n\n const [editor] = useState(() =>\n plugins.reduceRight(\n (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,\n withBuilder(withHistory(withReact(createEditor()))),\n ),\n )\n\n const isPreservingFocus = useRef(false)\n useSyncDOMSelection(editor, isPreservingFocus)\n\n const editMode = useBuilderEditMode()\n\n useEffect(() => {\n if (control == null) return\n\n const element = ReactEditor.toDOMNode(editor, editor)\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeBoxModel(boxModel),\n })\n }, [editor, control])\n\n const renderElement = useCallback(\n (props: RenderElementProps) => {\n return <RichTextV2Element {...props} definition={definition} plugins={plugins} />\n },\n [plugins, definition],\n )\n\n const renderLeaf = useCallback(({ attributes, children }: RenderLeafProps) => {\n return <span {...attributes}>{children}</span>\n }, [])\n\n const initialValue = useMemo(() => text ?? defaultText, [text])\n\n useEffect(() => {\n /**\n * This is required because clicking on the overlay has `relatedTarget` null just like the sidebar, but\n * - in the case of the overlay we switch to BUILD mode\n * - in the case of the sidebar we preserve the selection\n */\n if (editMode !== BuilderEditMode.CONTENT) {\n isPreservingFocus.current = false\n ReactEditor.deselect(editor)\n }\n }, [editMode])\n\n useEffect(() => {\n control?.setEditor(editor)\n control?.setDefaultValue(defaultText)\n }, [control, editor, defaultText])\n\n const handleFocus = useCallback(() => {\n isPreservingFocus.current = true\n control?.select()\n }, [control])\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isHotkey('mod+shift+z', e)) return HistoryEditor.redo(editor)\n if (isHotkey('mod+z', e)) return HistoryEditor.undo(editor)\n if (isHotkey('escape')(e)) {\n isPreservingFocus.current = false\n ReactEditor.blur(editor)\n control?.switchToBuildMode()\n }\n\n plugins.forEach(plugin => plugin?.onKeyDown?.(e, editor))\n },\n [control, plugins, editor],\n )\n\n const handleKeyUp = useCallback(\n (e: KeyboardEvent) => {\n if (editMode === BuilderEditMode.CONTENT) e.preventDefault()\n },\n [control, editor, editMode],\n )\n\n const handleClick = useCallback(\n (e: MouseEvent) => {\n if (editMode === BuilderEditMode.CONTENT) e.stopPropagation()\n },\n [editMode],\n )\n\n const handleBlur = useCallback((e: FocusEvent) => {\n // outside of iframe (overlay, sidebar, etc)\n if (e.relatedTarget == null) return\n // another text\n if (e.relatedTarget?.getAttribute('contenteditable') === 'true')\n isPreservingFocus.current = false\n }, [])\n\n const handleOnChange = useCallback(\n (value: Descendant[]) => {\n control?.onChange(value)\n },\n [control],\n )\n\n return (\n <Slate editor={editor} onChange={handleOnChange} value={initialValue}>\n <Editable\n renderLeaf={renderLeaf}\n renderElement={renderElement}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onClick={handleClick}\n onBlur={handleBlur}\n readOnly={editMode !== BuilderEditMode.CONTENT}\n placeholder=\"Write some text...\"\n />\n </Slate>\n )\n}\n\nexport default EditableTextV2\n"],"names":["editor","isEnabled","useIsomorphicLayoutEffect","current","selection","ReactEditor","isFocused","root","findDocumentOrShadowRoot","domSelection","getSelection","newDomRange","toDOMRange","SlateRange","isBackward","setBaseAndExtent","endContainer","endOffset","startContainer","startOffset","removeAllRanges","e","console","error","definition","plugins","props","blockStyles","useStyle","margin","element","type","BlockType","Default","config","mode","RichTextV2Mode","Inline","attributes","cx","children","renderElement","reduce","renderFn","plugin","control","getElementValue","undefined","ControlValue","value","initialRenderElement","defaultText","text","useMemo","InlineModePlugin","useState","reduceRight","withPlugin","withBuilder","withHistory","withReact","createEditor","isPreservingFocus","useRef","useSyncDOMSelection","editMode","useBuilderEditMode","useEffect","toDOMNode","pollBoxModel","onBoxModelChange","boxModel","changeBoxModel","useCallback","renderLeaf","initialValue","BuilderEditMode","CONTENT","deselect","setEditor","setDefaultValue","handleFocus","select","handleKeyDown","isHotkey","HistoryEditor","redo","undo","blur","switchToBuildMode","forEach","onKeyDown","handleKeyUp","preventDefault","handleClick","stopPropagation","handleBlur","relatedTarget","getAttribute","handleOnChange","onChange","Slate","Editable"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -34,16 +34,12 @@ var __publicField = (obj, key, value) => {
34
34
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
35
35
  return value;
36
36
  };
37
- var _e;
38
37
  import * as React from "react";
39
38
  import { useEffect, createContext, useContext, useState, useMemo, useRef, Children, createElement, forwardRef, memo, useId, useCallback, useImperativeHandle, Component, Suspense } from "react";
40
39
  import { useSyncExternalStoreWithSelector } from "use-sync-external-store/shim/with-selector";
41
40
  import dynamic from "next/dynamic";
42
- import { a as createDocumentReference, g as getPropControllerDescriptors, b as isElementReference, e as getElementSwatchIds, f as getFileIds, h as getTypographyIds, j as getTableIds, k as getPageIds, l as getElementChildren, S as ShapeControlType, L as ListControlType, m as Types, E as ElementID, B as Backgrounds, W as Width, n as ResponsiveIconRadioGroup, M as Margin, P as Padding, o as Border, p as BorderRadius, q as Shadows, G as GapY, r as GapX, s as ResponsiveSelect, t as ResponsiveNumber, u as Checkbox, v as Grid, w as TextInput, x as Link, y as ResponsiveColor, z as TextStyle, C as ComponentIcon, I as Images, N as Number$1, D as Date$1, F as Font, A as ResponsiveLength, H as TextArea, J as Table, K as TableFormFields, O as Image, Q as ResponsiveOpacity, U as NavigationLinks, V as SocialLinks, X as RichText, Y as Video, Z as getBorderSwatchIds, _ as isNonNullable, $ as getBoxShadowsSwatchIds, a0 as getResponsiveColorSwatchIds, a1 as StyleControlProperty, a2 as ImageControlValueFormat, a3 as isPropControllersHandle, a4 as StyleControlType, a5 as RichTextV2ControlType, a6 as RichTextControlType, a7 as SlotControlType, a8 as LinkControlType, a9 as ImageControlType, aa as ColorControlType, ab as SelectControlType, ac as getComponentPropControllerDescriptors, ad as getPropControllers, ae as BorderPropControllerFormat, af as ShadowsPropControllerFormat, ag as BorderRadiusPropControllerFormat, ah as MarginPropControllerFormat, ai as PaddingPropControllerFormat, aj as WidthPropControllerFormat, ak as configureStore$1, al as copyElementTree, am as getBreakpoints, an as getDocument, ao as getElementId, ap as getIsPreview, aq as getIsInBuilder, ar as getReactComponent, as as getBuilderEditMode } from "./react-page.es.js";
41
+ import { a as createDocumentReference, g as getPropControllerDescriptors, b as isElementReference, e as getElementSwatchIds, f as getFileIds, h as getTypographyIds, j as getTableIds, k as getPageIds, l as getElementChildren, S as ShapeControlType, L as ListControlType, m as Types, E as ElementID, B as Backgrounds, W as Width, n as ResponsiveIconRadioGroup, M as Margin, P as Padding, o as Border, p as BorderRadius, q as Shadows, G as GapY, r as GapX, s as ResponsiveSelect, t as ResponsiveNumber, u as Checkbox, v as Grid, w as TextInput, x as Link, y as ResponsiveColor, z as TextStyle, C as ComponentIcon, I as Images, N as Number$1, D as Date$1, F as Font, A as ResponsiveLength, H as TextArea, J as Table, K as TableFormFields, O as Image, Q as ResponsiveOpacity, U as NavigationLinks, V as SocialLinks, X as RichText, Y as Video, Z as useStyle, _ as getBorderSwatchIds, $ as isNonNullable, a0 as getBoxShadowsSwatchIds, a1 as getResponsiveColorSwatchIds, a2 as StyleControlProperty, a3 as ImageControlValueFormat, a4 as isPropControllersHandle, a5 as StyleV2ControlType, a6 as StyleControlType, a7 as RichTextV2ControlType, a8 as RichTextControlType, a9 as SlotControlType, aa as LinkControlType, ab as ImageControlType, ac as ColorControlType, ad as SelectControlType, ae as getComponentPropControllerDescriptors, af as getPropControllers, ag as BorderPropControllerFormat, ah as ShadowsPropControllerFormat, ai as BorderRadiusPropControllerFormat, aj as MarginPropControllerFormat, ak as PaddingPropControllerFormat, al as WidthPropControllerFormat, am as configureStore$1, an as copyElementTree, ao as getBreakpoints, ap as getDocument, aq as getElementId, ar as getIsPreview, as as getIsInBuilder, at as getReactComponent, au as getBuilderEditMode } from "./react-page.es.js";
43
42
  import { A as ActionTypes, n as apiResourceFulfilled, o as registerComponentEffect, p as registerReactComponentEffect, q as registerComponentHandleEffect, t as mountComponentEffect } from "./actions.es.js";
44
- import { cache, cx } from "@emotion/css";
45
- import { serializeStyles } from "@emotion/serialize";
46
- import { registerStyles, insertStyles } from "@emotion/utils";
47
43
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
48
44
  import { T as TextAreaControlType, a as TextInputControlType, N as NumberControlType, C as CheckboxControlType } from "./text-input.es.js";
49
45
  import { C as ComboboxControlType } from "./combobox.es.js";
@@ -55,8 +51,12 @@ import { useSyncExternalStore } from "use-sync-external-store/shim";
55
51
  import { createStore, applyMiddleware } from "redux";
56
52
  import thunk from "redux-thunk";
57
53
  import { A as APIResourceType } from "./types.es.js";
54
+ import { d as deepEqual } from "./deepEqual.es.js";
58
55
  import { g as getBox, i as isMeasurable, m as measure } from "./box-models.es.js";
59
56
  import ColorHelper from "color";
57
+ import { cache, cx } from "@emotion/css";
58
+ import "@emotion/serialize";
59
+ import "@emotion/utils";
60
60
  import scrollIntoView from "scroll-into-view-if-needed";
61
61
  import { findDOMNode } from "react-dom";
62
62
  import parse from "html-react-parser";
@@ -72,43 +72,6 @@ import { parse as parse$1 } from "set-cookie-parser";
72
72
  import { M as MakeswiftComponentType } from "./constants.es.js";
73
73
  import { v4 } from "uuid";
74
74
  import ipsum from "corporate-ipsum";
75
- function is(x, y) {
76
- if (x === y)
77
- return x !== 0 || y !== 0 || 1 / x === 1 / y;
78
- return x !== x && y !== y;
79
- }
80
- const { hasOwnProperty: hasOwnProperty$1 } = Object.prototype;
81
- const shallowEqual = (a, b) => {
82
- if (is(a, b))
83
- return true;
84
- if (typeof a !== "object" || a === null || typeof b !== "object" || b === null)
85
- return false;
86
- const keysA = Object.keys(a);
87
- const keysB = Object.keys(b);
88
- if (keysA.length !== keysB.length)
89
- return false;
90
- for (let i = 0; i < keysA.length; i += 1) {
91
- if (!hasOwnProperty$1.call(b, keysA[i]) || !is(a[keysA[i]], b[keysA[i]]))
92
- return false;
93
- }
94
- return true;
95
- };
96
- const { hasOwnProperty } = Object.prototype;
97
- const deepEqual = (a, b) => {
98
- if (shallowEqual(a, b))
99
- return true;
100
- if (typeof a !== "object" || a === null || typeof b !== "object" || b === null)
101
- return false;
102
- const keysA = Object.keys(a);
103
- const keysB = Object.keys(b);
104
- if (keysA.length !== keysB.length)
105
- return false;
106
- for (let i = 0; i < keysA.length; i += 1) {
107
- if (!hasOwnProperty.call(b, keysA[i]) || !deepEqual(a[keysA[i]], b[keysA[i]]))
108
- return false;
109
- }
110
- return true;
111
- };
112
75
  const SCRIPT_TAG = "script";
113
76
  function BodySnippet({
114
77
  code,
@@ -1151,7 +1114,7 @@ async function fonts(_req, res, { getFonts } = {}) {
1151
1114
  const fonts2 = (_a = await (getFonts == null ? void 0 : getFonts())) != null ? _a : [];
1152
1115
  return res.json(fonts2);
1153
1116
  }
1154
- const version = "0.9.0";
1117
+ const version = "0.9.1";
1155
1118
  async function handler(req, res, { apiKey, unstable_siteVersions }) {
1156
1119
  if (req.query.secret !== apiKey) {
1157
1120
  return res.status(401).json({ message: "Unauthorized" });
@@ -2423,19 +2386,6 @@ function registerBuiltinComponents(runtime) {
2423
2386
  unregisterVideoComponent();
2424
2387
  };
2425
2388
  }
2426
- const isServer = typeof window === "undefined";
2427
- const useInsertionEffectSpecifier = "useInsertionEffect";
2428
- const useInsertionEffect = (_e = React[useInsertionEffectSpecifier]) != null ? _e : React.useLayoutEffect;
2429
- function useStyle(style) {
2430
- const serialized = serializeStyles([style], cache.registered);
2431
- registerStyles(cache, serialized, false);
2432
- useInsertionEffect(() => {
2433
- insertStyles(cache, serialized, false);
2434
- });
2435
- if (isServer)
2436
- insertStyles(cache, serialized, false);
2437
- return `${cache.key}-${serialized.name}`;
2438
- }
2439
2389
  var _path;
2440
2390
  function _extends() {
2441
2391
  _extends = Object.assign || function(target) {
@@ -2579,8 +2529,8 @@ function useTable(tableId) {
2579
2529
  }, [client, tableId]);
2580
2530
  return table;
2581
2531
  }
2582
- function mapSideColor(swatches, _f) {
2583
- var _g = _f, { color } = _g, restOfSide = __objRest(_g, ["color"]);
2532
+ function mapSideColor(swatches, _e) {
2533
+ var _f = _e, { color } = _f, restOfSide = __objRest(_f, ["color"]);
2584
2534
  return __spreadProps(__spreadValues({}, restOfSide), {
2585
2535
  color: color && {
2586
2536
  alpha: color.alpha,
@@ -2898,7 +2848,7 @@ const defaultPadding = {
2898
2848
  paddingBottom: 0,
2899
2849
  paddingLeft: 0
2900
2850
  };
2901
- function useStyleControlCssObject(style, controlDefinition) {
2851
+ function useStyleControlCssObject$1(style, controlDefinition) {
2902
2852
  const { properties } = controlDefinition.config;
2903
2853
  return __spreadValues(__spreadValues({}, properties.includes(StyleControlProperty.Width) && {
2904
2854
  maxWidth: "100%"
@@ -2910,14 +2860,14 @@ function useStyleControlCssObject(style, controlDefinition) {
2910
2860
  style == null ? void 0 : style.borderRadius,
2911
2861
  style == null ? void 0 : style.textStyle
2912
2862
  ], ([width, margin, padding, border, borderRadius, textStyle]) => {
2913
- var _a, _b, _c, _d, _e2, _f, _g, _h, _i, _j, _k;
2863
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
2914
2864
  return __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, properties.includes(StyleControlProperty.Width) && {
2915
2865
  width: (_a = widthToString(width)) != null ? _a : "100%"
2916
2866
  }), properties.includes(StyleControlProperty.Margin) && marginPropertyDataToStyle(margin != null ? margin : defaultMargin, defaultMargin)), properties.includes(StyleControlProperty.Padding) && paddingPropertyDataToStyle(padding != null ? padding : defaultPadding, defaultPadding)), properties.includes(StyleControlProperty.Border) && {
2917
2867
  borderTop: (_b = borderSideToString2(border == null ? void 0 : border.borderTop)) != null ? _b : "0 solid black",
2918
2868
  borderRight: (_c = borderSideToString2(border == null ? void 0 : border.borderRight)) != null ? _c : "0 solid black",
2919
2869
  borderBottom: (_d = borderSideToString2(border == null ? void 0 : border.borderBottom)) != null ? _d : "0 solid black",
2920
- borderLeft: (_e2 = borderSideToString2(border == null ? void 0 : border.borderLeft)) != null ? _e2 : "0 solid black"
2870
+ borderLeft: (_e = borderSideToString2(border == null ? void 0 : border.borderLeft)) != null ? _e : "0 solid black"
2921
2871
  }), properties.includes(StyleControlProperty.BorderRadius) && {
2922
2872
  borderTopLeftRadius: (_f = borderRadiusToString(borderRadius == null ? void 0 : borderRadius.borderTopLeftRadius)) != null ? _f : 0,
2923
2873
  borderTopRightRadius: (_g = borderRadiusToString(borderRadius == null ? void 0 : borderRadius.borderTopRightRadius)) != null ? _g : 0,
@@ -2949,7 +2899,7 @@ function useStyleControlCssObject(style, controlDefinition) {
2949
2899
  }
2950
2900
  }
2951
2901
  function useFormattedStyle(styleControlData, controlDefinition, control) {
2952
- const style = useStyleControlCssObject(styleControlData, controlDefinition);
2902
+ const style = useStyleControlCssObject$1(styleControlData, controlDefinition);
2953
2903
  const guid = useId().replaceAll(":", "");
2954
2904
  const styleClassName = useStyle(style);
2955
2905
  const classNames = `${styleClassName} ${guid}`;
@@ -3125,10 +3075,11 @@ function useRichText(data, control) {
3125
3075
  }
3126
3076
  const EditableText = forwardNextDynamicRef((patch) => dynamic(() => patch(import("./index.es9.js"))));
3127
3077
  const ReadOnlyText = forwardNextDynamicRef((patch) => dynamic(() => patch(import("./ReadOnlyTextV2.es.js"))));
3128
- function useRichTextV2(data, control) {
3078
+ function useRichTextV2(data, definition, control) {
3129
3079
  const isPreview = useIsPreview();
3130
3080
  return isPreview ? /* @__PURE__ */ jsx(EditableText, {
3131
3081
  text: data,
3082
+ definition,
3132
3083
  control
3133
3084
  }) : /* @__PURE__ */ jsx(ReadOnlyText, {
3134
3085
  text: data,
@@ -3190,13 +3141,13 @@ function useSlot(data, control) {
3190
3141
  }, element.key))
3191
3142
  });
3192
3143
  }
3193
- function Slot(_h) {
3194
- var _i = _h, {
3144
+ function Slot(_g) {
3145
+ var _h = _g, {
3195
3146
  as,
3196
3147
  control,
3197
3148
  children,
3198
3149
  className
3199
- } = _i, restOfProps = __objRest(_i, [
3150
+ } = _h, restOfProps = __objRest(_h, [
3200
3151
  "as",
3201
3152
  "control",
3202
3153
  "children",
@@ -3225,15 +3176,15 @@ function Slot(_h) {
3225
3176
  }
3226
3177
  Slot.Placeholder = SlotPlaceholder;
3227
3178
  Slot.Item = SlotItem;
3228
- function SlotItem(_j) {
3229
- var _k = _j, {
3179
+ function SlotItem(_i) {
3180
+ var _j = _i, {
3230
3181
  as,
3231
3182
  control,
3232
3183
  grid,
3233
3184
  index,
3234
3185
  children,
3235
3186
  className
3236
- } = _k, restOfProps = __objRest(_k, [
3187
+ } = _j, restOfProps = __objRest(_j, [
3237
3188
  "as",
3238
3189
  "control",
3239
3190
  "grid",
@@ -3315,6 +3266,20 @@ function SlotPlaceholder({
3315
3266
  })
3316
3267
  });
3317
3268
  }
3269
+ function useStyleControlCssObject(styleControlData, controlDefinition) {
3270
+ var _a;
3271
+ const breakpoints = useBreakpoints();
3272
+ return __spreadValues(__spreadValues({}, controlDefinition.config.getStyle((_a = findBreakpointOverride(breakpoints, styleControlData, getBaseBreakpoint(breakpoints).id)) == null ? void 0 : _a.value)), breakpoints.reduce((styles, breakpoint) => {
3273
+ var _a2;
3274
+ return __spreadProps(__spreadValues({}, styles), {
3275
+ [getBreakpointMediaQuery(breakpoint)]: controlDefinition.config.getStyle((_a2 = findBreakpointOverride(breakpoints, styleControlData, breakpoint.id)) == null ? void 0 : _a2.value)
3276
+ });
3277
+ }, {}));
3278
+ }
3279
+ function useFormattedStyleV2(styleControlData, controlDefinition) {
3280
+ const styles = useStyleControlCssObject(styleControlData, controlDefinition);
3281
+ return useStyle(styles);
3282
+ }
3318
3283
  function useTextAreaValue(data, definition) {
3319
3284
  return data != null ? data : definition.config.defaultValue;
3320
3285
  }
@@ -3411,7 +3376,7 @@ function ControlValue({
3411
3376
  case RichTextV2ControlType:
3412
3377
  return /* @__PURE__ */ jsx(RenderHook, {
3413
3378
  hook: useRichTextV2,
3414
- parameters: [data, control],
3379
+ parameters: [data, definition, control],
3415
3380
  children: (value) => children(value)
3416
3381
  }, definition.type);
3417
3382
  case StyleControlType:
@@ -3420,6 +3385,12 @@ function ControlValue({
3420
3385
  parameters: [data, definition, control],
3421
3386
  children: (value) => children(value)
3422
3387
  }, definition.type);
3388
+ case StyleV2ControlType:
3389
+ return /* @__PURE__ */ jsx(RenderHook, {
3390
+ hook: useFormattedStyleV2,
3391
+ parameters: [data, definition],
3392
+ children: (value) => children(value)
3393
+ }, definition.type);
3423
3394
  default:
3424
3395
  return children(data);
3425
3396
  }
@@ -3472,6 +3443,7 @@ function PropsValue({
3472
3443
  case ShapeControlType:
3473
3444
  case ListControlType:
3474
3445
  case LinkControlType:
3446
+ case StyleV2ControlType:
3475
3447
  return /* @__PURE__ */ jsx(ControlValue, {
3476
3448
  definition: descriptor,
3477
3449
  data: props[propName],
@@ -3504,7 +3476,7 @@ function PropsValue({
3504
3476
  const control = (_c = propControllers == null ? void 0 : propControllers[propName]) != null ? _c : null;
3505
3477
  return /* @__PURE__ */ jsx(RenderHook, {
3506
3478
  hook: useRichTextV2,
3507
- parameters: [props[propName], control],
3479
+ parameters: [props[propName], descriptor, control],
3508
3480
  children: (value) => renderFn(__spreadProps(__spreadValues({}, propsValue), {
3509
3481
  [propName]: value
3510
3482
  }))
@@ -3761,10 +3733,10 @@ registerBuiltinComponents(ReactRuntime);
3761
3733
  const StoreContext = createContext(ReactRuntime.store);
3762
3734
  const PreviewProvider = dynamic(() => import("./PreviewProvider.es.js"));
3763
3735
  const LiveProvider = dynamic(() => import("./LiveProvider.es.js"));
3764
- function RuntimeProvider(_l) {
3765
- var _m = _l, {
3736
+ function RuntimeProvider(_k) {
3737
+ var _l = _k, {
3766
3738
  preview
3767
- } = _m, props = __objRest(_m, [
3739
+ } = _l, props = __objRest(_l, [
3768
3740
  "preview"
3769
3741
  ]);
3770
3742
  return preview ? /* @__PURE__ */ jsx(PreviewProvider, __spreadValues({}, props)) : /* @__PURE__ */ jsx(LiveProvider, __spreadValues({}, props));
@@ -3965,5 +3937,5 @@ const DocumentReference = memo(forwardRef(function DocumentReference2({
3965
3937
  document: document2
3966
3938
  });
3967
3939
  }));
3968
- export { Document$1 as $, Alignments as A, useFile as B, Contrasts as C, DocumentReference as D, Element$1 as E, forwardNextDynamicRef as F, useIsPreview as G, useFiles as H, useSwatches as I, usePagePathnameSlice as J, useElementId as K, deepEqual as L, ElementImperativeHandle as M, StoreContext as N, MakeswiftProvider as O, PageProvider as P, useBuilderEditMode as Q, RuntimeProvider as R, Shapes as S, pollBoxModel as T, useTypography as U, getStaticPaths as V, getStaticProps as W, getServerSideProps as X, Page as Y, Makeswift as Z, PreviewModeScript as _, ReactRuntime as a, MakeswiftApiHandler as a0, usePageId as b, DEFAULT_BOX_ANIMATE_TYPE as c, DEFAULT_BOX_ANIMATE_DELAY as d, DEFAULT_BOX_ANIMATE_DURATION as e, DEFAULT_ITEM_ANIMATE_TYPE as f, DEFAULT_ITEM_ANIMATE_DELAY as g, DEFAULT_ITEM_ANIMATE_DURATION as h, DEFAULT_ITEM_STAGGER_DURATION as i, useBorder as j, useBoxShadow as k, useResponsiveColor as l, Page$1 as m, useStyle as n, useResponsiveStyle as o, useResponsiveWidth as p, useResponsiveTextStyle as q, colorToString as r, useBreakpoints as s, Sizes as t, useIsInBuilder as u, useFormContext as v, useResponsiveGridItem as w, useTable as x, useMakeswiftClient as y, Provider as z };
3940
+ export { MakeswiftApiHandler as $, Alignments as A, forwardNextDynamicRef as B, Contrasts as C, DocumentReference as D, Element$1 as E, useIsPreview as F, useFiles as G, useSwatches as H, usePagePathnameSlice as I, useElementId as J, ElementImperativeHandle as K, StoreContext as L, MakeswiftProvider as M, useBuilderEditMode as N, pollBoxModel as O, PageProvider as P, ControlValue as Q, RuntimeProvider as R, Shapes as S, useTypography as T, getStaticPaths as U, getStaticProps as V, getServerSideProps as W, Page as X, Makeswift as Y, PreviewModeScript as Z, Document$1 as _, ReactRuntime as a, usePageId as b, DEFAULT_BOX_ANIMATE_TYPE as c, DEFAULT_BOX_ANIMATE_DELAY as d, DEFAULT_BOX_ANIMATE_DURATION as e, DEFAULT_ITEM_ANIMATE_TYPE as f, DEFAULT_ITEM_ANIMATE_DELAY as g, DEFAULT_ITEM_ANIMATE_DURATION as h, DEFAULT_ITEM_STAGGER_DURATION as i, useBorder as j, useBoxShadow as k, useResponsiveColor as l, Page$1 as m, useResponsiveStyle as n, useResponsiveWidth as o, useResponsiveTextStyle as p, colorToString as q, useBreakpoints as r, Sizes as s, useFormContext as t, useIsInBuilder as u, useResponsiveGridItem as v, useTable as w, useMakeswiftClient as x, Provider as y, useFile as z };
3969
3941
  //# sourceMappingURL=index.es.js.map