@makeswift/runtime 0.19.4 → 0.20.0-canary.0

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 (889) hide show
  1. package/builder/rich-text/package.json +5 -0
  2. package/core/package.json +5 -0
  3. package/dist/cjs/api/graphql/generated/types.js.map +1 -1
  4. package/dist/cjs/api/react.js.map +1 -1
  5. package/dist/cjs/{prop-controllers/base.js → builder/rich-text/index.js} +7 -12
  6. package/dist/cjs/builder/rich-text/index.js.map +1 -0
  7. package/dist/cjs/builder/serialization/control-serialization.js +51 -27
  8. package/dist/cjs/builder/serialization/control-serialization.js.map +1 -1
  9. package/dist/cjs/components/builtin/Button/Button.js.map +1 -1
  10. package/dist/cjs/components/builtin/Carousel/Carousel.js +2 -2
  11. package/dist/cjs/components/builtin/Carousel/Carousel.js.map +1 -1
  12. package/dist/cjs/components/builtin/Countdown/Countdown.js.map +1 -1
  13. package/dist/cjs/components/builtin/Divider/Divider.js.map +1 -1
  14. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  15. package/dist/cjs/components/builtin/Form/context/FormContext.js.map +1 -1
  16. package/dist/cjs/components/builtin/Image/Image.js +2 -2
  17. package/dist/cjs/components/builtin/Image/Image.js.map +1 -1
  18. package/dist/cjs/components/builtin/Navigation/Navigation.js.map +1 -1
  19. package/dist/cjs/components/builtin/Navigation/components/MobileMenu/index.js.map +1 -1
  20. package/dist/cjs/components/builtin/SocialLinks/SocialLinks.js.map +1 -1
  21. package/dist/cjs/components/builtin/Text/register.js.map +1 -1
  22. package/dist/cjs/components/builtin/register.js.map +1 -1
  23. package/dist/cjs/components/hooks/useMediaQuery.js +2 -2
  24. package/dist/cjs/components/hooks/useMediaQuery.js.map +1 -1
  25. package/dist/cjs/components/hooks/useResponsiveColor.js +1 -1
  26. package/dist/cjs/components/hooks/useResponsiveColor.js.map +1 -1
  27. package/dist/cjs/components/shared/Link/index.js +2 -2
  28. package/dist/cjs/components/shared/Link/index.js.map +1 -1
  29. package/dist/cjs/components/utils/responsive-style.js +9 -9
  30. package/dist/cjs/components/utils/responsive-style.js.map +1 -1
  31. package/dist/cjs/components/utils/types.js.map +1 -1
  32. package/dist/cjs/controls/control.js +14 -78
  33. package/dist/cjs/controls/control.js.map +1 -1
  34. package/dist/cjs/controls/index.js +99 -21
  35. package/dist/cjs/controls/index.js.map +1 -1
  36. package/dist/cjs/controls/{image.js → link.js} +20 -11
  37. package/dist/cjs/controls/link.js.map +1 -0
  38. package/dist/cjs/controls/rich-text/control.js +97 -0
  39. package/dist/cjs/controls/rich-text/control.js.map +1 -0
  40. package/dist/cjs/controls/rich-text/index.js +1 -7
  41. package/dist/cjs/controls/rich-text/index.js.map +1 -1
  42. package/dist/cjs/controls/rich-text/rich-text.js +16 -69
  43. package/dist/cjs/controls/rich-text/rich-text.js.map +1 -1
  44. package/dist/cjs/controls/rich-text-v2/control.js +138 -0
  45. package/dist/cjs/controls/rich-text-v2/control.js.map +1 -0
  46. package/dist/cjs/controls/rich-text-v2/index.js +1 -5
  47. package/dist/cjs/controls/rich-text-v2/index.js.map +1 -1
  48. package/dist/cjs/controls/rich-text-v2/plugin.js +3 -3
  49. package/dist/cjs/controls/rich-text-v2/plugin.js.map +1 -1
  50. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js +105 -121
  51. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  52. package/dist/cjs/controls/rich-text-v2/translation.js +35 -48
  53. package/dist/cjs/controls/rich-text-v2/translation.js.map +1 -1
  54. package/dist/cjs/controls/slot.js +13 -59
  55. package/dist/cjs/controls/slot.js.map +1 -1
  56. package/dist/cjs/controls/{rich-text/fixtures → style-v2}/index.js +4 -8
  57. package/dist/cjs/controls/style-v2/index.js.map +1 -0
  58. package/dist/cjs/controls/style-v2/style-v2.js +50 -0
  59. package/dist/cjs/controls/style-v2/style-v2.js.map +1 -0
  60. package/dist/cjs/{controls/select.js → core/index.js} +11 -12
  61. package/dist/cjs/core/index.js.map +1 -0
  62. package/dist/cjs/jest-setup.js +3 -0
  63. package/dist/cjs/jest-setup.js.map +1 -1
  64. package/dist/cjs/next/api-handler/handlers/manifest.js +1 -1
  65. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js +18 -5
  66. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  67. package/dist/cjs/prop-controllers/copy.js +20 -18
  68. package/dist/cjs/prop-controllers/copy.js.map +1 -1
  69. package/dist/cjs/prop-controllers/deleted.js.map +1 -1
  70. package/dist/cjs/prop-controllers/descriptors.js +6 -6
  71. package/dist/cjs/prop-controllers/descriptors.js.map +1 -1
  72. package/dist/cjs/prop-controllers/index.js +0 -2
  73. package/dist/cjs/prop-controllers/index.js.map +1 -1
  74. package/dist/cjs/prop-controllers/instances.js +12 -90
  75. package/dist/cjs/prop-controllers/instances.js.map +1 -1
  76. package/dist/cjs/prop-controllers/introspection.js +26 -97
  77. package/dist/cjs/prop-controllers/introspection.js.map +1 -1
  78. package/dist/cjs/runtimes/react/components/Element.js.map +1 -1
  79. package/dist/cjs/runtimes/react/components/ElementData.js +24 -3
  80. package/dist/cjs/runtimes/react/components/ElementData.js.map +1 -1
  81. package/dist/cjs/runtimes/react/controls/checkbox.js +1 -4
  82. package/dist/cjs/runtimes/react/controls/checkbox.js.map +1 -1
  83. package/dist/cjs/runtimes/react/controls/color.js.map +1 -1
  84. package/dist/cjs/runtimes/react/controls/combobox.js.map +1 -1
  85. package/dist/cjs/runtimes/react/controls/control.js +48 -39
  86. package/dist/cjs/runtimes/react/controls/control.js.map +1 -1
  87. package/dist/cjs/runtimes/react/controls/icon-radio-group.js.map +1 -1
  88. package/dist/cjs/runtimes/react/controls/image.js +6 -10
  89. package/dist/cjs/runtimes/react/controls/image.js.map +1 -1
  90. package/dist/cjs/runtimes/react/controls/link.js.map +1 -1
  91. package/dist/cjs/runtimes/react/controls/list.js +3 -1
  92. package/dist/cjs/runtimes/react/controls/list.js.map +1 -1
  93. package/dist/cjs/runtimes/react/controls/number.js +1 -4
  94. package/dist/cjs/runtimes/react/controls/number.js.map +1 -1
  95. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/editable-text.js +4 -2
  96. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/editable-text.js.map +1 -1
  97. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js +1 -1
  98. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js.map +1 -1
  99. package/dist/cjs/runtimes/react/controls/rich-text/ReadOnlyText.js +2 -7
  100. package/dist/cjs/runtimes/react/controls/rich-text/ReadOnlyText.js.map +1 -1
  101. package/dist/cjs/runtimes/react/controls/rich-text/components/Element/block.js +14 -14
  102. package/dist/cjs/runtimes/react/controls/rich-text/components/Element/block.js.map +1 -1
  103. package/dist/cjs/runtimes/react/controls/rich-text/components/Element/element.js +7 -23
  104. package/dist/cjs/runtimes/react/controls/rich-text/components/Element/element.js.map +1 -1
  105. package/dist/cjs/runtimes/react/controls/rich-text/components/Element/inline.js +1 -1
  106. package/dist/cjs/runtimes/react/controls/rich-text/components/Element/inline.js.map +1 -1
  107. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  108. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.js +3 -16
  109. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.js.map +1 -1
  110. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.js.map +1 -1
  111. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.js.map +1 -1
  112. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js +8 -8
  113. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js.map +1 -1
  114. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.js +2 -2
  115. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.js.map +1 -1
  116. package/dist/cjs/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.js +7 -13
  117. package/dist/cjs/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.js.map +1 -1
  118. package/dist/cjs/runtimes/react/controls/rich-text-v2/rich-text-v2.js +2 -2
  119. package/dist/cjs/runtimes/react/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  120. package/dist/cjs/runtimes/react/controls/select.js +1 -1
  121. package/dist/cjs/runtimes/react/controls/select.js.map +1 -1
  122. package/dist/cjs/runtimes/react/controls/shape.js +2 -7
  123. package/dist/cjs/runtimes/react/controls/shape.js.map +1 -1
  124. package/dist/cjs/runtimes/react/controls/slot.js +13 -5
  125. package/dist/cjs/runtimes/react/controls/slot.js.map +1 -1
  126. package/dist/cjs/runtimes/react/controls/style-v2.js +6 -11
  127. package/dist/cjs/runtimes/react/controls/style-v2.js.map +1 -1
  128. package/dist/cjs/runtimes/react/controls/style.js +8 -8
  129. package/dist/cjs/runtimes/react/controls/style.js.map +1 -1
  130. package/dist/cjs/runtimes/react/controls/text-area.js +1 -4
  131. package/dist/cjs/runtimes/react/controls/text-area.js.map +1 -1
  132. package/dist/cjs/runtimes/react/controls/text-input.js +1 -4
  133. package/dist/cjs/runtimes/react/controls/text-input.js.map +1 -1
  134. package/dist/cjs/runtimes/react/controls/typography.js.map +1 -1
  135. package/dist/cjs/runtimes/react/controls.js +79 -73
  136. package/dist/cjs/runtimes/react/controls.js.map +1 -1
  137. package/dist/cjs/runtimes/react/hooks/use-store.js +2 -2
  138. package/dist/cjs/runtimes/react/hooks/use-store.js.map +1 -1
  139. package/dist/cjs/runtimes/react/poll-box-model.js +1 -1
  140. package/dist/cjs/runtimes/react/poll-box-model.js.map +1 -1
  141. package/dist/cjs/runtimes/react/react-runtime.js +3 -32
  142. package/dist/cjs/runtimes/react/react-runtime.js.map +1 -1
  143. package/dist/cjs/runtimes/react/runtime-core.js +67 -0
  144. package/dist/cjs/runtimes/react/runtime-core.js.map +1 -0
  145. package/dist/cjs/slate/BlockPlugin/clearBlockKeyForDevice.js +2 -2
  146. package/dist/cjs/slate/BlockPlugin/clearBlockKeyForDevice.js.map +1 -1
  147. package/dist/cjs/slate/BlockPlugin/indent.js +3 -2
  148. package/dist/cjs/slate/BlockPlugin/indent.js.map +1 -1
  149. package/dist/cjs/slate/BlockPlugin/index.js +17 -15
  150. package/dist/cjs/slate/BlockPlugin/index.js.map +1 -1
  151. package/dist/cjs/slate/BlockPlugin/setBlockKeyForDevice.js +2 -2
  152. package/dist/cjs/slate/BlockPlugin/setBlockKeyForDevice.js.map +1 -1
  153. package/dist/cjs/slate/BlockPlugin/toggleList.js +2 -2
  154. package/dist/cjs/slate/BlockPlugin/toggleList.js.map +1 -1
  155. package/dist/cjs/slate/BlockPlugin/types.js.map +1 -1
  156. package/dist/cjs/slate/BlockPlugin/unwrapInline.js +2 -2
  157. package/dist/cjs/slate/BlockPlugin/unwrapInline.js.map +1 -1
  158. package/dist/cjs/slate/BlockPlugin/unwrapList.js +3 -4
  159. package/dist/cjs/slate/BlockPlugin/unwrapList.js.map +1 -1
  160. package/dist/cjs/slate/BlockPlugin/utils/getSelectedListItems.js +2 -2
  161. package/dist/cjs/slate/BlockPlugin/utils/getSelectedListItems.js.map +1 -1
  162. package/dist/cjs/slate/BlockPlugin/wrapInline.js.map +1 -1
  163. package/dist/cjs/slate/BlockPlugin/wrapList.js +4 -3
  164. package/dist/cjs/slate/BlockPlugin/wrapList.js.map +1 -1
  165. package/dist/cjs/slate/BuilderPlugin/index.js +3 -3
  166. package/dist/cjs/slate/BuilderPlugin/index.js.map +1 -1
  167. package/dist/cjs/slate/InlineModePlugin/index.js +4 -5
  168. package/dist/cjs/slate/InlineModePlugin/index.js.map +1 -1
  169. package/dist/cjs/slate/InlinePlugin/getValue.js +4 -4
  170. package/dist/cjs/slate/InlinePlugin/getValue.js.map +1 -1
  171. package/dist/cjs/slate/InlinePlugin/index.js +10 -14
  172. package/dist/cjs/slate/InlinePlugin/index.js.map +1 -1
  173. package/dist/cjs/slate/InlinePlugin/onChange.js +3 -3
  174. package/dist/cjs/slate/InlinePlugin/onChange.js.map +1 -1
  175. package/dist/cjs/slate/InlinePlugin/types.js +9 -6
  176. package/dist/cjs/slate/InlinePlugin/types.js.map +1 -1
  177. package/dist/cjs/slate/LinkPlugin/getValue.js +4 -5
  178. package/dist/cjs/slate/LinkPlugin/getValue.js.map +1 -1
  179. package/dist/cjs/slate/LinkPlugin/index.js +8 -10
  180. package/dist/cjs/slate/LinkPlugin/index.js.map +1 -1
  181. package/dist/cjs/slate/LinkPlugin/onChange.js +6 -6
  182. package/dist/cjs/slate/LinkPlugin/onChange.js.map +1 -1
  183. package/dist/cjs/slate/LinkPlugin/types.js +3 -8
  184. package/dist/cjs/slate/LinkPlugin/types.js.map +1 -1
  185. package/dist/cjs/slate/TextAlignPlugin/getValue.js +2 -2
  186. package/dist/cjs/slate/TextAlignPlugin/getValue.js.map +1 -1
  187. package/dist/cjs/slate/TextAlignPlugin/index.js +12 -12
  188. package/dist/cjs/slate/TextAlignPlugin/index.js.map +1 -1
  189. package/dist/cjs/slate/TypographyPlugin/clearActiveTypographyStyle.js.map +1 -1
  190. package/dist/cjs/slate/TypographyPlugin/clearDeviceActiveTypography.js.map +1 -1
  191. package/dist/cjs/slate/TypographyPlugin/detachActiveTypography.js.map +1 -1
  192. package/dist/cjs/slate/TypographyPlugin/getValue.js.map +1 -1
  193. package/dist/cjs/slate/TypographyPlugin/index.js +4 -4
  194. package/dist/cjs/slate/TypographyPlugin/index.js.map +1 -1
  195. package/dist/cjs/slate/TypographyPlugin/normalizeTypographyDown.js.map +1 -1
  196. package/dist/cjs/slate/TypographyPlugin/normalizeTypographyUp.js +6 -3
  197. package/dist/cjs/slate/TypographyPlugin/normalizeTypographyUp.js.map +1 -1
  198. package/dist/cjs/slate/TypographyPlugin/setActiveTypographyStyle.js.map +1 -1
  199. package/dist/cjs/slate/index.js +8 -8
  200. package/dist/cjs/slate/index.js.map +1 -1
  201. package/dist/cjs/slate/selectors.js +15 -12
  202. package/dist/cjs/slate/selectors.js.map +1 -1
  203. package/dist/cjs/slate/types.js +5 -36
  204. package/dist/cjs/slate/types.js.map +1 -1
  205. package/dist/cjs/slate/utils/editor.js +3 -3
  206. package/dist/cjs/slate/utils/editor.js.map +1 -1
  207. package/dist/cjs/slate/utils/element.js +5 -27
  208. package/dist/cjs/slate/utils/element.js.map +1 -1
  209. package/dist/cjs/slate/utils/responsive.js.map +1 -1
  210. package/dist/cjs/slate/utils/toText.js +16 -52
  211. package/dist/cjs/slate/utils/toText.js.map +1 -1
  212. package/dist/cjs/state/actions.js.map +1 -1
  213. package/dist/cjs/state/modules/box-models.js.map +1 -1
  214. package/dist/cjs/state/modules/breakpoints.js +1 -1
  215. package/dist/cjs/state/modules/breakpoints.js.map +1 -1
  216. package/dist/cjs/state/modules/prop-controller-handles.js.map +1 -1
  217. package/dist/cjs/state/modules/read-only-documents.js +2 -4
  218. package/dist/cjs/state/modules/read-only-documents.js.map +1 -1
  219. package/dist/cjs/state/react-builder-preview.js +10 -7
  220. package/dist/cjs/state/react-builder-preview.js.map +1 -1
  221. package/dist/cjs/state/react-page.js +10 -41
  222. package/dist/cjs/state/react-page.js.map +1 -1
  223. package/dist/esm/api/graphql/generated/types.js.map +1 -1
  224. package/dist/esm/api/react.js.map +1 -1
  225. package/dist/esm/builder/rich-text/index.js +5 -0
  226. package/dist/esm/builder/rich-text/index.js.map +1 -0
  227. package/dist/esm/builder/serialization/control-serialization.js +66 -37
  228. package/dist/esm/builder/serialization/control-serialization.js.map +1 -1
  229. package/dist/esm/components/builtin/Button/Button.js.map +1 -1
  230. package/dist/esm/components/builtin/Carousel/Carousel.js +1 -1
  231. package/dist/esm/components/builtin/Carousel/Carousel.js.map +1 -1
  232. package/dist/esm/components/builtin/Countdown/Countdown.js.map +1 -1
  233. package/dist/esm/components/builtin/Divider/Divider.js.map +1 -1
  234. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  235. package/dist/esm/components/builtin/Form/context/FormContext.js.map +1 -1
  236. package/dist/esm/components/builtin/Image/Image.js +1 -1
  237. package/dist/esm/components/builtin/Image/Image.js.map +1 -1
  238. package/dist/esm/components/builtin/Navigation/Navigation.js.map +1 -1
  239. package/dist/esm/components/builtin/Navigation/components/MobileMenu/index.js.map +1 -1
  240. package/dist/esm/components/builtin/SocialLinks/SocialLinks.js.map +1 -1
  241. package/dist/esm/components/builtin/Text/register.js.map +1 -1
  242. package/dist/esm/components/builtin/register.js.map +1 -1
  243. package/dist/esm/components/hooks/useMediaQuery.js +1 -1
  244. package/dist/esm/components/hooks/useMediaQuery.js.map +1 -1
  245. package/dist/esm/components/hooks/useResponsiveColor.js +3 -1
  246. package/dist/esm/components/hooks/useResponsiveColor.js.map +1 -1
  247. package/dist/esm/components/shared/Link/index.js +1 -1
  248. package/dist/esm/components/shared/Link/index.js.map +1 -1
  249. package/dist/esm/components/utils/responsive-style.js +1 -1
  250. package/dist/esm/components/utils/responsive-style.js.map +1 -1
  251. package/dist/esm/controls/control.js +14 -109
  252. package/dist/esm/controls/control.js.map +1 -1
  253. package/dist/esm/controls/index.js +82 -10
  254. package/dist/esm/controls/index.js.map +1 -1
  255. package/dist/esm/controls/link.js +18 -0
  256. package/dist/esm/controls/link.js.map +1 -0
  257. package/dist/esm/controls/rich-text/control.js +76 -0
  258. package/dist/esm/controls/rich-text/control.js.map +1 -0
  259. package/dist/esm/controls/rich-text/index.js +0 -3
  260. package/dist/esm/controls/rich-text/index.js.map +1 -1
  261. package/dist/esm/controls/rich-text/rich-text.js +14 -66
  262. package/dist/esm/controls/rich-text/rich-text.js.map +1 -1
  263. package/dist/esm/controls/rich-text-v2/control.js +117 -0
  264. package/dist/esm/controls/rich-text-v2/control.js.map +1 -0
  265. package/dist/esm/controls/rich-text-v2/index.js +0 -2
  266. package/dist/esm/controls/rich-text-v2/index.js.map +1 -1
  267. package/dist/esm/controls/rich-text-v2/plugin.js +2 -2
  268. package/dist/esm/controls/rich-text-v2/plugin.js.map +1 -1
  269. package/dist/esm/controls/rich-text-v2/rich-text-v2.js +111 -116
  270. package/dist/esm/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  271. package/dist/esm/controls/rich-text-v2/translation.js +33 -46
  272. package/dist/esm/controls/rich-text-v2/translation.js.map +1 -1
  273. package/dist/esm/controls/slot.js +13 -54
  274. package/dist/esm/controls/slot.js.map +1 -1
  275. package/dist/esm/controls/style-v2/index.js +2 -0
  276. package/dist/esm/controls/style-v2/index.js.map +1 -0
  277. package/dist/esm/controls/style-v2/style-v2.js +28 -0
  278. package/dist/esm/controls/style-v2/style-v2.js.map +1 -0
  279. package/dist/esm/core/index.js +11 -0
  280. package/dist/esm/core/index.js.map +1 -0
  281. package/dist/esm/jest-setup.js +3 -0
  282. package/dist/esm/jest-setup.js.map +1 -1
  283. package/dist/esm/next/api-handler/handlers/manifest.js +1 -1
  284. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js +19 -6
  285. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  286. package/dist/esm/prop-controllers/copy.js +7 -5
  287. package/dist/esm/prop-controllers/copy.js.map +1 -1
  288. package/dist/esm/prop-controllers/deleted.js.map +1 -1
  289. package/dist/esm/prop-controllers/descriptors.js +7 -5
  290. package/dist/esm/prop-controllers/descriptors.js.map +1 -1
  291. package/dist/esm/prop-controllers/index.js +1 -2
  292. package/dist/esm/prop-controllers/index.js.map +1 -1
  293. package/dist/esm/prop-controllers/instances.js +15 -107
  294. package/dist/esm/prop-controllers/instances.js.map +1 -1
  295. package/dist/esm/prop-controllers/introspection.js +28 -131
  296. package/dist/esm/prop-controllers/introspection.js.map +1 -1
  297. package/dist/esm/runtimes/react/components/Element.js.map +1 -1
  298. package/dist/esm/runtimes/react/components/ElementData.js +24 -3
  299. package/dist/esm/runtimes/react/components/ElementData.js.map +1 -1
  300. package/dist/esm/runtimes/react/controls/checkbox.js +1 -7
  301. package/dist/esm/runtimes/react/controls/checkbox.js.map +1 -1
  302. package/dist/esm/runtimes/react/controls/color.js.map +1 -1
  303. package/dist/esm/runtimes/react/controls/combobox.js.map +1 -1
  304. package/dist/esm/runtimes/react/controls/control.js +66 -58
  305. package/dist/esm/runtimes/react/controls/control.js.map +1 -1
  306. package/dist/esm/runtimes/react/controls/icon-radio-group.js.map +1 -1
  307. package/dist/esm/runtimes/react/controls/image.js +6 -12
  308. package/dist/esm/runtimes/react/controls/image.js.map +1 -1
  309. package/dist/esm/runtimes/react/controls/link.js.map +1 -1
  310. package/dist/esm/runtimes/react/controls/list.js +3 -1
  311. package/dist/esm/runtimes/react/controls/list.js.map +1 -1
  312. package/dist/esm/runtimes/react/controls/number.js +1 -7
  313. package/dist/esm/runtimes/react/controls/number.js.map +1 -1
  314. package/dist/esm/runtimes/react/controls/rich-text/EditableText/editable-text.js +7 -11
  315. package/dist/esm/runtimes/react/controls/rich-text/EditableText/editable-text.js.map +1 -1
  316. package/dist/esm/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js +1 -1
  317. package/dist/esm/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js.map +1 -1
  318. package/dist/esm/runtimes/react/controls/rich-text/ReadOnlyText.js +2 -7
  319. package/dist/esm/runtimes/react/controls/rich-text/ReadOnlyText.js.map +1 -1
  320. package/dist/esm/runtimes/react/controls/rich-text/components/Element/block.js +1 -1
  321. package/dist/esm/runtimes/react/controls/rich-text/components/Element/block.js.map +1 -1
  322. package/dist/esm/runtimes/react/controls/rich-text/components/Element/element.js +7 -23
  323. package/dist/esm/runtimes/react/controls/rich-text/components/Element/element.js.map +1 -1
  324. package/dist/esm/runtimes/react/controls/rich-text/components/Element/inline.js +1 -1
  325. package/dist/esm/runtimes/react/controls/rich-text/components/Element/inline.js.map +1 -1
  326. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  327. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.js +5 -27
  328. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.js.map +1 -1
  329. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.js.map +1 -1
  330. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.js.map +1 -1
  331. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js +7 -7
  332. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js.map +1 -1
  333. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.js +2 -2
  334. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.js.map +1 -1
  335. package/dist/esm/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.js +9 -25
  336. package/dist/esm/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.js.map +1 -1
  337. package/dist/esm/runtimes/react/controls/rich-text-v2/rich-text-v2.js +2 -4
  338. package/dist/esm/runtimes/react/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  339. package/dist/esm/runtimes/react/controls/select.js +1 -1
  340. package/dist/esm/runtimes/react/controls/select.js.map +1 -1
  341. package/dist/esm/runtimes/react/controls/shape.js +2 -7
  342. package/dist/esm/runtimes/react/controls/shape.js.map +1 -1
  343. package/dist/esm/runtimes/react/controls/slot.js +14 -6
  344. package/dist/esm/runtimes/react/controls/slot.js.map +1 -1
  345. package/dist/esm/runtimes/react/controls/style-v2.js +6 -11
  346. package/dist/esm/runtimes/react/controls/style-v2.js.map +1 -1
  347. package/dist/esm/runtimes/react/controls/style.js +10 -10
  348. package/dist/esm/runtimes/react/controls/style.js.map +1 -1
  349. package/dist/esm/runtimes/react/controls/text-area.js +1 -7
  350. package/dist/esm/runtimes/react/controls/text-area.js.map +1 -1
  351. package/dist/esm/runtimes/react/controls/text-input.js +1 -7
  352. package/dist/esm/runtimes/react/controls/text-input.js.map +1 -1
  353. package/dist/esm/runtimes/react/controls/typography.js.map +1 -1
  354. package/dist/esm/runtimes/react/controls.js +96 -91
  355. package/dist/esm/runtimes/react/controls.js.map +1 -1
  356. package/dist/esm/runtimes/react/hooks/use-store.js +2 -2
  357. package/dist/esm/runtimes/react/hooks/use-store.js.map +1 -1
  358. package/dist/esm/runtimes/react/poll-box-model.js +1 -1
  359. package/dist/esm/runtimes/react/poll-box-model.js.map +1 -1
  360. package/dist/esm/runtimes/react/react-runtime.js +3 -40
  361. package/dist/esm/runtimes/react/react-runtime.js.map +1 -1
  362. package/dist/esm/runtimes/react/runtime-core.js +51 -0
  363. package/dist/esm/runtimes/react/runtime-core.js.map +1 -0
  364. package/dist/esm/slate/BlockPlugin/clearBlockKeyForDevice.js +2 -2
  365. package/dist/esm/slate/BlockPlugin/clearBlockKeyForDevice.js.map +1 -1
  366. package/dist/esm/slate/BlockPlugin/indent.js +3 -2
  367. package/dist/esm/slate/BlockPlugin/indent.js.map +1 -1
  368. package/dist/esm/slate/BlockPlugin/index.js +17 -15
  369. package/dist/esm/slate/BlockPlugin/index.js.map +1 -1
  370. package/dist/esm/slate/BlockPlugin/setBlockKeyForDevice.js +2 -2
  371. package/dist/esm/slate/BlockPlugin/setBlockKeyForDevice.js.map +1 -1
  372. package/dist/esm/slate/BlockPlugin/toggleList.js +2 -2
  373. package/dist/esm/slate/BlockPlugin/toggleList.js.map +1 -1
  374. package/dist/esm/slate/BlockPlugin/unwrapInline.js +2 -2
  375. package/dist/esm/slate/BlockPlugin/unwrapInline.js.map +1 -1
  376. package/dist/esm/slate/BlockPlugin/unwrapList.js +3 -4
  377. package/dist/esm/slate/BlockPlugin/unwrapList.js.map +1 -1
  378. package/dist/esm/slate/BlockPlugin/utils/getSelectedListItems.js +2 -2
  379. package/dist/esm/slate/BlockPlugin/utils/getSelectedListItems.js.map +1 -1
  380. package/dist/esm/slate/BlockPlugin/wrapInline.js.map +1 -1
  381. package/dist/esm/slate/BlockPlugin/wrapList.js +4 -3
  382. package/dist/esm/slate/BlockPlugin/wrapList.js.map +1 -1
  383. package/dist/esm/slate/BuilderPlugin/index.js +3 -3
  384. package/dist/esm/slate/BuilderPlugin/index.js.map +1 -1
  385. package/dist/esm/slate/InlineModePlugin/index.js +5 -6
  386. package/dist/esm/slate/InlineModePlugin/index.js.map +1 -1
  387. package/dist/esm/slate/InlinePlugin/getValue.js +4 -4
  388. package/dist/esm/slate/InlinePlugin/getValue.js.map +1 -1
  389. package/dist/esm/slate/InlinePlugin/index.js +9 -13
  390. package/dist/esm/slate/InlinePlugin/index.js.map +1 -1
  391. package/dist/esm/slate/InlinePlugin/onChange.js +3 -3
  392. package/dist/esm/slate/InlinePlugin/onChange.js.map +1 -1
  393. package/dist/esm/slate/InlinePlugin/types.js +9 -7
  394. package/dist/esm/slate/InlinePlugin/types.js.map +1 -1
  395. package/dist/esm/slate/LinkPlugin/getValue.js +4 -5
  396. package/dist/esm/slate/LinkPlugin/getValue.js.map +1 -1
  397. package/dist/esm/slate/LinkPlugin/index.js +8 -10
  398. package/dist/esm/slate/LinkPlugin/index.js.map +1 -1
  399. package/dist/esm/slate/LinkPlugin/onChange.js +4 -4
  400. package/dist/esm/slate/LinkPlugin/onChange.js.map +1 -1
  401. package/dist/esm/slate/LinkPlugin/types.js +3 -7
  402. package/dist/esm/slate/LinkPlugin/types.js.map +1 -1
  403. package/dist/esm/slate/TextAlignPlugin/getValue.js +2 -2
  404. package/dist/esm/slate/TextAlignPlugin/getValue.js.map +1 -1
  405. package/dist/esm/slate/TextAlignPlugin/index.js +12 -16
  406. package/dist/esm/slate/TextAlignPlugin/index.js.map +1 -1
  407. package/dist/esm/slate/TypographyPlugin/clearActiveTypographyStyle.js.map +1 -1
  408. package/dist/esm/slate/TypographyPlugin/clearDeviceActiveTypography.js.map +1 -1
  409. package/dist/esm/slate/TypographyPlugin/detachActiveTypography.js.map +1 -1
  410. package/dist/esm/slate/TypographyPlugin/getValue.js.map +1 -1
  411. package/dist/esm/slate/TypographyPlugin/index.js +5 -5
  412. package/dist/esm/slate/TypographyPlugin/index.js.map +1 -1
  413. package/dist/esm/slate/TypographyPlugin/normalizeTypographyDown.js.map +1 -1
  414. package/dist/esm/slate/TypographyPlugin/normalizeTypographyUp.js +6 -3
  415. package/dist/esm/slate/TypographyPlugin/normalizeTypographyUp.js.map +1 -1
  416. package/dist/esm/slate/TypographyPlugin/setActiveTypographyStyle.js.map +1 -1
  417. package/dist/esm/slate/index.js +4 -4
  418. package/dist/esm/slate/index.js.map +1 -1
  419. package/dist/esm/slate/selectors.js +15 -12
  420. package/dist/esm/slate/selectors.js.map +1 -1
  421. package/dist/esm/slate/types.js +4 -33
  422. package/dist/esm/slate/types.js.map +1 -1
  423. package/dist/esm/slate/utils/editor.js +3 -3
  424. package/dist/esm/slate/utils/editor.js.map +1 -1
  425. package/dist/esm/slate/utils/element.js +5 -30
  426. package/dist/esm/slate/utils/element.js.map +1 -1
  427. package/dist/esm/slate/utils/responsive.js.map +1 -1
  428. package/dist/esm/slate/utils/toText.js +16 -52
  429. package/dist/esm/slate/utils/toText.js.map +1 -1
  430. package/dist/esm/state/actions.js.map +1 -1
  431. package/dist/esm/state/modules/box-models.js.map +1 -1
  432. package/dist/esm/state/modules/breakpoints.js +1 -1
  433. package/dist/esm/state/modules/breakpoints.js.map +1 -1
  434. package/dist/esm/state/modules/prop-controller-handles.js.map +1 -1
  435. package/dist/esm/state/modules/read-only-documents.js +3 -3
  436. package/dist/esm/state/modules/read-only-documents.js.map +1 -1
  437. package/dist/esm/state/react-builder-preview.js +10 -7
  438. package/dist/esm/state/react-builder-preview.js.map +1 -1
  439. package/dist/esm/state/react-page.js +13 -41
  440. package/dist/esm/state/react-page.js.map +1 -1
  441. package/dist/types/api/graphql/generated/types.d.ts +1 -1
  442. package/dist/types/api/graphql/generated/types.d.ts.map +1 -1
  443. package/dist/types/api/react.d.ts +1 -1
  444. package/dist/types/builder/rich-text/index.d.ts +3 -0
  445. package/dist/types/builder/rich-text/index.d.ts.map +1 -0
  446. package/dist/types/builder/serialization/control-serialization.d.ts +12 -7
  447. package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -1
  448. package/dist/types/components/builtin/Box/Box.d.ts +23 -1
  449. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  450. package/dist/types/components/builtin/Button/Button.d.ts +3 -3
  451. package/dist/types/components/builtin/Button/Button.d.ts.map +1 -1
  452. package/dist/types/components/builtin/Carousel/Carousel.d.ts +1 -1
  453. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  454. package/dist/types/components/builtin/Countdown/Countdown.d.ts +1 -1
  455. package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -1
  456. package/dist/types/components/builtin/Divider/Divider.d.ts +1 -1
  457. package/dist/types/components/builtin/Divider/Divider.d.ts.map +1 -1
  458. package/dist/types/components/builtin/Form/Form.d.ts +1 -1
  459. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  460. package/dist/types/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  461. package/dist/types/components/builtin/Form/context/FormContext.d.ts +7 -8
  462. package/dist/types/components/builtin/Form/context/FormContext.d.ts.map +1 -1
  463. package/dist/types/components/builtin/Navigation/Navigation.d.ts +1 -1
  464. package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
  465. package/dist/types/components/builtin/Navigation/components/MobileMenu/index.d.ts +2 -2
  466. package/dist/types/components/builtin/Navigation/components/MobileMenu/index.d.ts.map +1 -1
  467. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts +1 -1
  468. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts.map +1 -1
  469. package/dist/types/components/builtin/Text/register.d.ts +1 -1
  470. package/dist/types/components/builtin/Text/register.d.ts.map +1 -1
  471. package/dist/types/components/builtin/register.d.ts +1 -1
  472. package/dist/types/components/builtin/register.d.ts.map +1 -1
  473. package/dist/types/components/hooks/useResponsiveColor.d.ts +1 -2
  474. package/dist/types/components/hooks/useResponsiveColor.d.ts.map +1 -1
  475. package/dist/types/components/utils/responsive-style.d.ts +2 -1
  476. package/dist/types/components/utils/responsive-style.d.ts.map +1 -1
  477. package/dist/types/components/utils/types.d.ts +2 -0
  478. package/dist/types/components/utils/types.d.ts.map +1 -1
  479. package/dist/types/controls/__tests__/fixtures/shape.d.ts +19 -8
  480. package/dist/types/controls/__tests__/fixtures/shape.d.ts.map +1 -1
  481. package/dist/types/controls/control.d.ts +28 -17
  482. package/dist/types/controls/control.d.ts.map +1 -1
  483. package/dist/types/controls/index.d.ts +6 -10
  484. package/dist/types/controls/index.d.ts.map +1 -1
  485. package/dist/types/controls/link.d.ts +9 -0
  486. package/dist/types/controls/link.d.ts.map +1 -0
  487. package/dist/types/controls/rich-text/control.d.ts +57 -0
  488. package/dist/types/controls/rich-text/control.d.ts.map +1 -0
  489. package/dist/types/controls/rich-text/index.d.ts +0 -3
  490. package/dist/types/controls/rich-text/index.d.ts.map +1 -1
  491. package/dist/types/controls/rich-text/rich-text.d.ts +9 -61
  492. package/dist/types/controls/rich-text/rich-text.d.ts.map +1 -1
  493. package/dist/types/controls/rich-text-v2/__tests__/fixtures/nested-paragraph-edge-case-3728.d.ts +3 -2
  494. package/dist/types/controls/rich-text-v2/__tests__/fixtures/nested-paragraph-edge-case-3728.d.ts.map +1 -1
  495. package/dist/types/controls/rich-text-v2/__tests__/fixtures/rearranged.d.ts +4 -3
  496. package/dist/types/controls/rich-text-v2/__tests__/fixtures/rearranged.d.ts.map +1 -1
  497. package/dist/types/controls/rich-text-v2/__tests__/fixtures/simple.d.ts +4 -3
  498. package/dist/types/controls/rich-text-v2/__tests__/fixtures/simple.d.ts.map +1 -1
  499. package/dist/types/controls/rich-text-v2/__tests__/serialization.test.d.ts +2 -0
  500. package/dist/types/controls/rich-text-v2/__tests__/serialization.test.d.ts.map +1 -0
  501. package/dist/types/controls/rich-text-v2/control.d.ts +102 -0
  502. package/dist/types/controls/rich-text-v2/control.d.ts.map +1 -0
  503. package/dist/types/controls/rich-text-v2/index.d.ts +0 -2
  504. package/dist/types/controls/rich-text-v2/index.d.ts.map +1 -1
  505. package/dist/types/controls/rich-text-v2/plugin.d.ts +9 -17
  506. package/dist/types/controls/rich-text-v2/plugin.d.ts.map +1 -1
  507. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +863 -103
  508. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  509. package/dist/types/controls/rich-text-v2/translation.d.ts +5 -4
  510. package/dist/types/controls/rich-text-v2/translation.d.ts.map +1 -1
  511. package/dist/types/controls/slot.d.ts +8 -54
  512. package/dist/types/controls/slot.d.ts.map +1 -1
  513. package/dist/types/controls/style-v2/index.d.ts +2 -0
  514. package/dist/types/controls/style-v2/index.d.ts.map +1 -0
  515. package/dist/types/controls/style-v2/style-v2.d.ts +10 -0
  516. package/dist/types/controls/style-v2/style-v2.d.ts.map +1 -0
  517. package/dist/types/controls/style-v2/style-v2.test.d.ts +2 -0
  518. package/dist/types/controls/style-v2/style-v2.test.d.ts.map +1 -0
  519. package/dist/types/core/index.d.ts +2 -0
  520. package/dist/types/core/index.d.ts.map +1 -0
  521. package/dist/types/locale.d.ts +1 -1
  522. package/dist/types/next/client.d.ts +16 -16
  523. package/dist/types/next/components/tests/controls/combobox-control.test.d.ts +2 -0
  524. package/dist/types/next/components/tests/controls/combobox-control.test.d.ts.map +1 -0
  525. package/dist/types/next/components/tests/controls/icon-radio-group-control.test.d.ts +2 -0
  526. package/dist/types/next/components/tests/controls/icon-radio-group-control.test.d.ts.map +1 -0
  527. package/dist/types/next/components/tests/controls/image-control.test.d.ts +3 -0
  528. package/dist/types/next/components/tests/controls/image-control.test.d.ts.map +1 -0
  529. package/dist/types/next/components/tests/controls/link-control.test.d.ts +2 -0
  530. package/dist/types/next/components/tests/controls/link-control.test.d.ts.map +1 -0
  531. package/dist/types/next/components/tests/controls/list-control.test.d.ts +2 -0
  532. package/dist/types/next/components/tests/controls/list-control.test.d.ts.map +1 -0
  533. package/dist/types/next/components/tests/controls/number-control.test.d.ts +2 -0
  534. package/dist/types/next/components/tests/controls/number-control.test.d.ts.map +1 -0
  535. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts +9 -5
  536. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts.map +1 -1
  537. package/dist/types/next/components/tests/controls/select-control.test.d.ts +2 -0
  538. package/dist/types/next/components/tests/controls/select-control.test.d.ts.map +1 -0
  539. package/dist/types/next/components/tests/controls/shape-control.test.d.ts +2 -0
  540. package/dist/types/next/components/tests/controls/shape-control.test.d.ts.map +1 -0
  541. package/dist/types/next/components/tests/controls/slot-control.test.d.ts +2 -0
  542. package/dist/types/next/components/tests/controls/slot-control.test.d.ts.map +1 -0
  543. package/dist/types/next/components/tests/controls/style-control.test.d.ts +2 -0
  544. package/dist/types/next/components/tests/controls/style-control.test.d.ts.map +1 -0
  545. package/dist/types/next/components/tests/controls/text-area-control.test.d.ts +2 -0
  546. package/dist/types/next/components/tests/controls/text-area-control.test.d.ts.map +1 -0
  547. package/dist/types/next/components/tests/controls/text-input-control.test.d.ts +2 -0
  548. package/dist/types/next/components/tests/controls/text-input-control.test.d.ts.map +1 -0
  549. package/dist/types/next/components/tests/prop-controllers/page-prop-controller.d.ts +15 -2
  550. package/dist/types/next/components/tests/prop-controllers/page-prop-controller.d.ts.map +1 -1
  551. package/dist/types/prop-controllers/copy.d.ts +2 -2
  552. package/dist/types/prop-controllers/copy.d.ts.map +1 -1
  553. package/dist/types/prop-controllers/deleted.d.ts +1 -1
  554. package/dist/types/prop-controllers/deleted.d.ts.map +1 -1
  555. package/dist/types/prop-controllers/descriptors.d.ts +8 -27
  556. package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
  557. package/dist/types/prop-controllers/index.d.ts +3 -3
  558. package/dist/types/prop-controllers/index.d.ts.map +1 -1
  559. package/dist/types/prop-controllers/instances.d.ts +10 -72
  560. package/dist/types/prop-controllers/instances.d.ts.map +1 -1
  561. package/dist/types/prop-controllers/introspection.d.ts +2 -2
  562. package/dist/types/prop-controllers/introspection.d.ts.map +1 -1
  563. package/dist/types/runtimes/react/components/Element.d.ts +2 -2
  564. package/dist/types/runtimes/react/components/ElementData.d.ts.map +1 -1
  565. package/dist/types/runtimes/react/controls/checkbox.d.ts +3 -3
  566. package/dist/types/runtimes/react/controls/checkbox.d.ts.map +1 -1
  567. package/dist/types/runtimes/react/controls/color.d.ts +3 -3
  568. package/dist/types/runtimes/react/controls/color.d.ts.map +1 -1
  569. package/dist/types/runtimes/react/controls/combobox.d.ts +3 -3
  570. package/dist/types/runtimes/react/controls/combobox.d.ts.map +1 -1
  571. package/dist/types/runtimes/react/controls/control.d.ts +7 -28
  572. package/dist/types/runtimes/react/controls/control.d.ts.map +1 -1
  573. package/dist/types/runtimes/react/controls/icon-radio-group.d.ts +3 -3
  574. package/dist/types/runtimes/react/controls/icon-radio-group.d.ts.map +1 -1
  575. package/dist/types/runtimes/react/controls/image.d.ts +3 -12
  576. package/dist/types/runtimes/react/controls/image.d.ts.map +1 -1
  577. package/dist/types/runtimes/react/controls/link.d.ts +3 -10
  578. package/dist/types/runtimes/react/controls/link.d.ts.map +1 -1
  579. package/dist/types/runtimes/react/controls/list.d.ts +7 -9
  580. package/dist/types/runtimes/react/controls/list.d.ts.map +1 -1
  581. package/dist/types/runtimes/react/controls/number.d.ts +3 -3
  582. package/dist/types/runtimes/react/controls/number.d.ts.map +1 -1
  583. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts +1 -1
  584. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts.map +1 -1
  585. package/dist/types/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.d.ts +2 -2
  586. package/dist/types/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.d.ts.map +1 -1
  587. package/dist/types/runtimes/react/controls/rich-text/ReadOnlyText.d.ts +3 -4
  588. package/dist/types/runtimes/react/controls/rich-text/ReadOnlyText.d.ts.map +1 -1
  589. package/dist/types/runtimes/react/controls/rich-text/components/Element/block.d.ts +2 -2
  590. package/dist/types/runtimes/react/controls/rich-text/components/Element/block.d.ts.map +1 -1
  591. package/dist/types/runtimes/react/controls/rich-text/components/Element/element.d.ts +1 -1
  592. package/dist/types/runtimes/react/controls/rich-text/components/Element/element.d.ts.map +1 -1
  593. package/dist/types/runtimes/react/controls/rich-text/components/Element/inline.d.ts +2 -2
  594. package/dist/types/runtimes/react/controls/rich-text/components/Element/inline.d.ts.map +1 -1
  595. package/dist/types/runtimes/react/controls/rich-text/rich-text.d.ts +4 -3
  596. package/dist/types/runtimes/react/controls/rich-text/rich-text.d.ts.map +1 -1
  597. package/dist/types/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts +4 -4
  598. package/dist/types/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts.map +1 -1
  599. package/dist/types/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.d.ts +2 -2
  600. package/dist/types/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.d.ts.map +1 -1
  601. package/dist/types/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.d.ts +2 -2
  602. package/dist/types/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.d.ts.map +1 -1
  603. package/dist/types/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.d.ts +2 -2
  604. package/dist/types/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.d.ts.map +1 -1
  605. package/dist/types/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.d.ts +2 -2
  606. package/dist/types/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.d.ts.map +1 -1
  607. package/dist/types/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts +4 -3
  608. package/dist/types/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts.map +1 -1
  609. package/dist/types/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts +4 -3
  610. package/dist/types/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  611. package/dist/types/runtimes/react/controls/select.d.ts +3 -3
  612. package/dist/types/runtimes/react/controls/select.d.ts.map +1 -1
  613. package/dist/types/runtimes/react/controls/shape.d.ts +7 -10
  614. package/dist/types/runtimes/react/controls/shape.d.ts.map +1 -1
  615. package/dist/types/runtimes/react/controls/slot.d.ts +3 -4
  616. package/dist/types/runtimes/react/controls/slot.d.ts.map +1 -1
  617. package/dist/types/runtimes/react/controls/style-v2.d.ts +7 -7
  618. package/dist/types/runtimes/react/controls/style-v2.d.ts.map +1 -1
  619. package/dist/types/runtimes/react/controls/style.d.ts +2 -2
  620. package/dist/types/runtimes/react/controls/style.d.ts.map +1 -1
  621. package/dist/types/runtimes/react/controls/text-area.d.ts +3 -3
  622. package/dist/types/runtimes/react/controls/text-area.d.ts.map +1 -1
  623. package/dist/types/runtimes/react/controls/text-input.d.ts +3 -3
  624. package/dist/types/runtimes/react/controls/text-input.d.ts.map +1 -1
  625. package/dist/types/runtimes/react/controls/typography.d.ts +6 -6
  626. package/dist/types/runtimes/react/controls/typography.d.ts.map +1 -1
  627. package/dist/types/runtimes/react/controls.d.ts.map +1 -1
  628. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  629. package/dist/types/runtimes/react/poll-box-model.d.ts +1 -1
  630. package/dist/types/runtimes/react/poll-box-model.d.ts.map +1 -1
  631. package/dist/types/runtimes/react/react-runtime.d.ts +9 -18
  632. package/dist/types/runtimes/react/react-runtime.d.ts.map +1 -1
  633. package/dist/types/runtimes/react/runtime-core.d.ts +19 -0
  634. package/dist/types/runtimes/react/runtime-core.d.ts.map +1 -0
  635. package/dist/types/slate/BlockPlugin/clearBlockKeyForDevice.d.ts.map +1 -1
  636. package/dist/types/slate/BlockPlugin/indent.d.ts.map +1 -1
  637. package/dist/types/slate/BlockPlugin/index.d.ts +19 -41
  638. package/dist/types/slate/BlockPlugin/index.d.ts.map +1 -1
  639. package/dist/types/slate/BlockPlugin/setBlockKeyForDevice.d.ts.map +1 -1
  640. package/dist/types/slate/BlockPlugin/toggleList.d.ts.map +1 -1
  641. package/dist/types/slate/BlockPlugin/types.d.ts +2 -2
  642. package/dist/types/slate/BlockPlugin/types.d.ts.map +1 -1
  643. package/dist/types/slate/BlockPlugin/unwrapInline.d.ts +2 -2
  644. package/dist/types/slate/BlockPlugin/unwrapInline.d.ts.map +1 -1
  645. package/dist/types/slate/BlockPlugin/utils/getSelectedListItems.d.ts +3 -2
  646. package/dist/types/slate/BlockPlugin/utils/getSelectedListItems.d.ts.map +1 -1
  647. package/dist/types/slate/BlockPlugin/wrapInline.d.ts +2 -2
  648. package/dist/types/slate/BlockPlugin/wrapInline.d.ts.map +1 -1
  649. package/dist/types/slate/BlockPlugin/wrapList.d.ts +1 -1
  650. package/dist/types/slate/BlockPlugin/wrapList.d.ts.map +1 -1
  651. package/dist/types/slate/BuilderPlugin/index.d.ts.map +1 -1
  652. package/dist/types/slate/InlineModePlugin/index.d.ts +79 -7
  653. package/dist/types/slate/InlineModePlugin/index.d.ts.map +1 -1
  654. package/dist/types/slate/InlinePlugin/getValue.d.ts.map +1 -1
  655. package/dist/types/slate/InlinePlugin/index.d.ts +22 -11
  656. package/dist/types/slate/InlinePlugin/index.d.ts.map +1 -1
  657. package/dist/types/slate/InlinePlugin/onChange.d.ts.map +1 -1
  658. package/dist/types/slate/InlinePlugin/types.d.ts +18 -6
  659. package/dist/types/slate/InlinePlugin/types.d.ts.map +1 -1
  660. package/dist/types/slate/LinkPlugin/getValue.d.ts +36 -3
  661. package/dist/types/slate/LinkPlugin/getValue.d.ts.map +1 -1
  662. package/dist/types/slate/LinkPlugin/index.d.ts +40 -9
  663. package/dist/types/slate/LinkPlugin/index.d.ts.map +1 -1
  664. package/dist/types/slate/LinkPlugin/onChange.d.ts +4 -3
  665. package/dist/types/slate/LinkPlugin/onChange.d.ts.map +1 -1
  666. package/dist/types/slate/LinkPlugin/types.d.ts +3 -4
  667. package/dist/types/slate/LinkPlugin/types.d.ts.map +1 -1
  668. package/dist/types/slate/TextAlignPlugin/getValue.d.ts +2 -2
  669. package/dist/types/slate/TextAlignPlugin/getValue.d.ts.map +1 -1
  670. package/dist/types/slate/TextAlignPlugin/index.d.ts +21 -6
  671. package/dist/types/slate/TextAlignPlugin/index.d.ts.map +1 -1
  672. package/dist/types/slate/TypographyPlugin/detachActiveTypography.d.ts +1 -1
  673. package/dist/types/slate/TypographyPlugin/detachActiveTypography.d.ts.map +1 -1
  674. package/dist/types/slate/TypographyPlugin/getValue.d.ts +25 -2
  675. package/dist/types/slate/TypographyPlugin/getValue.d.ts.map +1 -1
  676. package/dist/types/slate/TypographyPlugin/index.d.ts +27 -3
  677. package/dist/types/slate/TypographyPlugin/index.d.ts.map +1 -1
  678. package/dist/types/slate/TypographyPlugin/normalizeTypographyDown.d.ts +2 -1
  679. package/dist/types/slate/TypographyPlugin/normalizeTypographyDown.d.ts.map +1 -1
  680. package/dist/types/slate/TypographyPlugin/normalizeTypographyUp.d.ts +1 -1
  681. package/dist/types/slate/TypographyPlugin/normalizeTypographyUp.d.ts.map +1 -1
  682. package/dist/types/slate/TypographyPlugin/setActiveTypographyStyle.d.ts.map +1 -1
  683. package/dist/types/slate/index.d.ts +4 -4
  684. package/dist/types/slate/index.d.ts.map +1 -1
  685. package/dist/types/slate/selectors.d.ts +7 -7
  686. package/dist/types/slate/selectors.d.ts.map +1 -1
  687. package/dist/types/slate/test-helpers/slate-test-helper.d.ts +4 -4
  688. package/dist/types/slate/test-helpers/test-elements.d.ts +61 -5
  689. package/dist/types/slate/test-helpers/test-elements.d.ts.map +1 -1
  690. package/dist/types/slate/types.d.ts +1 -206
  691. package/dist/types/slate/types.d.ts.map +1 -1
  692. package/dist/types/slate/utils/editor.d.ts +4 -4
  693. package/dist/types/slate/utils/editor.d.ts.map +1 -1
  694. package/dist/types/slate/utils/element.d.ts +4 -12
  695. package/dist/types/slate/utils/element.d.ts.map +1 -1
  696. package/dist/types/slate/utils/responsive.d.ts +1 -1
  697. package/dist/types/slate/utils/responsive.d.ts.map +1 -1
  698. package/dist/types/slate/utils/toText.d.ts +3 -3
  699. package/dist/types/slate/utils/toText.d.ts.map +1 -1
  700. package/dist/types/state/actions.d.ts +3 -3
  701. package/dist/types/state/actions.d.ts.map +1 -1
  702. package/dist/types/state/modules/box-models.d.ts +2 -1
  703. package/dist/types/state/modules/box-models.d.ts.map +1 -1
  704. package/dist/types/state/modules/breakpoints.d.ts +2 -4
  705. package/dist/types/state/modules/breakpoints.d.ts.map +1 -1
  706. package/dist/types/state/modules/prop-controller-handles.d.ts +4 -4
  707. package/dist/types/state/modules/prop-controller-handles.d.ts.map +1 -1
  708. package/dist/types/state/modules/read-only-documents.d.ts +2 -15
  709. package/dist/types/state/modules/read-only-documents.d.ts.map +1 -1
  710. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  711. package/dist/types/state/react-page.d.ts +55 -57
  712. package/dist/types/state/react-page.d.ts.map +1 -1
  713. package/dist/types/utils/tests/element-data-test-test.d.ts +29 -1
  714. package/dist/types/utils/tests/element-data-test-test.d.ts.map +1 -1
  715. package/package.json +17 -5
  716. package/dist/cjs/builder/serialization/controls/combobox.js +0 -45
  717. package/dist/cjs/builder/serialization/controls/combobox.js.map +0 -1
  718. package/dist/cjs/builder/serialization/controls/list.js +0 -50
  719. package/dist/cjs/builder/serialization/controls/list.js.map +0 -1
  720. package/dist/cjs/builder/serialization/controls/rich-text-v2.js +0 -106
  721. package/dist/cjs/builder/serialization/controls/rich-text-v2.js.map +0 -1
  722. package/dist/cjs/builder/serialization/controls/shape.js +0 -54
  723. package/dist/cjs/builder/serialization/controls/shape.js.map +0 -1
  724. package/dist/cjs/builder/serialization/controls/style-v2.js +0 -62
  725. package/dist/cjs/builder/serialization/controls/style-v2.js.map +0 -1
  726. package/dist/cjs/controls/image.js.map +0 -1
  727. package/dist/cjs/controls/list.js +0 -156
  728. package/dist/cjs/controls/list.js.map +0 -1
  729. package/dist/cjs/controls/rich-text/copy.js +0 -121
  730. package/dist/cjs/controls/rich-text/copy.js.map +0 -1
  731. package/dist/cjs/controls/rich-text/dto-types.js +0 -43
  732. package/dist/cjs/controls/rich-text/dto-types.js.map +0 -1
  733. package/dist/cjs/controls/rich-text/dto.js +0 -228
  734. package/dist/cjs/controls/rich-text/dto.js.map +0 -1
  735. package/dist/cjs/controls/rich-text/fixtures/blockquote.js +0 -77
  736. package/dist/cjs/controls/rich-text/fixtures/blockquote.js.map +0 -1
  737. package/dist/cjs/controls/rich-text/fixtures/empty-blocks.js +0 -176
  738. package/dist/cjs/controls/rich-text/fixtures/empty-blocks.js.map +0 -1
  739. package/dist/cjs/controls/rich-text/fixtures/index.js.map +0 -1
  740. package/dist/cjs/controls/rich-text/fixtures/list.js +0 -137
  741. package/dist/cjs/controls/rich-text/fixtures/list.js.map +0 -1
  742. package/dist/cjs/controls/rich-text/fixtures/typography.js +0 -926
  743. package/dist/cjs/controls/rich-text/fixtures/typography.js.map +0 -1
  744. package/dist/cjs/controls/rich-text/fixtures/v2-data-types.js +0 -114
  745. package/dist/cjs/controls/rich-text/fixtures/v2-data-types.js.map +0 -1
  746. package/dist/cjs/controls/rich-text/introspection.js +0 -104
  747. package/dist/cjs/controls/rich-text/introspection.js.map +0 -1
  748. package/dist/cjs/controls/rich-text-v2/copy.js +0 -115
  749. package/dist/cjs/controls/rich-text-v2/copy.js.map +0 -1
  750. package/dist/cjs/controls/rich-text-v2/dto.js +0 -44
  751. package/dist/cjs/controls/rich-text-v2/dto.js.map +0 -1
  752. package/dist/cjs/controls/rich-text-v2/introspection.js +0 -69
  753. package/dist/cjs/controls/rich-text-v2/introspection.js.map +0 -1
  754. package/dist/cjs/controls/select.js.map +0 -1
  755. package/dist/cjs/controls/shape.js +0 -149
  756. package/dist/cjs/controls/shape.js.map +0 -1
  757. package/dist/cjs/controls/style-v2.js +0 -74
  758. package/dist/cjs/controls/style-v2.js.map +0 -1
  759. package/dist/cjs/controls/style.js +0 -125
  760. package/dist/cjs/controls/style.js.map +0 -1
  761. package/dist/cjs/controls/typography.js +0 -47
  762. package/dist/cjs/controls/typography.js.map +0 -1
  763. package/dist/cjs/prop-controllers/base.js.map +0 -1
  764. package/dist/cjs/slate/LinkPlugin/linkPluginWithoutRenderElement.js +0 -48
  765. package/dist/cjs/slate/LinkPlugin/linkPluginWithoutRenderElement.js.map +0 -1
  766. package/dist/cjs/utils/index-signature-hack.js +0 -17
  767. package/dist/cjs/utils/index-signature-hack.js.map +0 -1
  768. package/dist/esm/builder/serialization/controls/combobox.js +0 -20
  769. package/dist/esm/builder/serialization/controls/combobox.js.map +0 -1
  770. package/dist/esm/builder/serialization/controls/list.js +0 -25
  771. package/dist/esm/builder/serialization/controls/list.js.map +0 -1
  772. package/dist/esm/builder/serialization/controls/rich-text-v2.js +0 -81
  773. package/dist/esm/builder/serialization/controls/rich-text-v2.js.map +0 -1
  774. package/dist/esm/builder/serialization/controls/shape.js +0 -32
  775. package/dist/esm/builder/serialization/controls/shape.js.map +0 -1
  776. package/dist/esm/builder/serialization/controls/style-v2.js +0 -37
  777. package/dist/esm/builder/serialization/controls/style-v2.js.map +0 -1
  778. package/dist/esm/controls/image.js +0 -10
  779. package/dist/esm/controls/image.js.map +0 -1
  780. package/dist/esm/controls/list.js +0 -132
  781. package/dist/esm/controls/list.js.map +0 -1
  782. package/dist/esm/controls/rich-text/copy.js +0 -97
  783. package/dist/esm/controls/rich-text/copy.js.map +0 -1
  784. package/dist/esm/controls/rich-text/dto-types.js +0 -19
  785. package/dist/esm/controls/rich-text/dto-types.js.map +0 -1
  786. package/dist/esm/controls/rich-text/dto.js +0 -203
  787. package/dist/esm/controls/rich-text/dto.js.map +0 -1
  788. package/dist/esm/controls/rich-text/fixtures/blockquote.js +0 -53
  789. package/dist/esm/controls/rich-text/fixtures/blockquote.js.map +0 -1
  790. package/dist/esm/controls/rich-text/fixtures/empty-blocks.js +0 -151
  791. package/dist/esm/controls/rich-text/fixtures/empty-blocks.js.map +0 -1
  792. package/dist/esm/controls/rich-text/fixtures/index.js +0 -4
  793. package/dist/esm/controls/rich-text/fixtures/index.js.map +0 -1
  794. package/dist/esm/controls/rich-text/fixtures/list.js +0 -113
  795. package/dist/esm/controls/rich-text/fixtures/list.js.map +0 -1
  796. package/dist/esm/controls/rich-text/fixtures/typography.js +0 -902
  797. package/dist/esm/controls/rich-text/fixtures/typography.js.map +0 -1
  798. package/dist/esm/controls/rich-text/fixtures/v2-data-types.js +0 -90
  799. package/dist/esm/controls/rich-text/fixtures/v2-data-types.js.map +0 -1
  800. package/dist/esm/controls/rich-text/introspection.js +0 -78
  801. package/dist/esm/controls/rich-text/introspection.js.map +0 -1
  802. package/dist/esm/controls/rich-text-v2/copy.js +0 -91
  803. package/dist/esm/controls/rich-text-v2/copy.js.map +0 -1
  804. package/dist/esm/controls/rich-text-v2/dto.js +0 -19
  805. package/dist/esm/controls/rich-text-v2/dto.js.map +0 -1
  806. package/dist/esm/controls/rich-text-v2/introspection.js +0 -43
  807. package/dist/esm/controls/rich-text-v2/introspection.js.map +0 -1
  808. package/dist/esm/controls/select.js +0 -9
  809. package/dist/esm/controls/select.js.map +0 -1
  810. package/dist/esm/controls/shape.js +0 -125
  811. package/dist/esm/controls/shape.js.map +0 -1
  812. package/dist/esm/controls/style-v2.js +0 -48
  813. package/dist/esm/controls/style-v2.js.map +0 -1
  814. package/dist/esm/controls/style.js +0 -95
  815. package/dist/esm/controls/style.js.map +0 -1
  816. package/dist/esm/controls/typography.js +0 -20
  817. package/dist/esm/controls/typography.js.map +0 -1
  818. package/dist/esm/prop-controllers/base.js +0 -10
  819. package/dist/esm/prop-controllers/base.js.map +0 -1
  820. package/dist/esm/slate/LinkPlugin/linkPluginWithoutRenderElement.js +0 -24
  821. package/dist/esm/slate/LinkPlugin/linkPluginWithoutRenderElement.js.map +0 -1
  822. package/dist/esm/utils/index-signature-hack.js +0 -1
  823. package/dist/esm/utils/index-signature-hack.js.map +0 -1
  824. package/dist/types/builder/serialization/controls/combobox.d.ts +0 -5
  825. package/dist/types/builder/serialization/controls/combobox.d.ts.map +0 -1
  826. package/dist/types/builder/serialization/controls/list.d.ts +0 -5
  827. package/dist/types/builder/serialization/controls/list.d.ts.map +0 -1
  828. package/dist/types/builder/serialization/controls/rich-text-v2.d.ts +0 -5
  829. package/dist/types/builder/serialization/controls/rich-text-v2.d.ts.map +0 -1
  830. package/dist/types/builder/serialization/controls/shape.d.ts +0 -5
  831. package/dist/types/builder/serialization/controls/shape.d.ts.map +0 -1
  832. package/dist/types/builder/serialization/controls/style-v2.d.ts +0 -5
  833. package/dist/types/builder/serialization/controls/style-v2.d.ts.map +0 -1
  834. package/dist/types/controls/image.d.ts +0 -4
  835. package/dist/types/controls/image.d.ts.map +0 -1
  836. package/dist/types/controls/image.test.d.ts +0 -2
  837. package/dist/types/controls/image.test.d.ts.map +0 -1
  838. package/dist/types/controls/link.test.d.ts +0 -2
  839. package/dist/types/controls/link.test.d.ts.map +0 -1
  840. package/dist/types/controls/list.d.ts +0 -78
  841. package/dist/types/controls/list.d.ts.map +0 -1
  842. package/dist/types/controls/rich-text/__tests__/copy.test.d.ts +0 -2
  843. package/dist/types/controls/rich-text/__tests__/copy.test.d.ts.map +0 -1
  844. package/dist/types/controls/rich-text/__tests__/dto.test.d.ts +0 -2
  845. package/dist/types/controls/rich-text/__tests__/dto.test.d.ts.map +0 -1
  846. package/dist/types/controls/rich-text/__tests__/introspection.test.d.ts +0 -2
  847. package/dist/types/controls/rich-text/__tests__/introspection.test.d.ts.map +0 -1
  848. package/dist/types/controls/rich-text/copy.d.ts +0 -4
  849. package/dist/types/controls/rich-text/copy.d.ts.map +0 -1
  850. package/dist/types/controls/rich-text/dto-types.d.ts +0 -132
  851. package/dist/types/controls/rich-text/dto-types.d.ts.map +0 -1
  852. package/dist/types/controls/rich-text/dto.d.ts +0 -8
  853. package/dist/types/controls/rich-text/dto.d.ts.map +0 -1
  854. package/dist/types/controls/rich-text/fixtures/blockquote.d.ts +0 -3
  855. package/dist/types/controls/rich-text/fixtures/blockquote.d.ts.map +0 -1
  856. package/dist/types/controls/rich-text/fixtures/empty-blocks.d.ts +0 -4
  857. package/dist/types/controls/rich-text/fixtures/empty-blocks.d.ts.map +0 -1
  858. package/dist/types/controls/rich-text/fixtures/index.d.ts +0 -4
  859. package/dist/types/controls/rich-text/fixtures/index.d.ts.map +0 -1
  860. package/dist/types/controls/rich-text/fixtures/list.d.ts +0 -3
  861. package/dist/types/controls/rich-text/fixtures/list.d.ts.map +0 -1
  862. package/dist/types/controls/rich-text/fixtures/typography.d.ts +0 -3
  863. package/dist/types/controls/rich-text/fixtures/typography.d.ts.map +0 -1
  864. package/dist/types/controls/rich-text/fixtures/v2-data-types.d.ts +0 -3
  865. package/dist/types/controls/rich-text/fixtures/v2-data-types.d.ts.map +0 -1
  866. package/dist/types/controls/rich-text/introspection.d.ts +0 -5
  867. package/dist/types/controls/rich-text/introspection.d.ts.map +0 -1
  868. package/dist/types/controls/rich-text-v2/copy.d.ts +0 -4
  869. package/dist/types/controls/rich-text-v2/copy.d.ts.map +0 -1
  870. package/dist/types/controls/rich-text-v2/dto.d.ts +0 -5
  871. package/dist/types/controls/rich-text-v2/dto.d.ts.map +0 -1
  872. package/dist/types/controls/rich-text-v2/introspection.d.ts +0 -5
  873. package/dist/types/controls/rich-text-v2/introspection.d.ts.map +0 -1
  874. package/dist/types/controls/select.d.ts +0 -22
  875. package/dist/types/controls/select.d.ts.map +0 -1
  876. package/dist/types/controls/shape.d.ts +0 -50
  877. package/dist/types/controls/shape.d.ts.map +0 -1
  878. package/dist/types/controls/style-v2.d.ts +0 -64
  879. package/dist/types/controls/style-v2.d.ts.map +0 -1
  880. package/dist/types/controls/style.d.ts +0 -179
  881. package/dist/types/controls/style.d.ts.map +0 -1
  882. package/dist/types/controls/typography.d.ts +0 -33
  883. package/dist/types/controls/typography.d.ts.map +0 -1
  884. package/dist/types/prop-controllers/base.d.ts +0 -7
  885. package/dist/types/prop-controllers/base.d.ts.map +0 -1
  886. package/dist/types/slate/LinkPlugin/linkPluginWithoutRenderElement.d.ts +0 -16
  887. package/dist/types/slate/LinkPlugin/linkPluginWithoutRenderElement.d.ts.map +0 -1
  888. package/dist/types/utils/index-signature-hack.d.ts +0 -4
  889. package/dist/types/utils/index-signature-hack.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/controls/rich-text-v2/control.ts"],"sourcesContent":["import { Editor } from 'slate'\n// @ts-expect-error: there are no types for 'corporate-ipsum'\nimport ipsum from 'corporate-ipsum'\n\nimport {\n RichTextDefinition,\n ControlInstance,\n Slate,\n type DataType,\n type SendMessage,\n type Data,\n} from '@makeswift/controls'\n\nimport { BoxModel } from '../../box-model'\n\nimport { RichTextV2Definition } from './rich-text-v2'\n\n// COSMOS -> HOST\ntype ResetValueMessage = { type: typeof RichTextV2Control.RESET_VALUE }\ntype FocusMessage = { type: typeof RichTextV2Control.FOCUS }\ntype RunPluginControlActionMessage = {\n type: typeof RichTextV2Control.RUN_PLUGIN_CONTROL_ACTION\n pluginIndex: number\n value: Data\n}\n\n// HOST -> COSMOS\ntype SetDefaultValueMessage = {\n type: typeof RichTextV2Control.SET_DEFAULT_VALUE\n value: Slate.Descendant[]\n}\n\ntype SetPluginControlValueMessage = {\n type: typeof RichTextV2Control.SET_PLUGIN_CONTROL_VALUE\n value: Data[]\n}\n\ntype OnChangeMessage = {\n type: typeof RichTextV2Control.ON_CHANGE\n value: DataType<RichTextV2Definition>\n}\n\ntype SelectMessage = { type: typeof RichTextV2Control.SELECT }\n\ntype SwitchToBuildModeMessage = {\n type: typeof RichTextV2Control.SWITCH_TO_BUILD_MODE\n}\n\ntype ChangeBoxModelMessage = {\n type: typeof RichTextV2Control.CHANGE_BOX_MODEL\n payload: { boxModel: BoxModel | null }\n}\n\ntype UndoMessage = { type: typeof RichTextV2Control.UNDO }\ntype RedoMessage = { type: typeof RichTextV2Control.REDO }\n\ntype Message =\n | ResetValueMessage\n | FocusMessage\n | RunPluginControlActionMessage\n | SetDefaultValueMessage\n | SetPluginControlValueMessage\n | OnChangeMessage\n | SelectMessage\n | SwitchToBuildModeMessage\n | ChangeBoxModelMessage\n | UndoMessage\n | RedoMessage\n\nexport class RichTextV2Control extends ControlInstance<Message> {\n private static readonly messagePrefix = `${RichTextDefinition.type}::control-message` as const\n\n // COSMOS -> HOST\n static readonly RESET_VALUE = `${this.messagePrefix}::reset-value` as const\n static readonly FOCUS = `${this.messagePrefix}::focus` as const\n static readonly RUN_PLUGIN_CONTROL_ACTION =\n `${this.messagePrefix}::run-plugin-control-action` as const\n\n // HOST -> COSMOS\n static readonly SET_DEFAULT_VALUE = `${this.messagePrefix}::set-default-value` as const\n static readonly SET_PLUGIN_CONTROL_VALUE =\n `${this.messagePrefix}::set-plugin-control-value` as const\n static readonly ON_CHANGE = `${this.messagePrefix}::on-change` as const\n static readonly SELECT = `${this.messagePrefix}::select` as const\n static readonly SWITCH_TO_BUILD_MODE = `${this.messagePrefix}::switch-to-build-mode` as const\n static readonly CHANGE_BOX_MODEL = `${this.messagePrefix}::change-box-model` as const\n\n static readonly REDO = `${this.messagePrefix}::redo` as const\n static readonly UNDO = `${this.messagePrefix}::undo` as const\n\n private editor: Editor | null = null\n private defaultValue: Slate.Descendant[] | null = null\n\n constructor(\n send: SendMessage<Message>,\n private readonly descriptor: RichTextV2Definition,\n ) {\n super(send)\n }\n\n recv = (message: Message): void => {\n if (!this.editor) return\n\n switch (message.type) {\n case RichTextV2Control.FOCUS: {\n this.editor.focusAndSelectAll()\n break\n }\n\n case RichTextV2Control.RESET_VALUE: {\n if (this.defaultValue) {\n this.editor.resetValue(this.defaultValue)\n setTimeout(() => {\n this.onLocalUserChange()\n })\n }\n break\n }\n\n case RichTextV2Control.RUN_PLUGIN_CONTROL_ACTION: {\n this.descriptor.pluginControlAt(message.pluginIndex)?.onChange?.(this.editor, message.value)\n break\n }\n }\n }\n\n child(_key: string): ControlInstance | undefined {\n return undefined\n }\n\n setEditor(editor: Editor) {\n this.editor = editor\n this.sendMessage({\n type: RichTextV2Control.SET_PLUGIN_CONTROL_VALUE,\n value: this.getValue(editor),\n })\n\n const _onChange = editor.onChange\n this.editor.onChange = options => {\n _onChange(options)\n this.updatePluginValues()\n if (this.editor == null || options?.operation == null) return\n this.onLocalUserChange()\n }\n }\n\n setDefaultValue(defaultValue: Slate.Descendant[]) {\n this.defaultValue = defaultValue\n this.sendMessage({\n type: RichTextV2Control.SET_DEFAULT_VALUE,\n value: defaultValue,\n })\n }\n\n onLocalUserChange() {\n if (this.editor == null) return\n\n this.sendMessage({\n type: RichTextV2Control.ON_CHANGE,\n value: RichTextV2Definition.nodesToDataV2(this.editor.children, this.editor.currentKey),\n })\n }\n\n updatePluginValues() {\n const editor = this.editor\n if (editor == null) return\n\n this.sendMessage({\n type: RichTextV2Control.SET_PLUGIN_CONTROL_VALUE,\n value: this.getValue(editor),\n })\n }\n\n getValue(editor: Editor) {\n return this.descriptor.pluginControls.map(control => control.getValue?.(editor)) ?? []\n }\n\n select() {\n this.sendMessage({ type: RichTextV2Control.SELECT })\n }\n\n switchToBuildMode() {\n this.sendMessage({ type: RichTextV2Control.SWITCH_TO_BUILD_MODE })\n }\n\n undo() {\n this.sendMessage({ type: RichTextV2Control.UNDO })\n }\n\n redo() {\n this.sendMessage({ type: RichTextV2Control.REDO })\n }\n\n changeBoxModel(boxModel: BoxModel | null): void {\n this.sendMessage({\n type: RichTextV2Control.CHANGE_BOX_MODEL,\n payload: { boxModel },\n })\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,4 +1,2 @@
1
1
  export * from "./rich-text-v2";
2
- export * from "./dto";
3
- export * from "./plugin";
4
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/controls/rich-text-v2/index.ts"],"sourcesContent":["export * from './rich-text-v2'\nexport * from './dto'\nexport * from './plugin'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../../src/controls/rich-text-v2/index.ts"],"sourcesContent":["export * from './rich-text-v2'\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -1,4 +1,4 @@
1
- function createRichTextV2Plugin({
1
+ function Plugin({
2
2
  control,
3
3
  withPlugin,
4
4
  onKeyDown,
@@ -8,6 +8,6 @@ function createRichTextV2Plugin({
8
8
  return { control, withPlugin, onKeyDown, renderElement, renderLeaf };
9
9
  }
10
10
  export {
11
- createRichTextV2Plugin
11
+ Plugin
12
12
  };
13
13
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/controls/rich-text-v2/plugin.ts"],"sourcesContent":["import { Editor, Element, Text } from 'slate'\nimport { ControlDefinition, ControlDefinitionData } from '../control'\nimport { RenderElementProps, RenderLeafProps } from 'slate-react'\nimport { KeyboardEvent } from 'react'\n\nexport type RichTextV2PluginControlValue<T extends ControlDefinition> =\n | ControlDefinitionData<T>\n | undefined\n\nexport type RichTextV2PluginControlDefinition<T extends ControlDefinition> = {\n definition: T\n getValue(editor: Editor): RichTextV2PluginControlValue<T>\n onChange(editor: Editor, value: RichTextV2PluginControlValue<T>): void\n getElementValue?(element: Element): any\n getLeafValue?(leaf: Text): any\n}\n\nexport type RenderElement = (props: RenderElementProps) => JSX.Element\nexport type RenderLeaf = (props: RenderLeafProps) => JSX.Element\n\nexport type RichTextV2Plugin<T extends ControlDefinition = ControlDefinition> = {\n control?: RichTextV2PluginControlDefinition<T>\n withPlugin?(editor: Editor): Editor\n onKeyDown?(event: KeyboardEvent, editor: Editor): void\n renderElement?: (\n renderElement: RenderElement,\n value: any,\n ) => (props: RenderElementProps) => JSX.Element\n renderLeaf?: (renderLeaf: RenderLeaf, value: any) => (props: RenderLeafProps) => JSX.Element\n}\n\nexport function createRichTextV2Plugin<T extends ControlDefinition>({\n control,\n withPlugin,\n onKeyDown,\n renderElement,\n renderLeaf,\n}: RichTextV2Plugin<T>) {\n return { control, withPlugin, onKeyDown, renderElement, renderLeaf }\n}\n"],"mappings":"AA+BO,SAAS,uBAAoD;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,SAAO,EAAE,SAAS,YAAY,WAAW,eAAe,WAAW;AACrE;","names":[]}
1
+ {"version":3,"sources":["../../../../src/controls/rich-text-v2/plugin.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react'\nimport { type Editor } from 'slate'\nimport { type RenderElementProps, type RenderLeafProps } from 'slate-react'\nimport { ControlDefinition, type Data, type RichTextPluginControl } from '@makeswift/controls'\n\nexport type RenderElement = (props: RenderElementProps) => JSX.Element\nexport type RenderLeaf = (props: RenderLeafProps) => JSX.Element\n\nexport type RichTextV2Plugin<C extends RichTextPluginControl = RichTextPluginControl> = {\n control?: C\n withPlugin?(editor: Editor): Editor\n onKeyDown?(event: KeyboardEvent, editor: Editor): void\n renderElement?: (\n renderElement: RenderElement,\n value: any,\n ) => (props: RenderElementProps) => JSX.Element\n renderLeaf?: (renderLeaf: RenderLeaf, value: any) => (props: RenderLeafProps) => JSX.Element\n}\n\nexport function Plugin<Def extends ControlDefinition, ValueType extends Data>({\n control,\n withPlugin,\n onKeyDown,\n renderElement,\n renderLeaf,\n}: RichTextV2Plugin<RichTextPluginControl<Def, ValueType>>) {\n return { control, withPlugin, onKeyDown, renderElement, renderLeaf }\n}\n"],"mappings":"AAmBO,SAAS,OAA8D;AAAA,EAC5E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA4D;AAC1D,SAAO,EAAE,SAAS,YAAY,WAAW,eAAe,WAAW;AACrE;","names":[]}
@@ -1,142 +1,137 @@
1
+ import { z } from "zod";
1
2
  import ipsum from "corporate-ipsum";
2
- import { PropController } from "../../prop-controllers/base";
3
- import { richTextV2DescendentsToData } from "./dto";
4
- import { LinkPlugin } from "../../slate/LinkPlugin/linkPluginWithoutRenderElement";
3
+ import {
4
+ RichTextDefinition as BaseRichTextDefinition,
5
+ isNotNil,
6
+ SerializationSchema,
7
+ serialize
8
+ } from "@makeswift/controls";
9
+ import { LinkPlugin } from "../../slate/LinkPlugin";
5
10
  import { InlinePlugin } from "../../slate/InlinePlugin";
6
11
  import { TextAlignPlugin } from "../../slate/TextAlignPlugin";
7
12
  import { BlockPlugin } from "../../slate/BlockPlugin";
8
13
  import { TypographyPlugin } from "../../slate/TypographyPlugin";
9
14
  import { InlineModePlugin } from "../../slate/InlineModePlugin";
10
- const RichTextV2ControlType = "makeswift::controls::rich-text-v2";
11
- const RichTextV2Mode = {
12
- Inline: "makeswift::controls::rich-text-v2::mode::inline",
13
- Block: "makeswift::controls::rich-text-v2::mode::block"
14
- };
15
- function RichText(config = {}) {
16
- return {
17
- type: RichTextV2ControlType,
18
- config: {
19
- mode: config.mode,
20
- defaultValue: config.defaultValue ?? (config?.mode === RichTextV2Mode.Inline ? "Edit this text" : ipsum(3)),
21
- plugins: config?.mode === RichTextV2Mode.Inline ? [InlineModePlugin()] : (
22
- // Note: this plugin references a `renderElement`-less LinkPlugin to prevent a circular dependency
23
- [BlockPlugin(), TypographyPlugin(), TextAlignPlugin(), InlinePlugin(), LinkPlugin()]
24
- )
25
- }
26
- };
27
- }
28
- RichText.Mode = RichTextV2Mode;
29
- const RichTextV2ControlMessageType = {
30
- // COSMOS -> HOST
31
- RESET_VALUE: "makeswift::controls::rich-text-v2::control-message::reset-value",
32
- FOCUS: "makeswift::controls::rich-text-v2::control-message::focus",
33
- RUN_PLUGIN_CONTROL_ACTION: "makeswift::controls::rich-text-v2::control-message::run-plugin-control-action",
34
- // HOST -> COSMOS
35
- SET_DEFAULT_VALUE: "makeswift::controls::rich-text-v2::control-message::set-default-value",
36
- SET_PLUGIN_CONTROL_VALUE: "makeswift::controls::rich-text-v2::control-message::set-plugin-control-value",
37
- ON_CHANGE: "makeswift::controls::rich-text-v2::control-message::on-change",
38
- SELECT: "makeswift::controls::rich-text-v2::control-message::select",
39
- SWITCH_TO_BUILD_MODE: "makeswift::controls::rich-text-v2::control-message::switch-to-build-mode",
40
- CHANGE_BOX_MODEL: "makeswift::controls::rich-text-v2::control-message::change-box-model",
41
- REDO: "makeswift::controls::rich-text-v2::control-message::redo",
42
- UNDO: "makeswift::controls::rich-text-v2::control-message::undo"
43
- };
44
- class RichTextV2Control extends PropController {
45
- editor = null;
46
- defaultValue = null;
47
- descriptor;
48
- constructor(send, descriptor) {
49
- super(send);
50
- this.descriptor = descriptor;
51
- this.send = send;
15
+ import { toText } from "../../slate";
16
+ import { Plugin } from "./plugin";
17
+ import { RichTextV2Control } from "./control";
18
+ import {
19
+ getTranslatableData,
20
+ mergeTranslatedNodes
21
+ } from "./translation";
22
+ class Definition extends BaseRichTextDefinition {
23
+ constructor({ mode, defaultValue }, plugins) {
24
+ super({
25
+ mode,
26
+ defaultValue: defaultValue ?? (mode === Definition.Mode.Inline ? "Edit this text" : Definition.generateParagraph()),
27
+ plugins: plugins ?? (mode === Definition.Mode.Inline ? [InlineModePlugin()] : [BlockPlugin(), TypographyPlugin(), TextAlignPlugin(), InlinePlugin(), LinkPlugin()])
28
+ });
52
29
  }
53
- recv = (message) => {
54
- if (!this.editor)
55
- return;
56
- switch (message.type) {
57
- case RichTextV2ControlMessageType.FOCUS: {
58
- this.editor.focusAndSelectAll();
59
- break;
60
- }
61
- case RichTextV2ControlMessageType.RESET_VALUE: {
62
- if (this.defaultValue) {
63
- this.editor.resetValue(this.defaultValue);
64
- setTimeout(() => {
65
- this.onLocalUserChange();
66
- });
67
- }
68
- break;
69
- }
70
- case RichTextV2ControlMessageType.RUN_PLUGIN_CONTROL_ACTION: {
71
- this.descriptor.config.plugins?.at(message.pluginIndex)?.control?.onChange(this.editor, message.value);
72
- break;
73
- }
30
+ static generateParagraph() {
31
+ return ipsum(3);
32
+ }
33
+ static deserialize(data, deserializeCallback) {
34
+ if (data.type !== Definition.type) {
35
+ throw new Error(`RichText: expected type ${Definition.type}, got ${data.type}`);
74
36
  }
75
- };
76
- setEditor(editor) {
77
- this.editor = editor;
78
- this.send({
79
- type: RichTextV2ControlMessageType.SET_PLUGIN_CONTROL_VALUE,
80
- value: this.descriptor.config?.plugins?.map((plugin) => plugin?.control?.getValue(editor)) ?? []
37
+ const { config } = Definition.fullSchema({
38
+ pluginDef: SerializationSchema.deserializedRecord
39
+ }).definition.parse(data);
40
+ const { plugins, ...userConfig } = config;
41
+ return new RichTextV2Definition(
42
+ userConfig,
43
+ plugins.map(
44
+ ({ control }) => control ? { control: { definition: deserializeCallback(control?.definition) } } : {}
45
+ )
46
+ );
47
+ }
48
+ static fullSchema({ pluginDef }) {
49
+ const baseSchema = super.schema;
50
+ const plugin = z.object({
51
+ control: z.object({
52
+ definition: pluginDef
53
+ }).optional()
54
+ });
55
+ const config = baseSchema.userConfig.extend({
56
+ defaultValue: z.string(),
57
+ plugins: z.array(plugin)
81
58
  });
82
- const _onChange = editor.onChange;
83
- this.editor.onChange = (options) => {
84
- _onChange(options);
85
- this.updatePluginValues();
86
- if (this.editor == null || options?.operation == null)
87
- return;
88
- this.onLocalUserChange();
59
+ return {
60
+ ...baseSchema,
61
+ config,
62
+ definition: z.object({
63
+ type: baseSchema.type,
64
+ config
65
+ })
89
66
  };
90
67
  }
91
- setDefaultValue(defaultValue) {
92
- this.defaultValue = defaultValue;
93
- this.send({
94
- type: RichTextV2ControlMessageType.SET_DEFAULT_VALUE,
95
- value: defaultValue
96
- });
68
+ get configSchema() {
69
+ return Definition.fullSchema({ pluginDef: z.any() }).config;
97
70
  }
98
- onLocalUserChange() {
99
- if (this.editor == null)
100
- return;
101
- this.send({
102
- type: RichTextV2ControlMessageType.ON_CHANGE,
103
- value: richTextV2DescendentsToData(this.editor.children, this.editor.currentKey)
104
- });
71
+ createInstance(sendMessage) {
72
+ return new RichTextV2Control(sendMessage, this);
105
73
  }
106
- updatePluginValues() {
107
- const editor = this.editor;
108
- if (editor == null)
109
- return;
110
- this.send({
111
- type: RichTextV2ControlMessageType.SET_PLUGIN_CONTROL_VALUE,
112
- value: this.descriptor.config?.plugins?.map((plugin) => plugin?.control?.getValue(editor)) ?? []
113
- });
74
+ getTranslatableData(data) {
75
+ return getTranslatableData(Definition.dataToNodes(data), this.config.plugins);
114
76
  }
115
- select() {
116
- this.send({ type: RichTextV2ControlMessageType.SELECT });
77
+ mergeTranslatedData(data, translatedData, _context) {
78
+ if (translatedData == null)
79
+ return data;
80
+ const { descendants, ...rest } = Definition.normalizeData(data);
81
+ return {
82
+ ...rest,
83
+ descendants: mergeTranslatedNodes(
84
+ descendants,
85
+ translatedData,
86
+ this.config.plugins
87
+ )
88
+ };
117
89
  }
118
- switchToBuildMode() {
119
- this.send({ type: RichTextV2ControlMessageType.SWITCH_TO_BUILD_MODE });
90
+ serialize() {
91
+ const { plugins, ...config } = this.config;
92
+ const pluginDefs = plugins.map(
93
+ ({ control }) => control ? {
94
+ control: {
95
+ definition: control.definition,
96
+ // FIXME: remove getValue/onChange stubs once we released a version of the builder
97
+ // built against the runtime where these can be optional
98
+ getValue: () => void 0,
99
+ onChange: () => {
100
+ }
101
+ }
102
+ } : {}
103
+ );
104
+ return serialize(
105
+ { ...config, plugins: pluginDefs },
106
+ {
107
+ type: Definition.type
108
+ }
109
+ );
120
110
  }
121
- undo() {
122
- this.send({ type: RichTextV2ControlMessageType.UNDO });
111
+ get pluginControls() {
112
+ return this.config.plugins.map((plugin) => plugin.control).filter(isNotNil);
123
113
  }
124
- redo() {
125
- this.send({ type: RichTextV2ControlMessageType.REDO });
114
+ pluginControlAt(index) {
115
+ return this.pluginControls[index];
126
116
  }
127
- changeBoxModel(boxModel) {
128
- this.send({ type: RichTextV2ControlMessageType.CHANGE_BOX_MODEL, payload: { boxModel } });
117
+ toText(data) {
118
+ if (data == null)
119
+ return "";
120
+ return toText(Definition.dataToNodes(data), this.config.mode ?? Definition.Mode.Block);
129
121
  }
130
122
  }
131
- function isRichTextV1Data(value) {
132
- return value !== void 0 && typeof value === "object" && !Array.isArray(value) && "document" in value;
123
+ class RichTextV2Definition extends Definition {
124
+ }
125
+ function RichText(config) {
126
+ return new RichTextV2Definition(config ?? {});
133
127
  }
128
+ RichText.Mode = Definition.Mode;
129
+ RichText.isV1Data = Definition.isV1Data;
130
+ RichText.dataToNodes = Definition.dataToNodes;
131
+ RichText.Plugin = Plugin;
134
132
  export {
135
133
  RichText,
136
134
  RichTextV2Control,
137
- RichTextV2ControlMessageType,
138
- RichTextV2ControlType,
139
- RichTextV2Mode,
140
- isRichTextV1Data
135
+ RichTextV2Definition
141
136
  };
142
137
  //# sourceMappingURL=rich-text-v2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/controls/rich-text-v2/rich-text-v2.ts"],"sourcesContent":["// @ts-expect-error: there are no types for 'corporate-ipsum'\nimport ipsum from 'corporate-ipsum'\n\nimport { PropController } from '../../prop-controllers/base'\nimport { Descendant, Editor } from 'slate'\nimport { BoxModel } from '../../box-model'\nimport { Send } from '../../prop-controllers/instances'\nimport { ControlDefinition } from '../control'\nimport { RichTextControlData } from '../rich-text/rich-text'\nimport { richTextV2DescendentsToData } from './dto'\nimport { LinkPlugin } from '../../slate/LinkPlugin/linkPluginWithoutRenderElement'\nimport { InlinePlugin } from '../../slate/InlinePlugin'\nimport { TextAlignPlugin } from '../../slate/TextAlignPlugin'\nimport { BlockPlugin } from '../../slate/BlockPlugin'\nimport { TypographyPlugin } from '../../slate/TypographyPlugin'\nimport { InlineModePlugin } from '../../slate/InlineModePlugin'\nimport { RichTextV2Plugin, RichTextV2PluginControlValue } from './plugin'\n\nexport const RichTextV2ControlType = 'makeswift::controls::rich-text-v2'\n\nexport type RichTextV2ControlData = {\n version: 2\n type: typeof RichTextV2ControlType\n descendants: Descendant[]\n key: string\n}\n\nexport const RichTextV2Mode = {\n Inline: 'makeswift::controls::rich-text-v2::mode::inline',\n Block: 'makeswift::controls::rich-text-v2::mode::block',\n} as const\n\nexport type RichTextV2Mode = typeof RichTextV2Mode[keyof typeof RichTextV2Mode]\n\nexport type RichTextMode = RichTextV2Mode\n\nexport type RichTextV2Config = {\n mode?: RichTextV2Mode\n plugins?: RichTextV2Plugin[]\n defaultValue?: string\n}\n\ntype ExternalRichTextV2Config = Omit<RichTextV2Config, 'plugins'>\n\nexport type RichTextV2ControlDefinition<T extends RichTextV2Config = RichTextV2Config> = {\n type: typeof RichTextV2ControlType\n config: T\n}\n\nexport function RichText<T extends ExternalRichTextV2Config>(\n config: T = {} as T,\n): RichTextV2ControlDefinition {\n return {\n type: RichTextV2ControlType,\n config: {\n mode: config.mode,\n defaultValue:\n config.defaultValue ??\n (config?.mode === RichTextV2Mode.Inline ? 'Edit this text' : ipsum(3)),\n plugins:\n config?.mode === RichTextV2Mode.Inline\n ? [InlineModePlugin()]\n : // Note: this plugin references a `renderElement`-less LinkPlugin to prevent a circular dependency\n [BlockPlugin(), TypographyPlugin(), TextAlignPlugin(), InlinePlugin(), LinkPlugin()],\n },\n }\n}\n\nRichText.Mode = RichTextV2Mode\n\nexport const RichTextV2ControlMessageType = {\n // COSMOS -> HOST\n RESET_VALUE: 'makeswift::controls::rich-text-v2::control-message::reset-value',\n FOCUS: 'makeswift::controls::rich-text-v2::control-message::focus',\n RUN_PLUGIN_CONTROL_ACTION:\n 'makeswift::controls::rich-text-v2::control-message::run-plugin-control-action',\n\n // HOST -> COSMOS\n SET_DEFAULT_VALUE: 'makeswift::controls::rich-text-v2::control-message::set-default-value',\n SET_PLUGIN_CONTROL_VALUE:\n 'makeswift::controls::rich-text-v2::control-message::set-plugin-control-value',\n ON_CHANGE: 'makeswift::controls::rich-text-v2::control-message::on-change',\n SELECT: 'makeswift::controls::rich-text-v2::control-message::select',\n SWITCH_TO_BUILD_MODE: 'makeswift::controls::rich-text-v2::control-message::switch-to-build-mode',\n CHANGE_BOX_MODEL: 'makeswift::controls::rich-text-v2::control-message::change-box-model',\n\n REDO: 'makeswift::controls::rich-text-v2::control-message::redo',\n UNDO: 'makeswift::controls::rich-text-v2::control-message::undo',\n} as const\n\ntype OnChangeRichTextControlMessage = {\n type: typeof RichTextV2ControlMessageType.ON_CHANGE\n value: RichTextV2ControlData\n}\n\ntype SetDefaultValueRichTextControlMessage = {\n type: typeof RichTextV2ControlMessageType.SET_DEFAULT_VALUE\n value: Descendant[]\n}\n\ntype SetPluginControlValueRichTextControlMessage = {\n type: typeof RichTextV2ControlMessageType.SET_PLUGIN_CONTROL_VALUE\n value: RichTextV2PluginControlValue<ControlDefinition>[]\n}\n\ntype ResetValueRichTextControlMessage = { type: typeof RichTextV2ControlMessageType.RESET_VALUE }\n\ntype SelectRichTextControlMessage = { type: typeof RichTextV2ControlMessageType.SELECT }\n\ntype RunPluginControlActionRichTextControlMessage = {\n type: typeof RichTextV2ControlMessageType.RUN_PLUGIN_CONTROL_ACTION\n pluginIndex: number\n value: RichTextV2PluginControlValue<ControlDefinition>\n}\n\ntype FocusRichTextControlMessage = { type: typeof RichTextV2ControlMessageType.FOCUS }\n\ntype SwitchToBuildModeRichTextControlMessage = {\n type: typeof RichTextV2ControlMessageType.SWITCH_TO_BUILD_MODE\n}\n\ntype BoxModelChangeRichControlMessage = {\n type: typeof RichTextV2ControlMessageType.CHANGE_BOX_MODEL\n payload: { boxModel: BoxModel | null }\n}\n\ntype UndoRichTextControlMessage = { type: typeof RichTextV2ControlMessageType.UNDO }\n\ntype RedoRichTextControlMessage = { type: typeof RichTextV2ControlMessageType.REDO }\n\nexport type RichTextV2ControlMessage =\n | OnChangeRichTextControlMessage\n | SetDefaultValueRichTextControlMessage\n | SetPluginControlValueRichTextControlMessage\n | ResetValueRichTextControlMessage\n | FocusRichTextControlMessage\n | RunPluginControlActionRichTextControlMessage\n | SelectRichTextControlMessage\n | SwitchToBuildModeRichTextControlMessage\n | BoxModelChangeRichControlMessage\n | UndoRichTextControlMessage\n | RedoRichTextControlMessage\n\nexport class RichTextV2Control<\n T extends RichTextV2ControlDefinition = RichTextV2ControlDefinition,\n> extends PropController<RichTextV2ControlMessage> {\n private editor: Editor | null = null\n private defaultValue: Descendant[] | null = null\n descriptor: RichTextV2ControlDefinition\n\n constructor(send: Send<RichTextV2ControlMessage>, descriptor: T) {\n super(send)\n\n this.descriptor = descriptor\n this.send = send\n }\n\n recv = (message: RichTextV2ControlMessage): void => {\n if (!this.editor) return\n switch (message.type) {\n case RichTextV2ControlMessageType.FOCUS: {\n this.editor.focusAndSelectAll()\n break\n }\n case RichTextV2ControlMessageType.RESET_VALUE: {\n if (this.defaultValue) {\n this.editor.resetValue(this.defaultValue)\n setTimeout(() => {\n this.onLocalUserChange()\n })\n }\n break\n }\n case RichTextV2ControlMessageType.RUN_PLUGIN_CONTROL_ACTION: {\n this.descriptor.config.plugins\n ?.at(message.pluginIndex)\n ?.control?.onChange(this.editor, message.value)\n break\n }\n }\n }\n\n setEditor(editor: Editor) {\n this.editor = editor\n this.send({\n type: RichTextV2ControlMessageType.SET_PLUGIN_CONTROL_VALUE,\n value:\n this.descriptor.config?.plugins?.map(plugin => plugin?.control?.getValue(editor)) ?? [],\n })\n\n const _onChange = editor.onChange\n this.editor.onChange = options => {\n _onChange(options)\n this.updatePluginValues()\n if (this.editor == null || options?.operation == null) return\n this.onLocalUserChange()\n }\n }\n\n setDefaultValue(defaultValue: Descendant[]) {\n this.defaultValue = defaultValue\n this.send({\n type: RichTextV2ControlMessageType.SET_DEFAULT_VALUE,\n value: defaultValue,\n })\n }\n\n onLocalUserChange() {\n if (this.editor == null) return\n this.send({\n type: RichTextV2ControlMessageType.ON_CHANGE,\n value: richTextV2DescendentsToData(this.editor.children, this.editor.currentKey),\n })\n }\n\n updatePluginValues() {\n const editor = this.editor\n if (editor == null) return\n this.send({\n type: RichTextV2ControlMessageType.SET_PLUGIN_CONTROL_VALUE,\n value:\n this.descriptor.config?.plugins?.map(plugin => plugin?.control?.getValue(editor)) ?? [],\n })\n }\n\n select() {\n this.send({ type: RichTextV2ControlMessageType.SELECT })\n }\n\n switchToBuildMode() {\n this.send({ type: RichTextV2ControlMessageType.SWITCH_TO_BUILD_MODE })\n }\n\n undo() {\n this.send({ type: RichTextV2ControlMessageType.UNDO })\n }\n\n redo() {\n this.send({ type: RichTextV2ControlMessageType.REDO })\n }\n\n changeBoxModel(boxModel: BoxModel | null): void {\n this.send({ type: RichTextV2ControlMessageType.CHANGE_BOX_MODEL, payload: { boxModel } })\n }\n}\n\nexport function isRichTextV1Data(\n value: RichTextControlData | RichTextV2ControlData | undefined,\n): value is RichTextControlData {\n return (\n value !== undefined && typeof value === 'object' && !Array.isArray(value) && 'document' in value\n )\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/controls/rich-text-v2/rich-text-v2.ts"],"sourcesContent":["import { ReactNode } from 'react'\nimport { z } from 'zod'\n// @ts-expect-error: there are no types for 'corporate-ipsum'\nimport ipsum from 'corporate-ipsum'\n\nimport {\n RichTextDefinition as BaseRichTextDefinition,\n type Data,\n type SendMessage,\n type SerializedRecord,\n type DeserializedRecord,\n type SchemaType,\n type SchemaTypeAny,\n type MergeTranslatableDataContext,\n type RichTextPluginControl,\n type RichTextMode,\n isNotNil,\n ControlDefinition,\n SerializationSchema,\n serialize,\n} from '@makeswift/controls'\n\nimport { LinkPlugin } from '../../slate/LinkPlugin'\nimport { InlinePlugin } from '../../slate/InlinePlugin'\nimport { TextAlignPlugin } from '../../slate/TextAlignPlugin'\nimport { BlockPlugin } from '../../slate/BlockPlugin'\nimport { TypographyPlugin } from '../../slate/TypographyPlugin'\nimport { InlineModePlugin } from '../../slate/InlineModePlugin'\nimport { toText } from '../../slate'\n\nimport { RichTextV2Plugin, Plugin } from './plugin'\nimport { RichTextV2Control } from './control'\nimport {\n getTranslatableData,\n mergeTranslatedNodes,\n type RichTextTranslationDto,\n} from './translation'\n\ntype DataType = z.infer<typeof Definition.schema.data>\ntype DataV2Type = z.infer<typeof Definition.schema.dataV2>\ntype InstanceType = RichTextV2Control\ntype UserConfig = z.infer<typeof Definition.schema.userConfig>\ntype Config = UserConfig & {\n defaultValue: string\n plugins: RichTextV2Plugin[]\n}\n\nclass Definition extends BaseRichTextDefinition<ReactNode, Config, InstanceType> {\n constructor({ mode, defaultValue }: UserConfig, plugins?: RichTextV2Plugin[]) {\n super({\n mode,\n defaultValue:\n defaultValue ??\n (mode === Definition.Mode.Inline ? 'Edit this text' : Definition.generateParagraph()),\n plugins:\n plugins ??\n (mode === Definition.Mode.Inline\n ? [InlineModePlugin()]\n : [BlockPlugin(), TypographyPlugin(), TextAlignPlugin(), InlinePlugin(), LinkPlugin()]),\n })\n }\n\n static generateParagraph(): string {\n return ipsum(3)\n }\n\n static deserialize(\n data: DeserializedRecord,\n deserializeCallback: (r: DeserializedRecord) => ControlDefinition,\n ): RichTextV2Definition {\n if (data.type !== Definition.type) {\n throw new Error(`RichText: expected type ${Definition.type}, got ${data.type}`)\n }\n\n const { config } = Definition.fullSchema({\n pluginDef: SerializationSchema.deserializedRecord,\n }).definition.parse(data)\n\n const { plugins, ...userConfig } = config\n\n return new RichTextV2Definition(\n userConfig,\n plugins.map(({ control }) =>\n control ? { control: { definition: deserializeCallback(control?.definition) } } : {},\n ),\n )\n }\n\n static fullSchema<S extends SchemaTypeAny>({ pluginDef }: { pluginDef: S }) {\n const baseSchema = super.schema\n const plugin = z.object({\n control: z\n .object({\n definition: pluginDef,\n })\n .optional(),\n })\n\n const config = baseSchema.userConfig.extend({\n defaultValue: z.string(),\n plugins: z.array(plugin),\n })\n\n return {\n ...baseSchema,\n config,\n definition: z.object({\n type: baseSchema.type,\n config,\n }),\n }\n }\n\n get configSchema(): SchemaType<Config> {\n return Definition.fullSchema({ pluginDef: z.any() as SchemaType<ControlDefinition> }).config\n }\n\n createInstance(sendMessage: SendMessage): InstanceType {\n return new RichTextV2Control(sendMessage, this)\n }\n\n getTranslatableData(data: DataType): Data {\n return getTranslatableData(Definition.dataToNodes(data), this.config.plugins)\n }\n\n mergeTranslatedData(\n data: DataType,\n translatedData: Data,\n _context: MergeTranslatableDataContext,\n ): Data {\n if (translatedData == null) return data as Data\n\n const { descendants, ...rest } = Definition.normalizeData(data)\n return {\n ...rest,\n descendants: mergeTranslatedNodes(\n descendants,\n translatedData as RichTextTranslationDto,\n this.config.plugins,\n ),\n }\n }\n\n serialize(): [SerializedRecord, Transferable[]] {\n const { plugins, ...config } = this.config\n\n // serialize only the plugin control definition, if any\n const pluginDefs = plugins.map(({ control }) =>\n control\n ? {\n control: {\n definition: control.definition,\n // FIXME: remove getValue/onChange stubs once we released a version of the builder\n // built against the runtime where these can be optional\n getValue: () => undefined,\n onChange: () => {},\n },\n }\n : {},\n )\n\n return serialize(\n { ...config, plugins: pluginDefs },\n {\n type: Definition.type,\n },\n )\n }\n\n get pluginControls(): RichTextPluginControl[] {\n return this.config.plugins.map(plugin => plugin.control).filter(isNotNil)\n }\n\n pluginControlAt(index: number): RichTextPluginControl | undefined {\n return this.pluginControls[index]\n }\n\n toText(data: DataType | undefined): string {\n if (data == null) return ''\n return toText(Definition.dataToNodes(data), this.config.mode ?? Definition.Mode.Block)\n }\n}\n\nexport class RichTextV2Definition extends Definition {}\n\nexport function RichText(config?: UserConfig): RichTextV2Definition {\n return new RichTextV2Definition(config ?? {})\n}\n\nRichText.Mode = Definition.Mode\nRichText.isV1Data = Definition.isV1Data\nRichText.dataToNodes = Definition.dataToNodes\nRichText.Plugin = Plugin\n\nexport { RichTextMode as RichTextV2Mode, type DataV2Type as RichTextDataV2, RichTextV2Control }\n"],"mappings":"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","names":[]}
@@ -1,15 +1,15 @@
1
1
  import escapeHtml from "escape-html";
2
- import { BlockType, InlineType } from "../../slate/types";
3
2
  import { Editor, Node, Text, Transforms, createEditor } from "slate";
4
3
  import { jsx } from "slate-hyperscript";
5
4
  import { parseFragment } from "parse5";
6
- import { RichTextV2Mode } from "./rich-text-v2";
7
- import { InlineModePlugin } from "../../slate/InlineModePlugin";
8
- import { BlockPlugin } from "../../slate/BlockPlugin";
9
- import { TypographyPlugin } from "../../slate/TypographyPlugin";
10
- import { TextAlignPlugin } from "../../slate/TextAlignPlugin";
11
- import { InlinePlugin } from "../../slate/InlinePlugin";
12
- import { ElementUtils } from "../../slate/utils/element";
5
+ import { Slate } from "@makeswift/controls";
6
+ import { BlockType, InlineType } from "../../slate/types";
7
+ function createEditorWithPlugins(plugins) {
8
+ return plugins.reduceRight(
9
+ (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,
10
+ createEditor()
11
+ );
12
+ }
13
13
  function pathToString(path) {
14
14
  return path.join(":");
15
15
  }
@@ -20,20 +20,16 @@ function getDescendantTranslatableData(descendant, path) {
20
20
  if (Text.isText(descendant)) {
21
21
  return {};
22
22
  }
23
- switch (descendant.type) {
24
- case BlockType.UnorderedList:
25
- case BlockType.OrderedList:
26
- case BlockType.ListItem:
27
- return descendant.children.reduce(
28
- (acc, d, j) => ({ ...acc, ...getDescendantTranslatableData(d, [...path, j]) }),
29
- {}
30
- );
31
- default:
32
- const text = getInlineOrTextTranslatableData(descendant);
33
- if (text == null)
34
- return {};
35
- return { [pathToString(path)]: text };
23
+ if (Slate.isList(descendant) || Slate.isListItem(descendant)) {
24
+ return descendant.children.reduce(
25
+ (acc, d, j) => ({ ...acc, ...getDescendantTranslatableData(d, [...path, j]) }),
26
+ {}
27
+ );
36
28
  }
29
+ const text = getInlineOrTextTranslatableData(descendant);
30
+ if (text == null)
31
+ return {};
32
+ return { [pathToString(path)]: text };
37
33
  }
38
34
  function getInlineOrTextTranslatableData(descendant, path = []) {
39
35
  if (Text.isText(descendant)) {
@@ -60,13 +56,9 @@ function getInlineOrTextTranslatableData(descendant, path = []) {
60
56
  return children;
61
57
  }
62
58
  }
63
- function getRichTextV2TranslatableData(definition, data) {
64
- const plugins = definition?.config?.mode === RichTextV2Mode.Inline ? [InlineModePlugin()] : [BlockPlugin(), TypographyPlugin(), TextAlignPlugin(), InlinePlugin()];
65
- const editor = plugins.reduceRight(
66
- (editor2, plugin) => plugin?.withPlugin?.(editor2) ?? editor2,
67
- createEditor()
68
- );
69
- editor.children = data.descendants;
59
+ function getTranslatableData(nodes, plugins) {
60
+ const editor = createEditorWithPlugins(plugins);
61
+ editor.children = nodes;
70
62
  editor.typographyNormalizationDirection = "up";
71
63
  Editor.normalize(editor, { force: true });
72
64
  return editor.children.reduce(
@@ -84,9 +76,11 @@ function deserializeTranslationHtmlString(el, translationKey) {
84
76
  children.push(jsx("text", {}, ""));
85
77
  }
86
78
  return children;
87
- } else if (el.nodeName === "#text" && "value" in el) {
79
+ }
80
+ if (el.nodeName === "#text" && "value" in el) {
88
81
  return [jsx("text", { translationKey: translationKey ?? void 0 }, el.value)];
89
- } else if ("namespaceURI" in el) {
82
+ }
83
+ if ("namespaceURI" in el) {
90
84
  const translationKey2 = el.attrs.find((a) => a.name === "key")?.value ?? void 0;
91
85
  const children = Array.from(el.childNodes).map((element) => deserializeTranslationHtmlString(element, translationKey2)).flat();
92
86
  if (children.length === 0) {
@@ -107,17 +101,10 @@ function deserializeTranslationHtmlString(el, translationKey) {
107
101
  }
108
102
  return [];
109
103
  }
110
- function mergeRichTextV2TranslatedData(definition, data, translatedData) {
111
- const plugins = definition?.config?.mode === RichTextV2Mode.Inline ? [InlineModePlugin()] : [BlockPlugin(), TypographyPlugin(), TextAlignPlugin(), InlinePlugin()];
112
- const sourceEditor = plugins.reduceRight(
113
- (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,
114
- createEditor()
115
- );
116
- const targetEditor = plugins.reduceRight(
117
- (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,
118
- createEditor()
119
- );
120
- sourceEditor.children = data.descendants;
104
+ function mergeTranslatedNodes(nodes, translatedData, plugins) {
105
+ const sourceEditor = createEditorWithPlugins(plugins);
106
+ const targetEditor = createEditorWithPlugins(plugins);
107
+ sourceEditor.children = nodes;
121
108
  sourceEditor.typographyNormalizationDirection = "up";
122
109
  Editor.normalize(sourceEditor, { force: true });
123
110
  Object.entries(translatedData).reverse().forEach(([blockStringPath, htmlString]) => {
@@ -130,7 +117,7 @@ function mergeRichTextV2TranslatedData(definition, data, translatedData) {
130
117
  targetEditor.typographyNormalizationDirection = "neutral";
131
118
  Editor.normalize(targetEditor, { force: true });
132
119
  for (const [descendant, absolutePathToTargetNode] of Node.descendants(targetEditor)) {
133
- if (!Text.isText(descendant) && !ElementUtils.isInline(descendant) || descendant.translationKey == null || descendant.translationKey === "") {
120
+ if (!Text.isText(descendant) && !Slate.isInline(descendant) || descendant.translationKey == null || descendant.translationKey === "") {
134
121
  continue;
135
122
  }
136
123
  const relativePathToSourceNode = stringToPath(descendant.translationKey);
@@ -140,7 +127,7 @@ function mergeRichTextV2TranslatedData(definition, data, translatedData) {
140
127
  const { translationKey, text, ...rest } = sourceNode;
141
128
  Transforms.setNodes(targetEditor, rest, { at: absolutePathToTargetNode });
142
129
  Transforms.unsetNodes(targetEditor, "translationKey", { at: absolutePathToTargetNode });
143
- } else if (ElementUtils.isInline(sourceNode) && ElementUtils.isInline(descendant)) {
130
+ } else if (Slate.isInline(sourceNode) && Slate.isInline(descendant)) {
144
131
  const { translationKey, children, ...rest } = sourceNode;
145
132
  Transforms.setNodes(targetEditor, rest, { at: absolutePathToTargetNode });
146
133
  Transforms.unsetNodes(targetEditor, "translationKey", { at: absolutePathToTargetNode });
@@ -156,10 +143,10 @@ function mergeRichTextV2TranslatedData(definition, data, translatedData) {
156
143
  });
157
144
  sourceEditor.typographyNormalizationDirection = "down";
158
145
  Editor.normalize(sourceEditor, { force: true });
159
- return { ...data, descendants: sourceEditor.children };
146
+ return sourceEditor.children;
160
147
  }
161
148
  export {
162
- getRichTextV2TranslatableData,
163
- mergeRichTextV2TranslatedData
149
+ getTranslatableData,
150
+ mergeTranslatedNodes
164
151
  };
165
152
  //# sourceMappingURL=translation.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/controls/rich-text-v2/translation.ts"],"sourcesContent":["import escapeHtml from 'escape-html'\nimport { BlockType, InlineType } from '../../slate/types'\nimport { Descendant, Editor, Element, Node, Text, Transforms, createEditor } from 'slate'\nimport { jsx } from 'slate-hyperscript'\nimport { parseFragment } from 'parse5'\nimport { ChildNode, DocumentFragment } from 'parse5/dist/tree-adapters/default'\n\nimport { RichTextV2ControlData, RichTextV2ControlDefinition, RichTextV2Mode } from './rich-text-v2'\nimport { RichTextV2Plugin } from './plugin'\nimport { InlineModePlugin } from '../../slate/InlineModePlugin'\nimport { BlockPlugin } from '../../slate/BlockPlugin'\nimport { TypographyPlugin } from '../../slate/TypographyPlugin'\nimport { TextAlignPlugin } from '../../slate/TextAlignPlugin'\nimport { InlinePlugin } from '../../slate/InlinePlugin'\nimport { MakeswiftEditor } from '../../slate/types'\nimport { ElementUtils } from '../../slate/utils/element'\nimport { TranslationDto } from '../../state/react-page'\n\nfunction pathToString(path: number[]): string {\n return path.join(':')\n}\n\nfunction stringToPath(s: string): number[] {\n return s.split(':').map(a => parseInt(a))\n}\n\nfunction getDescendantTranslatableData(descendant: Descendant, path: number[]): TranslationDto {\n if (Text.isText(descendant)) {\n return {}\n }\n\n switch (descendant.type) {\n case BlockType.UnorderedList:\n case BlockType.OrderedList:\n case BlockType.ListItem:\n return descendant.children.reduce(\n (acc, d, j) => ({ ...acc, ...getDescendantTranslatableData(d, [...path, j]) }),\n {},\n )\n\n default:\n const text = getInlineOrTextTranslatableData(descendant)\n\n if (text == null) return {}\n\n return { [pathToString(path)]: text }\n }\n}\n\nfunction getInlineOrTextTranslatableData(\n descendant: Descendant,\n path: number[] = [],\n): string | null {\n if (Text.isText(descendant)) {\n let string = escapeHtml(descendant.text)\n\n if (string === '') return null\n\n if (descendant.typography === undefined) return string\n\n return `<span key=\"${pathToString(path)}\">${string}</span>`\n }\n\n const children = descendant.children\n .map((child: Descendant, i: number) => getInlineOrTextTranslatableData(child, [...path, i]))\n .join('')\n\n if (children === '') return null\n\n switch (descendant.type) {\n case InlineType.Link:\n return `<a key=\"${pathToString(path)}\">${children}</a>`\n case InlineType.SuperScript:\n return `<sup key=\"${pathToString(path)}\">${children}</sup>`\n case InlineType.SubScript:\n return `<sub key=\"${pathToString(path)}\">${children}</sub>`\n case InlineType.Code:\n return `<code key=\"${pathToString(path)}\">${children}</code>`\n default:\n return children\n }\n}\n\nexport function getRichTextV2TranslatableData(\n definition: RichTextV2ControlDefinition,\n data: RichTextV2ControlData,\n): Record<string, string> {\n const plugins: RichTextV2Plugin[] =\n definition?.config?.mode === RichTextV2Mode.Inline\n ? [InlineModePlugin()]\n : [BlockPlugin(), TypographyPlugin(), TextAlignPlugin(), InlinePlugin()]\n\n const editor: MakeswiftEditor = plugins.reduceRight(\n (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,\n createEditor(),\n )\n\n editor.children = data.descendants\n editor.typographyNormalizationDirection = 'up'\n Editor.normalize(editor, { force: true })\n\n return editor.children.reduce(\n (acc, descendant: Descendant, i) => ({\n ...acc,\n ...getDescendantTranslatableData(descendant, [i]),\n }),\n {},\n )\n}\n\nfunction deserializeTranslationHtmlString(\n el: ChildNode | DocumentFragment,\n translationKey?: string,\n): Descendant[] {\n if (el.nodeName === '#document-fragment') {\n const children = Array.from(el.childNodes)\n .map(element => deserializeTranslationHtmlString(element))\n .flat()\n\n if (children.length === 0) {\n children.push(jsx('text', {}, ''))\n }\n\n return children\n } else if (el.nodeName === '#text' && 'value' in el) {\n return [jsx('text', { translationKey: translationKey ?? undefined }, el.value)]\n } else if ('namespaceURI' in el) {\n const translationKey = el.attrs.find(a => a.name === 'key')?.value ?? undefined\n const children = Array.from(el.childNodes)\n .map(element => deserializeTranslationHtmlString(element, translationKey))\n .flat()\n\n if (children.length === 0) {\n children.push(jsx('text', {}, ''))\n }\n\n switch (el.nodeName) {\n case 'code':\n return [jsx('element', { type: InlineType.Code, translationKey }, children)]\n case 'sub':\n return [jsx('element', { type: InlineType.SubScript, translationKey }, children)]\n case 'sup':\n return [jsx('element', { type: InlineType.SuperScript, translationKey }, children)]\n case 'a':\n return [jsx('element', { type: InlineType.Link, translationKey }, children)]\n default:\n return children\n }\n }\n return []\n}\n\nexport type RichTextV2ControlTranslationDto = Record<string, string>\n\nexport function mergeRichTextV2TranslatedData(\n definition: RichTextV2ControlDefinition,\n data: RichTextV2ControlData,\n translatedData: RichTextV2ControlTranslationDto,\n): RichTextV2ControlData {\n const plugins: RichTextV2Plugin[] =\n definition?.config?.mode === RichTextV2Mode.Inline\n ? [InlineModePlugin()]\n : [BlockPlugin(), TypographyPlugin(), TextAlignPlugin(), InlinePlugin()]\n\n const sourceEditor: MakeswiftEditor = plugins.reduceRight(\n (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,\n createEditor(),\n )\n\n const targetEditor: MakeswiftEditor = plugins.reduceRight(\n (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,\n createEditor(),\n )\n\n sourceEditor.children = data.descendants\n sourceEditor.typographyNormalizationDirection = 'up'\n Editor.normalize(sourceEditor, { force: true })\n\n Object.entries(translatedData)\n .reverse()\n .forEach(([blockStringPath, htmlString]) => {\n const blockPath = stringToPath(blockStringPath)\n if (blockPath.length === 0) return\n\n const html = parseFragment(htmlString)\n const inlineDescendants = deserializeTranslationHtmlString(html)\n\n targetEditor.children = [{ type: BlockType.Default, children: inlineDescendants }]\n\n targetEditor.typographyNormalizationDirection = 'neutral'\n Editor.normalize(targetEditor, { force: true })\n\n for (const [descendant, absolutePathToTargetNode] of Node.descendants(targetEditor)) {\n if (\n (!Text.isText(descendant) && !ElementUtils.isInline(descendant)) ||\n descendant.translationKey == null ||\n descendant.translationKey === ''\n ) {\n continue\n }\n\n const relativePathToSourceNode = stringToPath(descendant.translationKey)\n\n const absolutePathToSourceNode = [...blockPath, ...relativePathToSourceNode]\n\n const [sourceNode] = Editor.node(sourceEditor, absolutePathToSourceNode)\n\n if (Text.isText(sourceNode) && Text.isText(descendant)) {\n const { translationKey, text, ...rest } = sourceNode\n Transforms.setNodes(targetEditor, rest, { at: absolutePathToTargetNode })\n Transforms.unsetNodes(targetEditor, 'translationKey', { at: absolutePathToTargetNode })\n } else if (ElementUtils.isInline(sourceNode) && ElementUtils.isInline(descendant)) {\n const { translationKey, children, ...rest } = sourceNode\n Transforms.setNodes(targetEditor, rest, { at: absolutePathToTargetNode })\n Transforms.unsetNodes(targetEditor, 'translationKey', { at: absolutePathToTargetNode })\n }\n }\n const translatedChildren = (targetEditor.children.at(0) as Element)?.children\n\n Editor.withoutNormalizing(sourceEditor, () => {\n Array.from(Node.children(sourceEditor, blockPath))\n .reverse()\n .forEach(([_, path]) => {\n Transforms.removeNodes(sourceEditor, { at: path })\n })\n\n Transforms.insertNodes(sourceEditor, translatedChildren, { at: [...blockPath, 0] })\n })\n })\n\n sourceEditor.typographyNormalizationDirection = 'down'\n Editor.normalize(sourceEditor, { force: true })\n\n return { ...data, descendants: sourceEditor.children }\n}\n"],"mappings":"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","names":["editor","translationKey"]}
1
+ {"version":3,"sources":["../../../../src/controls/rich-text-v2/translation.ts"],"sourcesContent":["import escapeHtml from 'escape-html'\nimport { Descendant, Editor, Element, Node, Text, Transforms, createEditor } from 'slate'\nimport { jsx } from 'slate-hyperscript'\nimport { parseFragment } from 'parse5'\nimport { ChildNode, DocumentFragment } from 'parse5/dist/tree-adapters/default'\n\nimport { type TranslationDto, Slate } from '@makeswift/controls'\n\nimport { RichTextV2Plugin } from './plugin'\nimport { type MakeswiftEditor, BlockType, InlineType } from '../../slate/types'\n\nfunction createEditorWithPlugins(plugins: RichTextV2Plugin[]): MakeswiftEditor {\n return plugins.reduceRight(\n (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,\n createEditor(),\n )\n}\n\nfunction pathToString(path: number[]): string {\n return path.join(':')\n}\n\nfunction stringToPath(s: string): number[] {\n return s.split(':').map(a => parseInt(a))\n}\n\nfunction getDescendantTranslatableData(descendant: Descendant, path: number[]): TranslationDto {\n if (Text.isText(descendant)) {\n return {}\n }\n\n if (Slate.isList(descendant) || Slate.isListItem(descendant)) {\n return descendant.children.reduce(\n (acc, d, j) => ({ ...acc, ...getDescendantTranslatableData(d, [...path, j]) }),\n {},\n )\n }\n\n const text = getInlineOrTextTranslatableData(descendant)\n if (text == null) return {}\n\n return { [pathToString(path)]: text }\n}\n\nfunction getInlineOrTextTranslatableData(\n descendant: Descendant,\n path: number[] = [],\n): string | null {\n if (Text.isText(descendant)) {\n let string = escapeHtml(descendant.text)\n\n if (string === '') return null\n\n if (descendant.typography === undefined) return string\n\n return `<span key=\"${pathToString(path)}\">${string}</span>`\n }\n\n const children = descendant.children\n .map((child: Descendant, i: number) => getInlineOrTextTranslatableData(child, [...path, i]))\n .join('')\n\n if (children === '') return null\n\n switch (descendant.type) {\n case InlineType.Link:\n return `<a key=\"${pathToString(path)}\">${children}</a>`\n\n case InlineType.SuperScript:\n return `<sup key=\"${pathToString(path)}\">${children}</sup>`\n\n case InlineType.SubScript:\n return `<sub key=\"${pathToString(path)}\">${children}</sub>`\n\n case InlineType.Code:\n return `<code key=\"${pathToString(path)}\">${children}</code>`\n\n default:\n return children\n }\n}\n\nexport type RichTextTranslationDto = Record<string, string>\n\nexport function getTranslatableData(\n nodes: Slate.Descendant[],\n plugins: RichTextV2Plugin[],\n): RichTextTranslationDto {\n const editor = createEditorWithPlugins(plugins)\n\n editor.children = nodes\n editor.typographyNormalizationDirection = 'up'\n Editor.normalize(editor, { force: true })\n\n return editor.children.reduce(\n (acc, descendant: Descendant, i) => ({\n ...acc,\n ...getDescendantTranslatableData(descendant, [i]),\n }),\n {},\n )\n}\n\nfunction deserializeTranslationHtmlString(\n el: ChildNode | DocumentFragment,\n translationKey?: string,\n): Descendant[] {\n if (el.nodeName === '#document-fragment') {\n const children = Array.from(el.childNodes)\n .map(element => deserializeTranslationHtmlString(element))\n .flat()\n\n if (children.length === 0) {\n children.push(jsx('text', {}, ''))\n }\n\n return children\n }\n\n if (el.nodeName === '#text' && 'value' in el) {\n return [jsx('text', { translationKey: translationKey ?? undefined }, el.value)]\n }\n\n if ('namespaceURI' in el) {\n const translationKey = el.attrs.find(a => a.name === 'key')?.value ?? undefined\n const children = Array.from(el.childNodes)\n .map(element => deserializeTranslationHtmlString(element, translationKey))\n .flat()\n\n if (children.length === 0) {\n children.push(jsx('text', {}, ''))\n }\n\n switch (el.nodeName) {\n case 'code':\n return [jsx('element', { type: InlineType.Code, translationKey }, children)]\n\n case 'sub':\n return [jsx('element', { type: InlineType.SubScript, translationKey }, children)]\n\n case 'sup':\n return [jsx('element', { type: InlineType.SuperScript, translationKey }, children)]\n\n case 'a':\n return [jsx('element', { type: InlineType.Link, translationKey }, children)]\n\n default:\n return children\n }\n }\n\n return []\n}\n\nexport function mergeTranslatedNodes(\n nodes: Slate.Descendant[],\n translatedData: RichTextTranslationDto,\n plugins: RichTextV2Plugin[],\n): Slate.Descendant[] {\n const sourceEditor = createEditorWithPlugins(plugins)\n const targetEditor = createEditorWithPlugins(plugins)\n\n sourceEditor.children = nodes\n sourceEditor.typographyNormalizationDirection = 'up'\n Editor.normalize(sourceEditor, { force: true })\n\n Object.entries(translatedData)\n .reverse()\n .forEach(([blockStringPath, htmlString]) => {\n const blockPath = stringToPath(blockStringPath)\n if (blockPath.length === 0) return\n\n const html = parseFragment(htmlString)\n const inlineDescendants = deserializeTranslationHtmlString(html)\n\n targetEditor.children = [{ type: BlockType.Default, children: inlineDescendants }]\n\n targetEditor.typographyNormalizationDirection = 'neutral'\n Editor.normalize(targetEditor, { force: true })\n\n for (const [descendant, absolutePathToTargetNode] of Node.descendants(targetEditor)) {\n if (\n (!Text.isText(descendant) && !Slate.isInline(descendant)) ||\n descendant.translationKey == null ||\n descendant.translationKey === ''\n ) {\n continue\n }\n\n const relativePathToSourceNode = stringToPath(descendant.translationKey)\n\n const absolutePathToSourceNode = [...blockPath, ...relativePathToSourceNode]\n\n const [sourceNode] = Editor.node(sourceEditor, absolutePathToSourceNode)\n\n if (Text.isText(sourceNode) && Text.isText(descendant)) {\n const { translationKey, text, ...rest } = sourceNode\n Transforms.setNodes(targetEditor, rest, { at: absolutePathToTargetNode })\n Transforms.unsetNodes(targetEditor, 'translationKey', { at: absolutePathToTargetNode })\n } else if (Slate.isInline(sourceNode) && Slate.isInline(descendant)) {\n const { translationKey, children, ...rest } = sourceNode\n Transforms.setNodes(targetEditor, rest, { at: absolutePathToTargetNode })\n Transforms.unsetNodes(targetEditor, 'translationKey', { at: absolutePathToTargetNode })\n }\n }\n const translatedChildren = (targetEditor.children.at(0) as Element)?.children\n\n Editor.withoutNormalizing(sourceEditor, () => {\n Array.from(Node.children(sourceEditor, blockPath))\n .reverse()\n .forEach(([_, path]) => {\n Transforms.removeNodes(sourceEditor, { at: path })\n })\n\n Transforms.insertNodes(sourceEditor, translatedChildren, { at: [...blockPath, 0] })\n })\n })\n\n sourceEditor.typographyNormalizationDirection = 'down'\n Editor.normalize(sourceEditor, { force: true })\n\n return sourceEditor.children\n}\n"],"mappings":"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","names":["translationKey"]}