@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.
- package/dist/Box.cjs.js +15 -14
- package/dist/Box.cjs.js.map +1 -1
- package/dist/Box.es.js +10 -9
- package/dist/Box.es.js.map +1 -1
- package/dist/Button.cjs.js +12 -11
- package/dist/Button.cjs.js.map +1 -1
- package/dist/Button.es.js +10 -9
- package/dist/Button.es.js.map +1 -1
- package/dist/Carousel.cjs.js +26 -25
- package/dist/Carousel.cjs.js.map +1 -1
- package/dist/Carousel.es.js +5 -4
- package/dist/Carousel.es.js.map +1 -1
- package/dist/Countdown.cjs.js +15 -14
- package/dist/Countdown.cjs.js.map +1 -1
- package/dist/Countdown.es.js +7 -6
- package/dist/Countdown.es.js.map +1 -1
- package/dist/Divider.cjs.js +12 -11
- package/dist/Divider.cjs.js.map +1 -1
- package/dist/Divider.es.js +10 -9
- package/dist/Divider.es.js.map +1 -1
- package/dist/Embed.cjs.js +4 -29
- package/dist/Embed.cjs.js.map +1 -1
- package/dist/Embed.es.js +3 -28
- package/dist/Embed.es.js.map +1 -1
- package/dist/Form.cjs.js +51 -50
- package/dist/Form.cjs.js.map +1 -1
- package/dist/Form.es.js +7 -6
- package/dist/Form.es.js.map +1 -1
- package/dist/Image.cjs.js +8 -7
- package/dist/Image.cjs.js.map +1 -1
- package/dist/Image.es.js +7 -6
- package/dist/Image.es.js.map +1 -1
- package/dist/LiveProvider.cjs.js +4 -3
- package/dist/LiveProvider.cjs.js.map +1 -1
- package/dist/LiveProvider.es.js +6 -5
- package/dist/LiveProvider.es.js.map +1 -1
- package/dist/Navigation.cjs.js +26 -25
- package/dist/Navigation.cjs.js.map +1 -1
- package/dist/Navigation.es.js +5 -4
- package/dist/Navigation.es.js.map +1 -1
- package/dist/PreviewProvider.cjs.js +6 -5
- package/dist/PreviewProvider.cjs.js.map +1 -1
- package/dist/PreviewProvider.es.js +6 -5
- package/dist/PreviewProvider.es.js.map +1 -1
- package/dist/ReadOnlyText.cjs.js +14 -13
- package/dist/ReadOnlyText.cjs.js.map +1 -1
- package/dist/ReadOnlyText.es.js +9 -8
- package/dist/ReadOnlyText.es.js.map +1 -1
- package/dist/ReadOnlyTextV2.cjs.js +11 -10
- package/dist/ReadOnlyTextV2.cjs.js.map +1 -1
- package/dist/ReadOnlyTextV2.es.js +7 -6
- package/dist/ReadOnlyTextV2.es.js.map +1 -1
- package/dist/Root.cjs.js +7 -6
- package/dist/Root.cjs.js.map +1 -1
- package/dist/Root.es.js +5 -4
- package/dist/Root.es.js.map +1 -1
- package/dist/SocialLinks.cjs.js +14 -13
- package/dist/SocialLinks.cjs.js.map +1 -1
- package/dist/SocialLinks.es.js +10 -9
- package/dist/SocialLinks.es.js.map +1 -1
- package/dist/Text.cjs.js +4 -3
- package/dist/Text.cjs.js.map +1 -1
- package/dist/Text.es.js +5 -4
- package/dist/Text.es.js.map +1 -1
- package/dist/Video.cjs.js +4 -29
- package/dist/Video.cjs.js.map +1 -1
- package/dist/Video.es.js +3 -28
- package/dist/Video.es.js.map +1 -1
- package/dist/builder.cjs.js +5 -0
- package/dist/builder.cjs.js.map +1 -1
- package/dist/builder.es.js +5 -0
- package/dist/builder.es.js.map +1 -1
- package/dist/components.cjs.js +9 -8
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +9 -8
- package/dist/components.es.js.map +1 -1
- package/dist/control-serialization.cjs.js +88 -9
- package/dist/control-serialization.cjs.js.map +1 -1
- package/dist/control-serialization.es.js +89 -10
- package/dist/control-serialization.es.js.map +1 -1
- package/dist/controls.cjs.js +10 -0
- package/dist/controls.cjs.js.map +1 -1
- package/dist/controls.es.js +6 -1
- package/dist/controls.es.js.map +1 -1
- package/dist/deepEqual.cjs.js +40 -0
- package/dist/deepEqual.cjs.js.map +1 -0
- package/dist/deepEqual.es.js +39 -0
- package/dist/deepEqual.es.js.map +1 -0
- package/dist/index.cjs.js +62 -91
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs10.js +8 -7
- package/dist/index.cjs10.js.map +1 -1
- package/dist/index.cjs2.js +13 -13
- package/dist/index.cjs2.js.map +1 -1
- package/dist/index.cjs4.js +2 -1
- package/dist/index.cjs4.js.map +1 -1
- package/dist/index.cjs8.js +4 -3
- package/dist/index.cjs8.js.map +1 -1
- package/dist/index.cjs9.js +69 -105
- package/dist/index.cjs9.js.map +1 -1
- package/dist/index.es.js +47 -75
- package/dist/index.es.js.map +1 -1
- package/dist/index.es10.js +5 -4
- package/dist/index.es10.js.map +1 -1
- package/dist/index.es2.js +2 -2
- package/dist/index.es3.js +1 -1
- package/dist/index.es4.js +2 -1
- package/dist/index.es4.js.map +1 -1
- package/dist/index.es6.js +1 -1
- package/dist/index.es8.js +4 -3
- package/dist/index.es8.js.map +1 -1
- package/dist/index.es9.js +71 -107
- package/dist/index.es9.js.map +1 -1
- package/dist/leaf.cjs.js +1 -1
- package/dist/leaf.cjs.js.map +1 -1
- package/dist/leaf.es.js +2 -2
- package/dist/main.cjs.js +5 -0
- package/dist/main.cjs.js.map +1 -1
- package/dist/main.es.js +5 -0
- package/dist/main.es.js.map +1 -1
- package/dist/next.cjs.js +4 -3
- package/dist/next.cjs.js.map +1 -1
- package/dist/next.es.js +5 -4
- package/dist/next.es.js.map +1 -1
- package/dist/prop-controllers.cjs.js +5 -0
- package/dist/prop-controllers.cjs.js.map +1 -1
- package/dist/prop-controllers.es.js +5 -0
- package/dist/prop-controllers.es.js.map +1 -1
- package/dist/react-page.cjs.js +376 -203
- package/dist/react-page.cjs.js.map +1 -1
- package/dist/react-page.es.js +349 -204
- package/dist/react-page.es.js.map +1 -1
- package/dist/react.cjs.js +4 -3
- package/dist/react.cjs.js.map +1 -1
- package/dist/react.es.js +4 -3
- package/dist/react.es.js.map +1 -1
- package/dist/slate.cjs.js +88 -4
- package/dist/slate.cjs.js.map +1 -1
- package/dist/slate.es.js +89 -5
- package/dist/slate.es.js.map +1 -1
- package/dist/types/src/builder/serialization/control-serialization.d.ts +3 -3
- package/dist/types/src/builder/serialization/control-serialization.d.ts.map +1 -1
- package/dist/types/src/builder/serialization/controls/rich-text-v2.d.ts +2 -2
- package/dist/types/src/builder/serialization/controls/rich-text-v2.d.ts.map +1 -1
- package/dist/types/src/builder/serialization/controls/style-v2.d.ts +5 -0
- package/dist/types/src/builder/serialization/controls/style-v2.d.ts.map +1 -0
- package/dist/types/src/components/builtin/Button/Button.d.ts +1 -1
- package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
- package/dist/types/src/components/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
- package/dist/types/src/components/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
- package/dist/types/src/controls/control.d.ts +3 -2
- package/dist/types/src/controls/control.d.ts.map +1 -1
- package/dist/types/src/controls/index.d.ts +1 -0
- package/dist/types/src/controls/index.d.ts.map +1 -1
- package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts +8 -3
- package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
- package/dist/types/src/controls/style-v2.d.ts +55 -0
- package/dist/types/src/controls/style-v2.d.ts.map +1 -0
- package/dist/types/src/prop-controllers/descriptors.d.ts +4 -3
- package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
- package/dist/types/src/prop-controllers/instances.d.ts +2 -2
- package/dist/types/src/prop-controllers/instances.d.ts.map +1 -1
- package/dist/types/src/runtimes/react/controls/control.d.ts +3 -2
- package/dist/types/src/runtimes/react/controls/control.d.ts.map +1 -1
- package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts +2 -1
- package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts.map +1 -1
- package/dist/types/src/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts +1 -1
- package/dist/types/src/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
- package/dist/types/src/runtimes/react/controls/style-v2.d.ts +4 -0
- package/dist/types/src/runtimes/react/controls/style-v2.d.ts.map +1 -0
- package/dist/types/src/runtimes/react/controls.d.ts.map +1 -1
- package/dist/types/src/slate/BlockPlugin/index.d.ts +3 -0
- package/dist/types/src/slate/BlockPlugin/index.d.ts.map +1 -1
- package/dist/types/src/slate/InlineModePlugin/index.d.ts +1 -0
- package/dist/types/src/slate/InlineModePlugin/index.d.ts.map +1 -1
- package/dist/types/src/slate/TextAlignPlugin/index.d.ts +9 -0
- package/dist/types/src/slate/TextAlignPlugin/index.d.ts.map +1 -0
- package/dist/types/src/slate/index.d.ts +1 -0
- package/dist/types/src/slate/index.d.ts.map +1 -1
- package/dist/types/src/slate/types.d.ts +18 -0
- package/dist/types/src/slate/types.d.ts.map +1 -1
- package/dist/useMediaQuery.es.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs9.js
CHANGED
|
@@ -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
|
|
102
|
-
const plugins2 = [...(
|
|
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
|
-
}, [
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
package/dist/index.cjs9.js.map
CHANGED
|
@@ -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
|
|
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.
|
|
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,
|
|
2583
|
-
var
|
|
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,
|
|
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: (
|
|
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(
|
|
3194
|
-
var
|
|
3144
|
+
function Slot(_g) {
|
|
3145
|
+
var _h = _g, {
|
|
3195
3146
|
as,
|
|
3196
3147
|
control,
|
|
3197
3148
|
children,
|
|
3198
3149
|
className
|
|
3199
|
-
} =
|
|
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(
|
|
3229
|
-
var
|
|
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
|
-
} =
|
|
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(
|
|
3765
|
-
var
|
|
3736
|
+
function RuntimeProvider(_k) {
|
|
3737
|
+
var _l = _k, {
|
|
3766
3738
|
preview
|
|
3767
|
-
} =
|
|
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 {
|
|
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
|