@makeswift/runtime 0.9.1 → 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 (206) hide show
  1. package/dist/Box.cjs.js +1 -4
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +1 -4
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +1 -4
  6. package/dist/Button.cjs.js.map +1 -1
  7. package/dist/Button.es.js +1 -4
  8. package/dist/Button.es.js.map +1 -1
  9. package/dist/Carousel.cjs.js +1 -4
  10. package/dist/Carousel.cjs.js.map +1 -1
  11. package/dist/Carousel.es.js +1 -4
  12. package/dist/Carousel.es.js.map +1 -1
  13. package/dist/Countdown.cjs.js +0 -3
  14. package/dist/Countdown.cjs.js.map +1 -1
  15. package/dist/Countdown.es.js +0 -3
  16. package/dist/Countdown.es.js.map +1 -1
  17. package/dist/Divider.cjs.js +1 -4
  18. package/dist/Divider.cjs.js.map +1 -1
  19. package/dist/Divider.es.js +1 -4
  20. package/dist/Divider.es.js.map +1 -1
  21. package/dist/Embed.cjs.js +0 -2
  22. package/dist/Embed.cjs.js.map +1 -1
  23. package/dist/Embed.es.js +0 -2
  24. package/dist/Embed.es.js.map +1 -1
  25. package/dist/Form.cjs.js +0 -3
  26. package/dist/Form.cjs.js.map +1 -1
  27. package/dist/Form.es.js +0 -3
  28. package/dist/Form.es.js.map +1 -1
  29. package/dist/Image.cjs.js +0 -3
  30. package/dist/Image.cjs.js.map +1 -1
  31. package/dist/Image.es.js +0 -3
  32. package/dist/Image.es.js.map +1 -1
  33. package/dist/LiveProvider.cjs.js +1 -4
  34. package/dist/LiveProvider.cjs.js.map +1 -1
  35. package/dist/LiveProvider.es.js +3 -6
  36. package/dist/LiveProvider.es.js.map +1 -1
  37. package/dist/Navigation.cjs.js +0 -3
  38. package/dist/Navigation.cjs.js.map +1 -1
  39. package/dist/Navigation.es.js +0 -3
  40. package/dist/Navigation.es.js.map +1 -1
  41. package/dist/PreviewProvider.cjs.js +2 -5
  42. package/dist/PreviewProvider.cjs.js.map +1 -1
  43. package/dist/PreviewProvider.es.js +2 -5
  44. package/dist/PreviewProvider.es.js.map +1 -1
  45. package/dist/ReadOnlyText.cjs.js +1 -1
  46. package/dist/ReadOnlyText.es.js +2 -2
  47. package/dist/ReadOnlyTextV2.cjs.js +1 -1
  48. package/dist/ReadOnlyTextV2.es.js +2 -2
  49. package/dist/Root.cjs.js +0 -3
  50. package/dist/Root.cjs.js.map +1 -1
  51. package/dist/Root.es.js +0 -3
  52. package/dist/Root.es.js.map +1 -1
  53. package/dist/SocialLinks.cjs.js +1 -4
  54. package/dist/SocialLinks.cjs.js.map +1 -1
  55. package/dist/SocialLinks.es.js +1 -4
  56. package/dist/SocialLinks.es.js.map +1 -1
  57. package/dist/Text.cjs.js +0 -3
  58. package/dist/Text.cjs.js.map +1 -1
  59. package/dist/Text.es.js +0 -3
  60. package/dist/Text.es.js.map +1 -1
  61. package/dist/Video.cjs.js +0 -2
  62. package/dist/Video.cjs.js.map +1 -1
  63. package/dist/Video.es.js +0 -2
  64. package/dist/Video.es.js.map +1 -1
  65. package/dist/builder.cjs.js +0 -3
  66. package/dist/builder.cjs.js.map +1 -1
  67. package/dist/builder.es.js +0 -3
  68. package/dist/builder.es.js.map +1 -1
  69. package/dist/components.cjs.js +0 -3
  70. package/dist/components.cjs.js.map +1 -1
  71. package/dist/components.es.js +0 -3
  72. package/dist/components.es.js.map +1 -1
  73. package/dist/control-serialization.cjs.js +0 -3
  74. package/dist/control-serialization.cjs.js.map +1 -1
  75. package/dist/control-serialization.es.js +1 -4
  76. package/dist/control-serialization.es.js.map +1 -1
  77. package/dist/controls.cjs.js +5 -5
  78. package/dist/controls.es.js +2 -5
  79. package/dist/controls.es.js.map +1 -1
  80. package/dist/index.cjs.js +86 -17
  81. package/dist/index.cjs.js.map +1 -1
  82. package/dist/index.cjs10.js +4 -4
  83. package/dist/index.cjs10.js.map +1 -1
  84. package/dist/index.cjs2.js +1 -3
  85. package/dist/index.cjs2.js.map +1 -1
  86. package/dist/index.cjs6.js +2 -1
  87. package/dist/index.cjs6.js.map +1 -1
  88. package/dist/index.cjs8.js +0 -3
  89. package/dist/index.cjs8.js.map +1 -1
  90. package/dist/index.cjs9.js +49 -13
  91. package/dist/index.cjs9.js.map +1 -1
  92. package/dist/index.es.js +82 -14
  93. package/dist/index.es.js.map +1 -1
  94. package/dist/index.es10.js +3 -3
  95. package/dist/index.es2.js +2 -4
  96. package/dist/index.es2.js.map +1 -1
  97. package/dist/index.es6.js +2 -1
  98. package/dist/index.es6.js.map +1 -1
  99. package/dist/index.es8.js +0 -3
  100. package/dist/index.es8.js.map +1 -1
  101. package/dist/index.es9.js +50 -14
  102. package/dist/index.es9.js.map +1 -1
  103. package/dist/leaf.es.js +1 -1
  104. package/dist/main.cjs.js +0 -3
  105. package/dist/main.cjs.js.map +1 -1
  106. package/dist/main.es.js +0 -3
  107. package/dist/main.es.js.map +1 -1
  108. package/dist/next.cjs.js +0 -3
  109. package/dist/next.cjs.js.map +1 -1
  110. package/dist/next.es.js +1 -4
  111. package/dist/next.es.js.map +1 -1
  112. package/dist/prop-controllers.cjs.js +0 -3
  113. package/dist/prop-controllers.cjs.js.map +1 -1
  114. package/dist/prop-controllers.es.js +0 -3
  115. package/dist/prop-controllers.es.js.map +1 -1
  116. package/dist/react-page.cjs.js +926 -1573
  117. package/dist/react-page.cjs.js.map +1 -1
  118. package/dist/react-page.es.js +922 -1559
  119. package/dist/react-page.es.js.map +1 -1
  120. package/dist/react.cjs.js +0 -3
  121. package/dist/react.cjs.js.map +1 -1
  122. package/dist/react.es.js +0 -3
  123. package/dist/react.es.js.map +1 -1
  124. package/dist/slate.cjs.js +391 -58
  125. package/dist/slate.cjs.js.map +1 -1
  126. package/dist/slate.es.js +387 -59
  127. package/dist/slate.es.js.map +1 -1
  128. package/dist/text-input.cjs.js +22 -0
  129. package/dist/text-input.cjs.js.map +1 -1
  130. package/dist/text-input.es.js +18 -1
  131. package/dist/text-input.es.js.map +1 -1
  132. package/dist/types/src/api/react.d.ts.map +1 -1
  133. package/dist/types/src/components/builtin/Button/Button.d.ts +1 -1
  134. package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  135. package/dist/types/src/components/page/Page.d.ts.map +1 -1
  136. package/dist/types/src/controls/control.d.ts +3 -2
  137. package/dist/types/src/controls/control.d.ts.map +1 -1
  138. package/dist/types/src/controls/icon-radio-group.d.ts +32 -0
  139. package/dist/types/src/controls/icon-radio-group.d.ts.map +1 -0
  140. package/dist/types/src/controls/index.d.ts +1 -0
  141. package/dist/types/src/controls/index.d.ts.map +1 -1
  142. package/dist/types/src/controls/rich-text/translation.d.ts +1 -1
  143. package/dist/types/src/controls/rich-text/translation.d.ts.map +1 -1
  144. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts +7 -3
  145. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  146. package/dist/types/src/controls/shape.d.ts +1 -2
  147. package/dist/types/src/controls/shape.d.ts.map +1 -1
  148. package/dist/types/src/controls/style-v2.d.ts +16 -7
  149. package/dist/types/src/controls/style-v2.d.ts.map +1 -1
  150. package/dist/types/src/next/client.d.ts.map +1 -1
  151. package/dist/types/src/next/document.d.ts.map +1 -1
  152. package/dist/types/src/prop-controllers/descriptors.d.ts +4 -2
  153. package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
  154. package/dist/types/src/prop-controllers/introspection.d.ts.map +1 -1
  155. package/dist/types/src/runtimes/react/controls/control.d.ts +3 -1
  156. package/dist/types/src/runtimes/react/controls/control.d.ts.map +1 -1
  157. package/dist/types/src/runtimes/react/controls/icon-radio-group.d.ts +4 -0
  158. package/dist/types/src/runtimes/react/controls/icon-radio-group.d.ts.map +1 -0
  159. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts.map +1 -1
  160. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.d.ts +10 -0
  161. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.d.ts.map +1 -0
  162. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.d.ts +10 -0
  163. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.d.ts.map +1 -0
  164. package/dist/types/src/runtimes/react/controls/style-v2.d.ts +10 -1
  165. package/dist/types/src/runtimes/react/controls/style-v2.d.ts.map +1 -1
  166. package/dist/types/src/runtimes/react/controls.d.ts.map +1 -1
  167. package/dist/types/src/runtimes/react/index.d.ts.map +1 -1
  168. package/dist/types/src/slate/BlockPlugin/index.d.ts +1 -0
  169. package/dist/types/src/slate/BlockPlugin/index.d.ts.map +1 -1
  170. package/dist/types/src/slate/ColorPlugin/index.d.ts +10 -0
  171. package/dist/types/src/slate/ColorPlugin/index.d.ts.map +1 -0
  172. package/dist/types/src/slate/InlineModePlugin/index.d.ts +1 -0
  173. package/dist/types/src/slate/InlineModePlugin/index.d.ts.map +1 -1
  174. package/dist/types/src/slate/InlinePlugin/getValue.d.ts +5 -0
  175. package/dist/types/src/slate/InlinePlugin/getValue.d.ts.map +1 -0
  176. package/dist/types/src/slate/InlinePlugin/index.d.ts +16 -0
  177. package/dist/types/src/slate/InlinePlugin/index.d.ts.map +1 -0
  178. package/dist/types/src/slate/InlinePlugin/onChange.d.ts +4 -0
  179. package/dist/types/src/slate/InlinePlugin/onChange.d.ts.map +1 -0
  180. package/dist/types/src/slate/InlinePlugin/types.d.ts +9 -0
  181. package/dist/types/src/slate/InlinePlugin/types.d.ts.map +1 -0
  182. package/dist/types/src/slate/LinkPlugin/getValue.d.ts +5 -0
  183. package/dist/types/src/slate/LinkPlugin/getValue.d.ts.map +1 -0
  184. package/dist/types/src/slate/LinkPlugin/index.d.ts +15 -0
  185. package/dist/types/src/slate/LinkPlugin/index.d.ts.map +1 -0
  186. package/dist/types/src/slate/LinkPlugin/onChange.d.ts +4 -0
  187. package/dist/types/src/slate/LinkPlugin/onChange.d.ts.map +1 -0
  188. package/dist/types/src/slate/LinkPlugin/types.d.ts +5 -0
  189. package/dist/types/src/slate/LinkPlugin/types.d.ts.map +1 -0
  190. package/dist/types/src/slate/TextAlignPlugin/index.d.ts +3 -1
  191. package/dist/types/src/slate/TextAlignPlugin/index.d.ts.map +1 -1
  192. package/dist/types/src/slate/index.d.ts +3 -0
  193. package/dist/types/src/slate/index.d.ts.map +1 -1
  194. package/dist/types/src/slate/types.d.ts +21 -0
  195. package/dist/types/src/slate/types.d.ts.map +1 -1
  196. package/dist/types/src/slate/utils/responsive.d.ts +16 -0
  197. package/dist/types/src/slate/utils/responsive.d.ts.map +1 -0
  198. package/dist/types.cjs2.js +753 -0
  199. package/dist/types.cjs2.js.map +1 -0
  200. package/dist/types.es2.js +736 -0
  201. package/dist/types.es2.js.map +1 -0
  202. package/package.json +1 -1
  203. package/dist/deepEqual.cjs.js +0 -40
  204. package/dist/deepEqual.cjs.js.map +0 -1
  205. package/dist/deepEqual.es.js +0 -39
  206. package/dist/deepEqual.es.js.map +0 -1
package/dist/react.cjs.js CHANGED
@@ -13,14 +13,11 @@ require("@emotion/css");
13
13
  require("@emotion/serialize");
14
14
  require("@emotion/utils");
15
15
  require("slate");
16
- require("is-hotkey");
17
- require("slate-react");
18
16
  require("react/jsx-runtime");
19
17
  require("./text-input.cjs.js");
20
18
  require("./combobox.cjs.js");
21
19
  require("use-sync-external-store/shim");
22
20
  require("./types.cjs.js");
23
- require("./deepEqual.cjs.js");
24
21
  require("./box-models.cjs.js");
25
22
  require("css-box-model");
26
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
@@ -11,14 +11,11 @@ import "@emotion/css";
11
11
  import "@emotion/serialize";
12
12
  import "@emotion/utils";
13
13
  import "slate";
14
- import "is-hotkey";
15
- import "slate-react";
16
14
  import "react/jsx-runtime";
17
15
  import "./text-input.es.js";
18
16
  import "./combobox.es.js";
19
17
  import "use-sync-external-store/shim";
20
18
  import "./types.es.js";
21
- import "./deepEqual.es.js";
22
19
  import "./box-models.es.js";
23
20
  import "css-box-model";
24
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,70 +20,162 @@ 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 reactPage = require("./react-page.cjs.js");
23
+ var types = require("./types.cjs2.js");
24
24
  var index$1 = require("./index.cjs6.js");
25
25
  var index$2 = require("./index.cjs7.js");
26
+ var reactPage = require("./react-page.cjs.js");
27
+ var textInput = require("./text-input.cjs.js");
26
28
  var slate = require("slate");
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");
27
36
  require("./state/breakpoints.cjs.js");
37
+ require("./actions.cjs.js");
28
38
  require("is-hotkey");
29
39
  require("slate-react");
30
- var deepEqual = require("./deepEqual.cjs.js");
31
40
  require("redux");
32
41
  require("redux-thunk");
33
- require("./actions.cjs.js");
34
- require("react");
35
- require("@emotion/css");
36
- require("@emotion/serialize");
37
- require("@emotion/utils");
38
- require("react/jsx-runtime");
39
- const textAlignDefinition = reactPage.Select({
40
- options: [{
41
- label: "Left",
42
- value: "left"
43
- }, {
44
- label: "Center",
45
- value: "center"
46
- }, {
47
- label: "Right",
48
- value: "right"
49
- }],
50
- defaultValue: "left"
51
- });
52
- const definitionWithObject = reactPage.unstable_StyleV2({
53
- type: textAlignDefinition,
54
- getStyle(textAlign) {
55
- return {
56
- textAlign
57
- };
58
- }
59
- });
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");
66
+ function setResponsiveValue(editor, key, value, options) {
67
+ slate.Editor.withoutNormalizing(editor, () => {
68
+ const at = types.getSelection(editor);
69
+ if (!at)
70
+ return;
71
+ const atRef = slate.Editor.rangeRef(editor, at);
72
+ if (atRef.current) {
73
+ slate.Transforms.setNodes(editor, {
74
+ slice: true
75
+ }, {
76
+ at: atRef.current,
77
+ match: options.match,
78
+ split: options.split
79
+ });
80
+ }
81
+ if (atRef.current) {
82
+ const nodesToUpdate = Array.from(slate.Editor.nodes(editor, {
83
+ at: atRef.current,
84
+ match: (node, path) => options.match(node, path) && node.slice === true
85
+ }));
86
+ for (const [, path] of nodesToUpdate) {
87
+ slate.Transforms.setNodes(editor, {
88
+ [key]: value
89
+ }, { at: path });
90
+ }
91
+ }
92
+ atRef.unref();
93
+ });
94
+ }
95
+ function getResponsiveValue(editor, key, options) {
96
+ const matchingValues = Array.from(slate.Editor.nodes(editor, {
97
+ at: types.getSelection(editor),
98
+ match: options == null ? void 0 : options.match
99
+ })).filter(([node, path]) => options.match(node, path)).map(([node]) => node[key]);
100
+ const value = matchingValues.length === 0 ? void 0 : matchingValues.reduce((a, b) => next.deepEqual(a, b) ? b : void 0);
101
+ return value;
102
+ }
103
+ function normalizeResponsiveValue(editor, key, options) {
104
+ return (entry) => {
105
+ const [node, path] = entry;
106
+ if (!options.match(node, path)) {
107
+ return false;
108
+ }
109
+ const responsiveValue = node == null ? void 0 : node[key];
110
+ if (Array.isArray(responsiveValue) && responsiveValue.length === 0) {
111
+ slate.Transforms.unsetNodes(editor, key, { at: path });
112
+ return true;
113
+ }
114
+ if ((node == null ? void 0 : node.slice) != null) {
115
+ slate.Transforms.unsetNodes(editor, "slice", { at: path });
116
+ return true;
117
+ }
118
+ return false;
119
+ };
120
+ }
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
+ };
60
136
  function TextAlignPlugin() {
61
137
  return reactPage.createRichTextV2Plugin({
62
138
  control: {
63
- definition: definitionWithObject,
64
- onChange: (editor, value) => {
65
- const rootElements = reactPage.getBlocksInSelection(editor);
66
- for (const [node, path] of rootElements) {
67
- if (reactPage.ElementUtils.isBlock(node)) {
68
- slate.Transforms.setNodes(editor, {
69
- ["textAlign"]: value
70
- }, {
71
- at: path
72
- });
73
- }
139
+ definition: reactPage.unstable_StyleV2({
140
+ type: textInput.unstable_IconRadioGroup({
141
+ label: "Alignment",
142
+ options: [{
143
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignLeft,
144
+ label: "Left Align",
145
+ value: "left"
146
+ }, {
147
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignCenter,
148
+ label: "Center Align",
149
+ value: "center"
150
+ }, {
151
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignRight,
152
+ label: "Right Align",
153
+ value: "right"
154
+ }, {
155
+ icon: textInput.unstable_IconRadioGroupIcon.TextAlignJustify,
156
+ label: "Justify",
157
+ value: "justify"
158
+ }],
159
+ defaultValue: "left"
160
+ }),
161
+ getStyle(textAlign) {
162
+ return {
163
+ textAlign
164
+ };
74
165
  }
75
- },
76
- getValue: (editor) => {
77
- const blocks = reactPage.getBlocksInSelection(editor).map(([block]) => {
78
- return block.textAlign;
79
- });
80
- const value = blocks.length === 0 ? void 0 : blocks.reduce((a, b) => deepEqual.deepEqual(a, b) ? b : void 0);
81
- return value;
82
- },
166
+ }),
167
+ onChange: (editor, value) => setResponsiveValue(editor, TEXT_ALIGN_KEY, value, {
168
+ match: types.ElementUtils.isRootBlock,
169
+ split: false
170
+ }),
171
+ getValue: (editor) => getResponsiveValue(editor, TEXT_ALIGN_KEY, {
172
+ match: types.ElementUtils.isRootBlock
173
+ }),
83
174
  getElementValue: (element) => {
84
- return reactPage.ElementUtils.isRootBlock(element) ? element.textAlign : void 0;
175
+ return types.ElementUtils.isRootBlock(element) ? element.textAlign : void 0;
85
176
  }
86
177
  },
178
+ withPlugin: withTextAlign,
87
179
  renderElement: (renderElement, className) => (props) => {
88
180
  return renderElement(__spreadProps(__spreadValues({}, props), {
89
181
  element: __spreadProps(__spreadValues({}, props.element), {
@@ -93,20 +185,261 @@ function TextAlignPlugin() {
93
185
  }
94
186
  });
95
187
  }
188
+ const COLOR_KEY = "color";
189
+ function ColorPlugin() {
190
+ return reactPage.createRichTextV2Plugin({
191
+ control: {
192
+ definition: reactPage.unstable_StyleV2({
193
+ type: reactPage.Color({
194
+ label: "Color"
195
+ }),
196
+ getStyle(color) {
197
+ return {
198
+ color
199
+ };
200
+ }
201
+ }),
202
+ onChange: (editor, value) => {
203
+ setResponsiveValue(editor, COLOR_KEY, value, {
204
+ match: slate.Text.isText,
205
+ split: true
206
+ });
207
+ },
208
+ getValue: (editor) => getResponsiveValue(editor, COLOR_KEY, {
209
+ match: slate.Text.isText
210
+ }),
211
+ getLeafValue: (text) => {
212
+ return slate.Text.isText(text) ? text == null ? void 0 : text.color : void 0;
213
+ }
214
+ },
215
+ withPlugin: (editor) => {
216
+ const {
217
+ normalizeNode
218
+ } = editor;
219
+ editor.normalizeNode = (entry) => {
220
+ if (normalizeResponsiveValue(editor, COLOR_KEY, {
221
+ match: slate.Text.isText
222
+ })(entry)) {
223
+ return;
224
+ }
225
+ normalizeNode(entry);
226
+ };
227
+ return editor;
228
+ },
229
+ renderLeaf: (renderLeaf, className) => (props) => {
230
+ return renderLeaf(__spreadProps(__spreadValues({}, props), {
231
+ leaf: __spreadProps(__spreadValues({}, props.leaf), {
232
+ className
233
+ })
234
+ }));
235
+ }
236
+ });
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
+ }
96
423
  exports.TypographyActions = index.TypographyActions;
97
424
  exports.withTypography = index.withTypography;
98
- exports.BlockActions = reactPage.BlockActions;
99
- exports.BlockPlugin = reactPage.BlockPlugin;
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;
100
433
  exports.BlockTextAlignment = reactPage.BlockTextAlignment;
101
434
  exports.BlockType = reactPage.BlockType;
102
435
  exports.InlineType = reactPage.InlineType;
103
- exports.ListActions = reactPage.ListActions;
104
436
  exports.RootBlockType = reactPage.RootBlockType;
105
- exports.onKeyDown = reactPage.onKeyDown;
106
- exports.withBlock = reactPage.withBlock;
107
- exports.InlineModePlugin = index$1.InlineModePlugin;
108
- exports.withInlineMode = index$1.withInlineMode;
109
- exports.withBuilder = index$2.withBuilder;
437
+ exports.COLOR_KEY = COLOR_KEY;
438
+ exports.ColorPlugin = ColorPlugin;
439
+ exports.InlinePlugin = InlinePlugin;
440
+ exports.LinkPlugin = LinkPlugin;
110
441
  exports.TextAlignPlugin = TextAlignPlugin;
111
- exports.definitionWithObject = definitionWithObject;
442
+ exports.withInline = withInline;
443
+ exports.withLink = withLink;
444
+ exports.withTextAlign = withTextAlign;
112
445
  //# sourceMappingURL=slate.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slate.cjs.js","sources":["../src/slate/TextAlignPlugin/index.tsx"],"sourcesContent":["import { Element, Transforms } from 'slate'\nimport {\n ControlDefinitionData,\n Select,\n createRichTextV2Plugin,\n unstable_StyleV2,\n} from '../../controls'\nimport { getBlocksInSelection } from '../selectors'\nimport deepEqual from '../../utils/deepEqual'\nimport { ElementUtils } from '../utils/element'\n\nconst textAlignDefinition = Select({\n options: [\n {\n label: 'Left',\n value: 'left',\n },\n {\n label: 'Center',\n value: 'center',\n },\n {\n label: 'Right',\n value: 'right',\n },\n ],\n defaultValue: 'left',\n})\n\nexport const definitionWithObject = unstable_StyleV2({\n type: textAlignDefinition,\n getStyle(textAlign: ControlDefinitionData<typeof textAlignDefinition>) {\n return { textAlign }\n },\n})\n\nexport function TextAlignPlugin() {\n return createRichTextV2Plugin({\n control: {\n definition: definitionWithObject,\n onChange: (editor, value) => {\n const rootElements = getBlocksInSelection(editor)\n\n for (const [node, path] of rootElements) {\n if (ElementUtils.isBlock(node)) {\n Transforms.setNodes(\n editor,\n {\n ['textAlign']: value,\n },\n { at: path },\n )\n }\n }\n },\n getValue: editor => {\n const blocks = getBlocksInSelection(editor).map(([block]) => {\n return block.textAlign\n })\n\n const value =\n blocks.length === 0\n ? undefined\n : blocks.reduce((a, b) => (deepEqual(a, b) ? b : undefined))\n\n return value\n },\n getElementValue: (element: Element) => {\n return ElementUtils.isRootBlock(element) ? element.textAlign : undefined\n },\n },\n renderElement: (renderElement, className) => props => {\n return renderElement({\n ...props,\n element: {\n ...props.element,\n className,\n },\n })\n },\n })\n}\n"],"names":["textAlignDefinition","Select","options","label","value","defaultValue","definitionWithObject","unstable_StyleV2","type","getStyle","textAlign","createRichTextV2Plugin","control","definition","onChange","editor","rootElements","getBlocksInSelection","node","path","ElementUtils","isBlock","Transforms","setNodes","at","getValue","blocks","map","block","length","undefined","reduce","a","b","deepEqual","getElementValue","element","isRootBlock","renderElement","className","props"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAMA,sBAAsBC,UAAAA,OAAO;AAAA,EACjCC,SAAS,CACP;AAAA,IACEC,OAAO;AAAA,IACPC,OAAO;AAAA,EAAA,GAET;AAAA,IACED,OAAO;AAAA,IACPC,OAAO;AAAA,EAAA,GAET;AAAA,IACED,OAAO;AAAA,IACPC,OAAO;AAAA,EAAA,CAXF;AAAA,EAcTC,cAAc;AAfmB,CAAD;AAkB3B,MAAMC,uBAAuBC,UAAAA,iBAAiB;AAAA,EACnDC,MAAMR;AAAAA,EACNS,SAASC,WAA8D;AAC9D,WAAA;AAAA,MAAEA;AAAAA,IAAAA;AAAAA,EACV;AAJkD,CAAD;AAOlB,2BAAA;AAChC,SAAOC,iCAAuB;AAAA,IAC5BC,SAAS;AAAA,MACPC,YAAYP;AAAAA,MACZQ,UAAU,CAACC,QAAQX,UAAU;AACrBY,cAAAA,eAAeC,+BAAqBF,MAAD;AAE9B,mBAAA,CAACG,MAAMC,SAASH,cAAc;AACnCI,cAAAA,UAAAA,aAAaC,QAAQH,IAArB,GAA4B;AAC9BI,kBAAAA,WAAWC,SACTR,QACA;AAAA,eACG,cAAcX;AAAAA,YAAAA,GAEjB;AAAA,cAAEoB,IAAIL;AAAAA,YAAAA,CALR;AAAA,UAOD;AAAA,QACF;AAAA,MAfI;AAAA,MAiBPM,UAAUV,CAAU,WAAA;AAClB,cAAMW,SAAST,UAAAA,qBAAqBF,MAAD,EAASY,IAAI,CAAC,CAACC,WAAW;AACpDA,iBAAAA,MAAMlB;AAAAA,QAAAA,CADA;AAIf,cAAMN,QACJsB,OAAOG,WAAW,IACdC,SACAJ,OAAOK,OAAO,CAACC,GAAGC,MAAOC,UAAAA,UAAUF,GAAGC,CAAJ,IAASA,IAAIH,MAA/C;AAEC1B,eAAAA;AAAAA,MA3BF;AAAA,MA6BP+B,iBAAiB,CAACC,YAAqB;AAC9BhB,eAAAA,UAAAA,aAAaiB,YAAYD,OAAzB,IAAoCA,QAAQ1B,YAAYoB;AAAAA,MAChE;AAAA,IAhCyB;AAAA,IAkC5BQ,eAAe,CAACA,eAAeC,cAAcC,CAAS,UAAA;AACpD,aAAOF,cAAc,iCAChBE,QADgB;AAAA,QAEnBJ,SAAS,iCACJI,MAAMJ,UADF;AAAA,UAEPG;AAAAA,QAFO;AAAA,MAAA,EAFS;AAAA,IAOrB;AAAA,EAAA,CA1C0B;AA4C9B;;;;;;;;;;;;;;;;;"}
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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"}