@makeswift/runtime 0.9.11 → 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 (125) 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 +39 -38
  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 +14 -14
  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/components/builtin/Text/ReadOnlyText.d.ts.map +1 -1
  82. package/dist/types/src/controls/list.d.ts +5 -2
  83. package/dist/types/src/controls/list.d.ts.map +1 -1
  84. package/dist/types/src/controls/rich-text/introspection.d.ts +5 -0
  85. package/dist/types/src/controls/rich-text/introspection.d.ts.map +1 -0
  86. package/dist/types/src/controls/rich-text/introspection.test.d.ts +2 -0
  87. package/dist/types/src/controls/rich-text/introspection.test.d.ts.map +1 -0
  88. package/dist/types/src/controls/rich-text-v2/introspection.d.ts +5 -0
  89. package/dist/types/src/controls/rich-text-v2/introspection.d.ts.map +1 -0
  90. package/dist/types/src/controls/rich-text-v2/introspection.test.d.ts +2 -0
  91. package/dist/types/src/controls/rich-text-v2/introspection.test.d.ts.map +1 -0
  92. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts +15 -3
  93. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  94. package/dist/types/src/controls/rich-text-v2/translation.d.ts +1 -1
  95. package/dist/types/src/controls/rich-text-v2/translation.d.ts.map +1 -1
  96. package/dist/types/src/controls/shape.d.ts +5 -2
  97. package/dist/types/src/controls/shape.d.ts.map +1 -1
  98. package/dist/types/src/controls/typography.d.ts +2 -0
  99. package/dist/types/src/controls/typography.d.ts.map +1 -1
  100. package/dist/types/src/prop-controllers/descriptors.d.ts +10 -0
  101. package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
  102. package/dist/types/src/prop-controllers/introspection.d.ts +0 -2
  103. package/dist/types/src/prop-controllers/introspection.d.ts.map +1 -1
  104. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts.map +1 -1
  105. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.d.ts +1 -1
  106. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.d.ts.map +1 -1
  107. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.d.ts +4 -0
  108. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.d.ts.map +1 -0
  109. package/dist/types/src/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts +7 -16
  110. package/dist/types/src/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts.map +1 -1
  111. package/dist/types/src/slate/LinkPlugin/index.d.ts.map +1 -1
  112. package/dist/types/src/slate/LocalChangesPlugin/index.d.ts +16 -0
  113. package/dist/types/src/slate/LocalChangesPlugin/index.d.ts.map +1 -0
  114. package/dist/types/src/slate/TextAlignPlugin/index.d.ts.map +1 -1
  115. package/dist/types/src/slate/index.d.ts +1 -0
  116. package/dist/types/src/slate/index.d.ts.map +1 -1
  117. package/dist/types/src/slate/types.d.ts +2 -2
  118. package/dist/types/src/slate/types.d.ts.map +1 -1
  119. package/dist/types.cjs2.js +67 -48
  120. package/dist/types.cjs2.js.map +1 -1
  121. package/dist/types.es2.js +64 -45
  122. package/dist/types.es2.js.map +1 -1
  123. package/package.json +1 -2
  124. package/dist/typography.cjs.js.map +0 -1
  125. package/dist/typography.es.js.map +0 -1
package/dist/react.cjs.js CHANGED
@@ -15,7 +15,7 @@ require("@emotion/serialize");
15
15
  require("@emotion/utils");
16
16
  require("slate");
17
17
  require("react/jsx-runtime");
18
- require("./typography.cjs.js");
18
+ require("./text-input.cjs.js");
19
19
  require("./combobox.cjs.js");
20
20
  require("use-sync-external-store/shim");
21
21
  require("./types.cjs.js");
package/dist/react.es.js CHANGED
@@ -13,7 +13,7 @@ import "@emotion/serialize";
13
13
  import "@emotion/utils";
14
14
  import "slate";
15
15
  import "react/jsx-runtime";
16
- import "./typography.es.js";
16
+ import "./text-input.es.js";
17
17
  import "./combobox.es.js";
18
18
  import "use-sync-external-store/shim";
19
19
  import "./types.es.js";
package/dist/slate.cjs.js CHANGED
@@ -18,6 +18,18 @@ var __spreadValues = (a, b) => {
18
18
  return a;
19
19
  };
20
20
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ var __objRest = (source, exclude) => {
22
+ var target = {};
23
+ for (var prop in source)
24
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
+ target[prop] = source[prop];
26
+ if (source != null && __getOwnPropSymbols)
27
+ for (var prop of __getOwnPropSymbols(source)) {
28
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
+ target[prop] = source[prop];
30
+ }
31
+ return target;
32
+ };
21
33
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
22
34
  var index = require("./index.cjs5.js");
23
35
  var types = require("./types.cjs2.js");
@@ -25,8 +37,8 @@ var index$1 = require("./index.cjs6.js");
25
37
  var index$2 = require("./index.cjs7.js");
26
38
  var reactPage = require("./react-page.cjs.js");
27
39
  require("./actions.cjs.js");
28
- var typography = require("./typography.cjs.js");
29
40
  var slate = require("slate");
41
+ var textInput = require("./text-input.cjs.js");
30
42
  var next = require("./index.cjs.js");
31
43
  var jsxRuntime = require("react/jsx-runtime");
32
44
  var index$3 = require("./index.cjs3.js");
@@ -34,6 +46,7 @@ var css = require("@emotion/css");
34
46
  require("./state/breakpoints.cjs.js");
35
47
  require("zod");
36
48
  require("is-hotkey");
49
+ require("uuid");
37
50
  require("slate-react");
38
51
  require("redux");
39
52
  require("redux-thunk");
@@ -60,7 +73,6 @@ require("cookie");
60
73
  require("http-proxy");
61
74
  require("set-cookie-parser");
62
75
  require("./constants.cjs.js");
63
- require("uuid");
64
76
  require("corporate-ipsum");
65
77
  require("next/link");
66
78
  function setResponsiveValue(editor, key, value, options) {
@@ -154,22 +166,22 @@ function TextAlignPlugin() {
154
166
  return reactPage.createRichTextV2Plugin({
155
167
  control: {
156
168
  definition: reactPage.unstable_StyleV2({
157
- type: typography.unstable_IconRadioGroup({
169
+ type: textInput.unstable_IconRadioGroup({
158
170
  label: "Alignment",
159
171
  options: [{
160
- icon: typography.unstable_IconRadioGroupIcon.TextAlignLeft,
172
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignLeft,
161
173
  label: "Left Align",
162
174
  value: "left"
163
175
  }, {
164
- icon: typography.unstable_IconRadioGroupIcon.TextAlignCenter,
176
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignCenter,
165
177
  label: "Center Align",
166
178
  value: "center"
167
179
  }, {
168
- icon: typography.unstable_IconRadioGroupIcon.TextAlignRight,
180
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignRight,
169
181
  label: "Right Align",
170
182
  value: "right"
171
183
  }, {
172
- icon: typography.unstable_IconRadioGroupIcon.TextAlignJustify,
184
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignJustify,
173
185
  label: "Justify",
174
186
  value: "justify"
175
187
  }],
@@ -251,7 +263,7 @@ const withInline = (editor) => {
251
263
  function InlinePlugin() {
252
264
  return reactPage.createRichTextV2Plugin({
253
265
  control: {
254
- definition: typography.unstable_IconRadioGroup({
266
+ definition: textInput.unstable_IconRadioGroup({
255
267
  label: "Inline",
256
268
  options: types.supportedInlineOptions
257
269
  }),
@@ -269,32 +281,28 @@ function InlinePlugin() {
269
281
  }
270
282
  });
271
283
  }
272
- function InlinePluginComponent$1({
273
- element,
274
- attributes,
275
- children,
276
- renderElement
277
- }) {
278
- switch (element.type) {
284
+ function InlinePluginComponent$1(_a) {
285
+ var _b = _a, {
286
+ renderElement
287
+ } = _b, props = __objRest(_b, [
288
+ "renderElement"
289
+ ]);
290
+ switch (props.element.type) {
279
291
  case reactPage.InlineType.Code:
280
- return /* @__PURE__ */ jsxRuntime.jsx("code", __spreadProps(__spreadValues({}, attributes), {
281
- children
292
+ return /* @__PURE__ */ jsxRuntime.jsx("code", __spreadProps(__spreadValues({}, props.attributes), {
293
+ children: renderElement(props)
282
294
  }));
283
295
  case reactPage.InlineType.SuperScript:
284
- return /* @__PURE__ */ jsxRuntime.jsx("sup", __spreadProps(__spreadValues({}, attributes), {
285
- children
296
+ return /* @__PURE__ */ jsxRuntime.jsx("sup", __spreadProps(__spreadValues({}, props.attributes), {
297
+ children: renderElement(props)
286
298
  }));
287
299
  case reactPage.InlineType.SubScript:
288
- return /* @__PURE__ */ jsxRuntime.jsx("sub", __spreadProps(__spreadValues({}, attributes), {
289
- children
300
+ return /* @__PURE__ */ jsxRuntime.jsx("sub", __spreadProps(__spreadValues({}, props.attributes), {
301
+ children: renderElement(props)
290
302
  }));
291
303
  default:
292
304
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
293
- children: renderElement({
294
- element,
295
- attributes,
296
- children
297
- })
305
+ children: renderElement(props)
298
306
  });
299
307
  }
300
308
  }
@@ -358,7 +366,11 @@ function InlinePluginComponent({
358
366
  return /* @__PURE__ */ jsxRuntime.jsx(index$3.Link, __spreadProps(__spreadValues({}, attributes), {
359
367
  link: (_a = element.link) != null ? _a : void 0,
360
368
  className: css.cx(linkStyle, element.className),
361
- children
369
+ children: renderElement({
370
+ element,
371
+ attributes,
372
+ children
373
+ })
362
374
  }));
363
375
  default:
364
376
  return renderElement({
@@ -399,6 +411,7 @@ exports.onKeyDown = types.onKeyDown;
399
411
  exports.withBlock = types.withBlock;
400
412
  exports.InlineModePlugin = index$1.InlineModePlugin;
401
413
  exports.withInlineMode = index$1.withInlineMode;
414
+ exports.withLocalChanges = index$1.withLocalChanges;
402
415
  exports.withBuilder = index$2.withBuilder;
403
416
  exports.BlockTextAlignment = reactPage.BlockTextAlignment;
404
417
  exports.BlockType = reactPage.BlockType;
@@ -1 +1 @@
1
- {"version":3,"file":"slate.cjs.js","sources":["../src/slate/utils/responsive.ts","../src/slate/TextAlignPlugin/getValue.ts","../src/slate/TextAlignPlugin/index.tsx","../src/slate/InlinePlugin/getValue.ts","../src/slate/InlinePlugin/onChange.ts","../src/slate/InlinePlugin/index.tsx","../src/slate/LinkPlugin/types.ts","../src/slate/LinkPlugin/getValue.ts","../src/slate/LinkPlugin/onChange.ts","../src/slate/LinkPlugin/index.tsx"],"sourcesContent":["import { Editor, Transforms, NodeMatch, Descendant, NodeEntry } from 'slate'\nimport { getSelection } from '../selectors'\nimport { ResponsiveValue } from '../../prop-controllers'\nimport shallowEqual from '../../utils/shallowEqual'\nimport { BlockTextAlignment } from '../types'\n\ntype SetResponsiveValueOptions<T extends Descendant> = {\n match: NodeMatch<T>\n split: boolean\n}\n\nexport function setResponsiveValue<T extends Descendant, K extends keyof T>(\n editor: Editor,\n key: K,\n value: T[K] | undefined | null,\n options: SetResponsiveValueOptions<T>,\n) {\n Editor.withoutNormalizing(editor, () => {\n const at = getSelection(editor)\n if (!at) return\n const atRef = Editor.rangeRef(editor, at)\n\n if (atRef.current) {\n Transforms.setNodes<Descendant>(\n editor,\n {\n slice: true,\n },\n {\n at: atRef.current,\n match: options.match,\n split: options.split,\n },\n )\n }\n\n if (atRef.current) {\n const nodesToUpdate = Array.from(\n Editor.nodes(editor, {\n at: atRef.current,\n match: (node, path) => options.match(node, path) && (node as T).slice === true,\n }),\n )\n\n for (const [, path] of nodesToUpdate) {\n Transforms.setNodes(\n editor,\n {\n [key]: value,\n },\n { at: path },\n )\n }\n }\n\n atRef.unref()\n })\n}\n\ntype NormalizeResponsiveValueOptions<T extends Descendant> = {\n match: NodeMatch<T>\n}\n\nexport function normalizeResponsiveValue<T extends Descendant, K extends keyof T & string>(\n editor: Editor,\n key: K,\n options: NormalizeResponsiveValueOptions<T>,\n) {\n return (entry: NodeEntry<T>) => {\n const [node, path] = entry\n\n if (!options.match(node, path)) {\n return false\n }\n\n const responsiveValue = node?.[key]\n\n if (Array.isArray(responsiveValue) && responsiveValue.length === 0) {\n Transforms.unsetNodes(editor, key, { at: path })\n return true\n }\n\n if (node?.slice != null) {\n Transforms.unsetNodes(editor, 'slice', { at: path })\n return true\n }\n\n return false\n }\n}\n\nexport function responsiveShallowEqual<T>(\n a: ResponsiveValue<T> = [],\n b: ResponsiveValue<T> = [],\n): ResponsiveValue<T> {\n const aObject: Record<string, BlockTextAlignment> = a.reduce(\n (acc, curr) => ({\n ...acc,\n [curr.deviceId]: curr.value,\n }),\n {},\n )\n const bObject: Record<string, BlockTextAlignment> = b.reduce(\n (acc, curr) => ({\n ...acc,\n [curr.deviceId]: curr.value,\n }),\n {},\n )\n\n const definedDevices = new Set([...a.map(a => a.deviceId), ...b.map(b => b.deviceId)])\n\n return Array.from(definedDevices).map(deviceId => {\n const aVal = aObject[deviceId]\n const bVal = bObject[deviceId]\n\n if (aVal === undefined && bVal === undefined) return { deviceId, value: undefined }\n\n return shallowEqual(aVal, bVal) ? { deviceId, value: aVal } : { deviceId, value: null }\n }) as ResponsiveValue<T>\n}\n","import { Editor } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { ResponsiveBlockTextAlignment } from '../types'\nimport { getSelection } from '../selectors'\nimport { responsiveShallowEqual } from '../utils/responsive'\n\nexport function getValue(editor: Editor): ResponsiveBlockTextAlignment | undefined {\n const matchingValues = Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: ElementUtils.isRootBlock,\n }),\n ).map(([node]) => node['textAlign']) as (ResponsiveBlockTextAlignment | undefined)[]\n\n return matchingValues.length === 0\n ? undefined\n : matchingValues.reduce((a, b) => {\n return responsiveShallowEqual(a, b)\n })\n}\n","import { Editor, Element, NodeEntry } from 'slate'\nimport {\n createRichTextV2Plugin,\n unstable_IconRadioGroup,\n unstable_IconRadioGroupIcon,\n unstable_StyleV2,\n} from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { TextAlignProperty } from 'csstype'\nimport { normalizeResponsiveValue, setResponsiveValue } from '../utils/responsive'\nimport { getValue } from './getValue'\nimport { RootBlock } from '../types'\n\nconst TEXT_ALIGN_KEY = 'textAlign'\n\nexport const withTextAlign = (editor: Editor) => {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n if (\n normalizeResponsiveValue(editor, TEXT_ALIGN_KEY, { match: ElementUtils.isRootBlock })(\n entry as NodeEntry<RootBlock>,\n )\n ) {\n return\n }\n normalizeNode(entry)\n }\n\n return editor\n}\n\nexport function TextAlignPlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: unstable_StyleV2({\n type: unstable_IconRadioGroup({\n label: 'Alignment',\n options: [\n {\n icon: unstable_IconRadioGroupIcon.TextAlignLeft,\n label: 'Left Align',\n value: 'left',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignCenter,\n label: 'Center Align',\n value: 'center',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignRight,\n label: 'Right Align',\n value: 'right',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignJustify,\n label: 'Justify',\n value: 'justify',\n },\n ],\n defaultValue: 'left',\n }),\n getStyle(textAlign: TextAlignProperty) {\n return { textAlign }\n },\n }),\n onChange: (editor, value) =>\n setResponsiveValue(editor, TEXT_ALIGN_KEY, value, {\n match: ElementUtils.isRootBlock,\n split: false,\n }),\n getValue: editor => getValue(editor),\n getElementValue: (element: Element) => {\n return ElementUtils.isRootBlock(element) ? element.textAlign : undefined\n },\n },\n withPlugin: withTextAlign,\n renderElement: (renderElement, className) => props => {\n return renderElement({\n ...props,\n element: {\n ...props.element,\n className,\n },\n })\n },\n })\n}\n","import { Editor, NodeEntry, Text } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { SupportedInline, isSupportedInlineType, isSupportedInlineEntry } from './types'\n\nexport function getSupportedInlinesAndTextInSelection(\n editor: Editor,\n): NodeEntry<SupportedInline | Text>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node =>\n (ElementUtils.isInline(node) && isSupportedInlineType(node.type)) || Text.isText(node),\n }),\n ) as NodeEntry<Text | SupportedInline>[]\n}\n\nexport const getValue = (editor: Editor) => {\n const roots = filterForSubtreeRoots(getSupportedInlinesAndTextInSelection(editor))\n\n const areAllRootsSupportedInlineTypesOrText = roots.every(\n entry => isSupportedInlineEntry(entry) || Text.isText(entry[0]),\n )\n\n if (!areAllRootsSupportedInlineTypesOrText) return undefined\n\n const matchingValues = roots.filter(isSupportedInlineEntry).map(([node]) => node) as (\n | SupportedInline\n | null\n | undefined\n )[]\n\n const match = matchingValues.reduce(\n (a, b) => (a?.type === b?.type ? b : null),\n matchingValues.at(0) ?? undefined,\n )\n\n return match == null ? match : match.type\n}\n","import { getSupportedInlinesAndTextInSelection } from './getValue'\nimport { Editor, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { unwrapInline } from '../BlockPlugin/unwrapInline'\nimport { wrapInline } from '../BlockPlugin/wrapInline'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport {\n SupportedInlineType,\n isSupportedInlineEntry,\n isSupportedInlineType,\n supportedInlineOptions,\n} from './types'\n\nexport const onChange = (editor: Editor, value: SupportedInlineType) => {\n function unwrapAllSupportedTypes() {\n supportedInlineOptions.forEach(({ value: optionValue }) => unwrapInline(editor, optionValue))\n }\n\n function unwrapAllInlines() {\n Transforms.unwrapNodes(editor, {\n match: node => ElementUtils.isInline(node),\n at: getSelection(editor),\n })\n }\n\n if (value == null) return unwrapAllSupportedTypes()\n\n if (!isSupportedInlineType(value)) return\n\n const roots = filterForSubtreeRoots(getSupportedInlinesAndTextInSelection(editor))\n const root = roots.at(0)\n\n if (\n roots.length === 1 &&\n root != null &&\n isSupportedInlineEntry(root) &&\n root[0].type === value\n ) {\n unwrapInline(editor, value)\n } else {\n unwrapAllInlines()\n wrapInline(editor, { type: value, children: [] })\n }\n}\n","import { Editor, Element } from 'slate'\nimport { RenderElement, createRichTextV2Plugin, unstable_IconRadioGroup } from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType } from '../types'\nimport { RenderElementProps } from 'slate-react'\nimport { supportedInlineOptions } from './types'\nimport { onChange } from './onChange'\nimport { getValue } from './getValue'\n\nexport const withInline = (editor: Editor) => {\n const { isInline } = editor\n\n editor.isInline = entry => {\n return ElementUtils.isInline(entry) && isInline(entry)\n }\n\n return editor\n}\n\nexport function InlinePlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: unstable_IconRadioGroup({\n label: 'Inline',\n options: supportedInlineOptions,\n }),\n onChange,\n getValue,\n getElementValue: (element: Element) => {\n return ElementUtils.isInline(element) ? element.type : undefined\n },\n },\n withPlugin: withInline,\n renderElement: renderElement => props => {\n return <InlinePluginComponent {...props} renderElement={renderElement} />\n },\n })\n}\n\nfunction InlinePluginComponent({\n element,\n attributes,\n children,\n renderElement,\n}: RenderElementProps & { renderElement: RenderElement }) {\n switch (element.type) {\n case InlineType.Code:\n return <code {...attributes}>{children}</code>\n case InlineType.SuperScript:\n return <sup {...attributes}>{children}</sup>\n case InlineType.SubScript:\n return <sub {...attributes}>{children}</sub>\n\n default:\n return (\n <>\n {renderElement({\n element,\n attributes,\n children,\n })}\n </>\n )\n }\n}\n","import { Node, NodeEntry } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType, LinkElement } from '../types'\n\nexport function isLinkElement(node: Node): node is LinkElement {\n return ElementUtils.isInline(node) && node.type === InlineType.Link\n}\n\nexport function isLinkEntry(inline: NodeEntry<Node>): inline is NodeEntry<LinkElement> {\n return ElementUtils.isInline(inline[0]) && inline[0].type === InlineType.Link\n}\n","import { Editor, NodeEntry, Text } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { LinkElement } from '../types'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { isLinkElement } from './types'\nimport deepEqual from '../../utils/deepEqual'\n\nexport function getLinksAndTextInSelection(editor: Editor): NodeEntry<LinkElement | Text>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => (ElementUtils.isInline(node) && isLinkElement(node)) || Text.isText(node),\n }),\n ) as NodeEntry<Text | LinkElement>[]\n}\n\nexport const getValue = (editor: Editor) => {\n const roots = filterForSubtreeRoots(getLinksAndTextInSelection(editor))\n\n const areAllRootsLinks = roots.every(([root]) => isLinkElement(root) || Text.isText(root))\n\n if (!areAllRootsLinks) return undefined\n\n const matchingValues = roots.map(([node]) => node).filter(isLinkElement) as (\n | LinkElement\n | null\n | undefined\n )[]\n\n const match = matchingValues.reduce(\n (a, b) => (deepEqual(a?.link, b?.link) ? b : null),\n matchingValues.at(0) ?? undefined,\n )\n\n return match == null ? match : match.link\n}\n","import { Editor, Transforms } from 'slate'\nimport { LinkControlData } from '../../controls'\nimport { unwrapInline } from '../BlockPlugin/unwrapInline'\nimport { wrapInline } from '../BlockPlugin/wrapInline'\nimport { InlineType } from '../types'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { isLinkEntry } from './types'\nimport { getLinksAndTextInSelection } from './getValue'\n\nexport const onChange = (editor: Editor, value: LinkControlData) => {\n if (value == null) return unwrapInline(editor, InlineType.Link)\n\n const roots = filterForSubtreeRoots(getLinksAndTextInSelection(editor))\n const root = roots.at(0)\n\n // If the root of our selection is a link we just want to modify it\n if (roots.length === 1 && root != null && isLinkEntry(root)) {\n Transforms.setNodes(\n editor,\n {\n link: value,\n },\n { at: root[1] },\n )\n }\n // In all other cases we want to remove all existing links and wrap the current selection in a new link\n else {\n unwrapInline(editor, InlineType.Link)\n wrapInline(editor, { type: InlineType.Link, link: value, children: [] })\n }\n}\n","import { Editor, Element } from 'slate'\nimport { Link, RenderElement, createRichTextV2Plugin } from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType } from '../types'\nimport { RenderElementProps } from 'slate-react'\nimport { useStyle } from '../../runtimes/react/use-style'\nimport { Link as LinkComponent } from '../../components/shared/Link'\nimport { cx } from '@emotion/css'\nimport { isLinkElement } from './types'\nimport { onChange } from './onChange'\nimport { getValue } from './getValue'\n\nexport const withLink = (editor: Editor) => {\n const { isInline } = editor\n\n editor.isInline = entry => {\n return ElementUtils.isInline(entry) && isInline(entry)\n }\n\n return editor\n}\n\nfunction InlinePluginComponent({\n element,\n attributes,\n children,\n renderElement,\n}: RenderElementProps & { renderElement: RenderElement }) {\n const linkStyle = useStyle({ textDecoration: 'none' })\n switch (element.type) {\n case InlineType.Link:\n return (\n <LinkComponent\n {...attributes}\n link={element.link ?? undefined}\n className={cx(linkStyle, element.className)}\n >\n {children}\n </LinkComponent>\n )\n\n default:\n return renderElement({\n element,\n attributes,\n children,\n })\n }\n}\n\nexport function LinkPlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: Link({\n label: 'On Click',\n }),\n onChange,\n getValue,\n getElementValue: (element: Element) => {\n return ElementUtils.isInline(element) && isLinkElement(element) ? element.link : undefined\n },\n },\n withPlugin: withLink,\n renderElement: renderElement => props => {\n return <InlinePluginComponent {...props} renderElement={renderElement} />\n },\n })\n}\n"],"names":["Editor","getSelection","Transforms","shallowEqual","ElementUtils","TEXT_ALIGN_KEY","withTextAlign","editor","normalizeNode","entry","normalizeResponsiveValue","match","isRootBlock","createRichTextV2Plugin","control","definition","unstable_StyleV2","type","unstable_IconRadioGroup","label","options","icon","unstable_IconRadioGroupIcon","TextAlignLeft","value","TextAlignCenter","TextAlignRight","TextAlignJustify","defaultValue","getStyle","textAlign","onChange","setResponsiveValue","split","getValue","getElementValue","element","undefined","withPlugin","renderElement","className","props","isSupportedInlineType","Text","filterForSubtreeRoots","isSupportedInlineEntry","supportedInlineOptions","unwrapInline","wrapInline","withInline","isInline","InlinePluginComponent","attributes","children","InlineType","Code","SuperScript","SubScript","_Fragment","deepEqual","withLink","linkStyle","useStyle","textDecoration","Link","LinkComponent","link","cx","isLinkElement"],"mappings":"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"}
1
+ {"version":3,"file":"slate.cjs.js","sources":["../src/slate/utils/responsive.ts","../src/slate/TextAlignPlugin/getValue.ts","../src/slate/TextAlignPlugin/index.tsx","../src/slate/InlinePlugin/getValue.ts","../src/slate/InlinePlugin/onChange.ts","../src/slate/InlinePlugin/index.tsx","../src/slate/LinkPlugin/types.ts","../src/slate/LinkPlugin/getValue.ts","../src/slate/LinkPlugin/onChange.ts","../src/slate/LinkPlugin/index.tsx"],"sourcesContent":["import { Editor, Transforms, NodeMatch, Descendant, NodeEntry } from 'slate'\nimport { getSelection } from '../selectors'\nimport { ResponsiveValue } from '../../prop-controllers'\nimport shallowEqual from '../../utils/shallowEqual'\nimport { BlockTextAlignment } from '../types'\n\ntype SetResponsiveValueOptions<T extends Descendant> = {\n match: NodeMatch<T>\n split: boolean\n}\n\nexport function setResponsiveValue<T extends Descendant, K extends keyof T>(\n editor: Editor,\n key: K,\n value: T[K] | undefined | null,\n options: SetResponsiveValueOptions<T>,\n) {\n Editor.withoutNormalizing(editor, () => {\n const at = getSelection(editor)\n if (!at) return\n const atRef = Editor.rangeRef(editor, at)\n\n if (atRef.current) {\n Transforms.setNodes<Descendant>(\n editor,\n {\n slice: true,\n },\n {\n at: atRef.current,\n match: options.match,\n split: options.split,\n },\n )\n }\n\n if (atRef.current) {\n const nodesToUpdate = Array.from(\n Editor.nodes(editor, {\n at: atRef.current,\n match: (node, path) => options.match(node, path) && (node as T).slice === true,\n }),\n )\n\n for (const [, path] of nodesToUpdate) {\n Transforms.setNodes(\n editor,\n {\n [key]: value,\n },\n { at: path },\n )\n }\n }\n\n atRef.unref()\n })\n}\n\ntype NormalizeResponsiveValueOptions<T extends Descendant> = {\n match: NodeMatch<T>\n}\n\nexport function normalizeResponsiveValue<T extends Descendant, K extends keyof T & string>(\n editor: Editor,\n key: K,\n options: NormalizeResponsiveValueOptions<T>,\n) {\n return (entry: NodeEntry<T>) => {\n const [node, path] = entry\n\n if (!options.match(node, path)) {\n return false\n }\n\n const responsiveValue = node?.[key]\n\n if (Array.isArray(responsiveValue) && responsiveValue.length === 0) {\n Transforms.unsetNodes(editor, key, { at: path })\n return true\n }\n\n if (node?.slice != null) {\n Transforms.unsetNodes(editor, 'slice', { at: path })\n return true\n }\n\n return false\n }\n}\n\nexport function responsiveShallowEqual<T>(\n a: ResponsiveValue<T> = [],\n b: ResponsiveValue<T> = [],\n): ResponsiveValue<T> {\n const aObject: Record<string, BlockTextAlignment> = a.reduce(\n (acc, curr) => ({\n ...acc,\n [curr.deviceId]: curr.value,\n }),\n {},\n )\n const bObject: Record<string, BlockTextAlignment> = b.reduce(\n (acc, curr) => ({\n ...acc,\n [curr.deviceId]: curr.value,\n }),\n {},\n )\n\n const definedDevices = new Set([...a.map(a => a.deviceId), ...b.map(b => b.deviceId)])\n\n return Array.from(definedDevices).map(deviceId => {\n const aVal = aObject[deviceId]\n const bVal = bObject[deviceId]\n\n if (aVal === undefined && bVal === undefined) return { deviceId, value: undefined }\n\n return shallowEqual(aVal, bVal) ? { deviceId, value: aVal } : { deviceId, value: null }\n }) as ResponsiveValue<T>\n}\n","import { Editor } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { ResponsiveBlockTextAlignment } from '../types'\nimport { getSelection } from '../selectors'\nimport { responsiveShallowEqual } from '../utils/responsive'\n\nexport function getValue(editor: Editor): ResponsiveBlockTextAlignment | undefined {\n const matchingValues = Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: ElementUtils.isRootBlock,\n }),\n ).map(([node]) => node['textAlign']) as (ResponsiveBlockTextAlignment | undefined)[]\n\n return matchingValues.length === 0\n ? undefined\n : matchingValues.reduce((a, b) => {\n return responsiveShallowEqual(a, b)\n })\n}\n","import { Editor, Element, NodeEntry } from 'slate'\nimport {\n createRichTextV2Plugin,\n unstable_IconRadioGroup,\n unstable_IconRadioGroupIcon,\n unstable_StyleV2,\n} from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { normalizeResponsiveValue, setResponsiveValue } from '../utils/responsive'\nimport { getValue } from './getValue'\nimport { RootBlock } from '../types'\n\nconst TEXT_ALIGN_KEY = 'textAlign'\n\nexport const withTextAlign = (editor: Editor) => {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n if (\n normalizeResponsiveValue(editor, TEXT_ALIGN_KEY, { match: ElementUtils.isRootBlock })(\n entry as NodeEntry<RootBlock>,\n )\n ) {\n return\n }\n normalizeNode(entry)\n }\n\n return editor\n}\n\nexport function TextAlignPlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: unstable_StyleV2({\n type: unstable_IconRadioGroup({\n label: 'Alignment',\n options: [\n {\n icon: unstable_IconRadioGroupIcon.TextAlignLeft,\n label: 'Left Align',\n value: 'left',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignCenter,\n label: 'Center Align',\n value: 'center',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignRight,\n label: 'Right Align',\n value: 'right',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignJustify,\n label: 'Justify',\n value: 'justify',\n },\n ],\n defaultValue: 'left',\n }),\n getStyle(textAlign: 'left' | 'center' | 'right' | 'justify' | undefined) {\n return { textAlign }\n },\n }),\n onChange: (editor, value) =>\n setResponsiveValue(editor, TEXT_ALIGN_KEY, value, {\n match: ElementUtils.isRootBlock,\n split: false,\n }),\n getValue: editor => getValue(editor),\n getElementValue: (element: Element) => {\n return ElementUtils.isRootBlock(element) ? element.textAlign : undefined\n },\n },\n withPlugin: withTextAlign,\n renderElement: (renderElement, className) => props => {\n return renderElement({\n ...props,\n element: {\n ...props.element,\n className,\n },\n })\n },\n })\n}\n","import { Editor, NodeEntry, Text } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { SupportedInline, isSupportedInlineType, isSupportedInlineEntry } from './types'\n\nexport function getSupportedInlinesAndTextInSelection(\n editor: Editor,\n): NodeEntry<SupportedInline | Text>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node =>\n (ElementUtils.isInline(node) && isSupportedInlineType(node.type)) || Text.isText(node),\n }),\n ) as NodeEntry<Text | SupportedInline>[]\n}\n\nexport const getValue = (editor: Editor) => {\n const roots = filterForSubtreeRoots(getSupportedInlinesAndTextInSelection(editor))\n\n const areAllRootsSupportedInlineTypesOrText = roots.every(\n entry => isSupportedInlineEntry(entry) || Text.isText(entry[0]),\n )\n\n if (!areAllRootsSupportedInlineTypesOrText) return undefined\n\n const matchingValues = roots.filter(isSupportedInlineEntry).map(([node]) => node) as (\n | SupportedInline\n | null\n | undefined\n )[]\n\n const match = matchingValues.reduce(\n (a, b) => (a?.type === b?.type ? b : null),\n matchingValues.at(0) ?? undefined,\n )\n\n return match == null ? match : match.type\n}\n","import { getSupportedInlinesAndTextInSelection } from './getValue'\nimport { Editor, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { unwrapInline } from '../BlockPlugin/unwrapInline'\nimport { wrapInline } from '../BlockPlugin/wrapInline'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport {\n SupportedInlineType,\n isSupportedInlineEntry,\n isSupportedInlineType,\n supportedInlineOptions,\n} from './types'\n\nexport const onChange = (editor: Editor, value: SupportedInlineType) => {\n function unwrapAllSupportedTypes() {\n supportedInlineOptions.forEach(({ value: optionValue }) => unwrapInline(editor, optionValue))\n }\n\n function unwrapAllInlines() {\n Transforms.unwrapNodes(editor, {\n match: node => ElementUtils.isInline(node),\n at: getSelection(editor),\n })\n }\n\n if (value == null) return unwrapAllSupportedTypes()\n\n if (!isSupportedInlineType(value)) return\n\n const roots = filterForSubtreeRoots(getSupportedInlinesAndTextInSelection(editor))\n const root = roots.at(0)\n\n if (\n roots.length === 1 &&\n root != null &&\n isSupportedInlineEntry(root) &&\n root[0].type === value\n ) {\n unwrapInline(editor, value)\n } else {\n unwrapAllInlines()\n wrapInline(editor, { type: value, children: [] })\n }\n}\n","import { Editor, Element } from 'slate'\nimport { RenderElement, createRichTextV2Plugin, unstable_IconRadioGroup } from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType } from '../types'\nimport { RenderElementProps } from 'slate-react'\nimport { supportedInlineOptions } from './types'\nimport { onChange } from './onChange'\nimport { getValue } from './getValue'\n\nexport const withInline = (editor: Editor) => {\n const { isInline } = editor\n\n editor.isInline = entry => {\n return ElementUtils.isInline(entry) && isInline(entry)\n }\n\n return editor\n}\n\nexport function InlinePlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: unstable_IconRadioGroup({\n label: 'Inline',\n options: supportedInlineOptions,\n }),\n onChange,\n getValue,\n getElementValue: (element: Element) => {\n return ElementUtils.isInline(element) ? element.type : undefined\n },\n },\n withPlugin: withInline,\n renderElement: renderElement => props => {\n return <InlinePluginComponent {...props} renderElement={renderElement} />\n },\n })\n}\n\nfunction InlinePluginComponent({\n renderElement,\n ...props\n}: RenderElementProps & { renderElement: RenderElement }) {\n switch (props.element.type) {\n case InlineType.Code:\n return <code {...props.attributes}>{renderElement(props)}</code>\n case InlineType.SuperScript:\n return <sup {...props.attributes}>{renderElement(props)}</sup>\n case InlineType.SubScript:\n return <sub {...props.attributes}>{renderElement(props)}</sub>\n\n default:\n return <>{renderElement(props)}</>\n }\n}\n","import { Node, NodeEntry } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType, LinkElement } from '../types'\n\nexport function isLinkElement(node: Node): node is LinkElement {\n return ElementUtils.isInline(node) && node.type === InlineType.Link\n}\n\nexport function isLinkEntry(inline: NodeEntry<Node>): inline is NodeEntry<LinkElement> {\n return ElementUtils.isInline(inline[0]) && inline[0].type === InlineType.Link\n}\n","import { Editor, NodeEntry, Text } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { LinkElement } from '../types'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { isLinkElement } from './types'\nimport deepEqual from '../../utils/deepEqual'\n\nexport function getLinksAndTextInSelection(editor: Editor): NodeEntry<LinkElement | Text>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => (ElementUtils.isInline(node) && isLinkElement(node)) || Text.isText(node),\n }),\n ) as NodeEntry<Text | LinkElement>[]\n}\n\nexport const getValue = (editor: Editor) => {\n const roots = filterForSubtreeRoots(getLinksAndTextInSelection(editor))\n\n const areAllRootsLinks = roots.every(([root]) => isLinkElement(root) || Text.isText(root))\n\n if (!areAllRootsLinks) return undefined\n\n const matchingValues = roots.map(([node]) => node).filter(isLinkElement) as (\n | LinkElement\n | null\n | undefined\n )[]\n\n const match = matchingValues.reduce(\n (a, b) => (deepEqual(a?.link, b?.link) ? b : null),\n matchingValues.at(0) ?? undefined,\n )\n\n return match == null ? match : match.link\n}\n","import { Editor, Transforms } from 'slate'\nimport { LinkControlData } from '../../controls'\nimport { unwrapInline } from '../BlockPlugin/unwrapInline'\nimport { wrapInline } from '../BlockPlugin/wrapInline'\nimport { InlineType } from '../types'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { isLinkEntry } from './types'\nimport { getLinksAndTextInSelection } from './getValue'\n\nexport const onChange = (editor: Editor, value: LinkControlData) => {\n if (value == null) return unwrapInline(editor, InlineType.Link)\n\n const roots = filterForSubtreeRoots(getLinksAndTextInSelection(editor))\n const root = roots.at(0)\n\n // If the root of our selection is a link we just want to modify it\n if (roots.length === 1 && root != null && isLinkEntry(root)) {\n Transforms.setNodes(\n editor,\n {\n link: value,\n },\n { at: root[1] },\n )\n }\n // In all other cases we want to remove all existing links and wrap the current selection in a new link\n else {\n unwrapInline(editor, InlineType.Link)\n wrapInline(editor, { type: InlineType.Link, link: value, children: [] })\n }\n}\n","import { Editor, Element } from 'slate'\nimport { Link, RenderElement, createRichTextV2Plugin } from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType } from '../types'\nimport { RenderElementProps } from 'slate-react'\nimport { useStyle } from '../../runtimes/react/use-style'\nimport { Link as LinkComponent } from '../../components/shared/Link'\nimport { cx } from '@emotion/css'\nimport { isLinkElement } from './types'\nimport { onChange } from './onChange'\nimport { getValue } from './getValue'\n\nexport const withLink = (editor: Editor) => {\n const { isInline } = editor\n\n editor.isInline = entry => {\n return ElementUtils.isInline(entry) && isInline(entry)\n }\n\n return editor\n}\n\nfunction InlinePluginComponent({\n element,\n attributes,\n children,\n renderElement,\n}: RenderElementProps & { renderElement: RenderElement }) {\n const linkStyle = useStyle({ textDecoration: 'none' })\n switch (element.type) {\n case InlineType.Link:\n return (\n <LinkComponent\n {...attributes}\n link={element.link ?? undefined}\n className={cx(linkStyle, element.className)}\n >\n {renderElement({\n element,\n attributes,\n children,\n })}\n </LinkComponent>\n )\n\n default:\n return renderElement({\n element,\n attributes,\n children,\n })\n }\n}\n\nexport function LinkPlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: Link({\n label: 'On Click',\n }),\n onChange,\n getValue,\n getElementValue: (element: Element) => {\n return ElementUtils.isInline(element) && isLinkElement(element) ? element.link : undefined\n },\n },\n withPlugin: withLink,\n renderElement: renderElement => props => {\n return <InlinePluginComponent {...props} renderElement={renderElement} />\n },\n })\n}\n"],"names":["Editor","getSelection","Transforms","shallowEqual","ElementUtils","TEXT_ALIGN_KEY","withTextAlign","editor","normalizeNode","entry","normalizeResponsiveValue","match","isRootBlock","createRichTextV2Plugin","control","definition","unstable_StyleV2","type","unstable_IconRadioGroup","label","options","icon","unstable_IconRadioGroupIcon","TextAlignLeft","value","TextAlignCenter","TextAlignRight","TextAlignJustify","defaultValue","getStyle","textAlign","onChange","setResponsiveValue","split","getValue","getElementValue","element","undefined","withPlugin","renderElement","className","props","isSupportedInlineType","Text","filterForSubtreeRoots","isSupportedInlineEntry","supportedInlineOptions","unwrapInline","wrapInline","withInline","isInline","InlinePluginComponent","InlineType","Code","attributes","SuperScript","SubScript","_Fragment","deepEqual","withLink","children","linkStyle","useStyle","textDecoration","Link","LinkComponent","link","cx","isLinkElement"],"mappings":"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"}
package/dist/slate.es.js CHANGED
@@ -5,35 +5,48 @@ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
6
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
7
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a2, b3) => {
8
+ var __spreadValues = (a3, b3) => {
9
9
  for (var prop in b3 || (b3 = {}))
10
10
  if (__hasOwnProp.call(b3, prop))
11
- __defNormalProp(a2, prop, b3[prop]);
11
+ __defNormalProp(a3, prop, b3[prop]);
12
12
  if (__getOwnPropSymbols)
13
13
  for (var prop of __getOwnPropSymbols(b3)) {
14
14
  if (__propIsEnum.call(b3, prop))
15
- __defNormalProp(a2, prop, b3[prop]);
15
+ __defNormalProp(a3, prop, b3[prop]);
16
16
  }
17
- return a2;
17
+ return a3;
18
+ };
19
+ var __spreadProps = (a3, b3) => __defProps(a3, __getOwnPropDescs(b3));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
18
31
  };
19
- var __spreadProps = (a2, b3) => __defProps(a2, __getOwnPropDescs(b3));
20
32
  export { a as TYPOGRAPHY_KEY, T as TypographyActions, b as TypographyPlugin, w as withTypography } from "./index.es5.js";
21
33
  import { g as getSelection, E as ElementUtils, f as filterForSubtreeRoots, i as isSupportedInlineType, a as isSupportedInlineEntry, u as unwrapInline, w as wrapInline, s as supportedInlineOptions } from "./types.es2.js";
22
34
  export { B as BlockActions, c as BlockPlugin, L as ListActions, o as onKeyDown, b as withBlock } from "./types.es2.js";
23
- export { I as InlineModePlugin, w as withInlineMode } from "./index.es6.js";
35
+ export { I as InlineModePlugin, w as withInlineMode, a as withLocalChanges } from "./index.es6.js";
24
36
  export { w as withBuilder } from "./index.es7.js";
25
- import { ba as createRichTextV2Plugin, a_ as unstable_StyleV2, bg as InlineType, aE as Link, U as useStyle } from "./react-page.es.js";
26
- export { bj as BlockTextAlignment, bi as BlockType, bg as InlineType, bh as RootBlockType } from "./react-page.es.js";
37
+ import { bj as createRichTextV2Plugin, b7 as unstable_StyleV2, bs as InlineType, aF as Link, U as useStyle } from "./react-page.es.js";
38
+ export { bv as BlockTextAlignment, bu as BlockType, bs as InlineType, bt as RootBlockType } from "./react-page.es.js";
27
39
  import "./actions.es.js";
28
- import { d as unstable_IconRadioGroup, u as unstable_IconRadioGroupIcon } from "./typography.es.js";
29
40
  import { Transforms, Editor, Text } from "slate";
30
- import { K as shallowEqual, L as deepEqual } from "./index.es.js";
41
+ import { c as unstable_IconRadioGroup, u as unstable_IconRadioGroupIcon } from "./text-input.es.js";
42
+ import { L as shallowEqual, M as deepEqual } from "./index.es.js";
31
43
  import { jsx, Fragment } from "react/jsx-runtime";
32
44
  import { L as Link$1 } from "./index.es3.js";
33
45
  import { cx } from "@emotion/css";
34
46
  import "./state/breakpoints.es.js";
35
47
  import "zod";
36
48
  import "is-hotkey";
49
+ import "uuid";
37
50
  import "slate-react";
38
51
  import "redux";
39
52
  import "redux-thunk";
@@ -60,7 +73,6 @@ import "cookie";
60
73
  import "http-proxy";
61
74
  import "set-cookie-parser";
62
75
  import "./constants.es.js";
63
- import "uuid";
64
76
  import "corporate-ipsum";
65
77
  import "next/link";
66
78
  function setResponsiveValue(editor, key, value, options) {
@@ -110,14 +122,14 @@ function normalizeResponsiveValue(editor, key, options) {
110
122
  return false;
111
123
  };
112
124
  }
113
- function responsiveShallowEqual(a2 = [], b3 = []) {
114
- const aObject = a2.reduce((acc, curr) => __spreadProps(__spreadValues({}, acc), {
125
+ function responsiveShallowEqual(a3 = [], b3 = []) {
126
+ const aObject = a3.reduce((acc, curr) => __spreadProps(__spreadValues({}, acc), {
115
127
  [curr.deviceId]: curr.value
116
128
  }), {});
117
129
  const bObject = b3.reduce((acc, curr) => __spreadProps(__spreadValues({}, acc), {
118
130
  [curr.deviceId]: curr.value
119
131
  }), {});
120
- const definedDevices = /* @__PURE__ */ new Set([...a2.map((a22) => a22.deviceId), ...b3.map((b22) => b22.deviceId)]);
132
+ const definedDevices = /* @__PURE__ */ new Set([...a3.map((a22) => a22.deviceId), ...b3.map((b22) => b22.deviceId)]);
121
133
  return Array.from(definedDevices).map((deviceId) => {
122
134
  const aVal = aObject[deviceId];
123
135
  const bVal = bObject[deviceId];
@@ -131,8 +143,8 @@ function getValue$2(editor) {
131
143
  at: getSelection(editor),
132
144
  match: ElementUtils.isRootBlock
133
145
  })).map(([node]) => node["textAlign"]);
134
- return matchingValues.length === 0 ? void 0 : matchingValues.reduce((a2, b3) => {
135
- return responsiveShallowEqual(a2, b3);
146
+ return matchingValues.length === 0 ? void 0 : matchingValues.reduce((a3, b3) => {
147
+ return responsiveShallowEqual(a3, b3);
136
148
  });
137
149
  }
138
150
  const TEXT_ALIGN_KEY = "textAlign";
@@ -213,7 +225,7 @@ const getValue$1 = (editor) => {
213
225
  if (!areAllRootsSupportedInlineTypesOrText)
214
226
  return void 0;
215
227
  const matchingValues = roots.filter(isSupportedInlineEntry).map(([node]) => node);
216
- const match = matchingValues.reduce((a2, b3) => (a2 == null ? void 0 : a2.type) === (b3 == null ? void 0 : b3.type) ? b3 : null, (_a = matchingValues.at(0)) != null ? _a : void 0);
228
+ const match = matchingValues.reduce((a3, b3) => (a3 == null ? void 0 : a3.type) === (b3 == null ? void 0 : b3.type) ? b3 : null, (_a = matchingValues.at(0)) != null ? _a : void 0);
217
229
  return match == null ? match : match.type;
218
230
  };
219
231
  const onChange$1 = (editor, value) => {
@@ -269,32 +281,28 @@ function InlinePlugin() {
269
281
  }
270
282
  });
271
283
  }
272
- function InlinePluginComponent$1({
273
- element,
274
- attributes,
275
- children,
276
- renderElement
277
- }) {
278
- switch (element.type) {
284
+ function InlinePluginComponent$1(_a) {
285
+ var _b = _a, {
286
+ renderElement
287
+ } = _b, props = __objRest(_b, [
288
+ "renderElement"
289
+ ]);
290
+ switch (props.element.type) {
279
291
  case InlineType.Code:
280
- return /* @__PURE__ */ jsx("code", __spreadProps(__spreadValues({}, attributes), {
281
- children
292
+ return /* @__PURE__ */ jsx("code", __spreadProps(__spreadValues({}, props.attributes), {
293
+ children: renderElement(props)
282
294
  }));
283
295
  case InlineType.SuperScript:
284
- return /* @__PURE__ */ jsx("sup", __spreadProps(__spreadValues({}, attributes), {
285
- children
296
+ return /* @__PURE__ */ jsx("sup", __spreadProps(__spreadValues({}, props.attributes), {
297
+ children: renderElement(props)
286
298
  }));
287
299
  case InlineType.SubScript:
288
- return /* @__PURE__ */ jsx("sub", __spreadProps(__spreadValues({}, attributes), {
289
- children
300
+ return /* @__PURE__ */ jsx("sub", __spreadProps(__spreadValues({}, props.attributes), {
301
+ children: renderElement(props)
290
302
  }));
291
303
  default:
292
304
  return /* @__PURE__ */ jsx(Fragment, {
293
- children: renderElement({
294
- element,
295
- attributes,
296
- children
297
- })
305
+ children: renderElement(props)
298
306
  });
299
307
  }
300
308
  }
@@ -317,7 +325,7 @@ const getValue = (editor) => {
317
325
  if (!areAllRootsLinks)
318
326
  return void 0;
319
327
  const matchingValues = roots.map(([node]) => node).filter(isLinkElement);
320
- const match = matchingValues.reduce((a2, b3) => deepEqual(a2 == null ? void 0 : a2.link, b3 == null ? void 0 : b3.link) ? b3 : null, (_a = matchingValues.at(0)) != null ? _a : void 0);
328
+ const match = matchingValues.reduce((a3, b3) => deepEqual(a3 == null ? void 0 : a3.link, b3 == null ? void 0 : b3.link) ? b3 : null, (_a = matchingValues.at(0)) != null ? _a : void 0);
321
329
  return match == null ? match : match.link;
322
330
  };
323
331
  const onChange = (editor, value) => {
@@ -358,7 +366,11 @@ function InlinePluginComponent({
358
366
  return /* @__PURE__ */ jsx(Link$1, __spreadProps(__spreadValues({}, attributes), {
359
367
  link: (_a = element.link) != null ? _a : void 0,
360
368
  className: cx(linkStyle, element.className),
361
- children
369
+ children: renderElement({
370
+ element,
371
+ attributes,
372
+ children
373
+ })
362
374
  }));
363
375
  default:
364
376
  return renderElement({
@@ -1 +1 @@
1
- {"version":3,"file":"slate.es.js","sources":["../src/slate/utils/responsive.ts","../src/slate/TextAlignPlugin/getValue.ts","../src/slate/TextAlignPlugin/index.tsx","../src/slate/InlinePlugin/getValue.ts","../src/slate/InlinePlugin/onChange.ts","../src/slate/InlinePlugin/index.tsx","../src/slate/LinkPlugin/types.ts","../src/slate/LinkPlugin/getValue.ts","../src/slate/LinkPlugin/onChange.ts","../src/slate/LinkPlugin/index.tsx"],"sourcesContent":["import { Editor, Transforms, NodeMatch, Descendant, NodeEntry } from 'slate'\nimport { getSelection } from '../selectors'\nimport { ResponsiveValue } from '../../prop-controllers'\nimport shallowEqual from '../../utils/shallowEqual'\nimport { BlockTextAlignment } from '../types'\n\ntype SetResponsiveValueOptions<T extends Descendant> = {\n match: NodeMatch<T>\n split: boolean\n}\n\nexport function setResponsiveValue<T extends Descendant, K extends keyof T>(\n editor: Editor,\n key: K,\n value: T[K] | undefined | null,\n options: SetResponsiveValueOptions<T>,\n) {\n Editor.withoutNormalizing(editor, () => {\n const at = getSelection(editor)\n if (!at) return\n const atRef = Editor.rangeRef(editor, at)\n\n if (atRef.current) {\n Transforms.setNodes<Descendant>(\n editor,\n {\n slice: true,\n },\n {\n at: atRef.current,\n match: options.match,\n split: options.split,\n },\n )\n }\n\n if (atRef.current) {\n const nodesToUpdate = Array.from(\n Editor.nodes(editor, {\n at: atRef.current,\n match: (node, path) => options.match(node, path) && (node as T).slice === true,\n }),\n )\n\n for (const [, path] of nodesToUpdate) {\n Transforms.setNodes(\n editor,\n {\n [key]: value,\n },\n { at: path },\n )\n }\n }\n\n atRef.unref()\n })\n}\n\ntype NormalizeResponsiveValueOptions<T extends Descendant> = {\n match: NodeMatch<T>\n}\n\nexport function normalizeResponsiveValue<T extends Descendant, K extends keyof T & string>(\n editor: Editor,\n key: K,\n options: NormalizeResponsiveValueOptions<T>,\n) {\n return (entry: NodeEntry<T>) => {\n const [node, path] = entry\n\n if (!options.match(node, path)) {\n return false\n }\n\n const responsiveValue = node?.[key]\n\n if (Array.isArray(responsiveValue) && responsiveValue.length === 0) {\n Transforms.unsetNodes(editor, key, { at: path })\n return true\n }\n\n if (node?.slice != null) {\n Transforms.unsetNodes(editor, 'slice', { at: path })\n return true\n }\n\n return false\n }\n}\n\nexport function responsiveShallowEqual<T>(\n a: ResponsiveValue<T> = [],\n b: ResponsiveValue<T> = [],\n): ResponsiveValue<T> {\n const aObject: Record<string, BlockTextAlignment> = a.reduce(\n (acc, curr) => ({\n ...acc,\n [curr.deviceId]: curr.value,\n }),\n {},\n )\n const bObject: Record<string, BlockTextAlignment> = b.reduce(\n (acc, curr) => ({\n ...acc,\n [curr.deviceId]: curr.value,\n }),\n {},\n )\n\n const definedDevices = new Set([...a.map(a => a.deviceId), ...b.map(b => b.deviceId)])\n\n return Array.from(definedDevices).map(deviceId => {\n const aVal = aObject[deviceId]\n const bVal = bObject[deviceId]\n\n if (aVal === undefined && bVal === undefined) return { deviceId, value: undefined }\n\n return shallowEqual(aVal, bVal) ? { deviceId, value: aVal } : { deviceId, value: null }\n }) as ResponsiveValue<T>\n}\n","import { Editor } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { ResponsiveBlockTextAlignment } from '../types'\nimport { getSelection } from '../selectors'\nimport { responsiveShallowEqual } from '../utils/responsive'\n\nexport function getValue(editor: Editor): ResponsiveBlockTextAlignment | undefined {\n const matchingValues = Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: ElementUtils.isRootBlock,\n }),\n ).map(([node]) => node['textAlign']) as (ResponsiveBlockTextAlignment | undefined)[]\n\n return matchingValues.length === 0\n ? undefined\n : matchingValues.reduce((a, b) => {\n return responsiveShallowEqual(a, b)\n })\n}\n","import { Editor, Element, NodeEntry } from 'slate'\nimport {\n createRichTextV2Plugin,\n unstable_IconRadioGroup,\n unstable_IconRadioGroupIcon,\n unstable_StyleV2,\n} from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { TextAlignProperty } from 'csstype'\nimport { normalizeResponsiveValue, setResponsiveValue } from '../utils/responsive'\nimport { getValue } from './getValue'\nimport { RootBlock } from '../types'\n\nconst TEXT_ALIGN_KEY = 'textAlign'\n\nexport const withTextAlign = (editor: Editor) => {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n if (\n normalizeResponsiveValue(editor, TEXT_ALIGN_KEY, { match: ElementUtils.isRootBlock })(\n entry as NodeEntry<RootBlock>,\n )\n ) {\n return\n }\n normalizeNode(entry)\n }\n\n return editor\n}\n\nexport function TextAlignPlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: unstable_StyleV2({\n type: unstable_IconRadioGroup({\n label: 'Alignment',\n options: [\n {\n icon: unstable_IconRadioGroupIcon.TextAlignLeft,\n label: 'Left Align',\n value: 'left',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignCenter,\n label: 'Center Align',\n value: 'center',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignRight,\n label: 'Right Align',\n value: 'right',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignJustify,\n label: 'Justify',\n value: 'justify',\n },\n ],\n defaultValue: 'left',\n }),\n getStyle(textAlign: TextAlignProperty) {\n return { textAlign }\n },\n }),\n onChange: (editor, value) =>\n setResponsiveValue(editor, TEXT_ALIGN_KEY, value, {\n match: ElementUtils.isRootBlock,\n split: false,\n }),\n getValue: editor => getValue(editor),\n getElementValue: (element: Element) => {\n return ElementUtils.isRootBlock(element) ? element.textAlign : undefined\n },\n },\n withPlugin: withTextAlign,\n renderElement: (renderElement, className) => props => {\n return renderElement({\n ...props,\n element: {\n ...props.element,\n className,\n },\n })\n },\n })\n}\n","import { Editor, NodeEntry, Text } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { SupportedInline, isSupportedInlineType, isSupportedInlineEntry } from './types'\n\nexport function getSupportedInlinesAndTextInSelection(\n editor: Editor,\n): NodeEntry<SupportedInline | Text>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node =>\n (ElementUtils.isInline(node) && isSupportedInlineType(node.type)) || Text.isText(node),\n }),\n ) as NodeEntry<Text | SupportedInline>[]\n}\n\nexport const getValue = (editor: Editor) => {\n const roots = filterForSubtreeRoots(getSupportedInlinesAndTextInSelection(editor))\n\n const areAllRootsSupportedInlineTypesOrText = roots.every(\n entry => isSupportedInlineEntry(entry) || Text.isText(entry[0]),\n )\n\n if (!areAllRootsSupportedInlineTypesOrText) return undefined\n\n const matchingValues = roots.filter(isSupportedInlineEntry).map(([node]) => node) as (\n | SupportedInline\n | null\n | undefined\n )[]\n\n const match = matchingValues.reduce(\n (a, b) => (a?.type === b?.type ? b : null),\n matchingValues.at(0) ?? undefined,\n )\n\n return match == null ? match : match.type\n}\n","import { getSupportedInlinesAndTextInSelection } from './getValue'\nimport { Editor, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { unwrapInline } from '../BlockPlugin/unwrapInline'\nimport { wrapInline } from '../BlockPlugin/wrapInline'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport {\n SupportedInlineType,\n isSupportedInlineEntry,\n isSupportedInlineType,\n supportedInlineOptions,\n} from './types'\n\nexport const onChange = (editor: Editor, value: SupportedInlineType) => {\n function unwrapAllSupportedTypes() {\n supportedInlineOptions.forEach(({ value: optionValue }) => unwrapInline(editor, optionValue))\n }\n\n function unwrapAllInlines() {\n Transforms.unwrapNodes(editor, {\n match: node => ElementUtils.isInline(node),\n at: getSelection(editor),\n })\n }\n\n if (value == null) return unwrapAllSupportedTypes()\n\n if (!isSupportedInlineType(value)) return\n\n const roots = filterForSubtreeRoots(getSupportedInlinesAndTextInSelection(editor))\n const root = roots.at(0)\n\n if (\n roots.length === 1 &&\n root != null &&\n isSupportedInlineEntry(root) &&\n root[0].type === value\n ) {\n unwrapInline(editor, value)\n } else {\n unwrapAllInlines()\n wrapInline(editor, { type: value, children: [] })\n }\n}\n","import { Editor, Element } from 'slate'\nimport { RenderElement, createRichTextV2Plugin, unstable_IconRadioGroup } from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType } from '../types'\nimport { RenderElementProps } from 'slate-react'\nimport { supportedInlineOptions } from './types'\nimport { onChange } from './onChange'\nimport { getValue } from './getValue'\n\nexport const withInline = (editor: Editor) => {\n const { isInline } = editor\n\n editor.isInline = entry => {\n return ElementUtils.isInline(entry) && isInline(entry)\n }\n\n return editor\n}\n\nexport function InlinePlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: unstable_IconRadioGroup({\n label: 'Inline',\n options: supportedInlineOptions,\n }),\n onChange,\n getValue,\n getElementValue: (element: Element) => {\n return ElementUtils.isInline(element) ? element.type : undefined\n },\n },\n withPlugin: withInline,\n renderElement: renderElement => props => {\n return <InlinePluginComponent {...props} renderElement={renderElement} />\n },\n })\n}\n\nfunction InlinePluginComponent({\n element,\n attributes,\n children,\n renderElement,\n}: RenderElementProps & { renderElement: RenderElement }) {\n switch (element.type) {\n case InlineType.Code:\n return <code {...attributes}>{children}</code>\n case InlineType.SuperScript:\n return <sup {...attributes}>{children}</sup>\n case InlineType.SubScript:\n return <sub {...attributes}>{children}</sub>\n\n default:\n return (\n <>\n {renderElement({\n element,\n attributes,\n children,\n })}\n </>\n )\n }\n}\n","import { Node, NodeEntry } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType, LinkElement } from '../types'\n\nexport function isLinkElement(node: Node): node is LinkElement {\n return ElementUtils.isInline(node) && node.type === InlineType.Link\n}\n\nexport function isLinkEntry(inline: NodeEntry<Node>): inline is NodeEntry<LinkElement> {\n return ElementUtils.isInline(inline[0]) && inline[0].type === InlineType.Link\n}\n","import { Editor, NodeEntry, Text } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { LinkElement } from '../types'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { isLinkElement } from './types'\nimport deepEqual from '../../utils/deepEqual'\n\nexport function getLinksAndTextInSelection(editor: Editor): NodeEntry<LinkElement | Text>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => (ElementUtils.isInline(node) && isLinkElement(node)) || Text.isText(node),\n }),\n ) as NodeEntry<Text | LinkElement>[]\n}\n\nexport const getValue = (editor: Editor) => {\n const roots = filterForSubtreeRoots(getLinksAndTextInSelection(editor))\n\n const areAllRootsLinks = roots.every(([root]) => isLinkElement(root) || Text.isText(root))\n\n if (!areAllRootsLinks) return undefined\n\n const matchingValues = roots.map(([node]) => node).filter(isLinkElement) as (\n | LinkElement\n | null\n | undefined\n )[]\n\n const match = matchingValues.reduce(\n (a, b) => (deepEqual(a?.link, b?.link) ? b : null),\n matchingValues.at(0) ?? undefined,\n )\n\n return match == null ? match : match.link\n}\n","import { Editor, Transforms } from 'slate'\nimport { LinkControlData } from '../../controls'\nimport { unwrapInline } from '../BlockPlugin/unwrapInline'\nimport { wrapInline } from '../BlockPlugin/wrapInline'\nimport { InlineType } from '../types'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { isLinkEntry } from './types'\nimport { getLinksAndTextInSelection } from './getValue'\n\nexport const onChange = (editor: Editor, value: LinkControlData) => {\n if (value == null) return unwrapInline(editor, InlineType.Link)\n\n const roots = filterForSubtreeRoots(getLinksAndTextInSelection(editor))\n const root = roots.at(0)\n\n // If the root of our selection is a link we just want to modify it\n if (roots.length === 1 && root != null && isLinkEntry(root)) {\n Transforms.setNodes(\n editor,\n {\n link: value,\n },\n { at: root[1] },\n )\n }\n // In all other cases we want to remove all existing links and wrap the current selection in a new link\n else {\n unwrapInline(editor, InlineType.Link)\n wrapInline(editor, { type: InlineType.Link, link: value, children: [] })\n }\n}\n","import { Editor, Element } from 'slate'\nimport { Link, RenderElement, createRichTextV2Plugin } from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType } from '../types'\nimport { RenderElementProps } from 'slate-react'\nimport { useStyle } from '../../runtimes/react/use-style'\nimport { Link as LinkComponent } from '../../components/shared/Link'\nimport { cx } from '@emotion/css'\nimport { isLinkElement } from './types'\nimport { onChange } from './onChange'\nimport { getValue } from './getValue'\n\nexport const withLink = (editor: Editor) => {\n const { isInline } = editor\n\n editor.isInline = entry => {\n return ElementUtils.isInline(entry) && isInline(entry)\n }\n\n return editor\n}\n\nfunction InlinePluginComponent({\n element,\n attributes,\n children,\n renderElement,\n}: RenderElementProps & { renderElement: RenderElement }) {\n const linkStyle = useStyle({ textDecoration: 'none' })\n switch (element.type) {\n case InlineType.Link:\n return (\n <LinkComponent\n {...attributes}\n link={element.link ?? undefined}\n className={cx(linkStyle, element.className)}\n >\n {children}\n </LinkComponent>\n )\n\n default:\n return renderElement({\n element,\n attributes,\n children,\n })\n }\n}\n\nexport function LinkPlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: Link({\n label: 'On Click',\n }),\n onChange,\n getValue,\n getElementValue: (element: Element) => {\n return ElementUtils.isInline(element) && isLinkElement(element) ? element.link : undefined\n },\n },\n withPlugin: withLink,\n renderElement: renderElement => props => {\n return <InlinePluginComponent {...props} renderElement={renderElement} />\n },\n })\n}\n"],"names":["TEXT_ALIGN_KEY","withTextAlign","editor","normalizeNode","entry","normalizeResponsiveValue","match","ElementUtils","isRootBlock","createRichTextV2Plugin","control","definition","unstable_StyleV2","type","unstable_IconRadioGroup","label","options","icon","unstable_IconRadioGroupIcon","TextAlignLeft","value","TextAlignCenter","TextAlignRight","TextAlignJustify","defaultValue","getStyle","textAlign","onChange","setResponsiveValue","split","getValue","getElementValue","element","undefined","withPlugin","renderElement","className","props","withInline","isInline","supportedInlineOptions","InlinePluginComponent","attributes","children","InlineType","Code","SuperScript","SubScript","_Fragment","withLink","linkStyle","useStyle","textDecoration","Link","LinkComponent","link","cx","isLinkElement"],"mappings":"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"}
1
+ {"version":3,"file":"slate.es.js","sources":["../src/slate/utils/responsive.ts","../src/slate/TextAlignPlugin/getValue.ts","../src/slate/TextAlignPlugin/index.tsx","../src/slate/InlinePlugin/getValue.ts","../src/slate/InlinePlugin/onChange.ts","../src/slate/InlinePlugin/index.tsx","../src/slate/LinkPlugin/types.ts","../src/slate/LinkPlugin/getValue.ts","../src/slate/LinkPlugin/onChange.ts","../src/slate/LinkPlugin/index.tsx"],"sourcesContent":["import { Editor, Transforms, NodeMatch, Descendant, NodeEntry } from 'slate'\nimport { getSelection } from '../selectors'\nimport { ResponsiveValue } from '../../prop-controllers'\nimport shallowEqual from '../../utils/shallowEqual'\nimport { BlockTextAlignment } from '../types'\n\ntype SetResponsiveValueOptions<T extends Descendant> = {\n match: NodeMatch<T>\n split: boolean\n}\n\nexport function setResponsiveValue<T extends Descendant, K extends keyof T>(\n editor: Editor,\n key: K,\n value: T[K] | undefined | null,\n options: SetResponsiveValueOptions<T>,\n) {\n Editor.withoutNormalizing(editor, () => {\n const at = getSelection(editor)\n if (!at) return\n const atRef = Editor.rangeRef(editor, at)\n\n if (atRef.current) {\n Transforms.setNodes<Descendant>(\n editor,\n {\n slice: true,\n },\n {\n at: atRef.current,\n match: options.match,\n split: options.split,\n },\n )\n }\n\n if (atRef.current) {\n const nodesToUpdate = Array.from(\n Editor.nodes(editor, {\n at: atRef.current,\n match: (node, path) => options.match(node, path) && (node as T).slice === true,\n }),\n )\n\n for (const [, path] of nodesToUpdate) {\n Transforms.setNodes(\n editor,\n {\n [key]: value,\n },\n { at: path },\n )\n }\n }\n\n atRef.unref()\n })\n}\n\ntype NormalizeResponsiveValueOptions<T extends Descendant> = {\n match: NodeMatch<T>\n}\n\nexport function normalizeResponsiveValue<T extends Descendant, K extends keyof T & string>(\n editor: Editor,\n key: K,\n options: NormalizeResponsiveValueOptions<T>,\n) {\n return (entry: NodeEntry<T>) => {\n const [node, path] = entry\n\n if (!options.match(node, path)) {\n return false\n }\n\n const responsiveValue = node?.[key]\n\n if (Array.isArray(responsiveValue) && responsiveValue.length === 0) {\n Transforms.unsetNodes(editor, key, { at: path })\n return true\n }\n\n if (node?.slice != null) {\n Transforms.unsetNodes(editor, 'slice', { at: path })\n return true\n }\n\n return false\n }\n}\n\nexport function responsiveShallowEqual<T>(\n a: ResponsiveValue<T> = [],\n b: ResponsiveValue<T> = [],\n): ResponsiveValue<T> {\n const aObject: Record<string, BlockTextAlignment> = a.reduce(\n (acc, curr) => ({\n ...acc,\n [curr.deviceId]: curr.value,\n }),\n {},\n )\n const bObject: Record<string, BlockTextAlignment> = b.reduce(\n (acc, curr) => ({\n ...acc,\n [curr.deviceId]: curr.value,\n }),\n {},\n )\n\n const definedDevices = new Set([...a.map(a => a.deviceId), ...b.map(b => b.deviceId)])\n\n return Array.from(definedDevices).map(deviceId => {\n const aVal = aObject[deviceId]\n const bVal = bObject[deviceId]\n\n if (aVal === undefined && bVal === undefined) return { deviceId, value: undefined }\n\n return shallowEqual(aVal, bVal) ? { deviceId, value: aVal } : { deviceId, value: null }\n }) as ResponsiveValue<T>\n}\n","import { Editor } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { ResponsiveBlockTextAlignment } from '../types'\nimport { getSelection } from '../selectors'\nimport { responsiveShallowEqual } from '../utils/responsive'\n\nexport function getValue(editor: Editor): ResponsiveBlockTextAlignment | undefined {\n const matchingValues = Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: ElementUtils.isRootBlock,\n }),\n ).map(([node]) => node['textAlign']) as (ResponsiveBlockTextAlignment | undefined)[]\n\n return matchingValues.length === 0\n ? undefined\n : matchingValues.reduce((a, b) => {\n return responsiveShallowEqual(a, b)\n })\n}\n","import { Editor, Element, NodeEntry } from 'slate'\nimport {\n createRichTextV2Plugin,\n unstable_IconRadioGroup,\n unstable_IconRadioGroupIcon,\n unstable_StyleV2,\n} from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { normalizeResponsiveValue, setResponsiveValue } from '../utils/responsive'\nimport { getValue } from './getValue'\nimport { RootBlock } from '../types'\n\nconst TEXT_ALIGN_KEY = 'textAlign'\n\nexport const withTextAlign = (editor: Editor) => {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n if (\n normalizeResponsiveValue(editor, TEXT_ALIGN_KEY, { match: ElementUtils.isRootBlock })(\n entry as NodeEntry<RootBlock>,\n )\n ) {\n return\n }\n normalizeNode(entry)\n }\n\n return editor\n}\n\nexport function TextAlignPlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: unstable_StyleV2({\n type: unstable_IconRadioGroup({\n label: 'Alignment',\n options: [\n {\n icon: unstable_IconRadioGroupIcon.TextAlignLeft,\n label: 'Left Align',\n value: 'left',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignCenter,\n label: 'Center Align',\n value: 'center',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignRight,\n label: 'Right Align',\n value: 'right',\n },\n {\n icon: unstable_IconRadioGroupIcon.TextAlignJustify,\n label: 'Justify',\n value: 'justify',\n },\n ],\n defaultValue: 'left',\n }),\n getStyle(textAlign: 'left' | 'center' | 'right' | 'justify' | undefined) {\n return { textAlign }\n },\n }),\n onChange: (editor, value) =>\n setResponsiveValue(editor, TEXT_ALIGN_KEY, value, {\n match: ElementUtils.isRootBlock,\n split: false,\n }),\n getValue: editor => getValue(editor),\n getElementValue: (element: Element) => {\n return ElementUtils.isRootBlock(element) ? element.textAlign : undefined\n },\n },\n withPlugin: withTextAlign,\n renderElement: (renderElement, className) => props => {\n return renderElement({\n ...props,\n element: {\n ...props.element,\n className,\n },\n })\n },\n })\n}\n","import { Editor, NodeEntry, Text } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { SupportedInline, isSupportedInlineType, isSupportedInlineEntry } from './types'\n\nexport function getSupportedInlinesAndTextInSelection(\n editor: Editor,\n): NodeEntry<SupportedInline | Text>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node =>\n (ElementUtils.isInline(node) && isSupportedInlineType(node.type)) || Text.isText(node),\n }),\n ) as NodeEntry<Text | SupportedInline>[]\n}\n\nexport const getValue = (editor: Editor) => {\n const roots = filterForSubtreeRoots(getSupportedInlinesAndTextInSelection(editor))\n\n const areAllRootsSupportedInlineTypesOrText = roots.every(\n entry => isSupportedInlineEntry(entry) || Text.isText(entry[0]),\n )\n\n if (!areAllRootsSupportedInlineTypesOrText) return undefined\n\n const matchingValues = roots.filter(isSupportedInlineEntry).map(([node]) => node) as (\n | SupportedInline\n | null\n | undefined\n )[]\n\n const match = matchingValues.reduce(\n (a, b) => (a?.type === b?.type ? b : null),\n matchingValues.at(0) ?? undefined,\n )\n\n return match == null ? match : match.type\n}\n","import { getSupportedInlinesAndTextInSelection } from './getValue'\nimport { Editor, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { unwrapInline } from '../BlockPlugin/unwrapInline'\nimport { wrapInline } from '../BlockPlugin/wrapInline'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport {\n SupportedInlineType,\n isSupportedInlineEntry,\n isSupportedInlineType,\n supportedInlineOptions,\n} from './types'\n\nexport const onChange = (editor: Editor, value: SupportedInlineType) => {\n function unwrapAllSupportedTypes() {\n supportedInlineOptions.forEach(({ value: optionValue }) => unwrapInline(editor, optionValue))\n }\n\n function unwrapAllInlines() {\n Transforms.unwrapNodes(editor, {\n match: node => ElementUtils.isInline(node),\n at: getSelection(editor),\n })\n }\n\n if (value == null) return unwrapAllSupportedTypes()\n\n if (!isSupportedInlineType(value)) return\n\n const roots = filterForSubtreeRoots(getSupportedInlinesAndTextInSelection(editor))\n const root = roots.at(0)\n\n if (\n roots.length === 1 &&\n root != null &&\n isSupportedInlineEntry(root) &&\n root[0].type === value\n ) {\n unwrapInline(editor, value)\n } else {\n unwrapAllInlines()\n wrapInline(editor, { type: value, children: [] })\n }\n}\n","import { Editor, Element } from 'slate'\nimport { RenderElement, createRichTextV2Plugin, unstable_IconRadioGroup } from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType } from '../types'\nimport { RenderElementProps } from 'slate-react'\nimport { supportedInlineOptions } from './types'\nimport { onChange } from './onChange'\nimport { getValue } from './getValue'\n\nexport const withInline = (editor: Editor) => {\n const { isInline } = editor\n\n editor.isInline = entry => {\n return ElementUtils.isInline(entry) && isInline(entry)\n }\n\n return editor\n}\n\nexport function InlinePlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: unstable_IconRadioGroup({\n label: 'Inline',\n options: supportedInlineOptions,\n }),\n onChange,\n getValue,\n getElementValue: (element: Element) => {\n return ElementUtils.isInline(element) ? element.type : undefined\n },\n },\n withPlugin: withInline,\n renderElement: renderElement => props => {\n return <InlinePluginComponent {...props} renderElement={renderElement} />\n },\n })\n}\n\nfunction InlinePluginComponent({\n renderElement,\n ...props\n}: RenderElementProps & { renderElement: RenderElement }) {\n switch (props.element.type) {\n case InlineType.Code:\n return <code {...props.attributes}>{renderElement(props)}</code>\n case InlineType.SuperScript:\n return <sup {...props.attributes}>{renderElement(props)}</sup>\n case InlineType.SubScript:\n return <sub {...props.attributes}>{renderElement(props)}</sub>\n\n default:\n return <>{renderElement(props)}</>\n }\n}\n","import { Node, NodeEntry } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType, LinkElement } from '../types'\n\nexport function isLinkElement(node: Node): node is LinkElement {\n return ElementUtils.isInline(node) && node.type === InlineType.Link\n}\n\nexport function isLinkEntry(inline: NodeEntry<Node>): inline is NodeEntry<LinkElement> {\n return ElementUtils.isInline(inline[0]) && inline[0].type === InlineType.Link\n}\n","import { Editor, NodeEntry, Text } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { LinkElement } from '../types'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { isLinkElement } from './types'\nimport deepEqual from '../../utils/deepEqual'\n\nexport function getLinksAndTextInSelection(editor: Editor): NodeEntry<LinkElement | Text>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => (ElementUtils.isInline(node) && isLinkElement(node)) || Text.isText(node),\n }),\n ) as NodeEntry<Text | LinkElement>[]\n}\n\nexport const getValue = (editor: Editor) => {\n const roots = filterForSubtreeRoots(getLinksAndTextInSelection(editor))\n\n const areAllRootsLinks = roots.every(([root]) => isLinkElement(root) || Text.isText(root))\n\n if (!areAllRootsLinks) return undefined\n\n const matchingValues = roots.map(([node]) => node).filter(isLinkElement) as (\n | LinkElement\n | null\n | undefined\n )[]\n\n const match = matchingValues.reduce(\n (a, b) => (deepEqual(a?.link, b?.link) ? b : null),\n matchingValues.at(0) ?? undefined,\n )\n\n return match == null ? match : match.link\n}\n","import { Editor, Transforms } from 'slate'\nimport { LinkControlData } from '../../controls'\nimport { unwrapInline } from '../BlockPlugin/unwrapInline'\nimport { wrapInline } from '../BlockPlugin/wrapInline'\nimport { InlineType } from '../types'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { isLinkEntry } from './types'\nimport { getLinksAndTextInSelection } from './getValue'\n\nexport const onChange = (editor: Editor, value: LinkControlData) => {\n if (value == null) return unwrapInline(editor, InlineType.Link)\n\n const roots = filterForSubtreeRoots(getLinksAndTextInSelection(editor))\n const root = roots.at(0)\n\n // If the root of our selection is a link we just want to modify it\n if (roots.length === 1 && root != null && isLinkEntry(root)) {\n Transforms.setNodes(\n editor,\n {\n link: value,\n },\n { at: root[1] },\n )\n }\n // In all other cases we want to remove all existing links and wrap the current selection in a new link\n else {\n unwrapInline(editor, InlineType.Link)\n wrapInline(editor, { type: InlineType.Link, link: value, children: [] })\n }\n}\n","import { Editor, Element } from 'slate'\nimport { Link, RenderElement, createRichTextV2Plugin } from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { InlineType } from '../types'\nimport { RenderElementProps } from 'slate-react'\nimport { useStyle } from '../../runtimes/react/use-style'\nimport { Link as LinkComponent } from '../../components/shared/Link'\nimport { cx } from '@emotion/css'\nimport { isLinkElement } from './types'\nimport { onChange } from './onChange'\nimport { getValue } from './getValue'\n\nexport const withLink = (editor: Editor) => {\n const { isInline } = editor\n\n editor.isInline = entry => {\n return ElementUtils.isInline(entry) && isInline(entry)\n }\n\n return editor\n}\n\nfunction InlinePluginComponent({\n element,\n attributes,\n children,\n renderElement,\n}: RenderElementProps & { renderElement: RenderElement }) {\n const linkStyle = useStyle({ textDecoration: 'none' })\n switch (element.type) {\n case InlineType.Link:\n return (\n <LinkComponent\n {...attributes}\n link={element.link ?? undefined}\n className={cx(linkStyle, element.className)}\n >\n {renderElement({\n element,\n attributes,\n children,\n })}\n </LinkComponent>\n )\n\n default:\n return renderElement({\n element,\n attributes,\n children,\n })\n }\n}\n\nexport function LinkPlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: Link({\n label: 'On Click',\n }),\n onChange,\n getValue,\n getElementValue: (element: Element) => {\n return ElementUtils.isInline(element) && isLinkElement(element) ? element.link : undefined\n },\n },\n withPlugin: withLink,\n renderElement: renderElement => props => {\n return <InlinePluginComponent {...props} renderElement={renderElement} />\n },\n })\n}\n"],"names":["TEXT_ALIGN_KEY","withTextAlign","editor","normalizeNode","entry","normalizeResponsiveValue","match","ElementUtils","isRootBlock","createRichTextV2Plugin","control","definition","unstable_StyleV2","type","unstable_IconRadioGroup","label","options","icon","unstable_IconRadioGroupIcon","TextAlignLeft","value","TextAlignCenter","TextAlignRight","TextAlignJustify","defaultValue","getStyle","textAlign","onChange","setResponsiveValue","split","getValue","getElementValue","element","undefined","withPlugin","renderElement","className","props","withInline","isInline","supportedInlineOptions","InlinePluginComponent","InlineType","Code","attributes","SuperScript","SubScript","_Fragment","withLink","children","linkStyle","useStyle","textDecoration","Link","LinkComponent","link","cx","isLinkElement"],"mappings":"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"}
@@ -32,12 +32,6 @@ const TextInputControlType = "makeswift::controls::text-input";
32
32
  function TextInput(config = {}) {
33
33
  return { type: TextInputControlType, config };
34
34
  }
35
- const TypographyControlType = "makeswift::controls::typography";
36
- function unstable_Typography() {
37
- return {
38
- type: TypographyControlType
39
- };
40
- }
41
35
  exports.Checkbox = Checkbox;
42
36
  exports.CheckboxControlType = CheckboxControlType;
43
37
  exports.IconRadioGroupControlType = IconRadioGroupControlType;
@@ -49,8 +43,6 @@ exports.TextArea = TextArea;
49
43
  exports.TextAreaControlType = TextAreaControlType;
50
44
  exports.TextInput = TextInput;
51
45
  exports.TextInputControlType = TextInputControlType;
52
- exports.TypographyControlType = TypographyControlType;
53
46
  exports.unstable_IconRadioGroup = unstable_IconRadioGroup;
54
47
  exports.unstable_IconRadioGroupIcon = unstable_IconRadioGroupIcon;
55
- exports.unstable_Typography = unstable_Typography;
56
- //# sourceMappingURL=typography.cjs.js.map
48
+ //# sourceMappingURL=text-input.cjs.js.map