@makeswift/runtime 0.8.7 → 0.8.9

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 (139) hide show
  1. package/dist/Box.cjs.js +2 -1
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +2 -1
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +2 -0
  6. package/dist/Button.cjs.js.map +1 -1
  7. package/dist/Button.es.js +2 -0
  8. package/dist/Button.es.js.map +1 -1
  9. package/dist/Carousel.cjs.js +2 -0
  10. package/dist/Carousel.cjs.js.map +1 -1
  11. package/dist/Carousel.es.js +2 -0
  12. package/dist/Carousel.es.js.map +1 -1
  13. package/dist/Countdown.cjs.js +2 -0
  14. package/dist/Countdown.cjs.js.map +1 -1
  15. package/dist/Countdown.es.js +2 -0
  16. package/dist/Countdown.es.js.map +1 -1
  17. package/dist/Divider.cjs.js +2 -0
  18. package/dist/Divider.cjs.js.map +1 -1
  19. package/dist/Divider.es.js +2 -0
  20. package/dist/Divider.es.js.map +1 -1
  21. package/dist/Embed.cjs.js +3 -2
  22. package/dist/Embed.cjs.js.map +1 -1
  23. package/dist/Embed.es.js +3 -2
  24. package/dist/Embed.es.js.map +1 -1
  25. package/dist/Form.cjs.js +2 -0
  26. package/dist/Form.cjs.js.map +1 -1
  27. package/dist/Form.es.js +3 -1
  28. package/dist/Form.es.js.map +1 -1
  29. package/dist/Image.cjs.js +2 -0
  30. package/dist/Image.cjs.js.map +1 -1
  31. package/dist/Image.es.js +3 -1
  32. package/dist/Image.es.js.map +1 -1
  33. package/dist/LiveProvider.cjs.js +2 -0
  34. package/dist/LiveProvider.cjs.js.map +1 -1
  35. package/dist/LiveProvider.es.js +3 -1
  36. package/dist/LiveProvider.es.js.map +1 -1
  37. package/dist/Navigation.cjs.js +3 -2
  38. package/dist/Navigation.cjs.js.map +1 -1
  39. package/dist/Navigation.es.js +3 -2
  40. package/dist/Navigation.es.js.map +1 -1
  41. package/dist/PreviewProvider.cjs.js +2 -0
  42. package/dist/PreviewProvider.cjs.js.map +1 -1
  43. package/dist/PreviewProvider.es.js +4 -2
  44. package/dist/PreviewProvider.es.js.map +1 -1
  45. package/dist/ReadOnlyText.cjs.js +10 -0
  46. package/dist/ReadOnlyText.cjs.js.map +1 -1
  47. package/dist/ReadOnlyText.es.js +11 -1
  48. package/dist/ReadOnlyText.es.js.map +1 -1
  49. package/dist/Root.cjs.js +2 -1
  50. package/dist/Root.cjs.js.map +1 -1
  51. package/dist/Root.es.js +2 -1
  52. package/dist/Root.es.js.map +1 -1
  53. package/dist/SocialLinks.cjs.js +2 -0
  54. package/dist/SocialLinks.cjs.js.map +1 -1
  55. package/dist/SocialLinks.es.js +2 -0
  56. package/dist/SocialLinks.es.js.map +1 -1
  57. package/dist/Text.cjs.js +2 -0
  58. package/dist/Text.cjs.js.map +1 -1
  59. package/dist/Text.es.js +3 -1
  60. package/dist/Text.es.js.map +1 -1
  61. package/dist/Video.cjs.js +2 -0
  62. package/dist/Video.cjs.js.map +1 -1
  63. package/dist/Video.es.js +2 -0
  64. package/dist/Video.es.js.map +1 -1
  65. package/dist/components.cjs.js +2 -1
  66. package/dist/components.cjs.js.map +1 -1
  67. package/dist/components.es.js +2 -1
  68. package/dist/components.es.js.map +1 -1
  69. package/dist/controls.cjs.js +4 -0
  70. package/dist/controls.cjs.js.map +1 -1
  71. package/dist/controls.es.js +1 -1
  72. package/dist/descriptors.cjs.js +72 -12
  73. package/dist/descriptors.cjs.js.map +1 -1
  74. package/dist/descriptors.es.js +69 -13
  75. package/dist/descriptors.es.js.map +1 -1
  76. package/dist/index.cjs.js +137 -25
  77. package/dist/index.cjs.js.map +1 -1
  78. package/dist/index.cjs2.js +2 -3
  79. package/dist/index.cjs2.js.map +1 -1
  80. package/dist/index.cjs6.js +2 -0
  81. package/dist/index.cjs6.js.map +1 -1
  82. package/dist/index.cjs7.js +7 -2
  83. package/dist/index.cjs7.js.map +1 -1
  84. package/dist/index.es.js +138 -28
  85. package/dist/index.es.js.map +1 -1
  86. package/dist/index.es2.js +1 -2
  87. package/dist/index.es2.js.map +1 -1
  88. package/dist/index.es3.js +1 -1
  89. package/dist/index.es5.js +1 -1
  90. package/dist/index.es6.js +2 -0
  91. package/dist/index.es6.js.map +1 -1
  92. package/dist/index.es7.js +8 -3
  93. package/dist/index.es7.js.map +1 -1
  94. package/dist/leaf.es.js +1 -1
  95. package/dist/next.cjs.js +2 -0
  96. package/dist/next.cjs.js.map +1 -1
  97. package/dist/next.es.js +3 -1
  98. package/dist/next.es.js.map +1 -1
  99. package/dist/react.cjs.js +2 -0
  100. package/dist/react.cjs.js.map +1 -1
  101. package/dist/react.es.js +2 -0
  102. package/dist/react.es.js.map +1 -1
  103. package/dist/state/breakpoints.cjs.js +42 -8
  104. package/dist/state/breakpoints.cjs.js.map +1 -1
  105. package/dist/state/breakpoints.es.js +42 -8
  106. package/dist/state/breakpoints.es.js.map +1 -1
  107. package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  108. package/dist/types/src/components/builtin/Text/ReadOnlyText.d.ts.map +1 -1
  109. package/dist/types/src/components/builtin/Text/components/Element/block.d.ts.map +1 -1
  110. package/dist/types/src/controls/control.d.ts +2 -1
  111. package/dist/types/src/controls/control.d.ts.map +1 -1
  112. package/dist/types/src/controls/index.d.ts +1 -0
  113. package/dist/types/src/controls/index.d.ts.map +1 -1
  114. package/dist/types/src/controls/rich-text/types.d.ts +10 -3
  115. package/dist/types/src/controls/rich-text/types.d.ts.map +1 -1
  116. package/dist/types/src/controls/rich-text-v2/index.d.ts +2 -0
  117. package/dist/types/src/controls/rich-text-v2/index.d.ts.map +1 -0
  118. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts +58 -0
  119. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -0
  120. package/dist/types/src/prop-controllers/descriptors.d.ts +4 -3
  121. package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
  122. package/dist/types/src/prop-controllers/instances.d.ts +5 -3
  123. package/dist/types/src/prop-controllers/instances.d.ts.map +1 -1
  124. package/dist/types/src/runtimes/react/controls/control.d.ts +3 -2
  125. package/dist/types/src/runtimes/react/controls/control.d.ts.map +1 -1
  126. package/dist/types/src/runtimes/react/controls/rich-text-v2.d.ts +15 -0
  127. package/dist/types/src/runtimes/react/controls/rich-text-v2.d.ts.map +1 -0
  128. package/dist/types/src/runtimes/react/controls.d.ts.map +1 -1
  129. package/dist/types/src/runtimes/react/index.d.ts +2 -2
  130. package/dist/types/src/runtimes/react/index.d.ts.map +1 -1
  131. package/dist/types/src/state/modules/breakpoints.d.ts +2 -3
  132. package/dist/types/src/state/modules/breakpoints.d.ts.map +1 -1
  133. package/dist/types/src/state/modules/breakpoints.test.d.ts +2 -0
  134. package/dist/types/src/state/modules/breakpoints.test.d.ts.map +1 -0
  135. package/package.json +2 -1
  136. package/dist/useIsomorphicLayoutEffect.cjs.js +0 -6
  137. package/dist/useIsomorphicLayoutEffect.cjs.js.map +0 -1
  138. package/dist/useIsomorphicLayoutEffect.es.js +0 -5
  139. package/dist/useIsomorphicLayoutEffect.es.js.map +0 -1
package/dist/index.cjs.js CHANGED
@@ -46,10 +46,10 @@ var serialize = require("@emotion/serialize");
46
46
  var utils = require("@emotion/utils");
47
47
  var jsxRuntime = require("react/jsx-runtime");
48
48
  var descriptors = require("./descriptors.cjs.js");
49
- require("slate");
49
+ var slate = require("slate");
50
50
  var textInput = require("./text-input.cjs.js");
51
51
  var combobox = require("./combobox.cjs.js");
52
- require("slate-react");
52
+ var slateReact = require("slate-react");
53
53
  var shim = require("use-sync-external-store/shim");
54
54
  var redux = require("redux");
55
55
  var thunk = require("redux-thunk");
@@ -59,6 +59,8 @@ var state_breakpoints = require("./state/breakpoints.cjs.js");
59
59
  var boxModels = require("./box-models.cjs.js");
60
60
  var ColorHelper = require("color");
61
61
  var scrollIntoView = require("scroll-into-view-if-needed");
62
+ var isHotkey = require("is-hotkey");
63
+ var slateHistory = require("slate-history");
62
64
  var reactDom = require("react-dom");
63
65
  var parse = require("html-react-parser");
64
66
  var Head = require("next/head");
@@ -99,6 +101,7 @@ var dynamic__default = /* @__PURE__ */ _interopDefaultLegacy(dynamic);
99
101
  var thunk__default = /* @__PURE__ */ _interopDefaultLegacy(thunk);
100
102
  var ColorHelper__default = /* @__PURE__ */ _interopDefaultLegacy(ColorHelper);
101
103
  var scrollIntoView__default = /* @__PURE__ */ _interopDefaultLegacy(scrollIntoView);
104
+ var isHotkey__default = /* @__PURE__ */ _interopDefaultLegacy(isHotkey);
102
105
  var parse__default = /* @__PURE__ */ _interopDefaultLegacy(parse);
103
106
  var Head__default = /* @__PURE__ */ _interopDefaultLegacy(Head);
104
107
  var createEmotionServer__default = /* @__PURE__ */ _interopDefaultLegacy(createEmotionServer);
@@ -1161,7 +1164,7 @@ async function fonts(_req, res, { getFonts } = {}) {
1161
1164
  const fonts2 = (_a = await (getFonts == null ? void 0 : getFonts())) != null ? _a : [];
1162
1165
  return res.json(fonts2);
1163
1166
  }
1164
- const version = "0.8.7";
1167
+ const version = "0.8.9";
1165
1168
  async function handler(req, res, { apiKey }) {
1166
1169
  if (req.query.secret !== apiKey) {
1167
1170
  return res.status(401).json({ message: "Unauthorized" });
@@ -3153,24 +3156,6 @@ function useRichText(data, control) {
3153
3156
  ref: textCallbackRef
3154
3157
  });
3155
3158
  }
3156
- function useSelectControlValue(data, definition) {
3157
- return data != null ? data : definition == null ? void 0 : definition.config.defaultValue;
3158
- }
3159
- function ShapeControlValue({
3160
- definition,
3161
- data,
3162
- children,
3163
- control
3164
- }) {
3165
- return Object.entries(definition.config.type).reduceRight((renderFn, [key, controlDefinition]) => (shapeControlValue) => /* @__PURE__ */ jsxRuntime.jsx(ControlValue, {
3166
- definition: controlDefinition,
3167
- data: data == null ? void 0 : data[key],
3168
- control: control == null ? void 0 : control.controls.get(key),
3169
- children: (value) => renderFn(__spreadProps(__spreadValues({}, shapeControlValue), {
3170
- [key]: value
3171
- }))
3172
- }), children)({});
3173
- }
3174
3159
  function pollBoxModel({
3175
3160
  element,
3176
3161
  onBoxModelChange
@@ -3190,6 +3175,116 @@ function pollBoxModel({
3190
3175
  onBoxModelChange(null);
3191
3176
  };
3192
3177
  }
3178
+ const isSSR = typeof window === "undefined" || /ServerSideRendering/.test(window.navigator && window.navigator.userAgent);
3179
+ const useIsomorphicLayoutEffect = isSSR ? React.useEffect : React.useLayoutEffect;
3180
+ const defaultText = [{
3181
+ type: descriptors.BlockType.Text,
3182
+ children: [{
3183
+ text: ""
3184
+ }]
3185
+ }];
3186
+ function useRichTextV2(data, control) {
3187
+ const [editor] = React.useState(() => slateHistory.withHistory(slateReact.withReact(slate.createEditor())));
3188
+ const isPreservingFocus = React.useRef(false);
3189
+ const editMode = useBuilderEditMode();
3190
+ React.useEffect(() => {
3191
+ if (control == null)
3192
+ return;
3193
+ const element = slateReact.ReactEditor.toDOMNode(editor, editor);
3194
+ return pollBoxModel({
3195
+ element,
3196
+ onBoxModelChange: (boxModel) => control.changeBoxModel(boxModel)
3197
+ });
3198
+ }, [editor, control]);
3199
+ const renderElement = React.useCallback(({
3200
+ attributes,
3201
+ children,
3202
+ element
3203
+ }) => {
3204
+ switch (element.type) {
3205
+ default:
3206
+ return /* @__PURE__ */ jsxRuntime.jsx("p", __spreadProps(__spreadValues({}, attributes), {
3207
+ children
3208
+ }));
3209
+ }
3210
+ }, []);
3211
+ const renderLeaf = React.useCallback(({
3212
+ attributes,
3213
+ children
3214
+ }) => {
3215
+ return /* @__PURE__ */ jsxRuntime.jsx("span", __spreadProps(__spreadValues({}, attributes), {
3216
+ children
3217
+ }));
3218
+ }, []);
3219
+ const initialValue = React.useMemo(() => data != null ? data : defaultText, [data]);
3220
+ React.useEffect(() => {
3221
+ if (editMode !== descriptors.BuilderEditMode.CONTENT) {
3222
+ isPreservingFocus.current = false;
3223
+ slateReact.ReactEditor.deselect(editor);
3224
+ }
3225
+ }, [editMode]);
3226
+ React.useEffect(() => {
3227
+ control == null ? void 0 : control.setEditor(editor);
3228
+ control == null ? void 0 : control.setDefaultValue(defaultText);
3229
+ }, [control, editor, defaultText]);
3230
+ const handleFocus = React.useCallback(() => {
3231
+ isPreservingFocus.current = true;
3232
+ control == null ? void 0 : control.select();
3233
+ }, [control]);
3234
+ const handleKeyDown = React.useCallback((e) => {
3235
+ if (isHotkey__default["default"]("mod+shift+z", e))
3236
+ return slateHistory.HistoryEditor.redo(editor);
3237
+ if (isHotkey__default["default"]("mod+z", e))
3238
+ return slateHistory.HistoryEditor.undo(editor);
3239
+ if (isHotkey__default["default"]("escape")(e)) {
3240
+ isPreservingFocus.current = false;
3241
+ slateReact.ReactEditor.blur(editor);
3242
+ control == null ? void 0 : control.switchToBuildMode();
3243
+ }
3244
+ }, [control, editor]);
3245
+ const handleBlur = React.useCallback((e) => {
3246
+ var _a;
3247
+ if (e.relatedTarget == null)
3248
+ return;
3249
+ if (((_a = e.relatedTarget) == null ? void 0 : _a.getAttribute("contenteditable")) === "true")
3250
+ isPreservingFocus.current = false;
3251
+ }, []);
3252
+ const handleOnChange = React.useCallback((value) => {
3253
+ control == null ? void 0 : control.onChange(value);
3254
+ }, [control]);
3255
+ return /* @__PURE__ */ jsxRuntime.jsx(slateReact.Slate, {
3256
+ editor,
3257
+ onChange: handleOnChange,
3258
+ value: initialValue,
3259
+ children: /* @__PURE__ */ jsxRuntime.jsx(slateReact.Editable, {
3260
+ renderLeaf,
3261
+ renderElement,
3262
+ onFocus: handleFocus,
3263
+ onKeyDown: handleKeyDown,
3264
+ onBlur: handleBlur,
3265
+ readOnly: editMode !== descriptors.BuilderEditMode.CONTENT,
3266
+ placeholder: "Write some text..."
3267
+ })
3268
+ });
3269
+ }
3270
+ function useSelectControlValue(data, definition) {
3271
+ return data != null ? data : definition == null ? void 0 : definition.config.defaultValue;
3272
+ }
3273
+ function ShapeControlValue({
3274
+ definition,
3275
+ data,
3276
+ children,
3277
+ control
3278
+ }) {
3279
+ return Object.entries(definition.config.type).reduceRight((renderFn, [key, controlDefinition]) => (shapeControlValue) => /* @__PURE__ */ jsxRuntime.jsx(ControlValue, {
3280
+ definition: controlDefinition,
3281
+ data: data == null ? void 0 : data[key],
3282
+ control: control == null ? void 0 : control.controls.get(key),
3283
+ children: (value) => renderFn(__spreadProps(__spreadValues({}, shapeControlValue), {
3284
+ [key]: value
3285
+ }))
3286
+ }), children)({});
3287
+ }
3193
3288
  function useSlot(data, control) {
3194
3289
  if (data == null || data.elements.length === 0) {
3195
3290
  return /* @__PURE__ */ jsxRuntime.jsx(Slot.Placeholder, {
@@ -3426,6 +3521,12 @@ function ControlValue({
3426
3521
  parameters: [data, control],
3427
3522
  children: (value) => children(value)
3428
3523
  }, definition.type);
3524
+ case descriptors.RichTextV2ControlType:
3525
+ return /* @__PURE__ */ jsxRuntime.jsx(RenderHook, {
3526
+ hook: useRichTextV2,
3527
+ parameters: [data, control],
3528
+ children: (value) => children(value)
3529
+ }, definition.type);
3429
3530
  case descriptors.StyleControlType:
3430
3531
  return /* @__PURE__ */ jsxRuntime.jsx(RenderHook, {
3431
3532
  hook: useFormattedStyle,
@@ -3471,7 +3572,7 @@ function PropsValue({
3471
3572
  return constants.getPropControllers(state, documentKey, element.key);
3472
3573
  });
3473
3574
  return Object.entries(propControllerDescriptorsRef.current).reduceRight((renderFn, [propName, descriptor]) => (propsValue) => {
3474
- var _a2, _b, _c2;
3575
+ var _a2, _b, _c2, _d;
3475
3576
  switch (descriptor.type) {
3476
3577
  case textInput.CheckboxControlType:
3477
3578
  case textInput.NumberControlType:
@@ -3512,8 +3613,18 @@ function PropsValue({
3512
3613
  }))
3513
3614
  }, descriptor.type);
3514
3615
  }
3515
- case descriptors.SlotControlType: {
3616
+ case descriptors.RichTextV2ControlType: {
3516
3617
  const control = (_c2 = propControllers == null ? void 0 : propControllers[propName]) != null ? _c2 : null;
3618
+ return /* @__PURE__ */ jsxRuntime.jsx(RenderHook, {
3619
+ hook: useRichTextV2,
3620
+ parameters: [props[propName], control],
3621
+ children: (value) => renderFn(__spreadProps(__spreadValues({}, propsValue), {
3622
+ [propName]: value
3623
+ }))
3624
+ }, descriptor.type);
3625
+ }
3626
+ case descriptors.SlotControlType: {
3627
+ const control = (_d = propControllers == null ? void 0 : propControllers[propName]) != null ? _d : null;
3517
3628
  return /* @__PURE__ */ jsxRuntime.jsx(RenderHook, {
3518
3629
  hook: useSlot,
3519
3630
  parameters: [props[propName], control],
@@ -3697,11 +3808,11 @@ function isDomNodeHandle(value) {
3697
3808
  }
3698
3809
  class ReactRuntime {
3699
3810
  constructor({
3700
- unstable_breakpoints
3811
+ breakpoints
3701
3812
  }) {
3702
3813
  __publicField(this, "store");
3703
3814
  this.store = constants.configureStore({
3704
- breakpoints: unstable_breakpoints ? state_breakpoints.parseBreakpointsInput(unstable_breakpoints) : void 0
3815
+ breakpoints: breakpoints ? state_breakpoints.parseBreakpointsInput(breakpoints) : void 0
3705
3816
  });
3706
3817
  registerBuiltinComponents(this);
3707
3818
  }
@@ -4010,6 +4121,7 @@ exports.useFiles = useFiles;
4010
4121
  exports.useFormContext = useFormContext;
4011
4122
  exports.useIsInBuilder = useIsInBuilder;
4012
4123
  exports.useIsPreview = useIsPreview;
4124
+ exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;
4013
4125
  exports.useMakeswiftClient = useMakeswiftClient;
4014
4126
  exports.usePageId = usePageId;
4015
4127
  exports.usePagePathnameSlice = usePagePathnameSlice;