@makeswift/runtime 0.9.2 → 0.9.3

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 (153) hide show
  1. package/dist/Box.cjs.js +0 -2
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +0 -2
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +0 -2
  6. package/dist/Button.cjs.js.map +1 -1
  7. package/dist/Button.es.js +0 -2
  8. package/dist/Button.es.js.map +1 -1
  9. package/dist/Carousel.cjs.js +0 -2
  10. package/dist/Carousel.cjs.js.map +1 -1
  11. package/dist/Carousel.es.js +0 -2
  12. package/dist/Carousel.es.js.map +1 -1
  13. package/dist/Countdown.cjs.js +0 -2
  14. package/dist/Countdown.cjs.js.map +1 -1
  15. package/dist/Countdown.es.js +0 -2
  16. package/dist/Countdown.es.js.map +1 -1
  17. package/dist/Divider.cjs.js +0 -2
  18. package/dist/Divider.cjs.js.map +1 -1
  19. package/dist/Divider.es.js +0 -2
  20. package/dist/Divider.es.js.map +1 -1
  21. package/dist/Form.cjs.js +0 -2
  22. package/dist/Form.cjs.js.map +1 -1
  23. package/dist/Form.es.js +0 -2
  24. package/dist/Form.es.js.map +1 -1
  25. package/dist/Image.cjs.js +0 -2
  26. package/dist/Image.cjs.js.map +1 -1
  27. package/dist/Image.es.js +0 -2
  28. package/dist/Image.es.js.map +1 -1
  29. package/dist/LiveProvider.cjs.js +0 -2
  30. package/dist/LiveProvider.cjs.js.map +1 -1
  31. package/dist/LiveProvider.es.js +1 -3
  32. package/dist/LiveProvider.es.js.map +1 -1
  33. package/dist/Navigation.cjs.js +0 -2
  34. package/dist/Navigation.cjs.js.map +1 -1
  35. package/dist/Navigation.es.js +0 -2
  36. package/dist/Navigation.es.js.map +1 -1
  37. package/dist/PreviewProvider.cjs.js +2 -4
  38. package/dist/PreviewProvider.cjs.js.map +1 -1
  39. package/dist/PreviewProvider.es.js +1 -3
  40. package/dist/PreviewProvider.es.js.map +1 -1
  41. package/dist/ReadOnlyText.cjs.js +1 -3
  42. package/dist/ReadOnlyText.cjs.js.map +1 -1
  43. package/dist/ReadOnlyText.es.js +2 -4
  44. package/dist/ReadOnlyText.es.js.map +1 -1
  45. package/dist/ReadOnlyTextV2.cjs.js +1 -3
  46. package/dist/ReadOnlyTextV2.cjs.js.map +1 -1
  47. package/dist/ReadOnlyTextV2.es.js +2 -4
  48. package/dist/ReadOnlyTextV2.es.js.map +1 -1
  49. package/dist/Root.cjs.js +0 -2
  50. package/dist/Root.cjs.js.map +1 -1
  51. package/dist/Root.es.js +0 -2
  52. package/dist/Root.es.js.map +1 -1
  53. package/dist/SocialLinks.cjs.js +0 -2
  54. package/dist/SocialLinks.cjs.js.map +1 -1
  55. package/dist/SocialLinks.es.js +0 -2
  56. package/dist/SocialLinks.es.js.map +1 -1
  57. package/dist/Text.cjs.js +1 -3
  58. package/dist/Text.cjs.js.map +1 -1
  59. package/dist/Text.es.js +1 -3
  60. package/dist/Text.es.js.map +1 -1
  61. package/dist/components.cjs.js +0 -2
  62. package/dist/components.cjs.js.map +1 -1
  63. package/dist/components.es.js +0 -2
  64. package/dist/components.es.js.map +1 -1
  65. package/dist/controls.cjs.js +5 -6
  66. package/dist/controls.cjs.js.map +1 -1
  67. package/dist/controls.es.js +1 -2
  68. package/dist/controls.es.js.map +1 -1
  69. package/dist/index.cjs.js +49 -13
  70. package/dist/index.cjs.js.map +1 -1
  71. package/dist/index.cjs10.js +248 -171
  72. package/dist/index.cjs10.js.map +1 -1
  73. package/dist/index.cjs6.js +23 -700
  74. package/dist/index.cjs6.js.map +1 -1
  75. package/dist/index.cjs7.js +13 -37
  76. package/dist/index.cjs7.js.map +1 -1
  77. package/dist/index.cjs8.js +39 -17
  78. package/dist/index.cjs8.js.map +1 -1
  79. package/dist/index.cjs9.js +268 -15
  80. package/dist/index.cjs9.js.map +1 -1
  81. package/dist/index.es.js +42 -7
  82. package/dist/index.es.js.map +1 -1
  83. package/dist/index.es10.js +249 -172
  84. package/dist/index.es10.js.map +1 -1
  85. package/dist/index.es6.js +23 -695
  86. package/dist/index.es6.js.map +1 -1
  87. package/dist/index.es7.js +14 -33
  88. package/dist/index.es7.js.map +1 -1
  89. package/dist/index.es8.js +37 -17
  90. package/dist/index.es8.js.map +1 -1
  91. package/dist/index.es9.js +263 -14
  92. package/dist/index.es9.js.map +1 -1
  93. package/dist/leaf.es.js +1 -1
  94. package/dist/next.cjs.js +0 -2
  95. package/dist/next.cjs.js.map +1 -1
  96. package/dist/next.es.js +1 -3
  97. package/dist/next.es.js.map +1 -1
  98. package/dist/react-page.cjs.js +0 -1
  99. package/dist/react-page.cjs.js.map +1 -1
  100. package/dist/react-page.es.js +1 -2
  101. package/dist/react-page.es.js.map +1 -1
  102. package/dist/react.cjs.js +0 -2
  103. package/dist/react.cjs.js.map +1 -1
  104. package/dist/react.es.js +0 -2
  105. package/dist/react.es.js.map +1 -1
  106. package/dist/slate.cjs.js +257 -41
  107. package/dist/slate.cjs.js.map +1 -1
  108. package/dist/slate.es.js +249 -38
  109. package/dist/slate.es.js.map +1 -1
  110. package/dist/text-input.cjs.js +22 -0
  111. package/dist/text-input.cjs.js.map +1 -1
  112. package/dist/text-input.es.js +18 -1
  113. package/dist/text-input.es.js.map +1 -1
  114. package/dist/types/src/controls/icon-radio-group.d.ts +5 -2
  115. package/dist/types/src/controls/icon-radio-group.d.ts.map +1 -1
  116. package/dist/types/src/controls/style-v2.d.ts.map +1 -1
  117. package/dist/types/src/slate/InlinePlugin/getValue.d.ts +5 -0
  118. package/dist/types/src/slate/InlinePlugin/getValue.d.ts.map +1 -0
  119. package/dist/types/src/slate/InlinePlugin/index.d.ts +16 -0
  120. package/dist/types/src/slate/InlinePlugin/index.d.ts.map +1 -0
  121. package/dist/types/src/slate/InlinePlugin/onChange.d.ts +4 -0
  122. package/dist/types/src/slate/InlinePlugin/onChange.d.ts.map +1 -0
  123. package/dist/types/src/slate/InlinePlugin/types.d.ts +9 -0
  124. package/dist/types/src/slate/InlinePlugin/types.d.ts.map +1 -0
  125. package/dist/types/src/slate/LinkPlugin/getValue.d.ts +5 -0
  126. package/dist/types/src/slate/LinkPlugin/getValue.d.ts.map +1 -0
  127. package/dist/types/src/slate/LinkPlugin/index.d.ts +15 -0
  128. package/dist/types/src/slate/LinkPlugin/index.d.ts.map +1 -0
  129. package/dist/types/src/slate/LinkPlugin/onChange.d.ts +4 -0
  130. package/dist/types/src/slate/LinkPlugin/onChange.d.ts.map +1 -0
  131. package/dist/types/src/slate/LinkPlugin/types.d.ts +5 -0
  132. package/dist/types/src/slate/LinkPlugin/types.d.ts.map +1 -0
  133. package/dist/types/src/slate/TextAlignPlugin/index.d.ts +2 -0
  134. package/dist/types/src/slate/TextAlignPlugin/index.d.ts.map +1 -1
  135. package/dist/types/src/slate/index.d.ts +2 -0
  136. package/dist/types/src/slate/index.d.ts.map +1 -1
  137. package/dist/types.cjs2.js +753 -0
  138. package/dist/types.cjs2.js.map +1 -0
  139. package/dist/types.es2.js +736 -0
  140. package/dist/types.es2.js.map +1 -0
  141. package/package.json +1 -1
  142. package/dist/deepEqual.cjs.js +0 -40
  143. package/dist/deepEqual.cjs.js.map +0 -1
  144. package/dist/deepEqual.es.js +0 -39
  145. package/dist/deepEqual.es.js.map +0 -1
  146. package/dist/index.cjs11.js +0 -375
  147. package/dist/index.cjs11.js.map +0 -1
  148. package/dist/index.es11.js +0 -368
  149. package/dist/index.es11.js.map +0 -1
  150. package/dist/select.cjs.js +0 -21
  151. package/dist/select.cjs.js.map +0 -1
  152. package/dist/select.es.js +0 -16
  153. package/dist/select.es.js.map +0 -1
package/dist/react.cjs.js CHANGED
@@ -16,10 +16,8 @@ require("slate");
16
16
  require("react/jsx-runtime");
17
17
  require("./text-input.cjs.js");
18
18
  require("./combobox.cjs.js");
19
- require("./select.cjs.js");
20
19
  require("use-sync-external-store/shim");
21
20
  require("./types.cjs.js");
22
- require("./deepEqual.cjs.js");
23
21
  require("./box-models.cjs.js");
24
22
  require("css-box-model");
25
23
  require("color");
@@ -1 +1 @@
1
- {"version":3,"file":"react.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"react.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/react.es.js CHANGED
@@ -14,10 +14,8 @@ import "slate";
14
14
  import "react/jsx-runtime";
15
15
  import "./text-input.es.js";
16
16
  import "./combobox.es.js";
17
- import "./select.es.js";
18
17
  import "use-sync-external-store/shim";
19
18
  import "./types.es.js";
20
- import "./deepEqual.es.js";
21
19
  import "./box-models.es.js";
22
20
  import "css-box-model";
23
21
  import "color";
@@ -1 +1 @@
1
- {"version":3,"file":"react.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"react.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/slate.cjs.js CHANGED
@@ -20,27 +20,52 @@ var __spreadValues = (a, b) => {
20
20
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
21
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
22
22
  var index = require("./index.cjs5.js");
23
+ var types = require("./types.cjs2.js");
23
24
  var index$1 = require("./index.cjs6.js");
24
25
  var index$2 = require("./index.cjs7.js");
25
- var index$3 = require("./index.cjs8.js");
26
26
  var reactPage = require("./react-page.cjs.js");
27
- var select = require("./select.cjs.js");
27
+ var textInput = require("./text-input.cjs.js");
28
28
  var slate = require("slate");
29
- var deepEqual = require("./deepEqual.cjs.js");
29
+ var next = require("./index.cjs.js");
30
+ require("react");
31
+ var css = require("@emotion/css");
32
+ require("@emotion/serialize");
33
+ require("@emotion/utils");
34
+ var jsxRuntime = require("react/jsx-runtime");
35
+ var index$3 = require("./index.cjs3.js");
30
36
  require("./state/breakpoints.cjs.js");
31
37
  require("./actions.cjs.js");
32
38
  require("is-hotkey");
33
- require("@emotion/css");
34
- require("react/jsx-runtime");
35
39
  require("slate-react");
36
40
  require("redux");
37
41
  require("redux-thunk");
38
- require("react");
39
- require("@emotion/serialize");
40
- require("@emotion/utils");
42
+ require("use-sync-external-store/shim/with-selector");
43
+ require("next/dynamic");
44
+ require("./combobox.cjs.js");
45
+ require("use-sync-external-store/shim");
46
+ require("./types.cjs.js");
47
+ require("./box-models.cjs.js");
48
+ require("css-box-model");
49
+ require("color");
50
+ require("scroll-into-view-if-needed");
51
+ require("react-dom");
52
+ require("html-react-parser");
53
+ require("next/head");
54
+ require("zod");
55
+ require("@emotion/server/create-instance");
56
+ require("next/document");
57
+ require("cors");
58
+ require("path-to-regexp");
59
+ require("cookie");
60
+ require("http-proxy");
61
+ require("set-cookie-parser");
62
+ require("./constants.cjs.js");
63
+ require("uuid");
64
+ require("corporate-ipsum");
65
+ require("next/link");
41
66
  function setResponsiveValue(editor, key, value, options) {
42
67
  slate.Editor.withoutNormalizing(editor, () => {
43
- const at = index$1.getSelection(editor);
68
+ const at = types.getSelection(editor);
44
69
  if (!at)
45
70
  return;
46
71
  const atRef = slate.Editor.rangeRef(editor, at);
@@ -69,10 +94,10 @@ function setResponsiveValue(editor, key, value, options) {
69
94
  }
70
95
  function getResponsiveValue(editor, key, options) {
71
96
  const matchingValues = Array.from(slate.Editor.nodes(editor, {
72
- at: index$1.getSelection(editor),
97
+ at: types.getSelection(editor),
73
98
  match: options == null ? void 0 : options.match
74
99
  })).filter(([node, path]) => options.match(node, path)).map(([node]) => node[key]);
75
- const value = matchingValues.length === 0 ? void 0 : matchingValues.reduce((a, b) => deepEqual.deepEqual(a, b) ? b : void 0);
100
+ const value = matchingValues.length === 0 ? void 0 : matchingValues.reduce((a, b) => next.deepEqual(a, b) ? b : void 0);
76
101
  return value;
77
102
  }
78
103
  function normalizeResponsiveValue(editor, key, options) {
@@ -94,26 +119,40 @@ function normalizeResponsiveValue(editor, key, options) {
94
119
  };
95
120
  }
96
121
  const TEXT_ALIGN_KEY = "textAlign";
122
+ const withTextAlign = (editor) => {
123
+ const {
124
+ normalizeNode
125
+ } = editor;
126
+ editor.normalizeNode = (entry) => {
127
+ if (normalizeResponsiveValue(editor, TEXT_ALIGN_KEY, {
128
+ match: types.ElementUtils.isRootBlock
129
+ })(entry)) {
130
+ return;
131
+ }
132
+ normalizeNode(entry);
133
+ };
134
+ return editor;
135
+ };
97
136
  function TextAlignPlugin() {
98
137
  return reactPage.createRichTextV2Plugin({
99
138
  control: {
100
139
  definition: reactPage.unstable_StyleV2({
101
- type: select.unstable_IconRadioGroup({
140
+ type: textInput.unstable_IconRadioGroup({
102
141
  label: "Alignment",
103
142
  options: [{
104
- icon: select.unstable_IconRadioGroupIcon.TextAlignLeft,
143
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignLeft,
105
144
  label: "Left Align",
106
145
  value: "left"
107
146
  }, {
108
- icon: select.unstable_IconRadioGroupIcon.TextAlignCenter,
147
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignCenter,
109
148
  label: "Center Align",
110
149
  value: "center"
111
150
  }, {
112
- icon: select.unstable_IconRadioGroupIcon.TextAlignRight,
151
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignRight,
113
152
  label: "Right Align",
114
153
  value: "right"
115
154
  }, {
116
- icon: select.unstable_IconRadioGroupIcon.TextAlignJustify,
155
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignJustify,
117
156
  label: "Justify",
118
157
  value: "justify"
119
158
  }],
@@ -126,30 +165,17 @@ function TextAlignPlugin() {
126
165
  }
127
166
  }),
128
167
  onChange: (editor, value) => setResponsiveValue(editor, TEXT_ALIGN_KEY, value, {
129
- match: index$1.ElementUtils.isRootBlock,
168
+ match: types.ElementUtils.isRootBlock,
130
169
  split: false
131
170
  }),
132
171
  getValue: (editor) => getResponsiveValue(editor, TEXT_ALIGN_KEY, {
133
- match: index$1.ElementUtils.isRootBlock
172
+ match: types.ElementUtils.isRootBlock
134
173
  }),
135
174
  getElementValue: (element) => {
136
- return index$1.ElementUtils.isRootBlock(element) ? element.textAlign : void 0;
175
+ return types.ElementUtils.isRootBlock(element) ? element.textAlign : void 0;
137
176
  }
138
177
  },
139
- withPlugin: (editor) => {
140
- const {
141
- normalizeNode
142
- } = editor;
143
- editor.normalizeNode = (entry) => {
144
- if (normalizeResponsiveValue(editor, TEXT_ALIGN_KEY, {
145
- match: index$1.ElementUtils.isRootBlock
146
- })(entry)) {
147
- return;
148
- }
149
- normalizeNode(entry);
150
- };
151
- return editor;
152
- },
178
+ withPlugin: withTextAlign,
153
179
  renderElement: (renderElement, className) => (props) => {
154
180
  return renderElement(__spreadProps(__spreadValues({}, props), {
155
181
  element: __spreadProps(__spreadValues({}, props.element), {
@@ -209,21 +235,211 @@ function ColorPlugin() {
209
235
  }
210
236
  });
211
237
  }
238
+ function getSupportedInlinesAndTextInSelection(editor) {
239
+ return Array.from(slate.Editor.nodes(editor, {
240
+ at: types.getSelection(editor),
241
+ match: (node) => types.ElementUtils.isInline(node) && types.isSupportedInlineType(node.type) || slate.Text.isText(node)
242
+ }));
243
+ }
244
+ const getValue$1 = (editor) => {
245
+ var _a;
246
+ const roots = types.filterForSubtreeRoots(getSupportedInlinesAndTextInSelection(editor));
247
+ const areAllRootsSupportedInlineTypesOrText = roots.every((entry) => types.isSupportedInlineEntry(entry) || slate.Text.isText(entry[0]));
248
+ if (!areAllRootsSupportedInlineTypesOrText)
249
+ return void 0;
250
+ const matchingValues = roots.filter(types.isSupportedInlineEntry).map(([node]) => node);
251
+ return (_a = matchingValues.reduce((a, b) => next.deepEqual(a, b) ? b : void 0, matchingValues.at(0))) == null ? void 0 : _a.type;
252
+ };
253
+ const onChange$1 = (editor, value) => {
254
+ function unwrapAllSupportedTypes() {
255
+ types.supportedInlineOptions.forEach(({ value: optionValue }) => types.unwrapInline(editor, optionValue));
256
+ }
257
+ function unwrapAllInlines() {
258
+ slate.Transforms.unwrapNodes(editor, {
259
+ match: (node) => types.ElementUtils.isInline(node),
260
+ at: types.getSelection(editor)
261
+ });
262
+ }
263
+ if (value == null)
264
+ return unwrapAllSupportedTypes();
265
+ if (!types.isSupportedInlineType(value))
266
+ return;
267
+ const roots = types.filterForSubtreeRoots(getSupportedInlinesAndTextInSelection(editor));
268
+ const root = roots.at(0);
269
+ if (roots.length === 1 && root != null && types.isSupportedInlineEntry(root) && root[0].type === value) {
270
+ types.unwrapInline(editor, value);
271
+ } else {
272
+ unwrapAllInlines();
273
+ types.wrapInline(editor, { type: value, children: [] });
274
+ }
275
+ };
276
+ const withInline = (editor) => {
277
+ const {
278
+ isInline
279
+ } = editor;
280
+ editor.isInline = (entry) => {
281
+ return types.ElementUtils.isInline(entry) && isInline(entry);
282
+ };
283
+ return editor;
284
+ };
285
+ function InlinePlugin() {
286
+ return reactPage.createRichTextV2Plugin({
287
+ control: {
288
+ definition: textInput.unstable_IconRadioGroup({
289
+ label: "Inline",
290
+ options: types.supportedInlineOptions
291
+ }),
292
+ onChange: onChange$1,
293
+ getValue: getValue$1,
294
+ getElementValue: (element) => {
295
+ return types.ElementUtils.isInline(element) ? element.type : void 0;
296
+ }
297
+ },
298
+ withPlugin: withInline,
299
+ renderElement: (renderElement) => (props) => {
300
+ return /* @__PURE__ */ jsxRuntime.jsx(InlinePluginComponent$1, __spreadProps(__spreadValues({}, props), {
301
+ renderElement
302
+ }));
303
+ }
304
+ });
305
+ }
306
+ function InlinePluginComponent$1({
307
+ element,
308
+ attributes,
309
+ children,
310
+ renderElement
311
+ }) {
312
+ switch (element.type) {
313
+ case reactPage.InlineType.Code:
314
+ return /* @__PURE__ */ jsxRuntime.jsx("code", __spreadProps(__spreadValues({}, attributes), {
315
+ children
316
+ }));
317
+ case reactPage.InlineType.SuperScript:
318
+ return /* @__PURE__ */ jsxRuntime.jsx("sup", __spreadProps(__spreadValues({}, attributes), {
319
+ children
320
+ }));
321
+ case reactPage.InlineType.SubScript:
322
+ return /* @__PURE__ */ jsxRuntime.jsx("sub", __spreadProps(__spreadValues({}, attributes), {
323
+ children
324
+ }));
325
+ default:
326
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
327
+ children: renderElement({
328
+ element,
329
+ attributes,
330
+ children
331
+ })
332
+ });
333
+ }
334
+ }
335
+ function isLinkElement(node) {
336
+ return types.ElementUtils.isInline(node) && node.type === reactPage.InlineType.Link;
337
+ }
338
+ function isLinkEntry(inline) {
339
+ return types.ElementUtils.isInline(inline[0]) && inline[0].type === reactPage.InlineType.Link;
340
+ }
341
+ function getLinksAndTextInSelection(editor) {
342
+ return Array.from(slate.Editor.nodes(editor, {
343
+ at: types.getSelection(editor),
344
+ match: (node) => types.ElementUtils.isInline(node) && isLinkElement(node) || slate.Text.isText(node)
345
+ }));
346
+ }
347
+ const getValue = (editor) => {
348
+ var _a;
349
+ const roots = types.filterForSubtreeRoots(getLinksAndTextInSelection(editor));
350
+ const areAllRootsLinks = roots.every(([root]) => isLinkElement(root) || slate.Text.isText(root));
351
+ if (!areAllRootsLinks)
352
+ return void 0;
353
+ const matchingValues = roots.map(([node]) => node).filter(isLinkElement);
354
+ return (_a = matchingValues.reduce((a, b) => next.deepEqual(a, b) ? b : void 0, matchingValues.at(0))) == null ? void 0 : _a.link;
355
+ };
356
+ const onChange = (editor, value) => {
357
+ if (value == null)
358
+ return types.unwrapInline(editor, reactPage.InlineType.Link);
359
+ const roots = types.filterForSubtreeRoots(getLinksAndTextInSelection(editor));
360
+ const root = roots.at(0);
361
+ if (roots.length === 1 && root != null && isLinkEntry(root)) {
362
+ slate.Transforms.setNodes(editor, {
363
+ link: value
364
+ }, { at: root[1] });
365
+ } else {
366
+ types.unwrapInline(editor, reactPage.InlineType.Link);
367
+ types.wrapInline(editor, { type: reactPage.InlineType.Link, link: value, children: [] });
368
+ }
369
+ };
370
+ const withLink = (editor) => {
371
+ const {
372
+ isInline
373
+ } = editor;
374
+ editor.isInline = (entry) => {
375
+ return types.ElementUtils.isInline(entry) && isInline(entry);
376
+ };
377
+ return editor;
378
+ };
379
+ function InlinePluginComponent({
380
+ element,
381
+ attributes,
382
+ children,
383
+ renderElement
384
+ }) {
385
+ const linkStyle = reactPage.useStyle({
386
+ textDecoration: "none"
387
+ });
388
+ switch (element.type) {
389
+ case reactPage.InlineType.Link:
390
+ return /* @__PURE__ */ jsxRuntime.jsx(index$3.Link, __spreadProps(__spreadValues({}, attributes), {
391
+ link: element.link,
392
+ className: css.cx(linkStyle, element.className),
393
+ children
394
+ }));
395
+ default:
396
+ return renderElement({
397
+ element,
398
+ attributes,
399
+ children
400
+ });
401
+ }
402
+ }
403
+ function LinkPlugin() {
404
+ return reactPage.createRichTextV2Plugin({
405
+ control: {
406
+ definition: reactPage.Link$1({
407
+ label: "On Click"
408
+ }),
409
+ onChange,
410
+ getValue,
411
+ getElementValue: (element) => {
412
+ return types.ElementUtils.isInline(element) && isLinkElement(element) ? element.link : void 0;
413
+ }
414
+ },
415
+ withPlugin: withLink,
416
+ renderElement: (renderElement) => (props) => {
417
+ return /* @__PURE__ */ jsxRuntime.jsx(InlinePluginComponent, __spreadProps(__spreadValues({}, props), {
418
+ renderElement
419
+ }));
420
+ }
421
+ });
422
+ }
212
423
  exports.TypographyActions = index.TypographyActions;
213
424
  exports.withTypography = index.withTypography;
214
- exports.BlockActions = index$1.BlockActions;
215
- exports.BlockPlugin = index$1.BlockPlugin;
216
- exports.ListActions = index$1.ListActions;
217
- exports.onKeyDown = index$1.onKeyDown;
218
- exports.withBlock = index$1.withBlock;
219
- exports.InlineModePlugin = index$2.InlineModePlugin;
220
- exports.withInlineMode = index$2.withInlineMode;
221
- exports.withBuilder = index$3.withBuilder;
425
+ exports.BlockActions = types.BlockActions;
426
+ exports.BlockPlugin = types.BlockPlugin;
427
+ exports.ListActions = types.ListActions;
428
+ exports.onKeyDown = types.onKeyDown;
429
+ exports.withBlock = types.withBlock;
430
+ exports.InlineModePlugin = index$1.InlineModePlugin;
431
+ exports.withInlineMode = index$1.withInlineMode;
432
+ exports.withBuilder = index$2.withBuilder;
222
433
  exports.BlockTextAlignment = reactPage.BlockTextAlignment;
223
434
  exports.BlockType = reactPage.BlockType;
224
435
  exports.InlineType = reactPage.InlineType;
225
436
  exports.RootBlockType = reactPage.RootBlockType;
226
437
  exports.COLOR_KEY = COLOR_KEY;
227
438
  exports.ColorPlugin = ColorPlugin;
439
+ exports.InlinePlugin = InlinePlugin;
440
+ exports.LinkPlugin = LinkPlugin;
228
441
  exports.TextAlignPlugin = TextAlignPlugin;
442
+ exports.withInline = withInline;
443
+ exports.withLink = withLink;
444
+ exports.withTextAlign = withTextAlign;
229
445
  //# sourceMappingURL=slate.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slate.cjs.js","sources":["../src/slate/utils/responsive.ts","../src/slate/TextAlignPlugin/index.tsx","../src/slate/ColorPlugin/index.tsx"],"sourcesContent":["import { Editor, Transforms, NodeMatch, Descendant, NodeEntry } from 'slate'\nimport { getSelection } from '../selectors'\nimport deepEqual from '../../utils/deepEqual'\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,\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.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 GetResponsiveValueOptions<T extends Descendant> = {\n match: NodeMatch<T>\n}\n\nexport function getResponsiveValue<T extends Descendant, K extends keyof T>(\n editor: Editor,\n key: K,\n options: GetResponsiveValueOptions<T>,\n): T[K] | undefined {\n const matchingValues = Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: options?.match,\n }),\n )\n .filter(([node, path]) => options.match(node, path))\n .map(([node]) => node[key]) as (T[K] | undefined)[]\n\n const value =\n matchingValues.length === 0\n ? undefined\n : matchingValues.reduce((a, b) => (deepEqual(a, b) ? b : undefined))\n\n return value\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) => {\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","import { Editor, Element } 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 {\n getResponsiveValue,\n normalizeResponsiveValue,\n setResponsiveValue,\n} from '../utils/responsive'\n\nconst TEXT_ALIGN_KEY = 'textAlign'\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 =>\n getResponsiveValue(editor, TEXT_ALIGN_KEY, { match: ElementUtils.isRootBlock }),\n getElementValue: (element: Element) => {\n return ElementUtils.isRootBlock(element) ? element.textAlign : undefined\n },\n },\n withPlugin: (editor: Editor) => {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n if (\n normalizeResponsiveValue(editor, TEXT_ALIGN_KEY, { match: ElementUtils.isRootBlock })(\n entry,\n )\n ) {\n return\n }\n normalizeNode(entry)\n }\n\n return editor\n },\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, Text } from 'slate'\nimport {\n Color,\n createRichTextV2Plugin,\n unstable_StyleV2,\n ColorControlDefinition,\n} from '../../controls'\nimport { ControlDefinitionValue } from '../../runtimes/react/controls/control'\nimport {\n getResponsiveValue,\n normalizeResponsiveValue,\n setResponsiveValue,\n} from '../utils/responsive'\n\nexport const COLOR_KEY = 'color'\n\nexport function ColorPlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: unstable_StyleV2({\n type: Color({\n label: 'Color',\n }),\n getStyle(color: ControlDefinitionValue<ColorControlDefinition>) {\n return { color }\n },\n }),\n onChange: (editor, value) => {\n setResponsiveValue(editor, COLOR_KEY, value, {\n match: Text.isText,\n split: true,\n })\n },\n getValue: editor => getResponsiveValue(editor, COLOR_KEY, { match: Text.isText }),\n getLeafValue: (text: Text) => {\n return Text.isText(text) ? text?.color : undefined\n },\n },\n withPlugin: (editor: Editor) => {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n if (normalizeResponsiveValue(editor, COLOR_KEY, { match: Text.isText })(entry)) {\n return\n }\n\n normalizeNode(entry)\n }\n\n return editor\n },\n renderLeaf: (renderLeaf, className) => props => {\n return renderLeaf({\n ...props,\n leaf: {\n ...props.leaf,\n className,\n },\n })\n },\n })\n}\n"],"names":["Editor","getSelection","Transforms","deepEqual","TEXT_ALIGN_KEY","createRichTextV2Plugin","control","definition","unstable_StyleV2","type","unstable_IconRadioGroup","label","options","icon","unstable_IconRadioGroupIcon","TextAlignLeft","value","TextAlignCenter","TextAlignRight","TextAlignJustify","defaultValue","getStyle","textAlign","onChange","editor","setResponsiveValue","match","ElementUtils","isRootBlock","split","getValue","getResponsiveValue","getElementValue","element","undefined","withPlugin","normalizeNode","entry","normalizeResponsiveValue","renderElement","className","props","COLOR_KEY","Color","color","Text","isText","getLeafValue","text","renderLeaf","leaf"],"mappings":"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"}
1
+ {"version":3,"file":"slate.cjs.js","sources":["../src/slate/utils/responsive.ts","../src/slate/TextAlignPlugin/index.tsx","../src/slate/ColorPlugin/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 deepEqual from '../../utils/deepEqual'\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,\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.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 GetResponsiveValueOptions<T extends Descendant> = {\n match: NodeMatch<T>\n}\n\nexport function getResponsiveValue<T extends Descendant, K extends keyof T>(\n editor: Editor,\n key: K,\n options: GetResponsiveValueOptions<T>,\n): T[K] | undefined {\n const matchingValues = Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: options?.match,\n }),\n )\n .filter(([node, path]) => options.match(node, path))\n .map(([node]) => node[key]) as (T[K] | undefined)[]\n\n const value =\n matchingValues.length === 0\n ? undefined\n : matchingValues.reduce((a, b) => (deepEqual(a, b) ? b : undefined))\n\n return value\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) => {\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","import { Editor, Element } 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 {\n getResponsiveValue,\n normalizeResponsiveValue,\n setResponsiveValue,\n} from '../utils/responsive'\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 })(entry)\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 =>\n getResponsiveValue(editor, TEXT_ALIGN_KEY, { match: ElementUtils.isRootBlock }),\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, Text } from 'slate'\nimport {\n Color,\n createRichTextV2Plugin,\n unstable_StyleV2,\n ColorControlDefinition,\n} from '../../controls'\nimport { ControlDefinitionValue } from '../../runtimes/react/controls/control'\nimport {\n getResponsiveValue,\n normalizeResponsiveValue,\n setResponsiveValue,\n} from '../utils/responsive'\n\nexport const COLOR_KEY = 'color'\n\nexport function ColorPlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: unstable_StyleV2({\n type: Color({\n label: 'Color',\n }),\n getStyle(color: ControlDefinitionValue<ColorControlDefinition>) {\n return { color }\n },\n }),\n onChange: (editor, value) => {\n setResponsiveValue(editor, COLOR_KEY, value, {\n match: Text.isText,\n split: true,\n })\n },\n getValue: editor => getResponsiveValue(editor, COLOR_KEY, { match: Text.isText }),\n getLeafValue: (text: Text) => {\n return Text.isText(text) ? text?.color : undefined\n },\n },\n withPlugin: (editor: Editor) => {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n if (normalizeResponsiveValue(editor, COLOR_KEY, { match: Text.isText })(entry)) {\n return\n }\n\n normalizeNode(entry)\n }\n\n return editor\n },\n renderLeaf: (renderLeaf, className) => props => {\n return renderLeaf({\n ...props,\n leaf: {\n ...props.leaf,\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 deepEqual from '../../utils/deepEqual'\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)\n\n return matchingValues.reduce((a, b) => (deepEqual(a, b) ? b : undefined), matchingValues.at(0))\n ?.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 deepEqual from '../../utils/deepEqual'\nimport { getSelection } from '../selectors'\nimport { filterForSubtreeRoots } from '../BlockPlugin/utils/filterForSubtreeRoots'\nimport { isLinkElement } from './types'\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)\n\n return matchingValues.reduce((a, b) => (deepEqual(a, b) ? b : undefined), matchingValues.at(0))\n ?.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}\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","deepEqual","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","getResponsiveValue","getElementValue","element","undefined","withPlugin","renderElement","className","props","COLOR_KEY","Color","color","Text","isText","getLeafValue","text","renderLeaf","leaf","isSupportedInlineType","filterForSubtreeRoots","isSupportedInlineEntry","supportedInlineOptions","unwrapInline","wrapInline","withInline","isInline","InlinePluginComponent","attributes","children","InlineType","Code","SuperScript","SubScript","_Fragment","withLink","linkStyle","useStyle","textDecoration","Link","LinkComponent","link","cx","isLinkElement"],"mappings":"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"}