@makeswift/runtime 0.9.10 → 0.9.12

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 (209) hide show
  1. package/dist/Box.cjs.js +1 -1
  2. package/dist/Box.es.js +1 -1
  3. package/dist/Button.cjs.js +1 -1
  4. package/dist/Button.es.js +1 -1
  5. package/dist/Carousel.cjs.js +1 -1
  6. package/dist/Carousel.es.js +1 -1
  7. package/dist/Countdown.cjs.js +1 -1
  8. package/dist/Countdown.es.js +1 -1
  9. package/dist/Divider.cjs.js +1 -1
  10. package/dist/Divider.es.js +1 -1
  11. package/dist/Form.cjs.js +1 -1
  12. package/dist/Form.es.js +1 -1
  13. package/dist/Image.cjs.js +1 -1
  14. package/dist/Image.es.js +1 -1
  15. package/dist/LiveProvider.cjs.js +1 -1
  16. package/dist/LiveProvider.es.js +3 -3
  17. package/dist/Navigation.cjs.js +1 -1
  18. package/dist/Navigation.es.js +1 -1
  19. package/dist/PreviewProvider.cjs.js +1 -1
  20. package/dist/PreviewProvider.es.js +3 -3
  21. package/dist/ReadOnlyText.cjs.js +18 -3
  22. package/dist/ReadOnlyText.cjs.js.map +1 -1
  23. package/dist/ReadOnlyText.es.js +20 -5
  24. package/dist/ReadOnlyText.es.js.map +1 -1
  25. package/dist/ReadOnlyTextV2.cjs.js +116 -240
  26. package/dist/ReadOnlyTextV2.cjs.js.map +1 -1
  27. package/dist/ReadOnlyTextV2.es.js +115 -238
  28. package/dist/ReadOnlyTextV2.es.js.map +1 -1
  29. package/dist/Root.cjs.js +1 -1
  30. package/dist/Root.es.js +1 -1
  31. package/dist/SocialLinks.cjs.js +1 -1
  32. package/dist/SocialLinks.es.js +1 -1
  33. package/dist/Text.cjs.js +1 -1
  34. package/dist/Text.es.js +1 -1
  35. package/dist/components.cjs.js +1 -1
  36. package/dist/components.es.js +1 -1
  37. package/dist/control-serialization.es.js +1 -1
  38. package/dist/controls.cjs.js +28 -18
  39. package/dist/controls.cjs.js.map +1 -1
  40. package/dist/controls.es.js +2 -2
  41. package/dist/index.cjs.js +47 -42
  42. package/dist/index.cjs.js.map +1 -1
  43. package/dist/index.cjs10.js +2 -2
  44. package/dist/index.cjs2.js +3 -3
  45. package/dist/index.cjs2.js.map +1 -1
  46. package/dist/index.cjs5.js +5 -6
  47. package/dist/index.cjs5.js.map +1 -1
  48. package/dist/index.cjs6.js +20 -0
  49. package/dist/index.cjs6.js.map +1 -1
  50. package/dist/index.cjs8.js +1 -1
  51. package/dist/index.cjs9.js +27 -31
  52. package/dist/index.cjs9.js.map +1 -1
  53. package/dist/index.es.js +22 -18
  54. package/dist/index.es.js.map +1 -1
  55. package/dist/index.es10.js +4 -4
  56. package/dist/index.es2.js +2 -2
  57. package/dist/index.es3.js +1 -1
  58. package/dist/index.es5.js +1 -2
  59. package/dist/index.es5.js.map +1 -1
  60. package/dist/index.es6.js +21 -2
  61. package/dist/index.es6.js.map +1 -1
  62. package/dist/index.es8.js +1 -1
  63. package/dist/index.es9.js +31 -35
  64. package/dist/index.es9.js.map +1 -1
  65. package/dist/next.cjs.js +1 -1
  66. package/dist/next.es.js +2 -2
  67. package/dist/react-page.cjs.js +310 -147
  68. package/dist/react-page.cjs.js.map +1 -1
  69. package/dist/react-page.es.js +297 -146
  70. package/dist/react-page.es.js.map +1 -1
  71. package/dist/react.cjs.js +1 -1
  72. package/dist/react.es.js +1 -1
  73. package/dist/slate.cjs.js +40 -27
  74. package/dist/slate.cjs.js.map +1 -1
  75. package/dist/slate.es.js +49 -37
  76. package/dist/slate.es.js.map +1 -1
  77. package/dist/{typography.cjs.js → text-input.cjs.js} +1 -9
  78. package/dist/text-input.cjs.js.map +1 -0
  79. package/dist/{typography.es.js → text-input.es.js} +2 -8
  80. package/dist/text-input.es.js.map +1 -0
  81. package/dist/types/src/api/react.d.ts +1 -1
  82. package/dist/types/src/api/react.d.ts.map +1 -1
  83. package/dist/types/src/components/builtin/Button/Button.d.ts +3 -39
  84. package/dist/types/src/components/builtin/Button/Button.d.ts.map +1 -1
  85. package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +2 -2
  86. package/dist/types/src/components/builtin/Form/components/Field/components/Input/index.d.ts +1 -1
  87. package/dist/types/src/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts +0 -1
  88. package/dist/types/src/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts.map +1 -1
  89. package/dist/types/src/components/builtin/Form/components/Field/components/RadioButton/index.d.ts +2 -2
  90. package/dist/types/src/components/builtin/Form/components/Field/components/TextArea/index.d.ts +1 -1
  91. package/dist/types/src/components/builtin/Form/components/Field/index.d.ts +0 -1
  92. package/dist/types/src/components/builtin/Form/components/Field/index.d.ts.map +1 -1
  93. package/dist/types/src/components/builtin/Form/components/Spinner/index.d.ts +0 -1
  94. package/dist/types/src/components/builtin/Form/components/Spinner/index.d.ts.map +1 -1
  95. package/dist/types/src/components/builtin/Navigation/components/DropDownButton/index.d.ts +1 -1
  96. package/dist/types/src/components/builtin/Navigation/components/DropDownButton/index.d.ts.map +1 -1
  97. package/dist/types/src/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts +0 -1
  98. package/dist/types/src/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts.map +1 -1
  99. package/dist/types/src/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.d.ts +1 -1
  100. package/dist/types/src/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.d.ts.map +1 -1
  101. package/dist/types/src/components/builtin/Navigation/components/MobileMenu/index.d.ts +0 -1
  102. package/dist/types/src/components/builtin/Navigation/components/MobileMenu/index.d.ts.map +1 -1
  103. package/dist/types/src/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts +0 -1
  104. package/dist/types/src/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts.map +1 -1
  105. package/dist/types/src/components/builtin/SocialLinks/options.d.ts +23 -24
  106. package/dist/types/src/components/builtin/SocialLinks/options.d.ts.map +1 -1
  107. package/dist/types/src/components/builtin/Text/ReadOnlyText.d.ts +2 -2
  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 +1 -2
  110. package/dist/types/src/components/builtin/Text/components/Element/block.d.ts.map +1 -1
  111. package/dist/types/src/components/builtin/Text/components/Element/element.d.ts +1 -2
  112. package/dist/types/src/components/builtin/Text/components/Element/element.d.ts.map +1 -1
  113. package/dist/types/src/components/builtin/Text/components/Element/inline.d.ts +1 -2
  114. package/dist/types/src/components/builtin/Text/components/Element/inline.d.ts.map +1 -1
  115. package/dist/types/src/components/builtin/Text/components/Leaf/leaf.d.ts +1 -2
  116. package/dist/types/src/components/builtin/Text/components/Leaf/leaf.d.ts.map +1 -1
  117. package/dist/types/src/components/page/Page.d.ts +0 -1
  118. package/dist/types/src/components/page/Page.d.ts.map +1 -1
  119. package/dist/types/src/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts +0 -1
  120. package/dist/types/src/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts.map +1 -1
  121. package/dist/types/src/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts +0 -1
  122. package/dist/types/src/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts.map +1 -1
  123. package/dist/types/src/components/shared/BackgroundsContainer/index.d.ts +1 -1
  124. package/dist/types/src/components/shared/GutterContainer/index.d.ts +1 -1
  125. package/dist/types/src/components/shared/GutterContainer/index.d.ts.map +1 -1
  126. package/dist/types/src/components/shared/Link/index.d.ts +1 -1
  127. package/dist/types/src/components/shared/Link/index.d.ts.map +1 -1
  128. package/dist/types/src/components/shared/grid-item.d.ts +1 -1
  129. package/dist/types/src/components/shared/grid-item.d.ts.map +1 -1
  130. package/dist/types/src/controls/list.d.ts +5 -2
  131. package/dist/types/src/controls/list.d.ts.map +1 -1
  132. package/dist/types/src/controls/rich-text/introspection.d.ts +5 -0
  133. package/dist/types/src/controls/rich-text/introspection.d.ts.map +1 -0
  134. package/dist/types/src/controls/rich-text/introspection.test.d.ts +2 -0
  135. package/dist/types/src/controls/rich-text/introspection.test.d.ts.map +1 -0
  136. package/dist/types/src/controls/rich-text-v2/introspection.d.ts +5 -0
  137. package/dist/types/src/controls/rich-text-v2/introspection.d.ts.map +1 -0
  138. package/dist/types/src/controls/rich-text-v2/introspection.test.d.ts +2 -0
  139. package/dist/types/src/controls/rich-text-v2/introspection.test.d.ts.map +1 -0
  140. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts +15 -3
  141. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  142. package/dist/types/src/controls/rich-text-v2/translation.d.ts +1 -1
  143. package/dist/types/src/controls/rich-text-v2/translation.d.ts.map +1 -1
  144. package/dist/types/src/controls/shape.d.ts +5 -2
  145. package/dist/types/src/controls/shape.d.ts.map +1 -1
  146. package/dist/types/src/controls/typography.d.ts +2 -0
  147. package/dist/types/src/controls/typography.d.ts.map +1 -1
  148. package/dist/types/src/next/client.d.ts.map +1 -1
  149. package/dist/types/src/next/document.d.ts +1 -2
  150. package/dist/types/src/next/document.d.ts.map +1 -1
  151. package/dist/types/src/next/index.d.ts +1 -1
  152. package/dist/types/src/next/index.d.ts.map +1 -1
  153. package/dist/types/src/next/preview-mode.d.ts +1 -2
  154. package/dist/types/src/next/preview-mode.d.ts.map +1 -1
  155. package/dist/types/src/prop-controllers/descriptors.d.ts +10 -0
  156. package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
  157. package/dist/types/src/prop-controllers/introspection.d.ts +0 -2
  158. package/dist/types/src/prop-controllers/introspection.d.ts.map +1 -1
  159. package/dist/types/src/runtimes/react/components/render-hook.d.ts +0 -1
  160. package/dist/types/src/runtimes/react/components/render-hook.d.ts.map +1 -1
  161. package/dist/types/src/runtimes/react/controls/control.d.ts +0 -1
  162. package/dist/types/src/runtimes/react/controls/control.d.ts.map +1 -1
  163. package/dist/types/src/runtimes/react/controls/list.d.ts +0 -1
  164. package/dist/types/src/runtimes/react/controls/list.d.ts.map +1 -1
  165. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts +1 -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/EditableTextV2/render-element.d.ts +1 -2
  168. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.d.ts.map +1 -1
  169. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.d.ts +1 -2
  170. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.d.ts.map +1 -1
  171. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.d.ts +4 -0
  172. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.d.ts.map +1 -0
  173. package/dist/types/src/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts +7 -16
  174. package/dist/types/src/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts.map +1 -1
  175. package/dist/types/src/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts +1 -1
  176. package/dist/types/src/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  177. package/dist/types/src/runtimes/react/controls/rich-text.d.ts +1 -1
  178. package/dist/types/src/runtimes/react/controls/rich-text.d.ts.map +1 -1
  179. package/dist/types/src/runtimes/react/controls/shape.d.ts +0 -1
  180. package/dist/types/src/runtimes/react/controls/shape.d.ts.map +1 -1
  181. package/dist/types/src/runtimes/react/controls/slot.d.ts +2 -2
  182. package/dist/types/src/runtimes/react/controls/slot.d.ts.map +1 -1
  183. package/dist/types/src/runtimes/react/controls/style-v2.d.ts +0 -1
  184. package/dist/types/src/runtimes/react/controls/style-v2.d.ts.map +1 -1
  185. package/dist/types/src/runtimes/react/controls.d.ts +0 -1
  186. package/dist/types/src/runtimes/react/controls.d.ts.map +1 -1
  187. package/dist/types/src/runtimes/react/find-dom-node.d.ts.map +1 -1
  188. package/dist/types/src/runtimes/react/index.d.ts +1 -1
  189. package/dist/types/src/runtimes/react/index.d.ts.map +1 -1
  190. package/dist/types/src/slate/LinkPlugin/index.d.ts.map +1 -1
  191. package/dist/types/src/slate/LocalChangesPlugin/index.d.ts +16 -0
  192. package/dist/types/src/slate/LocalChangesPlugin/index.d.ts.map +1 -0
  193. package/dist/types/src/slate/TextAlignPlugin/index.d.ts +3 -3
  194. package/dist/types/src/slate/TextAlignPlugin/index.d.ts.map +1 -1
  195. package/dist/types/src/slate/index.d.ts +1 -0
  196. package/dist/types/src/slate/index.d.ts.map +1 -1
  197. package/dist/types/src/slate/types.d.ts +2 -2
  198. package/dist/types/src/slate/types.d.ts.map +1 -1
  199. package/dist/types/src/slate/utils/responsive.d.ts +1 -1
  200. package/dist/types/src/slate/utils/responsive.d.ts.map +1 -1
  201. package/dist/types/src/state/modules/react-components.d.ts +2 -2
  202. package/dist/types/src/state/modules/react-components.d.ts.map +1 -1
  203. package/dist/types.cjs2.js +67 -48
  204. package/dist/types.cjs2.js.map +1 -1
  205. package/dist/types.es2.js +64 -45
  206. package/dist/types.es2.js.map +1 -1
  207. package/package.json +4 -5
  208. package/dist/typography.cjs.js.map +0 -1
  209. package/dist/typography.es.js.map +0 -1
@@ -18,11 +18,23 @@ 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
  var slate = require("slate");
22
34
  var state_breakpoints = require("./state/breakpoints.cjs.js");
23
35
  var reactPage = require("./react-page.cjs.js");
24
36
  require("./actions.cjs.js");
25
- var typography = require("./typography.cjs.js");
37
+ var textInput = require("./text-input.cjs.js");
26
38
  var isHotkey = require("is-hotkey");
27
39
  var css = require("@emotion/css");
28
40
  var jsxRuntime = require("react/jsx-runtime");
@@ -531,7 +543,7 @@ function withBlock(editor) {
531
543
  };
532
544
  return editor;
533
545
  }
534
- const definition = typography.Select({
546
+ const definition = textInput.Select({
535
547
  label: "Block",
536
548
  labelOrientation: "horizontal",
537
549
  options: [{
@@ -609,116 +621,123 @@ function BlockPlugin() {
609
621
  }))
610
622
  });
611
623
  }
612
- function BlockPluginComponent({
613
- element,
614
- attributes,
615
- children,
616
- renderElement
617
- }) {
624
+ function BlockPluginComponent(_a) {
625
+ var _b = _a, {
626
+ renderElement
627
+ } = _b, props = __objRest(_b, [
628
+ "renderElement"
629
+ ]);
618
630
  const blockStyles = [reactPage.useStyle({
619
631
  margin: 0
620
- }), element.className];
632
+ }), props.element.className];
621
633
  const quoteStyles = reactPage.useStyle({
622
634
  padding: "0.5em 10px",
623
635
  fontSize: "1.25em",
624
636
  fontWeight: "300",
625
637
  borderLeft: "5px solid rgba(0, 0, 0, 0.1)"
626
638
  });
627
- const listStyles = reactPage.useStyle({
639
+ const unorderedListStyles = reactPage.useStyle({
640
+ listStylePosition: "inside",
641
+ paddingInlineStart: "20px",
642
+ listStyleType: "disc",
643
+ ul: {
644
+ listStyleType: "circle"
645
+ },
646
+ "ul ul": {
647
+ listStyleType: "square"
648
+ }
649
+ });
650
+ const orderedListStyles = reactPage.useStyle({
628
651
  listStylePosition: "inside",
629
652
  paddingInlineStart: "20px",
630
- listStyleType: "disc"
653
+ listStyleType: "decimal"
631
654
  });
632
- switch (element.type) {
655
+ switch (props.element.type) {
633
656
  case reactPage.BlockType.Text:
634
- return /* @__PURE__ */ jsxRuntime.jsx("span", __spreadProps(__spreadValues({}, attributes), {
657
+ return /* @__PURE__ */ jsxRuntime.jsx("span", __spreadProps(__spreadValues({}, props.attributes), {
635
658
  className: css.cx(...blockStyles),
636
- children
659
+ children: renderElement(props)
637
660
  }));
638
661
  case reactPage.BlockType.Default:
639
662
  case reactPage.BlockType.Paragraph:
640
- return /* @__PURE__ */ jsxRuntime.jsx("p", __spreadProps(__spreadValues({}, attributes), {
663
+ return /* @__PURE__ */ jsxRuntime.jsx("p", __spreadProps(__spreadValues({}, props.attributes), {
641
664
  className: css.cx(...blockStyles),
642
- children
665
+ children: renderElement(props)
643
666
  }));
644
667
  case reactPage.BlockType.Heading1:
645
- return /* @__PURE__ */ jsxRuntime.jsx("h1", __spreadProps(__spreadValues({}, attributes), {
668
+ return /* @__PURE__ */ jsxRuntime.jsx("h1", __spreadProps(__spreadValues({}, props.attributes), {
646
669
  className: css.cx(...blockStyles),
647
- children
670
+ children: renderElement(props)
648
671
  }));
649
672
  case reactPage.BlockType.Heading2:
650
- return /* @__PURE__ */ jsxRuntime.jsx("h2", __spreadProps(__spreadValues({}, attributes), {
673
+ return /* @__PURE__ */ jsxRuntime.jsx("h2", __spreadProps(__spreadValues({}, props.attributes), {
651
674
  className: css.cx(...blockStyles),
652
- children
675
+ children: renderElement(props)
653
676
  }));
654
677
  case reactPage.BlockType.Heading3:
655
- return /* @__PURE__ */ jsxRuntime.jsx("h3", __spreadProps(__spreadValues({}, attributes), {
678
+ return /* @__PURE__ */ jsxRuntime.jsx("h3", __spreadProps(__spreadValues({}, props.attributes), {
656
679
  className: css.cx(...blockStyles),
657
- children
680
+ children: renderElement(props)
658
681
  }));
659
682
  case reactPage.BlockType.Heading4:
660
- return /* @__PURE__ */ jsxRuntime.jsx("h4", __spreadProps(__spreadValues({}, attributes), {
683
+ return /* @__PURE__ */ jsxRuntime.jsx("h4", __spreadProps(__spreadValues({}, props.attributes), {
661
684
  className: css.cx(...blockStyles),
662
- children
685
+ children: renderElement(props)
663
686
  }));
664
687
  case reactPage.BlockType.Heading5:
665
- return /* @__PURE__ */ jsxRuntime.jsx("h5", __spreadProps(__spreadValues({}, attributes), {
688
+ return /* @__PURE__ */ jsxRuntime.jsx("h5", __spreadProps(__spreadValues({}, props.attributes), {
666
689
  className: css.cx(...blockStyles),
667
- children
690
+ children: renderElement(props)
668
691
  }));
669
692
  case reactPage.BlockType.Heading6:
670
- return /* @__PURE__ */ jsxRuntime.jsx("h6", __spreadProps(__spreadValues({}, attributes), {
693
+ return /* @__PURE__ */ jsxRuntime.jsx("h6", __spreadProps(__spreadValues({}, props.attributes), {
671
694
  className: css.cx(...blockStyles),
672
- children
695
+ children: renderElement(props)
673
696
  }));
674
697
  case reactPage.BlockType.BlockQuote:
675
- return /* @__PURE__ */ jsxRuntime.jsx("blockquote", __spreadProps(__spreadValues({}, attributes), {
698
+ return /* @__PURE__ */ jsxRuntime.jsx("blockquote", __spreadProps(__spreadValues({}, props.attributes), {
676
699
  className: css.cx(...blockStyles, quoteStyles),
677
- children
700
+ children: renderElement(props)
678
701
  }));
679
702
  case reactPage.BlockType.OrderedList:
680
- return /* @__PURE__ */ jsxRuntime.jsx("ol", __spreadProps(__spreadValues({}, attributes), {
681
- className: css.cx(...blockStyles, listStyles),
682
- children
703
+ return /* @__PURE__ */ jsxRuntime.jsx("ol", __spreadProps(__spreadValues({}, props.attributes), {
704
+ className: css.cx(...blockStyles, orderedListStyles),
705
+ children: renderElement(props)
683
706
  }));
684
707
  case reactPage.BlockType.UnorderedList:
685
- return /* @__PURE__ */ jsxRuntime.jsx("ul", __spreadProps(__spreadValues({}, attributes), {
686
- className: css.cx(...blockStyles, listStyles),
687
- children
708
+ return /* @__PURE__ */ jsxRuntime.jsx("ul", __spreadProps(__spreadValues({}, props.attributes), {
709
+ className: css.cx(...blockStyles, unorderedListStyles),
710
+ children: renderElement(props)
688
711
  }));
689
712
  case reactPage.BlockType.ListItem:
690
- return /* @__PURE__ */ jsxRuntime.jsx("li", __spreadProps(__spreadValues({}, attributes), {
713
+ return /* @__PURE__ */ jsxRuntime.jsx("li", __spreadProps(__spreadValues({}, props.attributes), {
691
714
  className: css.cx(...blockStyles),
692
- children
715
+ children: renderElement(props)
693
716
  }));
694
717
  case reactPage.BlockType.ListItemChild:
695
- return /* @__PURE__ */ jsxRuntime.jsx("span", __spreadProps(__spreadValues({}, attributes), {
718
+ return /* @__PURE__ */ jsxRuntime.jsx("span", __spreadProps(__spreadValues({}, props.attributes), {
696
719
  className: css.cx(...blockStyles),
697
- children
720
+ children: renderElement(props)
698
721
  }));
699
722
  default:
700
723
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
701
- children: renderElement({
702
- element,
703
- attributes,
704
- children
705
- })
724
+ children: renderElement(props)
706
725
  });
707
726
  }
708
727
  }
709
728
  const supportedInlineOptions = [
710
729
  {
711
- icon: typography.unstable_IconRadioGroupIcon.Superscript,
730
+ icon: textInput.unstable_IconRadioGroupIcon.Superscript,
712
731
  label: "Superscript",
713
732
  value: "superscript"
714
733
  },
715
734
  {
716
- icon: typography.unstable_IconRadioGroupIcon.Subscript,
735
+ icon: textInput.unstable_IconRadioGroupIcon.Subscript,
717
736
  label: "Subscript",
718
737
  value: "subscript"
719
738
  },
720
739
  {
721
- icon: typography.unstable_IconRadioGroupIcon.Code,
740
+ icon: textInput.unstable_IconRadioGroupIcon.Code,
722
741
  label: "Code",
723
742
  value: "code"
724
743
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs2.js","sources":["../src/slate/utils/element.ts","../src/slate/utils/unhangRange.ts","../src/slate/selectors.ts","../src/slate/BlockPlugin/setBlockKeyForDevice.ts","../src/slate/BlockPlugin/clearBlockKeyForDevice.ts","../src/slate/BlockPlugin/wrapInline.ts","../src/slate/BlockPlugin/unwrapInline.ts","../src/slate/utils/editor.ts","../src/slate/BlockPlugin/constants.ts","../src/slate/BlockPlugin/utils/filterForSubtreeRoots.ts","../src/slate/BlockPlugin/unwrapList.ts","../src/slate/BlockPlugin/wrapList.ts","../src/slate/BlockPlugin/utils/location.ts","../src/slate/BlockPlugin/utils/getSelectedListItems.ts","../src/slate/BlockPlugin/indent.ts","../src/slate/BlockPlugin/dedent.ts","../src/slate/BlockPlugin/toggleList.ts","../src/slate/BlockPlugin/index.tsx","../src/slate/InlinePlugin/types.ts"],"sourcesContent":["import { Node, Element } from 'slate'\nimport {\n RootBlock,\n BlockType,\n Block,\n Inline,\n InlineType,\n OrderedListElement,\n UnorderedListElement,\n ListItemElement,\n ListItemChildElement,\n} from '../types'\n\nexport const ElementUtils = {\n isRootBlock(node: Node): node is RootBlock {\n return (\n Element.isElement(node) &&\n (Element.isElementType(node, BlockType.Paragraph) ||\n Element.isElementType(node, BlockType.Heading1) ||\n Element.isElementType(node, BlockType.Heading2) ||\n Element.isElementType(node, BlockType.Heading3) ||\n Element.isElementType(node, BlockType.Heading3) ||\n Element.isElementType(node, BlockType.Heading4) ||\n Element.isElementType(node, BlockType.Heading5) ||\n Element.isElementType(node, BlockType.Heading6) ||\n Element.isElementType(node, BlockType.BlockQuote) ||\n Element.isElementType(node, BlockType.UnorderedList) ||\n Element.isElementType(node, BlockType.OrderedList) ||\n Element.isElementType(node, BlockType.Text) ||\n Element.isElementType(node, BlockType.Default))\n )\n },\n isBlock(node: Node): node is Block {\n return (\n Element.isElement(node) &&\n (this.isRootBlock(node) ||\n Element.isElementType(node, BlockType.ListItem) ||\n Element.isElementType(node, BlockType.ListItemChild))\n )\n },\n isInline(node: Node): node is Inline {\n return (\n Element.isElementType(node, InlineType.Code) ||\n Element.isElementType(node, InlineType.Link) ||\n Element.isElementType(node, InlineType.SubScript) ||\n Element.isElementType(node, InlineType.SuperScript)\n )\n },\n isConvertibleToListTextNode(node: Node) {\n return !this.isList(node) && !this.isListItem(node) && !this.isListItemChild(node)\n },\n isList(node: Node): node is OrderedListElement | UnorderedListElement {\n return (\n Element.isElementType(node, BlockType.OrderedList) ||\n Element.isElementType(node, BlockType.UnorderedList)\n )\n },\n isListItem(node: Node): node is ListItemElement {\n return Element.isElementType(node, BlockType.ListItem)\n },\n isListItemChild(node: Node): node is ListItemChildElement {\n return Element.isElementType(node, BlockType.ListItemChild)\n },\n createText() {\n return { text: '' }\n },\n createParagraph() {\n return {\n children: [this.createText()],\n type: BlockType.Paragraph,\n }\n },\n createList(type: BlockType = BlockType.UnorderedList): Block {\n return { children: [this.createText()], type }\n },\n createListItem(): Block {\n return {\n children: [this.createListItemChild()],\n type: BlockType.ListItem,\n }\n },\n createListItemChild(): Block {\n return {\n children: [this.createText()],\n type: BlockType.ListItemChild,\n }\n },\n}\n","import { Editor, Range, Element, Text, Path } from 'slate'\n\n/**\n * The `Editor.unhangeRange` within Slate early exits if `Path.hasPrevious(end.path)` ie if this isn't a root block.\n * Unfortunately when you `setNode(..., {split:true})` or `wrapNodes()` you also have a hanging selection, but not in the root position.\n *\n * This c/p removes the `Path.hasPrevious(end.path)` from the early exit but it the same otherwise\n */\nfunction unhangRange(editor: Editor, range: Range): Range {\n // eslint-disable-next-line prefer-const\n let [start, end] = Range.edges(range)\n // PERF: exit early if we can guarantee that the range isn't hanging.\n if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range)) {\n return range\n }\n\n const endBlock = Editor.above(editor, {\n at: end,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n })\n const blockPath = endBlock ? endBlock[1] : []\n const first = Editor.start(editor, start)\n const before = { anchor: first, focus: end }\n let skip = true\n\n for (const [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n })) {\n if (skip) {\n skip = false\n continue\n }\n\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = { path, offset: node.text.length }\n break\n }\n }\n\n return { anchor: start, focus: end }\n}\n\nexport default unhangRange\n","import { Editor, NodeEntry, Range, Text } from 'slate'\nimport { EditableBlockKey } from './BlockPlugin/types'\nimport { ElementUtils } from './utils/element'\n\nimport unhangRange from './utils/unhangRange'\nimport shallowEqual from '../utils/shallowEqual'\nimport { isNonNullable } from '../utils/isNonNullable'\n\nimport { Breakpoints, BreakpointId, findBreakpointOverride } from '../state/modules/breakpoints'\nimport deepEqual from '../utils/deepEqual'\nimport keys from '../utils/keys'\nimport {\n RootBlock,\n Inline,\n RootBlockType,\n ResponsiveBlockTextAlignment,\n BlockTextAlignment,\n RichTextTypography,\n} from './types'\n\nexport function getSelection(editor: Editor): Range {\n if (editor.selection) return unhangRange(editor, editor.selection)\n return {\n anchor: Editor.start(editor, []),\n focus: Editor.end(editor, []),\n }\n}\n\nexport function getBlocksInSelection(editor: Editor): NodeEntry<RootBlock>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => ElementUtils.isRootBlock(node),\n }),\n ).filter((entry): entry is NodeEntry<RootBlock> => ElementUtils.isRootBlock(entry[0]))\n}\n\nexport function getInlinesInSelection(editor: Editor): NodeEntry<Inline>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => ElementUtils.isInline(node),\n }),\n ).filter((entry): entry is NodeEntry<Inline> => ElementUtils.isInline(entry[0]))\n}\n\nexport function getActiveBlockType(editor: Editor): RootBlockType | null {\n const rootBlocks = getBlocksInSelection(editor).map(([node]) => node.type)\n\n return rootBlocks.reduce<RootBlockType | null>(\n (a, b) => (a === b ? b : null),\n rootBlocks.at(0) ?? null,\n )\n}\n\nexport function getActiveBlockValue(editor: Editor, key: EditableBlockKey) {\n const blocks = getBlocksInSelection(editor)\n\n const active = blocks.map(\n ([block]) => block[key] ?? null,\n ) as (ResponsiveBlockTextAlignment | null)[]\n\n return active.length === 0 ? null : active.reduce((a, b) => (shallowEqual(a, b) ? b : null))\n}\n\nexport function getActiveBlockDeviceOverrideValue(\n editor: Editor,\n key: EditableBlockKey,\n breakpoints: Breakpoints,\n deviceId: BreakpointId,\n) {\n const active: (BlockTextAlignment | null)[] = []\n const blocks = getBlocksInSelection(editor)\n\n blocks.forEach(([block]) => {\n const deviceOverride =\n findBreakpointOverride<BlockTextAlignment>(breakpoints, block[key], deviceId) || null\n active.push(deviceOverride?.value ?? null)\n })\n\n return active.length === 0 ? null : active.reduce((a, b) => (shallowEqual(a, b) ? b : null))\n}\n\n// Typography\n\nconst concat = (a: unknown[], b: unknown[]) => a.concat(b)\n\n// TODO: This is more cruft from trying to remove null from the typography type. This optimization is not worth it.\n/**\n * This is a c/p of the intersection of the utils from the root utils folder.\n * The only change is defaulting to undefined instead of to null.\n */\nexport default function intersection<A extends Record<string, unknown>, B extends A>(\n a: A,\n b: B,\n isEqual: (a: unknown, b: unknown) => boolean = deepEqual,\n): { [K in keyof A]: A[K] | undefined } {\n const allKeys = [...new Set([...keys(a), ...keys(b)])] as (keyof A)[]\n\n return allKeys.reduce((acc, k) => {\n if (isEqual(a[k], b[k])) acc[k] = a[k]\n else acc[k] = undefined\n\n return acc\n }, {} as { [K in keyof A]: A[K] | undefined })\n}\n\nconst fuseTypographyMarks = (\n values: Array<RichTextTypography | null | undefined>,\n breakpoints: Breakpoints,\n): RichTextTypography => {\n const devices = [\n ...new Set(\n values\n .filter(isNonNullable)\n .map(({ style }) => style.map(({ deviceId }) => deviceId))\n .reduce(concat, []),\n ),\n ] as BreakpointId[]\n\n return {\n id: values.map(v => v && v.id).reduce((a, b) => (a === b ? a : undefined)) ?? undefined,\n style: devices.map(deviceId =>\n values\n .map(\n v =>\n (v && findBreakpointOverride(breakpoints, v.style, deviceId)) || {\n deviceId,\n value: {},\n },\n )\n .reduce((acc, { value }) => {\n const a = intersection(acc.value, value)\n return {\n deviceId,\n value: a,\n }\n }),\n ),\n }\n}\n\nexport function getActiveTypographyMark(\n editor: Editor,\n breakpoints: Breakpoints,\n): RichTextTypography {\n const active: RichTextTypography[] = []\n\n const textNodes = Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => Text.isText(node),\n })\n\n for (const [node] of textNodes) {\n if (Text.isText(node) && 'typography' in node && node.typography != undefined) {\n active.push(node.typography)\n }\n }\n return active.length === 0 ? { style: [] } : fuseTypographyMarks(active, breakpoints)\n}\n","import { Editor, Transforms, Location } from 'slate'\nimport { getBlocksInSelection } from '../selectors'\nimport { ElementUtils } from '../utils/element'\nimport { EditableBlockKey, EditableBlockValue } from './types'\nimport { Breakpoints, BreakpointId, findBreakpointOverride } from '../../state/modules/breakpoints'\n\ntype SetBlockKeyForDeviceOptions = {\n at?: Location\n}\n\nexport function setBlockKeyForDevice(\n editor: Editor,\n breakpoints: Breakpoints,\n deviceId: BreakpointId,\n key: EditableBlockKey,\n value: EditableBlockValue[number]['value'],\n options?: SetBlockKeyForDeviceOptions,\n) {\n const at = options?.at ?? editor.selection\n if (!at) return\n\n const rootElements = getBlocksInSelection(editor)\n\n for (const [node, path] of rootElements) {\n if (ElementUtils.isBlock(node)) {\n const deviceValues = node[key] ?? []\n const currentDeviceValue = findBreakpointOverride(breakpoints, deviceValues, deviceId, v => v)\n const nextDeviceValue = {\n ...currentDeviceValue,\n deviceId,\n value,\n }\n Transforms.setNodes(\n editor,\n {\n [key]: [...deviceValues.filter(v => v.deviceId !== deviceId), nextDeviceValue],\n },\n { at: path },\n )\n }\n }\n}\n","import { Editor, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { EditableBlockKey } from './types'\nimport { getBlocksInSelection } from '../selectors'\nimport { BreakpointId } from '../../state/modules/breakpoints'\n\nexport function clearBlockKeyForDevice(\n editor: Editor,\n deviceId: BreakpointId,\n key: EditableBlockKey,\n) {\n const rootElements = getBlocksInSelection(editor)\n\n for (const [node, path] of rootElements) {\n if (ElementUtils.isBlock(node)) {\n const deviceOverrides = node[key] ?? []\n Transforms.setNodes(\n editor,\n {\n [key]: deviceOverrides.filter(v => v.deviceId !== deviceId),\n },\n { at: path },\n )\n }\n }\n}\n","import { Editor, Transforms } from 'slate'\nimport { getSelection } from '../selectors'\nimport { Inline } from '../types'\n\nexport function wrapInline(editor: Editor, inline: Inline) {\n Transforms.wrapNodes(editor, inline, {\n at: getSelection(editor),\n split: true,\n })\n}\n","import { Editor, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { getSelection } from '../selectors'\nimport { InlineType } from '../types'\n\nexport function unwrapInline(editor: Editor, type: InlineType) {\n Transforms.unwrapNodes(editor, {\n match: node => ElementUtils.isInline(node) && node.type === type,\n at: getSelection(editor),\n })\n}\n","import { Path, Editor, NodeEntry } from 'slate'\n\nimport { ElementUtils } from './element'\nimport { ListElement, ListItemElement } from '../types'\n\nexport const EditorUtils = {\n getFirstAncestorList(editor: Editor, path: Path): NodeEntry<ListElement> | null {\n try {\n const parentList = Editor.above(editor, {\n at: path,\n match: (node): node is ListElement => ElementUtils.isList(node),\n })\n return parentList ?? null\n } catch (e) {\n return null\n }\n },\n getFirstAncestorListItem(editor: Editor, path: Path): NodeEntry<ListItemElement> | null {\n try {\n const parentListItem = Editor.above(editor, {\n at: path,\n match: (node): node is ListItemElement => ElementUtils.isListItem(node),\n })\n\n return parentListItem ?? null\n } catch (e) {\n return null\n }\n },\n}\n","export const LIST_ITEM_CHILD_POSITION = 0\nexport const LIST_ITEM_LIST_POSITION = 1\n","import type { Node, NodeEntry } from 'slate'\nimport { Path } from 'slate'\n\nexport function filterForSubtreeRoots(entries: NodeEntry<Node>[]): NodeEntry<Node>[] {\n return entries.filter(\n ([, nodePath]) =>\n !Path.ancestors(nodePath).some(ancestor => {\n return entries.some(([, path]) => Path.equals(path, ancestor))\n }),\n )\n}\n","import { Editor, Element, Transforms, Path, Node, Location, Span } from 'slate'\nimport { EditorUtils } from '../utils/editor'\nimport { LIST_ITEM_CHILD_POSITION, LIST_ITEM_LIST_POSITION } from './constants'\nimport { filterForSubtreeRoots } from './utils/filterForSubtreeRoots'\nimport { ElementUtils } from '../utils/element'\nimport { BlockType } from '../types'\n\nexport function unwrapPath(editor: Editor, listItemPath: Path) {\n const parentList = EditorUtils.getFirstAncestorList(editor, listItemPath)\n const listItemContainingParentList = EditorUtils.getFirstAncestorListItem(editor, listItemPath)\n //if this is a nested item we don't want to unwrap it\n if (!parentList || listItemContainingParentList) return\n\n Editor.withoutNormalizing(editor, () => {\n const listItemTextPath = [...listItemPath, LIST_ITEM_CHILD_POSITION]\n const listItemNestedListPath = [...listItemPath, LIST_ITEM_LIST_POSITION]\n\n if (Node.has(editor, listItemNestedListPath)) {\n Transforms.setNodes(editor, { type: parentList[0].type }, { at: listItemNestedListPath })\n Transforms.liftNodes(editor, { at: listItemNestedListPath })\n Transforms.liftNodes(editor, { at: Path.next(listItemPath) })\n }\n\n if (Node.has(editor, listItemTextPath)) {\n Transforms.setNodes(\n editor,\n { type: BlockType.Paragraph },\n {\n at: listItemTextPath,\n },\n )\n Transforms.liftNodes(editor, { at: listItemTextPath })\n Transforms.liftNodes(editor, { at: listItemPath })\n }\n })\n}\n\ntype UnwrapListOptions = {\n at?: Location | Span\n}\n\nexport function unwrapList(editor: Editor, options?: UnwrapListOptions) {\n const at = options?.at ?? editor.selection\n if (!at) return\n\n const listItems = Array.from(\n Editor.nodes(editor, {\n at,\n match: node => {\n return Element.isElement(node) && ElementUtils.isListItem(node)\n },\n }),\n )\n const subRoots = filterForSubtreeRoots(listItems)\n const refs = subRoots.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n if (ref.current) {\n unwrapPath(editor, ref.current)\n }\n ref.unref()\n })\n}\n","import { Editor, Element, Location, Span, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { BlockType } from '../types'\n\ntype WrapListOptions = {\n type: typeof BlockType.UnorderedList | typeof BlockType.OrderedList\n at?: Location | Span\n}\n\nexport function wrapList(\n editor: Editor,\n options: WrapListOptions = { type: BlockType.UnorderedList },\n) {\n const at = options.at ?? editor.selection\n if (!at) return\n\n const nonListEntries = Array.from(\n Editor.nodes(editor, {\n at,\n match: node => {\n return Element.isElement(node) && ElementUtils.isConvertibleToListTextNode(node)\n },\n }),\n )\n\n const refs = nonListEntries.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n const path = ref.current\n if (path) {\n Editor.withoutNormalizing(editor, () => {\n Transforms.setNodes(\n editor,\n { type: BlockType.ListItemChild },\n {\n at: path,\n },\n )\n Transforms.wrapNodes(editor, ElementUtils.createListItem(), {\n match: node => ElementUtils.isListItemChild(node),\n at: path,\n })\n Transforms.wrapNodes(editor, ElementUtils.createList(options.type), {\n at: path,\n })\n })\n }\n ref.unref()\n })\n}\n","import { Range, Point, Path, Location } from 'slate'\n\nexport const LocationUtils = {\n getStartPath(location: Location): Path {\n if (Range.isRange(location)) return Range.start(location).path\n if (Point.isPoint(location)) return location.path\n return location\n },\n}\n","import type { Element, NodeEntry } from 'slate'\nimport { Editor, Path } from 'slate'\nimport { EditorUtils } from '../../utils/editor'\nimport { ElementUtils } from '../../utils/element'\nimport { LocationUtils } from './location'\n\nexport function getSelectedListItems(editor: Editor): NodeEntry<Element>[] {\n if (!editor.selection) return []\n\n const start = LocationUtils.getStartPath(editor.selection)\n const listItems = Editor.nodes(editor, {\n at: editor.selection,\n match: node => ElementUtils.isListItem(node),\n })\n const firstAncestorPath = EditorUtils.getFirstAncestorListItem(editor, start)?.[1] ?? []\n\n return Array.from(listItems).filter((node): node is NodeEntry<Element> =>\n Path.isDescendant(start, node[1])\n ? Path.equals(node[1], firstAncestorPath)\n : !Path.isAfter(start, node[1]),\n )\n}\n","import { Editor, Node, Path, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { LIST_ITEM_LIST_POSITION } from './constants'\nimport { filterForSubtreeRoots } from './utils/filterForSubtreeRoots'\nimport { getSelectedListItems } from './utils/getSelectedListItems'\n\nexport function indentPath(editor: Editor, path: Path) {\n const parent = Node.parent(editor, path)\n if (!path || !Path.hasPrevious(path) || !ElementUtils.isList(parent)) return\n\n const previosPath = Path.previous(path)\n\n const previousChildListPath = [...previosPath, LIST_ITEM_LIST_POSITION]\n const previousHasChildList = Node.has(editor, previousChildListPath)\n\n Editor.withoutNormalizing(editor, () => {\n if (!previousHasChildList) {\n Transforms.insertNodes(editor, ElementUtils.createList(parent.type), {\n at: previousChildListPath,\n })\n }\n\n const previousChildList = Node.get(editor, previousChildListPath)\n\n if (ElementUtils.isList(previousChildList)) {\n const index = previousHasChildList ? previousChildList.children.length : 0\n Transforms.moveNodes(editor, {\n at: path,\n to: [...previousChildListPath, index],\n })\n }\n })\n}\n\nexport function indent(editor: Editor) {\n if (!editor.selection) return\n\n const listItems = getSelectedListItems(editor)\n const subRoots = filterForSubtreeRoots(listItems)\n const refs = subRoots.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n if (ref.current) {\n indentPath(editor, ref.current)\n }\n ref.unref()\n })\n}\n","import { Editor, Path, Transforms } from 'slate'\nimport { indentPath } from './indent'\nimport { getSelectedListItems } from './utils/getSelectedListItems'\nimport { filterForSubtreeRoots } from './utils/filterForSubtreeRoots'\nimport { EditorUtils } from '../utils/editor'\n\nfunction dedentPath(editor: Editor, listItemPath: Path) {\n const parentList = EditorUtils.getFirstAncestorList(editor, listItemPath)\n const listItemContainingParentList = EditorUtils.getFirstAncestorListItem(editor, listItemPath)\n if (!parentList || !listItemContainingParentList) return\n\n const [parentListNode, parentListPath] = parentList\n const [_, listItemContainingParentListPath] = listItemContainingParentList\n\n const listItemPosition = listItemPath[listItemPath.length - 1]\n const previousSiblings = parentListNode.children.slice(0, listItemPosition)\n const nextSiblings = parentListNode.children.slice(listItemPosition + 1)\n\n Editor.withoutNormalizing(editor, () => {\n // put next siblings into list item\n nextSiblings.forEach(() => {\n const nextSiblingPath = [...parentListPath, listItemPosition + 1]\n indentPath(editor, nextSiblingPath)\n })\n // move list item to parent list\n Transforms.moveNodes(editor, {\n at: listItemPath,\n to: Path.next(listItemContainingParentListPath),\n })\n // delete old parent list if there are no other list items\n if (previousSiblings.length === 0) {\n Transforms.removeNodes(editor, { at: parentListPath })\n }\n })\n}\n\nexport function dedent(editor: Editor) {\n if (!editor.selection) return\n\n const listItems = getSelectedListItems(editor)\n const subRoots = filterForSubtreeRoots(listItems)\n const refs = subRoots.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n if (ref.current) {\n dedentPath(editor, ref.current)\n }\n ref.unref()\n })\n}\n","import { Editor, Location, Node, Path, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { unwrapList } from './unwrapList'\nimport { LocationUtils } from './utils/location'\nimport { wrapList } from './wrapList'\nimport { BlockType } from '../types'\n\ntype ToggleListOptions = {\n type: typeof BlockType.UnorderedList | typeof BlockType.OrderedList\n at?: Location\n}\n\nexport function toggleList(\n editor: Editor,\n options: ToggleListOptions = { type: BlockType.UnorderedList },\n) {\n const at = options.at ?? editor.selection\n if (at == null) return\n const start = LocationUtils.getStartPath(at)\n const ancestorPath = Path.ancestors(start).at(1)\n if (!ancestorPath || !Node.has(editor, ancestorPath)) return\n const ancestor = Node.get(editor, ancestorPath)\n\n if (!ElementUtils.isList(ancestor)) {\n return wrapList(editor, { type: options.type, at })\n }\n\n if (ancestor.type === options.type) {\n unwrapList(editor, { at })\n } else {\n Transforms.setNodes(editor, { type: options.type }, { at: ancestorPath })\n }\n}\n","import type { KeyboardEvent } from 'react'\nimport { Editor, Transforms, Range, Node, PathRef, Text } from 'slate'\nimport { setBlockKeyForDevice } from './setBlockKeyForDevice'\nimport { clearBlockKeyForDevice } from './clearBlockKeyForDevice'\nimport { wrapInline } from './wrapInline'\nimport { unwrapInline } from './unwrapInline'\nimport { getSelection } from '../selectors'\nimport { ElementUtils } from '../utils/element'\nimport { RenderElement, Select, createRichTextV2Plugin } from '../../controls'\nimport { getActiveBlockType } from '../selectors'\nimport { BlockType, RootBlockType } from '../types'\nimport { unwrapList } from './unwrapList'\nimport { wrapList } from './wrapList'\nimport { indent } from './indent'\nimport { dedent } from './dedent'\nimport { toggleList } from './toggleList'\nimport { EditorUtils } from '../utils/editor'\nimport isHotkey from 'is-hotkey'\nimport { LIST_ITEM_CHILD_POSITION } from './constants'\nimport { useStyle } from '../../runtimes/react/use-style'\nimport { cx } from '@emotion/css'\nimport { RenderElementProps } from 'slate-react'\n\nexport const BlockActions = {\n setBlockKeyForDevice,\n clearBlockKeyForDevice,\n wrapInline,\n unwrapInline,\n}\n\n// TODO: This API is still litered with artifacts from the list plugin being seperated out.\n// This plugin needs to be rewritten to be assumptionless.\nexport const ListActions = {\n unwrapList,\n wrapList,\n indent,\n dedent,\n toggleList,\n}\n\nexport function onKeyDown(e: KeyboardEvent, editor: Editor) {\n if (\n !editor.selection ||\n Array.from(Editor.nodes(editor, { match: node => ElementUtils.isListItem(node) })).length === 0\n )\n return\n\n if (isHotkey('shift+tab', e)) {\n e.preventDefault()\n ListActions.dedent(editor)\n }\n\n if (isHotkey('tab', e)) {\n e.preventDefault()\n ListActions.indent(editor)\n }\n\n if (isHotkey('backspace', e)) {\n if (!editor.selection) return\n if (Range.isExpanded(editor.selection)) return\n const listItem = EditorUtils.getFirstAncestorListItem(editor, editor.selection.anchor.path)\n if (editor.selection.anchor.offset === 0 && listItem) {\n e.preventDefault()\n const parentListItem = EditorUtils.getFirstAncestorListItem(editor, listItem[1])\n const list = EditorUtils.getFirstAncestorList(editor, listItem[1])\n\n if (parentListItem) {\n ListActions.dedent(editor)\n } else if (list) {\n ListActions.unwrapList(editor)\n }\n return\n }\n }\n\n if (isHotkey('enter', e)) {\n e.preventDefault()\n\n if (!editor.selection) return\n\n if (Range.isExpanded(editor.selection)) {\n Transforms.delete(editor)\n return\n }\n\n const listItem = EditorUtils.getFirstAncestorListItem(editor, editor.selection.anchor.path)\n if (\n editor.selection.anchor.offset === 0 &&\n listItem &&\n Editor.string(editor, listItem[1]) === ''\n ) {\n const parentListItem = EditorUtils.getFirstAncestorListItem(editor, listItem[1])\n\n if (parentListItem) {\n ListActions.dedent(editor)\n } else {\n ListActions.unwrapList(editor)\n }\n return\n }\n\n Transforms.splitNodes(editor, {\n at: editor.selection,\n always: true,\n match: node => ElementUtils.isListItem(node),\n })\n }\n\n if (isHotkey('shift+enter', e)) {\n e.preventDefault()\n editor.insertText('\\n')\n }\n}\n\nexport function withBlock(editor: Editor) {\n const { normalizeNode } = editor\n\n editor.isInline = entry => {\n return ElementUtils.isInline(entry)\n }\n\n editor.normalizeNode = entry => {\n const [normalizationNode, normalizationPath] = entry\n // Normalization textAlign with empty array of values\n if (ElementUtils.isBlock(normalizationNode) && normalizationNode?.textAlign?.length == 0) {\n Transforms.unsetNodes(editor, 'textAlign', { at: normalizationPath })\n return\n }\n\n // Normalization for converting children of list items to list item children\n // In the case of backspace from position 0 of node into a list this converts the node into a list item.\n if (ElementUtils.isListItem(normalizationNode)) {\n const pathToListItemText = [...normalizationPath, LIST_ITEM_CHILD_POSITION]\n\n if (Node.has(editor, pathToListItemText)) {\n const nodeInListItemTextPosition = Node.get(editor, pathToListItemText)\n if (ElementUtils.isRootBlock(nodeInListItemTextPosition)) {\n Transforms.setNodes(\n editor,\n { type: BlockType.ListItemChild },\n {\n at: pathToListItemText,\n },\n )\n return\n }\n } else {\n Transforms.insertNodes(editor, ElementUtils.createListItem(), {\n at: pathToListItemText,\n })\n return\n }\n }\n\n // Normalization for merging adjacent lists of the same type\n if (!Text.isText(normalizationNode)) {\n const mergeableChildren = Array.from(Node.children(editor, normalizationPath))\n .map((child, index, children) => {\n const potentialNodeToBeMerged = children.at(index + 1)\n if (\n !potentialNodeToBeMerged ||\n !ElementUtils.isList(potentialNodeToBeMerged[0]) ||\n !ElementUtils.isList(child[0]) ||\n potentialNodeToBeMerged[0].type !== child[0].type\n ) {\n return null\n }\n return [\n Editor.pathRef(editor, child[1]),\n Editor.pathRef(editor, potentialNodeToBeMerged[1]),\n ]\n })\n .filter((mergeableNodes): mergeableNodes is PathRef[] => Boolean(mergeableNodes))\n\n if (mergeableChildren.length !== 0) {\n mergeableChildren.reverse().forEach(([nodePathRef, nodeToBeMergedPathRef]) => {\n const nodePath = nodePathRef.current\n const nodeToBeMergedPath = nodeToBeMergedPathRef.current\n if (nodePath == null || nodeToBeMergedPath == null) return\n const nodeChildren = Array.from(Node.children(editor, nodePath))\n const childrenToBeMerged = Array.from(Node.children(editor, nodeToBeMergedPath))\n Editor.withoutNormalizing(editor, () => {\n childrenToBeMerged.reverse().forEach(([_, childPath]) => {\n Transforms.moveNodes(editor, {\n at: childPath,\n to: [...nodePath, nodeChildren.length],\n })\n })\n Transforms.removeNodes(editor, { at: nodeToBeMergedPath })\n })\n nodePathRef.unref()\n nodeToBeMergedPathRef.unref()\n })\n return\n }\n }\n\n normalizeNode(entry)\n }\n\n return editor\n}\n\nconst definition = Select({\n label: 'Block',\n labelOrientation: 'horizontal',\n options: [\n {\n value: BlockType.Paragraph,\n label: 'Paragraph',\n },\n {\n value: BlockType.Heading1,\n label: 'Heading 1',\n },\n {\n value: BlockType.Heading2,\n label: 'Heading 2',\n },\n {\n value: BlockType.Heading3,\n label: 'Heading 3',\n },\n {\n value: BlockType.Heading4,\n label: 'Heading 4',\n },\n {\n value: BlockType.Heading5,\n label: 'Heading 5',\n },\n {\n value: BlockType.Heading6,\n label: 'Heading 6',\n },\n {\n value: BlockType.UnorderedList,\n label: 'Bulleted list',\n },\n {\n value: BlockType.OrderedList,\n label: 'Numbered list',\n },\n {\n value: BlockType.BlockQuote,\n label: 'Quote',\n },\n ],\n defaultValue: BlockType.Paragraph,\n})\n\nexport function BlockPlugin() {\n return createRichTextV2Plugin({\n withPlugin: withBlock,\n onKeyDown: onKeyDown,\n control: {\n definition,\n onChange: (editor, value) => {\n // TODO: This onChange being so complex is an artifact of how the List plugin used to be seperated out from the block plugin.\n // Would be great to refactor and simplify here.\n\n const activeBlockType = getActiveBlockType(editor)\n if (value === BlockType.UnorderedList || value === BlockType.OrderedList) {\n ListActions.toggleList(editor, {\n type: value,\n at: getSelection(editor),\n })\n } else if (activeBlockType === value) {\n Transforms.setNodes(\n editor,\n {\n type: BlockType.Default,\n },\n { at: getSelection(editor) },\n )\n } else {\n ListActions.unwrapList(editor, {\n at: getSelection(editor),\n })\n Transforms.setNodes(\n editor,\n {\n type: value ?? BlockType.Default,\n },\n { at: getSelection(editor) },\n )\n }\n },\n getValue: editor => {\n const activeBlock = getActiveBlockType(editor)\n\n if (activeBlock === RootBlockType.Text || activeBlock === RootBlockType.Default)\n return undefined\n\n return activeBlock\n },\n },\n renderElement: renderElement => props =>\n <BlockPluginComponent {...props} renderElement={renderElement} />,\n })\n}\n\nfunction BlockPluginComponent({\n element,\n attributes,\n children,\n renderElement,\n}: RenderElementProps & { renderElement: RenderElement }) {\n const blockStyles = [useStyle({ margin: 0 }), element.className]\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 const listStyles = useStyle({\n listStylePosition: 'inside',\n paddingInlineStart: '20px',\n listStyleType: 'disc',\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.Default:\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 {...attributes} className={cx(...blockStyles, listStyles)}>\n {children}\n </ol>\n )\n case BlockType.UnorderedList:\n return (\n <ul {...attributes} className={cx(...blockStyles, listStyles)}>\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 default:\n return <>{renderElement({ element, attributes, children })}</>\n }\n}\n","import { Node, NodeEntry } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { Inline, InlineType, LinkElement } from '../types'\nimport { IconRadioGroupOption, unstable_IconRadioGroupIcon } from '../../controls'\n\nexport type SupportedInlineType = Exclude<InlineType, 'link'>\nexport type SupportedInline = Exclude<Inline, LinkElement>\n\nexport const supportedInlineOptions: IconRadioGroupOption<SupportedInlineType>[] = [\n {\n icon: unstable_IconRadioGroupIcon.Superscript,\n label: 'Superscript',\n value: 'superscript',\n },\n {\n icon: unstable_IconRadioGroupIcon.Subscript,\n label: 'Subscript',\n value: 'subscript',\n },\n {\n icon: unstable_IconRadioGroupIcon.Code,\n label: 'Code',\n value: 'code',\n },\n]\n\nexport function isSupportedInlineType(inline: InlineType): inline is SupportedInlineType {\n return supportedInlineOptions.findIndex(option => option.value === inline) !== -1\n}\n\nexport function isSupportedInlineEntry(\n entry: NodeEntry<Node>,\n): entry is NodeEntry<SupportedInline> {\n const node = entry[0]\n return (\n ElementUtils.isInline(node) &&\n supportedInlineOptions.findIndex(option => option.value === node.type) !== -1\n )\n}\n"],"names":["Element","BlockType","InlineType","Range","Editor","Text","Path","findBreakpointOverride","Transforms","Node","Point","BlockActions","setBlockKeyForDevice","clearBlockKeyForDevice","wrapInline","unwrapInline","ListActions","unwrapList","wrapList","indent","dedent","toggleList","e","editor","selection","Array","from","nodes","match","node","ElementUtils","isListItem","length","isHotkey","preventDefault","isExpanded","listItem","EditorUtils","getFirstAncestorListItem","anchor","path","offset","parentListItem","list","getFirstAncestorList","delete","string","splitNodes","at","always","insertText","normalizeNode","isInline","entry","normalizationNode","normalizationPath","isBlock","textAlign","unsetNodes","pathToListItemText","LIST_ITEM_CHILD_POSITION","has","nodeInListItemTextPosition","get","isRootBlock","setNodes","type","ListItemChild","insertNodes","createListItem","isText","mergeableChildren","children","map","child","index","potentialNodeToBeMerged","isList","pathRef","filter","mergeableNodes","Boolean","reverse","forEach","nodePathRef","nodeToBeMergedPathRef","nodePath","current","nodeToBeMergedPath","nodeChildren","childrenToBeMerged","withoutNormalizing","_","childPath","moveNodes","to","removeNodes","unref","definition","Select","label","labelOrientation","options","value","Paragraph","Heading1","Heading2","Heading3","Heading4","Heading5","Heading6","UnorderedList","OrderedList","BlockQuote","defaultValue","createRichTextV2Plugin","withPlugin","withBlock","onKeyDown","control","onChange","activeBlockType","getActiveBlockType","getSelection","Default","getValue","activeBlock","RootBlockType","undefined","renderElement","props","_jsx","element","attributes","blockStyles","useStyle","margin","className","quoteStyles","padding","fontSize","fontWeight","borderLeft","listStyles","listStylePosition","paddingInlineStart","listStyleType","cx","ListItem","_Fragment","unstable_IconRadioGroupIcon"],"mappings":"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"}
1
+ {"version":3,"file":"types.cjs2.js","sources":["../src/slate/utils/element.ts","../src/slate/utils/unhangRange.ts","../src/slate/selectors.ts","../src/slate/BlockPlugin/setBlockKeyForDevice.ts","../src/slate/BlockPlugin/clearBlockKeyForDevice.ts","../src/slate/BlockPlugin/wrapInline.ts","../src/slate/BlockPlugin/unwrapInline.ts","../src/slate/utils/editor.ts","../src/slate/BlockPlugin/constants.ts","../src/slate/BlockPlugin/utils/filterForSubtreeRoots.ts","../src/slate/BlockPlugin/unwrapList.ts","../src/slate/BlockPlugin/wrapList.ts","../src/slate/BlockPlugin/utils/location.ts","../src/slate/BlockPlugin/utils/getSelectedListItems.ts","../src/slate/BlockPlugin/indent.ts","../src/slate/BlockPlugin/dedent.ts","../src/slate/BlockPlugin/toggleList.ts","../src/slate/BlockPlugin/index.tsx","../src/slate/InlinePlugin/types.ts"],"sourcesContent":["import { Node, Element } from 'slate'\nimport {\n RootBlock,\n BlockType,\n Block,\n Inline,\n InlineType,\n OrderedListElement,\n UnorderedListElement,\n ListItemElement,\n ListItemChildElement,\n} from '../types'\n\nexport const ElementUtils = {\n isRootBlock(node: Node): node is RootBlock {\n return (\n Element.isElement(node) &&\n (Element.isElementType(node, BlockType.Paragraph) ||\n Element.isElementType(node, BlockType.Heading1) ||\n Element.isElementType(node, BlockType.Heading2) ||\n Element.isElementType(node, BlockType.Heading3) ||\n Element.isElementType(node, BlockType.Heading3) ||\n Element.isElementType(node, BlockType.Heading4) ||\n Element.isElementType(node, BlockType.Heading5) ||\n Element.isElementType(node, BlockType.Heading6) ||\n Element.isElementType(node, BlockType.BlockQuote) ||\n Element.isElementType(node, BlockType.UnorderedList) ||\n Element.isElementType(node, BlockType.OrderedList) ||\n Element.isElementType(node, BlockType.Text) ||\n Element.isElementType(node, BlockType.Default))\n )\n },\n isBlock(node: Node): node is Block {\n return (\n Element.isElement(node) &&\n (this.isRootBlock(node) ||\n Element.isElementType(node, BlockType.ListItem) ||\n Element.isElementType(node, BlockType.ListItemChild))\n )\n },\n isInline(node: Node): node is Inline {\n return (\n Element.isElementType(node, InlineType.Code) ||\n Element.isElementType(node, InlineType.Link) ||\n Element.isElementType(node, InlineType.SubScript) ||\n Element.isElementType(node, InlineType.SuperScript)\n )\n },\n isConvertibleToListTextNode(node: Node) {\n return !this.isList(node) && !this.isListItem(node) && !this.isListItemChild(node)\n },\n isList(node: Node): node is OrderedListElement | UnorderedListElement {\n return (\n Element.isElementType(node, BlockType.OrderedList) ||\n Element.isElementType(node, BlockType.UnorderedList)\n )\n },\n isListItem(node: Node): node is ListItemElement {\n return Element.isElementType(node, BlockType.ListItem)\n },\n isListItemChild(node: Node): node is ListItemChildElement {\n return Element.isElementType(node, BlockType.ListItemChild)\n },\n createText() {\n return { text: '' }\n },\n createParagraph() {\n return {\n children: [this.createText()],\n type: BlockType.Paragraph,\n }\n },\n createList(type: BlockType = BlockType.UnorderedList): Block {\n return { children: [this.createText()], type }\n },\n createListItem(): Block {\n return {\n children: [this.createListItemChild()],\n type: BlockType.ListItem,\n }\n },\n createListItemChild(): Block {\n return {\n children: [this.createText()],\n type: BlockType.ListItemChild,\n }\n },\n}\n","import { Editor, Range, Element, Text, Path } from 'slate'\n\n/**\n * The `Editor.unhangeRange` within Slate early exits if `Path.hasPrevious(end.path)` ie if this isn't a root block.\n * Unfortunately when you `setNode(..., {split:true})` or `wrapNodes()` you also have a hanging selection, but not in the root position.\n *\n * This c/p removes the `Path.hasPrevious(end.path)` from the early exit but it the same otherwise\n */\nfunction unhangRange(editor: Editor, range: Range): Range {\n // eslint-disable-next-line prefer-const\n let [start, end] = Range.edges(range)\n // PERF: exit early if we can guarantee that the range isn't hanging.\n if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range)) {\n return range\n }\n\n const endBlock = Editor.above(editor, {\n at: end,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n })\n const blockPath = endBlock ? endBlock[1] : []\n const first = Editor.start(editor, start)\n const before = { anchor: first, focus: end }\n let skip = true\n\n for (const [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n })) {\n if (skip) {\n skip = false\n continue\n }\n\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = { path, offset: node.text.length }\n break\n }\n }\n\n return { anchor: start, focus: end }\n}\n\nexport default unhangRange\n","import { Editor, NodeEntry, Range, Text } from 'slate'\nimport { EditableBlockKey } from './BlockPlugin/types'\nimport { ElementUtils } from './utils/element'\n\nimport unhangRange from './utils/unhangRange'\nimport shallowEqual from '../utils/shallowEqual'\nimport { isNonNullable } from '../utils/isNonNullable'\n\nimport { Breakpoints, BreakpointId, findBreakpointOverride } from '../state/modules/breakpoints'\nimport deepEqual from '../utils/deepEqual'\nimport keys from '../utils/keys'\nimport {\n RootBlock,\n Inline,\n RootBlockType,\n ResponsiveBlockTextAlignment,\n BlockTextAlignment,\n RichTextTypography,\n} from './types'\n\nexport function getSelection(editor: Editor): Range {\n if (editor.selection) return unhangRange(editor, editor.selection)\n return {\n anchor: Editor.start(editor, []),\n focus: Editor.end(editor, []),\n }\n}\n\nexport function getBlocksInSelection(editor: Editor): NodeEntry<RootBlock>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => ElementUtils.isRootBlock(node),\n }),\n ).filter((entry): entry is NodeEntry<RootBlock> => ElementUtils.isRootBlock(entry[0]))\n}\n\nexport function getInlinesInSelection(editor: Editor): NodeEntry<Inline>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => ElementUtils.isInline(node),\n }),\n ).filter((entry): entry is NodeEntry<Inline> => ElementUtils.isInline(entry[0]))\n}\n\nexport function getActiveBlockType(editor: Editor): RootBlockType | null {\n const rootBlocks = getBlocksInSelection(editor).map(([node]) => node.type)\n\n return rootBlocks.reduce<RootBlockType | null>(\n (a, b) => (a === b ? b : null),\n rootBlocks.at(0) ?? null,\n )\n}\n\nexport function getActiveBlockValue(editor: Editor, key: EditableBlockKey) {\n const blocks = getBlocksInSelection(editor)\n\n const active = blocks.map(\n ([block]) => block[key] ?? null,\n ) as (ResponsiveBlockTextAlignment | null)[]\n\n return active.length === 0 ? null : active.reduce((a, b) => (shallowEqual(a, b) ? b : null))\n}\n\nexport function getActiveBlockDeviceOverrideValue(\n editor: Editor,\n key: EditableBlockKey,\n breakpoints: Breakpoints,\n deviceId: BreakpointId,\n) {\n const active: (BlockTextAlignment | null)[] = []\n const blocks = getBlocksInSelection(editor)\n\n blocks.forEach(([block]) => {\n const deviceOverride =\n findBreakpointOverride<BlockTextAlignment>(breakpoints, block[key], deviceId) || null\n active.push(deviceOverride?.value ?? null)\n })\n\n return active.length === 0 ? null : active.reduce((a, b) => (shallowEqual(a, b) ? b : null))\n}\n\n// Typography\n\nconst concat = (a: unknown[], b: unknown[]) => a.concat(b)\n\n// TODO: This is more cruft from trying to remove null from the typography type. This optimization is not worth it.\n/**\n * This is a c/p of the intersection of the utils from the root utils folder.\n * The only change is defaulting to undefined instead of to null.\n */\nexport default function intersection<A extends Record<string, unknown>, B extends A>(\n a: A,\n b: B,\n isEqual: (a: unknown, b: unknown) => boolean = deepEqual,\n): { [K in keyof A]: A[K] | undefined } {\n const allKeys = [...new Set([...keys(a), ...keys(b)])] as (keyof A)[]\n\n return allKeys.reduce((acc, k) => {\n if (isEqual(a[k], b[k])) acc[k] = a[k]\n else acc[k] = undefined\n\n return acc\n }, {} as { [K in keyof A]: A[K] | undefined })\n}\n\nconst fuseTypographyMarks = (\n values: Array<RichTextTypography | null | undefined>,\n breakpoints: Breakpoints,\n): RichTextTypography => {\n const devices = [\n ...new Set(\n values\n .filter(isNonNullable)\n .map(({ style }) => style.map(({ deviceId }) => deviceId))\n .reduce(concat, []),\n ),\n ] as BreakpointId[]\n\n return {\n id: values.map(v => v && v.id).reduce((a, b) => (a === b ? a : undefined)) ?? undefined,\n style: devices.map(deviceId =>\n values\n .map(\n v =>\n (v && findBreakpointOverride(breakpoints, v.style, deviceId)) || {\n deviceId,\n value: {},\n },\n )\n .reduce((acc, { value }) => {\n const a = intersection(acc.value, value)\n return {\n deviceId,\n value: a,\n }\n }),\n ),\n }\n}\n\nexport function getActiveTypographyMark(\n editor: Editor,\n breakpoints: Breakpoints,\n): RichTextTypography {\n const active: RichTextTypography[] = []\n\n const textNodes = Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => Text.isText(node),\n })\n\n for (const [node] of textNodes) {\n if (Text.isText(node) && 'typography' in node && node.typography != undefined) {\n active.push(node.typography)\n }\n }\n return active.length === 0 ? { style: [] } : fuseTypographyMarks(active, breakpoints)\n}\n","import { Editor, Transforms, Location } from 'slate'\nimport { getBlocksInSelection } from '../selectors'\nimport { ElementUtils } from '../utils/element'\nimport { EditableBlockKey, EditableBlockValue } from './types'\nimport { Breakpoints, BreakpointId, findBreakpointOverride } from '../../state/modules/breakpoints'\n\ntype SetBlockKeyForDeviceOptions = {\n at?: Location\n}\n\nexport function setBlockKeyForDevice(\n editor: Editor,\n breakpoints: Breakpoints,\n deviceId: BreakpointId,\n key: EditableBlockKey,\n value: EditableBlockValue[number]['value'],\n options?: SetBlockKeyForDeviceOptions,\n) {\n const at = options?.at ?? editor.selection\n if (!at) return\n\n const rootElements = getBlocksInSelection(editor)\n\n for (const [node, path] of rootElements) {\n if (ElementUtils.isBlock(node)) {\n const deviceValues = node[key] ?? []\n const currentDeviceValue = findBreakpointOverride(breakpoints, deviceValues, deviceId, v => v)\n const nextDeviceValue = {\n ...currentDeviceValue,\n deviceId,\n value,\n }\n Transforms.setNodes(\n editor,\n {\n [key]: [...deviceValues.filter(v => v.deviceId !== deviceId), nextDeviceValue],\n },\n { at: path },\n )\n }\n }\n}\n","import { Editor, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { EditableBlockKey } from './types'\nimport { getBlocksInSelection } from '../selectors'\nimport { BreakpointId } from '../../state/modules/breakpoints'\n\nexport function clearBlockKeyForDevice(\n editor: Editor,\n deviceId: BreakpointId,\n key: EditableBlockKey,\n) {\n const rootElements = getBlocksInSelection(editor)\n\n for (const [node, path] of rootElements) {\n if (ElementUtils.isBlock(node)) {\n const deviceOverrides = node[key] ?? []\n Transforms.setNodes(\n editor,\n {\n [key]: deviceOverrides.filter(v => v.deviceId !== deviceId),\n },\n { at: path },\n )\n }\n }\n}\n","import { Editor, Transforms } from 'slate'\nimport { getSelection } from '../selectors'\nimport { Inline } from '../types'\n\nexport function wrapInline(editor: Editor, inline: Inline) {\n Transforms.wrapNodes(editor, inline, {\n at: getSelection(editor),\n split: true,\n })\n}\n","import { Editor, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { getSelection } from '../selectors'\nimport { InlineType } from '../types'\n\nexport function unwrapInline(editor: Editor, type: InlineType) {\n Transforms.unwrapNodes(editor, {\n match: node => ElementUtils.isInline(node) && node.type === type,\n at: getSelection(editor),\n })\n}\n","import { Path, Editor, NodeEntry } from 'slate'\n\nimport { ElementUtils } from './element'\nimport { ListElement, ListItemElement } from '../types'\n\nexport const EditorUtils = {\n getFirstAncestorList(editor: Editor, path: Path): NodeEntry<ListElement> | null {\n try {\n const parentList = Editor.above(editor, {\n at: path,\n match: (node): node is ListElement => ElementUtils.isList(node),\n })\n return parentList ?? null\n } catch (e) {\n return null\n }\n },\n getFirstAncestorListItem(editor: Editor, path: Path): NodeEntry<ListItemElement> | null {\n try {\n const parentListItem = Editor.above(editor, {\n at: path,\n match: (node): node is ListItemElement => ElementUtils.isListItem(node),\n })\n\n return parentListItem ?? null\n } catch (e) {\n return null\n }\n },\n}\n","export const LIST_ITEM_CHILD_POSITION = 0\nexport const LIST_ITEM_LIST_POSITION = 1\n","import type { Node, NodeEntry } from 'slate'\nimport { Path } from 'slate'\n\nexport function filterForSubtreeRoots(entries: NodeEntry<Node>[]): NodeEntry<Node>[] {\n return entries.filter(\n ([, nodePath]) =>\n !Path.ancestors(nodePath).some(ancestor => {\n return entries.some(([, path]) => Path.equals(path, ancestor))\n }),\n )\n}\n","import { Editor, Element, Transforms, Path, Node, Location, Span } from 'slate'\nimport { EditorUtils } from '../utils/editor'\nimport { LIST_ITEM_CHILD_POSITION, LIST_ITEM_LIST_POSITION } from './constants'\nimport { filterForSubtreeRoots } from './utils/filterForSubtreeRoots'\nimport { ElementUtils } from '../utils/element'\nimport { BlockType } from '../types'\n\nexport function unwrapPath(editor: Editor, listItemPath: Path) {\n const parentList = EditorUtils.getFirstAncestorList(editor, listItemPath)\n const listItemContainingParentList = EditorUtils.getFirstAncestorListItem(editor, listItemPath)\n //if this is a nested item we don't want to unwrap it\n if (!parentList || listItemContainingParentList) return\n\n Editor.withoutNormalizing(editor, () => {\n const listItemTextPath = [...listItemPath, LIST_ITEM_CHILD_POSITION]\n const listItemNestedListPath = [...listItemPath, LIST_ITEM_LIST_POSITION]\n\n if (Node.has(editor, listItemNestedListPath)) {\n Transforms.setNodes(editor, { type: parentList[0].type }, { at: listItemNestedListPath })\n Transforms.liftNodes(editor, { at: listItemNestedListPath })\n Transforms.liftNodes(editor, { at: Path.next(listItemPath) })\n }\n\n if (Node.has(editor, listItemTextPath)) {\n Transforms.setNodes(\n editor,\n { type: BlockType.Paragraph },\n {\n at: listItemTextPath,\n },\n )\n Transforms.liftNodes(editor, { at: listItemTextPath })\n Transforms.liftNodes(editor, { at: listItemPath })\n }\n })\n}\n\ntype UnwrapListOptions = {\n at?: Location | Span\n}\n\nexport function unwrapList(editor: Editor, options?: UnwrapListOptions) {\n const at = options?.at ?? editor.selection\n if (!at) return\n\n const listItems = Array.from(\n Editor.nodes(editor, {\n at,\n match: node => {\n return Element.isElement(node) && ElementUtils.isListItem(node)\n },\n }),\n )\n const subRoots = filterForSubtreeRoots(listItems)\n const refs = subRoots.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n if (ref.current) {\n unwrapPath(editor, ref.current)\n }\n ref.unref()\n })\n}\n","import { Editor, Element, Location, Span, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { BlockType } from '../types'\n\ntype WrapListOptions = {\n type: typeof BlockType.UnorderedList | typeof BlockType.OrderedList\n at?: Location | Span\n}\n\nexport function wrapList(\n editor: Editor,\n options: WrapListOptions = { type: BlockType.UnorderedList },\n) {\n const at = options.at ?? editor.selection\n if (!at) return\n\n const nonListEntries = Array.from(\n Editor.nodes(editor, {\n at,\n match: node => {\n return Element.isElement(node) && ElementUtils.isConvertibleToListTextNode(node)\n },\n }),\n )\n\n const refs = nonListEntries.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n const path = ref.current\n if (path) {\n Editor.withoutNormalizing(editor, () => {\n Transforms.setNodes(\n editor,\n { type: BlockType.ListItemChild },\n {\n at: path,\n },\n )\n Transforms.wrapNodes(editor, ElementUtils.createListItem(), {\n match: node => ElementUtils.isListItemChild(node),\n at: path,\n })\n Transforms.wrapNodes(editor, ElementUtils.createList(options.type), {\n at: path,\n })\n })\n }\n ref.unref()\n })\n}\n","import { Range, Point, Path, Location } from 'slate'\n\nexport const LocationUtils = {\n getStartPath(location: Location): Path {\n if (Range.isRange(location)) return Range.start(location).path\n if (Point.isPoint(location)) return location.path\n return location\n },\n}\n","import type { Element, NodeEntry } from 'slate'\nimport { Editor, Path } from 'slate'\nimport { EditorUtils } from '../../utils/editor'\nimport { ElementUtils } from '../../utils/element'\nimport { LocationUtils } from './location'\n\nexport function getSelectedListItems(editor: Editor): NodeEntry<Element>[] {\n if (!editor.selection) return []\n\n const start = LocationUtils.getStartPath(editor.selection)\n const listItems = Editor.nodes(editor, {\n at: editor.selection,\n match: node => ElementUtils.isListItem(node),\n })\n const firstAncestorPath = EditorUtils.getFirstAncestorListItem(editor, start)?.[1] ?? []\n\n return Array.from(listItems).filter((node): node is NodeEntry<Element> =>\n Path.isDescendant(start, node[1])\n ? Path.equals(node[1], firstAncestorPath)\n : !Path.isAfter(start, node[1]),\n )\n}\n","import { Editor, Node, Path, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { LIST_ITEM_LIST_POSITION } from './constants'\nimport { filterForSubtreeRoots } from './utils/filterForSubtreeRoots'\nimport { getSelectedListItems } from './utils/getSelectedListItems'\n\nexport function indentPath(editor: Editor, path: Path) {\n const parent = Node.parent(editor, path)\n if (!path || !Path.hasPrevious(path) || !ElementUtils.isList(parent)) return\n\n const previosPath = Path.previous(path)\n\n const previousChildListPath = [...previosPath, LIST_ITEM_LIST_POSITION]\n const previousHasChildList = Node.has(editor, previousChildListPath)\n\n Editor.withoutNormalizing(editor, () => {\n if (!previousHasChildList) {\n Transforms.insertNodes(editor, ElementUtils.createList(parent.type), {\n at: previousChildListPath,\n })\n }\n\n const previousChildList = Node.get(editor, previousChildListPath)\n\n if (ElementUtils.isList(previousChildList)) {\n const index = previousHasChildList ? previousChildList.children.length : 0\n Transforms.moveNodes(editor, {\n at: path,\n to: [...previousChildListPath, index],\n })\n }\n })\n}\n\nexport function indent(editor: Editor) {\n if (!editor.selection) return\n\n const listItems = getSelectedListItems(editor)\n const subRoots = filterForSubtreeRoots(listItems)\n const refs = subRoots.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n if (ref.current) {\n indentPath(editor, ref.current)\n }\n ref.unref()\n })\n}\n","import { Editor, Path, Transforms } from 'slate'\nimport { indentPath } from './indent'\nimport { getSelectedListItems } from './utils/getSelectedListItems'\nimport { filterForSubtreeRoots } from './utils/filterForSubtreeRoots'\nimport { EditorUtils } from '../utils/editor'\n\nfunction dedentPath(editor: Editor, listItemPath: Path) {\n const parentList = EditorUtils.getFirstAncestorList(editor, listItemPath)\n const listItemContainingParentList = EditorUtils.getFirstAncestorListItem(editor, listItemPath)\n if (!parentList || !listItemContainingParentList) return\n\n const [parentListNode, parentListPath] = parentList\n const [_, listItemContainingParentListPath] = listItemContainingParentList\n\n const listItemPosition = listItemPath[listItemPath.length - 1]\n const previousSiblings = parentListNode.children.slice(0, listItemPosition)\n const nextSiblings = parentListNode.children.slice(listItemPosition + 1)\n\n Editor.withoutNormalizing(editor, () => {\n // put next siblings into list item\n nextSiblings.forEach(() => {\n const nextSiblingPath = [...parentListPath, listItemPosition + 1]\n indentPath(editor, nextSiblingPath)\n })\n // move list item to parent list\n Transforms.moveNodes(editor, {\n at: listItemPath,\n to: Path.next(listItemContainingParentListPath),\n })\n // delete old parent list if there are no other list items\n if (previousSiblings.length === 0) {\n Transforms.removeNodes(editor, { at: parentListPath })\n }\n })\n}\n\nexport function dedent(editor: Editor) {\n if (!editor.selection) return\n\n const listItems = getSelectedListItems(editor)\n const subRoots = filterForSubtreeRoots(listItems)\n const refs = subRoots.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n if (ref.current) {\n dedentPath(editor, ref.current)\n }\n ref.unref()\n })\n}\n","import { Editor, Location, Node, Path, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { unwrapList } from './unwrapList'\nimport { LocationUtils } from './utils/location'\nimport { wrapList } from './wrapList'\nimport { BlockType } from '../types'\n\ntype ToggleListOptions = {\n type: typeof BlockType.UnorderedList | typeof BlockType.OrderedList\n at?: Location\n}\n\nexport function toggleList(\n editor: Editor,\n options: ToggleListOptions = { type: BlockType.UnorderedList },\n) {\n const at = options.at ?? editor.selection\n if (at == null) return\n const start = LocationUtils.getStartPath(at)\n const ancestorPath = Path.ancestors(start).at(1)\n if (!ancestorPath || !Node.has(editor, ancestorPath)) return\n const ancestor = Node.get(editor, ancestorPath)\n\n if (!ElementUtils.isList(ancestor)) {\n return wrapList(editor, { type: options.type, at })\n }\n\n if (ancestor.type === options.type) {\n unwrapList(editor, { at })\n } else {\n Transforms.setNodes(editor, { type: options.type }, { at: ancestorPath })\n }\n}\n","import type { KeyboardEvent } from 'react'\nimport { Editor, Transforms, Range, Node, PathRef, Text } from 'slate'\nimport { setBlockKeyForDevice } from './setBlockKeyForDevice'\nimport { clearBlockKeyForDevice } from './clearBlockKeyForDevice'\nimport { wrapInline } from './wrapInline'\nimport { unwrapInline } from './unwrapInline'\nimport { getSelection } from '../selectors'\nimport { ElementUtils } from '../utils/element'\nimport { RenderElement, Select, createRichTextV2Plugin } from '../../controls'\nimport { getActiveBlockType } from '../selectors'\nimport { BlockType, RootBlockType } from '../types'\nimport { unwrapList } from './unwrapList'\nimport { wrapList } from './wrapList'\nimport { indent } from './indent'\nimport { dedent } from './dedent'\nimport { toggleList } from './toggleList'\nimport { EditorUtils } from '../utils/editor'\nimport isHotkey from 'is-hotkey'\nimport { LIST_ITEM_CHILD_POSITION } from './constants'\nimport { useStyle } from '../../runtimes/react/use-style'\nimport { cx } from '@emotion/css'\nimport { RenderElementProps } from 'slate-react'\n\nexport const BlockActions = {\n setBlockKeyForDevice,\n clearBlockKeyForDevice,\n wrapInline,\n unwrapInline,\n}\n\n// TODO: This API is still litered with artifacts from the list plugin being seperated out.\n// This plugin needs to be rewritten to be assumptionless.\nexport const ListActions = {\n unwrapList,\n wrapList,\n indent,\n dedent,\n toggleList,\n}\n\nexport function onKeyDown(e: KeyboardEvent, editor: Editor) {\n if (\n !editor.selection ||\n Array.from(Editor.nodes(editor, { match: node => ElementUtils.isListItem(node) })).length === 0\n )\n return\n\n if (isHotkey('shift+tab', e)) {\n e.preventDefault()\n ListActions.dedent(editor)\n }\n\n if (isHotkey('tab', e)) {\n e.preventDefault()\n ListActions.indent(editor)\n }\n\n if (isHotkey('backspace', e)) {\n if (!editor.selection) return\n if (Range.isExpanded(editor.selection)) return\n const listItem = EditorUtils.getFirstAncestorListItem(editor, editor.selection.anchor.path)\n if (editor.selection.anchor.offset === 0 && listItem) {\n e.preventDefault()\n const parentListItem = EditorUtils.getFirstAncestorListItem(editor, listItem[1])\n const list = EditorUtils.getFirstAncestorList(editor, listItem[1])\n\n if (parentListItem) {\n ListActions.dedent(editor)\n } else if (list) {\n ListActions.unwrapList(editor)\n }\n return\n }\n }\n\n if (isHotkey('enter', e)) {\n e.preventDefault()\n\n if (!editor.selection) return\n\n if (Range.isExpanded(editor.selection)) {\n Transforms.delete(editor)\n return\n }\n\n const listItem = EditorUtils.getFirstAncestorListItem(editor, editor.selection.anchor.path)\n if (\n editor.selection.anchor.offset === 0 &&\n listItem &&\n Editor.string(editor, listItem[1]) === ''\n ) {\n const parentListItem = EditorUtils.getFirstAncestorListItem(editor, listItem[1])\n\n if (parentListItem) {\n ListActions.dedent(editor)\n } else {\n ListActions.unwrapList(editor)\n }\n return\n }\n\n Transforms.splitNodes(editor, {\n at: editor.selection,\n always: true,\n match: node => ElementUtils.isListItem(node),\n })\n }\n\n if (isHotkey('shift+enter', e)) {\n e.preventDefault()\n editor.insertText('\\n')\n }\n}\n\nexport function withBlock(editor: Editor) {\n const { normalizeNode } = editor\n\n editor.isInline = entry => {\n return ElementUtils.isInline(entry)\n }\n\n editor.normalizeNode = entry => {\n const [normalizationNode, normalizationPath] = entry\n // Normalization textAlign with empty array of values\n if (ElementUtils.isBlock(normalizationNode) && normalizationNode?.textAlign?.length == 0) {\n Transforms.unsetNodes(editor, 'textAlign', { at: normalizationPath })\n return\n }\n\n // Normalization for converting children of list items to list item children\n // In the case of backspace from position 0 of node into a list this converts the node into a list item.\n if (ElementUtils.isListItem(normalizationNode)) {\n const pathToListItemText = [...normalizationPath, LIST_ITEM_CHILD_POSITION]\n\n if (Node.has(editor, pathToListItemText)) {\n const nodeInListItemTextPosition = Node.get(editor, pathToListItemText)\n if (ElementUtils.isRootBlock(nodeInListItemTextPosition)) {\n Transforms.setNodes(\n editor,\n { type: BlockType.ListItemChild },\n {\n at: pathToListItemText,\n },\n )\n return\n }\n } else {\n Transforms.insertNodes(editor, ElementUtils.createListItem(), {\n at: pathToListItemText,\n })\n return\n }\n }\n\n // Normalization for merging adjacent lists of the same type\n if (!Text.isText(normalizationNode)) {\n const mergeableChildren = Array.from(Node.children(editor, normalizationPath))\n .map((child, index, children) => {\n const potentialNodeToBeMerged = children.at(index + 1)\n if (\n !potentialNodeToBeMerged ||\n !ElementUtils.isList(potentialNodeToBeMerged[0]) ||\n !ElementUtils.isList(child[0]) ||\n potentialNodeToBeMerged[0].type !== child[0].type\n ) {\n return null\n }\n return [\n Editor.pathRef(editor, child[1]),\n Editor.pathRef(editor, potentialNodeToBeMerged[1]),\n ]\n })\n .filter((mergeableNodes): mergeableNodes is PathRef[] => Boolean(mergeableNodes))\n\n if (mergeableChildren.length !== 0) {\n mergeableChildren.reverse().forEach(([nodePathRef, nodeToBeMergedPathRef]) => {\n const nodePath = nodePathRef.current\n const nodeToBeMergedPath = nodeToBeMergedPathRef.current\n if (nodePath == null || nodeToBeMergedPath == null) return\n const nodeChildren = Array.from(Node.children(editor, nodePath))\n const childrenToBeMerged = Array.from(Node.children(editor, nodeToBeMergedPath))\n Editor.withoutNormalizing(editor, () => {\n childrenToBeMerged.reverse().forEach(([_, childPath]) => {\n Transforms.moveNodes(editor, {\n at: childPath,\n to: [...nodePath, nodeChildren.length],\n })\n })\n Transforms.removeNodes(editor, { at: nodeToBeMergedPath })\n })\n nodePathRef.unref()\n nodeToBeMergedPathRef.unref()\n })\n return\n }\n }\n\n normalizeNode(entry)\n }\n\n return editor\n}\n\nconst definition = Select({\n label: 'Block',\n labelOrientation: 'horizontal',\n options: [\n {\n value: BlockType.Paragraph,\n label: 'Paragraph',\n },\n {\n value: BlockType.Heading1,\n label: 'Heading 1',\n },\n {\n value: BlockType.Heading2,\n label: 'Heading 2',\n },\n {\n value: BlockType.Heading3,\n label: 'Heading 3',\n },\n {\n value: BlockType.Heading4,\n label: 'Heading 4',\n },\n {\n value: BlockType.Heading5,\n label: 'Heading 5',\n },\n {\n value: BlockType.Heading6,\n label: 'Heading 6',\n },\n {\n value: BlockType.UnorderedList,\n label: 'Bulleted list',\n },\n {\n value: BlockType.OrderedList,\n label: 'Numbered list',\n },\n {\n value: BlockType.BlockQuote,\n label: 'Quote',\n },\n ],\n defaultValue: BlockType.Paragraph,\n})\n\nexport function BlockPlugin() {\n return createRichTextV2Plugin({\n withPlugin: withBlock,\n onKeyDown: onKeyDown,\n control: {\n definition,\n onChange: (editor, value) => {\n // TODO: This onChange being so complex is an artifact of how the List plugin used to be seperated out from the block plugin.\n // Would be great to refactor and simplify here.\n\n const activeBlockType = getActiveBlockType(editor)\n if (value === BlockType.UnorderedList || value === BlockType.OrderedList) {\n ListActions.toggleList(editor, {\n type: value,\n at: getSelection(editor),\n })\n } else if (activeBlockType === value) {\n Transforms.setNodes(\n editor,\n {\n type: BlockType.Default,\n },\n { at: getSelection(editor) },\n )\n } else {\n ListActions.unwrapList(editor, {\n at: getSelection(editor),\n })\n Transforms.setNodes(\n editor,\n {\n type: value ?? BlockType.Default,\n },\n { at: getSelection(editor) },\n )\n }\n },\n getValue: editor => {\n const activeBlock = getActiveBlockType(editor)\n\n if (activeBlock === RootBlockType.Text || activeBlock === RootBlockType.Default)\n return undefined\n\n return activeBlock\n },\n },\n renderElement: renderElement => props =>\n <BlockPluginComponent {...props} renderElement={renderElement} />,\n })\n}\n\nfunction BlockPluginComponent({\n renderElement,\n ...props\n}: RenderElementProps & { renderElement: RenderElement }) {\n const blockStyles = [useStyle({ margin: 0 }), props.element.className]\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 const unorderedListStyles = useStyle({\n listStylePosition: 'inside',\n paddingInlineStart: '20px',\n listStyleType: 'disc',\n ul: {\n listStyleType: 'circle',\n },\n 'ul ul': {\n listStyleType: 'square',\n },\n })\n\n const orderedListStyles = useStyle({\n listStylePosition: 'inside',\n paddingInlineStart: '20px',\n listStyleType: 'decimal',\n })\n\n switch (props.element.type) {\n case BlockType.Text:\n return (\n <span {...props.attributes} className={cx(...blockStyles)}>\n {renderElement(props)}\n </span>\n )\n case BlockType.Default:\n case BlockType.Paragraph:\n return (\n <p {...props.attributes} className={cx(...blockStyles)}>\n {renderElement(props)}\n </p>\n )\n case BlockType.Heading1:\n return (\n <h1 {...props.attributes} className={cx(...blockStyles)}>\n {renderElement(props)}\n </h1>\n )\n case BlockType.Heading2:\n return (\n <h2 {...props.attributes} className={cx(...blockStyles)}>\n {renderElement(props)}\n </h2>\n )\n case BlockType.Heading3:\n return (\n <h3 {...props.attributes} className={cx(...blockStyles)}>\n {renderElement(props)}\n </h3>\n )\n case BlockType.Heading4:\n return (\n <h4 {...props.attributes} className={cx(...blockStyles)}>\n {renderElement(props)}\n </h4>\n )\n case BlockType.Heading5:\n return (\n <h5 {...props.attributes} className={cx(...blockStyles)}>\n {renderElement(props)}\n </h5>\n )\n case BlockType.Heading6:\n return (\n <h6 {...props.attributes} className={cx(...blockStyles)}>\n {renderElement(props)}\n </h6>\n )\n case BlockType.BlockQuote:\n return (\n <blockquote {...props.attributes} className={cx(...blockStyles, quoteStyles)}>\n {renderElement(props)}\n </blockquote>\n )\n case BlockType.OrderedList:\n return (\n <ol {...props.attributes} className={cx(...blockStyles, orderedListStyles)}>\n {renderElement(props)}\n </ol>\n )\n case BlockType.UnorderedList:\n return (\n <ul {...props.attributes} className={cx(...blockStyles, unorderedListStyles)}>\n {renderElement(props)}\n </ul>\n )\n case BlockType.ListItem:\n return (\n <li {...props.attributes} className={cx(...blockStyles)}>\n {renderElement(props)}\n </li>\n )\n case BlockType.ListItemChild:\n return (\n <span {...props.attributes} className={cx(...blockStyles)}>\n {renderElement(props)}\n </span>\n )\n default:\n return <>{renderElement(props)}</>\n }\n}\n","import { Node, NodeEntry } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { Inline, InlineType, LinkElement } from '../types'\nimport { IconRadioGroupOption, unstable_IconRadioGroupIcon } from '../../controls'\n\nexport type SupportedInlineType = Exclude<InlineType, 'link'>\nexport type SupportedInline = Exclude<Inline, LinkElement>\n\nexport const supportedInlineOptions: IconRadioGroupOption<SupportedInlineType>[] = [\n {\n icon: unstable_IconRadioGroupIcon.Superscript,\n label: 'Superscript',\n value: 'superscript',\n },\n {\n icon: unstable_IconRadioGroupIcon.Subscript,\n label: 'Subscript',\n value: 'subscript',\n },\n {\n icon: unstable_IconRadioGroupIcon.Code,\n label: 'Code',\n value: 'code',\n },\n]\n\nexport function isSupportedInlineType(inline: InlineType): inline is SupportedInlineType {\n return supportedInlineOptions.findIndex(option => option.value === inline) !== -1\n}\n\nexport function isSupportedInlineEntry(\n entry: NodeEntry<Node>,\n): entry is NodeEntry<SupportedInline> {\n const node = entry[0]\n return (\n ElementUtils.isInline(node) &&\n supportedInlineOptions.findIndex(option => option.value === node.type) !== -1\n )\n}\n"],"names":["Element","BlockType","InlineType","Range","Editor","Text","Path","findBreakpointOverride","Transforms","Node","Point","BlockActions","setBlockKeyForDevice","clearBlockKeyForDevice","wrapInline","unwrapInline","ListActions","unwrapList","wrapList","indent","dedent","toggleList","e","editor","selection","Array","from","nodes","match","node","ElementUtils","isListItem","length","isHotkey","preventDefault","isExpanded","listItem","EditorUtils","getFirstAncestorListItem","anchor","path","offset","parentListItem","list","getFirstAncestorList","delete","string","splitNodes","at","always","insertText","normalizeNode","isInline","entry","normalizationNode","normalizationPath","isBlock","textAlign","unsetNodes","pathToListItemText","LIST_ITEM_CHILD_POSITION","has","nodeInListItemTextPosition","get","isRootBlock","setNodes","type","ListItemChild","insertNodes","createListItem","isText","mergeableChildren","children","map","child","index","potentialNodeToBeMerged","isList","pathRef","filter","mergeableNodes","Boolean","reverse","forEach","nodePathRef","nodeToBeMergedPathRef","nodePath","current","nodeToBeMergedPath","nodeChildren","childrenToBeMerged","withoutNormalizing","_","childPath","moveNodes","to","removeNodes","unref","definition","Select","label","labelOrientation","options","value","Paragraph","Heading1","Heading2","Heading3","Heading4","Heading5","Heading6","UnorderedList","OrderedList","BlockQuote","defaultValue","createRichTextV2Plugin","withPlugin","withBlock","onKeyDown","control","onChange","activeBlockType","getActiveBlockType","getSelection","Default","getValue","activeBlock","RootBlockType","undefined","renderElement","props","_jsx","blockStyles","useStyle","margin","element","className","quoteStyles","padding","fontSize","fontWeight","borderLeft","unorderedListStyles","listStylePosition","paddingInlineStart","listStyleType","ul","orderedListStyles","attributes","cx","ListItem","_Fragment","unstable_IconRadioGroupIcon"],"mappings":"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"}