@makeswift/runtime 0.25.4-canary.4 → 0.25.4

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 (655) hide show
  1. package/dist/cjs/api/api-resources-client.js +160 -0
  2. package/dist/cjs/api/api-resources-client.js.map +1 -0
  3. package/dist/cjs/api/client.js +90 -0
  4. package/dist/cjs/api/client.js.map +1 -0
  5. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  6. package/dist/cjs/api-handler/handlers/webhook/diff-projection.js +62 -0
  7. package/dist/cjs/api-handler/handlers/webhook/diff-projection.js.map +1 -0
  8. package/dist/cjs/builder/breakpoints/index.js +31 -0
  9. package/dist/cjs/builder/breakpoints/index.js.map +1 -0
  10. package/dist/cjs/builder/core/index.js +57 -0
  11. package/dist/cjs/builder/core/index.js.map +1 -0
  12. package/dist/cjs/builder/host-api.js +56 -0
  13. package/dist/cjs/builder/host-api.js.map +1 -0
  14. package/dist/cjs/builder/host-to-builder-actions.js +41 -0
  15. package/dist/cjs/builder/host-to-builder-actions.js.map +1 -0
  16. package/dist/cjs/builder/serialization.js +78 -0
  17. package/dist/cjs/builder/serialization.js.map +1 -0
  18. package/dist/cjs/components/builtin/Carousel/Carousel.js +2 -5
  19. package/dist/cjs/components/builtin/Carousel/Carousel.js.map +1 -1
  20. package/dist/cjs/controls/control.js +1 -3
  21. package/dist/cjs/controls/control.js.map +1 -1
  22. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js +15 -2
  23. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  24. package/dist/cjs/controls/rich-text-v2/translation.js +187 -0
  25. package/dist/cjs/controls/rich-text-v2/translation.js.map +1 -0
  26. package/dist/cjs/controls/serialization/base/index.js +78 -0
  27. package/dist/cjs/controls/serialization/base/index.js.map +1 -0
  28. package/dist/cjs/controls/serialization/base/visitor.js +59 -0
  29. package/dist/cjs/controls/serialization/base/visitor.js.map +1 -0
  30. package/dist/cjs/controls/serialization/index.js +55 -0
  31. package/dist/cjs/controls/serialization/index.js.map +1 -0
  32. package/dist/cjs/controls/serialization/message-port/function-serialization.js +79 -0
  33. package/dist/cjs/controls/serialization/message-port/function-serialization.js.map +1 -0
  34. package/dist/cjs/controls/serialization/message-port/index.js +25 -0
  35. package/dist/cjs/controls/serialization/message-port/index.js.map +1 -0
  36. package/dist/cjs/controls/serialization/message-port/visitor.js +48 -0
  37. package/dist/cjs/controls/serialization/message-port/visitor.js.map +1 -0
  38. package/dist/cjs/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js +72 -0
  39. package/dist/cjs/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js.map +1 -0
  40. package/dist/cjs/controls/visitors/message-port-serializer/function-serialization.js +79 -0
  41. package/dist/cjs/controls/visitors/message-port-serializer/function-serialization.js.map +1 -0
  42. package/dist/cjs/controls/visitors/message-port-serializer/index.js +36 -0
  43. package/dist/cjs/controls/visitors/message-port-serializer/index.js.map +1 -0
  44. package/dist/cjs/next/api-handler/config/pages-router.js +1 -1
  45. package/dist/cjs/next/api-handler/config/pages-router.js.map +1 -1
  46. package/dist/cjs/next/components/tests/makeswift-component/fixtures.js +101 -0
  47. package/dist/cjs/next/components/tests/makeswift-component/fixtures.js.map +1 -0
  48. package/dist/cjs/next/fetch.js +30 -0
  49. package/dist/cjs/next/fetch.js.map +1 -0
  50. package/dist/cjs/next/runtime.js +35 -0
  51. package/dist/cjs/next/runtime.js.map +1 -0
  52. package/dist/cjs/next/testing/react-runtime.js +29 -0
  53. package/dist/cjs/next/testing/react-runtime.js.map +1 -0
  54. package/dist/cjs/prop-controllers/serialization.js +355 -0
  55. package/dist/cjs/prop-controllers/serialization.js.map +1 -0
  56. package/dist/cjs/react/builtins/box.js +42 -0
  57. package/dist/cjs/react/builtins/box.js.map +1 -0
  58. package/dist/cjs/react/builtins/button.js +42 -0
  59. package/dist/cjs/react/builtins/button.js.map +1 -0
  60. package/dist/cjs/react/builtins/carousel.js +42 -0
  61. package/dist/cjs/react/builtins/carousel.js.map +1 -0
  62. package/dist/cjs/react/builtins/countdown.js +42 -0
  63. package/dist/cjs/react/builtins/countdown.js.map +1 -0
  64. package/dist/cjs/react/builtins/divider.js +42 -0
  65. package/dist/cjs/react/builtins/divider.js.map +1 -0
  66. package/dist/cjs/react/builtins/embed.js +42 -0
  67. package/dist/cjs/react/builtins/embed.js.map +1 -0
  68. package/dist/cjs/react/builtins/form.js +42 -0
  69. package/dist/cjs/react/builtins/form.js.map +1 -0
  70. package/dist/cjs/react/builtins/image.js +42 -0
  71. package/dist/cjs/react/builtins/image.js.map +1 -0
  72. package/dist/cjs/react/builtins/index.js +29 -0
  73. package/dist/cjs/react/builtins/index.js.map +1 -0
  74. package/dist/cjs/react/builtins/navigation.js +42 -0
  75. package/dist/cjs/react/builtins/navigation.js.map +1 -0
  76. package/dist/cjs/react/builtins/root.js +42 -0
  77. package/dist/cjs/react/builtins/root.js.map +1 -0
  78. package/dist/cjs/react/builtins/slot.js +42 -0
  79. package/dist/cjs/react/builtins/slot.js.map +1 -0
  80. package/dist/cjs/react/builtins/social-links.js +42 -0
  81. package/dist/cjs/react/builtins/social-links.js.map +1 -0
  82. package/dist/cjs/react/builtins/text.js +42 -0
  83. package/dist/cjs/react/builtins/text.js.map +1 -0
  84. package/dist/cjs/react/builtins/video.js +42 -0
  85. package/dist/cjs/react/builtins/video.js.map +1 -0
  86. package/dist/cjs/react/core/index.js +29 -0
  87. package/dist/cjs/react/core/index.js.map +1 -0
  88. package/dist/cjs/react/index.js +29 -0
  89. package/dist/cjs/react/index.js.map +1 -0
  90. package/dist/cjs/runtimes/react/components/GoogleFontLink.js +55 -0
  91. package/dist/cjs/runtimes/react/components/GoogleFontLink.js.map +1 -0
  92. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js +33 -0
  93. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js.map +1 -0
  94. package/dist/cjs/runtimes/react/components/activity-with-fallback.js +54 -0
  95. package/dist/cjs/runtimes/react/components/activity-with-fallback.js.map +1 -0
  96. package/dist/cjs/runtimes/react/components/page/index.js +13 -3
  97. package/dist/cjs/runtimes/react/components/page/index.js.map +1 -1
  98. package/dist/cjs/runtimes/react/hooks/use-async-effect.js +55 -0
  99. package/dist/cjs/runtimes/react/hooks/use-async-effect.js.map +1 -0
  100. package/dist/cjs/runtimes/react/hooks/use-builtin-suspense.js +33 -0
  101. package/dist/cjs/runtimes/react/hooks/use-builtin-suspense.js.map +1 -0
  102. package/dist/cjs/runtimes/react/hooks/use-current-breakpoint.js +39 -0
  103. package/dist/cjs/runtimes/react/hooks/use-current-breakpoint.js.map +1 -0
  104. package/dist/cjs/runtimes/react/hooks/use-is-read-only.js +33 -0
  105. package/dist/cjs/runtimes/react/hooks/use-is-read-only.js.map +1 -0
  106. package/dist/cjs/runtimes/react/lib/resolved-style-to-css.js +59 -0
  107. package/dist/cjs/runtimes/react/lib/resolved-style-to-css.js.map +1 -0
  108. package/dist/cjs/runtimes/react/react-runtime-core.js +72 -0
  109. package/dist/cjs/runtimes/react/react-runtime-core.js.map +1 -0
  110. package/dist/cjs/runtimes/react/resource-resolver.js +52 -0
  111. package/dist/cjs/runtimes/react/resource-resolver.js.map +1 -0
  112. package/dist/cjs/runtimes/react/testing/react-runtime.js +33 -0
  113. package/dist/cjs/runtimes/react/testing/react-runtime.js.map +1 -0
  114. package/dist/cjs/runtimes/react/utils/google-fonts-url.js +49 -0
  115. package/dist/cjs/runtimes/react/utils/google-fonts-url.js.map +1 -0
  116. package/dist/cjs/state/actions/index.js +42 -0
  117. package/dist/cjs/state/actions/index.js.map +1 -0
  118. package/dist/cjs/state/actions/internal/index.js +34 -0
  119. package/dist/cjs/state/actions/internal/index.js.map +1 -0
  120. package/dist/cjs/state/actions/internal/read-only-actions.js +195 -0
  121. package/dist/cjs/state/actions/internal/read-only-actions.js.map +1 -0
  122. package/dist/cjs/state/actions/internal/read-write-actions.js +76 -0
  123. package/dist/cjs/state/actions/internal/read-write-actions.js.map +1 -0
  124. package/dist/cjs/state/actions/internal.js +205 -0
  125. package/dist/cjs/state/actions/internal.js.map +1 -0
  126. package/dist/cjs/state/api-client/client-store.js +81 -0
  127. package/dist/cjs/state/api-client/client-store.js.map +1 -0
  128. package/dist/cjs/state/api-client/fetch-api-resource.js +125 -0
  129. package/dist/cjs/state/api-client/fetch-api-resource.js.map +1 -0
  130. package/dist/cjs/state/api-client/state.js +89 -0
  131. package/dist/cjs/state/api-client/state.js.map +1 -0
  132. package/dist/cjs/state/api-client/store.js +36 -0
  133. package/dist/cjs/state/api-client/store.js.map +1 -0
  134. package/dist/cjs/state/builder-api/actions.js +161 -0
  135. package/dist/cjs/state/builder-api/actions.js.map +1 -0
  136. package/dist/cjs/state/builder-api/api.js +17 -0
  137. package/dist/cjs/state/builder-api/api.js.map +1 -0
  138. package/dist/cjs/state/builder-api/message-channel.js +98 -0
  139. package/dist/cjs/state/builder-api/message-channel.js.map +1 -0
  140. package/dist/cjs/state/builder-api/navigation-listener.js +110 -0
  141. package/dist/cjs/state/builder-api/navigation-listener.js.map +1 -0
  142. package/dist/cjs/state/builder-api/proxy.js +72 -0
  143. package/dist/cjs/state/builder-api/proxy.js.map +1 -0
  144. package/dist/cjs/state/host-api.js +117 -0
  145. package/dist/cjs/state/host-api.js.map +1 -0
  146. package/dist/cjs/state/middleware/makeswift-api-client-sync.js +37 -0
  147. package/dist/cjs/state/middleware/makeswift-api-client-sync.js.map +1 -0
  148. package/dist/cjs/state/middleware/read-only-element-tree.js +52 -0
  149. package/dist/cjs/state/middleware/read-only-element-tree.js.map +1 -0
  150. package/dist/cjs/state/middleware/read-write/builder-api/element-size.js +40 -0
  151. package/dist/cjs/state/middleware/read-write/builder-api/element-size.js.map +1 -0
  152. package/dist/cjs/state/middleware/read-write/builder-api/index.js +85 -0
  153. package/dist/cjs/state/middleware/read-write/builder-api/index.js.map +1 -0
  154. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js +281 -0
  155. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -0
  156. package/dist/cjs/state/middleware/read-write/index.js +40 -0
  157. package/dist/cjs/state/middleware/read-write/index.js.map +1 -0
  158. package/dist/cjs/state/middleware/read-write/measure-box-models.js +71 -0
  159. package/dist/cjs/state/middleware/read-write/measure-box-models.js.map +1 -0
  160. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js +114 -0
  161. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js.map +1 -0
  162. package/dist/cjs/state/middleware/read-write/update-element-tree.js +59 -0
  163. package/dist/cjs/state/middleware/read-write/update-element-tree.js.map +1 -0
  164. package/dist/cjs/state/mixins/breakpoint-watch.js +72 -0
  165. package/dist/cjs/state/mixins/breakpoint-watch.js.map +1 -0
  166. package/dist/cjs/state/modules/is-read-only.js +50 -0
  167. package/dist/cjs/state/modules/is-read-only.js.map +1 -0
  168. package/dist/cjs/state/modules/locale.js +50 -0
  169. package/dist/cjs/state/modules/locale.js.map +1 -0
  170. package/dist/cjs/state/modules/read-write/box-models.js +144 -0
  171. package/dist/cjs/state/modules/read-write/box-models.js.map +1 -0
  172. package/dist/cjs/state/modules/read-write/element-imperative-handles.js +61 -0
  173. package/dist/cjs/state/modules/read-write/element-imperative-handles.js.map +1 -0
  174. package/dist/cjs/state/modules/read-write/pointer.js +48 -0
  175. package/dist/cjs/state/modules/read-write/pointer.js.map +1 -0
  176. package/dist/cjs/state/modules/read-write/read-write-documents.js +98 -0
  177. package/dist/cjs/state/modules/read-write/read-write-documents.js.map +1 -0
  178. package/dist/cjs/state/modules/site-version.js +47 -0
  179. package/dist/cjs/state/modules/site-version.js.map +1 -0
  180. package/dist/cjs/state/ops/copy-element-tree.js +67 -0
  181. package/dist/cjs/state/ops/copy-element-tree.js.map +1 -0
  182. package/dist/cjs/state/ops/merge-element.js +73 -0
  183. package/dist/cjs/state/ops/merge-element.js.map +1 -0
  184. package/dist/cjs/state/read-only-state.js +231 -0
  185. package/dist/cjs/state/read-only-state.js.map +1 -0
  186. package/dist/cjs/state/read-write-state.js +128 -0
  187. package/dist/cjs/state/read-write-state.js.map +1 -0
  188. package/dist/cjs/state/shared-api.js +63 -0
  189. package/dist/cjs/state/shared-api.js.map +1 -0
  190. package/dist/cjs/state/store.js +219 -0
  191. package/dist/cjs/state/store.js.map +1 -0
  192. package/dist/cjs/state/translations/get.js +61 -0
  193. package/dist/cjs/state/translations/get.js.map +1 -0
  194. package/dist/cjs/state/translations/merge.js +91 -0
  195. package/dist/cjs/state/translations/merge.js.map +1 -0
  196. package/dist/cjs/state/unified-state.js +17 -0
  197. package/dist/cjs/state/unified-state.js.map +1 -0
  198. package/dist/cjs/translations/index.js +32 -0
  199. package/dist/cjs/translations/index.js.map +1 -0
  200. package/dist/cjs/utils/deferred.js +39 -0
  201. package/dist/cjs/utils/deferred.js.map +1 -0
  202. package/dist/cjs/utils/ref-counted-map.js +120 -0
  203. package/dist/cjs/utils/ref-counted-map.js.map +1 -0
  204. package/dist/esm/api/api-resources-client.js +127 -0
  205. package/dist/esm/api/api-resources-client.js.map +1 -0
  206. package/dist/esm/api/client.js +67 -0
  207. package/dist/esm/api/client.js.map +1 -0
  208. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  209. package/dist/esm/api-handler/handlers/webhook/diff-projection.js +38 -0
  210. package/dist/esm/api-handler/handlers/webhook/diff-projection.js.map +1 -0
  211. package/dist/esm/builder/breakpoints/index.js +9 -0
  212. package/dist/esm/builder/breakpoints/index.js.map +1 -0
  213. package/dist/esm/builder/core/index.js +35 -0
  214. package/dist/esm/builder/core/index.js.map +1 -0
  215. package/dist/esm/builder/host-api.js +31 -0
  216. package/dist/esm/builder/host-api.js.map +1 -0
  217. package/dist/esm/builder/host-to-builder-actions.js +18 -0
  218. package/dist/esm/builder/host-to-builder-actions.js.map +1 -0
  219. package/dist/esm/builder/serialization.js +59 -0
  220. package/dist/esm/builder/serialization.js.map +1 -0
  221. package/dist/esm/components/builtin/Carousel/Carousel.js +1 -4
  222. package/dist/esm/components/builtin/Carousel/Carousel.js.map +1 -1
  223. package/dist/esm/controls/control.js +1 -3
  224. package/dist/esm/controls/control.js.map +1 -1
  225. package/dist/esm/controls/rich-text-v2/rich-text-v2.js +17 -1
  226. package/dist/esm/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  227. package/dist/esm/controls/rich-text-v2/translation.js +152 -0
  228. package/dist/esm/controls/rich-text-v2/translation.js.map +1 -0
  229. package/dist/esm/controls/serialization/base/index.js +78 -0
  230. package/dist/esm/controls/serialization/base/index.js.map +1 -0
  231. package/dist/esm/controls/serialization/base/visitor.js +39 -0
  232. package/dist/esm/controls/serialization/base/visitor.js.map +1 -0
  233. package/dist/esm/controls/serialization/index.js +30 -0
  234. package/dist/esm/controls/serialization/index.js.map +1 -0
  235. package/dist/esm/controls/serialization/message-port/function-serialization.js +52 -0
  236. package/dist/esm/controls/serialization/message-port/function-serialization.js.map +1 -0
  237. package/dist/esm/controls/serialization/message-port/index.js +3 -0
  238. package/dist/esm/controls/serialization/message-port/index.js.map +1 -0
  239. package/dist/esm/controls/serialization/message-port/visitor.js +24 -0
  240. package/dist/esm/controls/serialization/message-port/visitor.js.map +1 -0
  241. package/dist/esm/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js +53 -0
  242. package/dist/esm/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js.map +1 -0
  243. package/dist/esm/controls/visitors/message-port-serializer/function-serialization.js +52 -0
  244. package/dist/esm/controls/visitors/message-port-serializer/function-serialization.js.map +1 -0
  245. package/dist/esm/controls/visitors/message-port-serializer/index.js +13 -0
  246. package/dist/esm/controls/visitors/message-port-serializer/index.js.map +1 -0
  247. package/dist/esm/next/api-handler/config/pages-router.js +1 -1
  248. package/dist/esm/next/api-handler/config/pages-router.js.map +1 -1
  249. package/dist/esm/next/components/tests/makeswift-component/fixtures.js +60 -0
  250. package/dist/esm/next/components/tests/makeswift-component/fixtures.js.map +1 -0
  251. package/dist/esm/next/fetch.js +6 -0
  252. package/dist/esm/next/fetch.js.map +1 -0
  253. package/dist/esm/next/runtime.js +11 -0
  254. package/dist/esm/next/runtime.js.map +1 -0
  255. package/dist/esm/next/testing/react-runtime.js +5 -0
  256. package/dist/esm/next/testing/react-runtime.js.map +1 -0
  257. package/dist/esm/prop-controllers/serialization.js +338 -0
  258. package/dist/esm/prop-controllers/serialization.js.map +1 -0
  259. package/dist/esm/react/builtins/box.js +7 -0
  260. package/dist/esm/react/builtins/box.js.map +1 -0
  261. package/dist/esm/react/builtins/button.js +7 -0
  262. package/dist/esm/react/builtins/button.js.map +1 -0
  263. package/dist/esm/react/builtins/carousel.js +7 -0
  264. package/dist/esm/react/builtins/carousel.js.map +1 -0
  265. package/dist/esm/react/builtins/countdown.js +7 -0
  266. package/dist/esm/react/builtins/countdown.js.map +1 -0
  267. package/dist/esm/react/builtins/divider.js +7 -0
  268. package/dist/esm/react/builtins/divider.js.map +1 -0
  269. package/dist/esm/react/builtins/embed.js +7 -0
  270. package/dist/esm/react/builtins/embed.js.map +1 -0
  271. package/dist/esm/react/builtins/form.js +7 -0
  272. package/dist/esm/react/builtins/form.js.map +1 -0
  273. package/dist/esm/react/builtins/image.js +7 -0
  274. package/dist/esm/react/builtins/image.js.map +1 -0
  275. package/dist/esm/react/builtins/index.js +5 -0
  276. package/dist/esm/react/builtins/index.js.map +1 -0
  277. package/dist/esm/react/builtins/navigation.js +7 -0
  278. package/dist/esm/react/builtins/navigation.js.map +1 -0
  279. package/dist/esm/react/builtins/root.js +7 -0
  280. package/dist/esm/react/builtins/root.js.map +1 -0
  281. package/dist/esm/react/builtins/slot.js +7 -0
  282. package/dist/esm/react/builtins/slot.js.map +1 -0
  283. package/dist/esm/react/builtins/social-links.js +7 -0
  284. package/dist/esm/react/builtins/social-links.js.map +1 -0
  285. package/dist/esm/react/builtins/text.js +7 -0
  286. package/dist/esm/react/builtins/text.js.map +1 -0
  287. package/dist/esm/react/builtins/video.js +7 -0
  288. package/dist/esm/react/builtins/video.js.map +1 -0
  289. package/dist/esm/react/core/index.js +5 -0
  290. package/dist/esm/react/core/index.js.map +1 -0
  291. package/dist/esm/react/index.js +5 -0
  292. package/dist/esm/react/index.js.map +1 -0
  293. package/dist/esm/runtimes/react/components/GoogleFontLink.js +35 -0
  294. package/dist/esm/runtimes/react/components/GoogleFontLink.js.map +1 -0
  295. package/dist/esm/runtimes/react/components/MakeswiftFonts.js +9 -0
  296. package/dist/esm/runtimes/react/components/MakeswiftFonts.js.map +1 -0
  297. package/dist/esm/runtimes/react/components/activity-with-fallback.js +19 -0
  298. package/dist/esm/runtimes/react/components/activity-with-fallback.js.map +1 -0
  299. package/dist/esm/runtimes/react/components/page/index.js +16 -4
  300. package/dist/esm/runtimes/react/components/page/index.js.map +1 -1
  301. package/dist/esm/runtimes/react/hooks/use-async-effect.js +31 -0
  302. package/dist/esm/runtimes/react/hooks/use-async-effect.js.map +1 -0
  303. package/dist/esm/runtimes/react/hooks/use-builtin-suspense.js +9 -0
  304. package/dist/esm/runtimes/react/hooks/use-builtin-suspense.js.map +1 -0
  305. package/dist/esm/runtimes/react/hooks/use-current-breakpoint.js +15 -0
  306. package/dist/esm/runtimes/react/hooks/use-current-breakpoint.js.map +1 -0
  307. package/dist/esm/runtimes/react/hooks/use-is-read-only.js +9 -0
  308. package/dist/esm/runtimes/react/hooks/use-is-read-only.js.map +1 -0
  309. package/dist/esm/runtimes/react/lib/resolved-style-to-css.js +38 -0
  310. package/dist/esm/runtimes/react/lib/resolved-style-to-css.js.map +1 -0
  311. package/dist/esm/runtimes/react/react-runtime-core.js +51 -0
  312. package/dist/esm/runtimes/react/react-runtime-core.js.map +1 -0
  313. package/dist/esm/runtimes/react/resource-resolver.js +28 -0
  314. package/dist/esm/runtimes/react/resource-resolver.js.map +1 -0
  315. package/dist/esm/runtimes/react/testing/react-runtime.js +9 -0
  316. package/dist/esm/runtimes/react/testing/react-runtime.js.map +1 -0
  317. package/dist/esm/runtimes/react/utils/google-fonts-url.js +23 -0
  318. package/dist/esm/runtimes/react/utils/google-fonts-url.js.map +1 -0
  319. package/dist/esm/state/actions/index.js +17 -0
  320. package/dist/esm/state/actions/index.js.map +1 -0
  321. package/dist/esm/state/actions/internal/index.js +10 -0
  322. package/dist/esm/state/actions/internal/index.js.map +1 -0
  323. package/dist/esm/state/actions/internal/read-only-actions.js +153 -0
  324. package/dist/esm/state/actions/internal/read-only-actions.js.map +1 -0
  325. package/dist/esm/state/actions/internal/read-write-actions.js +46 -0
  326. package/dist/esm/state/actions/internal/read-write-actions.js.map +1 -0
  327. package/dist/esm/state/actions/internal.js +162 -0
  328. package/dist/esm/state/actions/internal.js.map +1 -0
  329. package/dist/esm/state/api-client/client-store.js +49 -0
  330. package/dist/esm/state/api-client/client-store.js.map +1 -0
  331. package/dist/esm/state/api-client/fetch-api-resource.js +93 -0
  332. package/dist/esm/state/api-client/fetch-api-resource.js.map +1 -0
  333. package/dist/esm/state/api-client/state.js +52 -0
  334. package/dist/esm/state/api-client/state.js.map +1 -0
  335. package/dist/esm/state/api-client/store.js +12 -0
  336. package/dist/esm/state/api-client/store.js.map +1 -0
  337. package/dist/esm/state/builder-api/actions.js +119 -0
  338. package/dist/esm/state/builder-api/actions.js.map +1 -0
  339. package/dist/esm/state/builder-api/api.js +1 -0
  340. package/dist/esm/state/builder-api/api.js.map +1 -0
  341. package/dist/esm/state/builder-api/message-channel.js +74 -0
  342. package/dist/esm/state/builder-api/message-channel.js.map +1 -0
  343. package/dist/esm/state/builder-api/navigation-listener.js +86 -0
  344. package/dist/esm/state/builder-api/navigation-listener.js.map +1 -0
  345. package/dist/esm/state/builder-api/proxy.js +48 -0
  346. package/dist/esm/state/builder-api/proxy.js.map +1 -0
  347. package/dist/esm/state/host-api.js +81 -0
  348. package/dist/esm/state/host-api.js.map +1 -0
  349. package/dist/esm/state/middleware/makeswift-api-client-sync.js +13 -0
  350. package/dist/esm/state/middleware/makeswift-api-client-sync.js.map +1 -0
  351. package/dist/esm/state/middleware/read-only-element-tree.js +28 -0
  352. package/dist/esm/state/middleware/read-only-element-tree.js.map +1 -0
  353. package/dist/esm/state/middleware/read-write/builder-api/element-size.js +16 -0
  354. package/dist/esm/state/middleware/read-write/builder-api/element-size.js.map +1 -0
  355. package/dist/esm/state/middleware/read-write/builder-api/index.js +61 -0
  356. package/dist/esm/state/middleware/read-write/builder-api/index.js.map +1 -0
  357. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js +254 -0
  358. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -0
  359. package/dist/esm/state/middleware/read-write/index.js +16 -0
  360. package/dist/esm/state/middleware/read-write/index.js.map +1 -0
  361. package/dist/esm/state/middleware/read-write/measure-box-models.js +37 -0
  362. package/dist/esm/state/middleware/read-write/measure-box-models.js.map +1 -0
  363. package/dist/esm/state/middleware/read-write/prop-controller-handles.js +80 -0
  364. package/dist/esm/state/middleware/read-write/prop-controller-handles.js.map +1 -0
  365. package/dist/esm/state/middleware/read-write/update-element-tree.js +35 -0
  366. package/dist/esm/state/middleware/read-write/update-element-tree.js.map +1 -0
  367. package/dist/esm/state/mixins/breakpoint-watch.js +48 -0
  368. package/dist/esm/state/mixins/breakpoint-watch.js.map +1 -0
  369. package/dist/esm/state/modules/is-read-only.js +24 -0
  370. package/dist/esm/state/modules/is-read-only.js.map +1 -0
  371. package/dist/esm/state/modules/locale.js +24 -0
  372. package/dist/esm/state/modules/locale.js.map +1 -0
  373. package/dist/esm/state/modules/read-write/box-models.js +114 -0
  374. package/dist/esm/state/modules/read-write/box-models.js.map +1 -0
  375. package/dist/esm/state/modules/read-write/element-imperative-handles.js +36 -0
  376. package/dist/esm/state/modules/read-write/element-imperative-handles.js.map +1 -0
  377. package/dist/esm/state/modules/read-write/pointer.js +23 -0
  378. package/dist/esm/state/modules/read-write/pointer.js.map +1 -0
  379. package/dist/esm/state/modules/read-write/read-write-documents.js +60 -0
  380. package/dist/esm/state/modules/read-write/read-write-documents.js.map +1 -0
  381. package/dist/esm/state/modules/site-version.js +21 -0
  382. package/dist/esm/state/modules/site-version.js.map +1 -0
  383. package/dist/esm/state/ops/copy-element-tree.js +37 -0
  384. package/dist/esm/state/ops/copy-element-tree.js.map +1 -0
  385. package/dist/esm/state/ops/merge-element.js +39 -0
  386. package/dist/esm/state/ops/merge-element.js.map +1 -0
  387. package/dist/esm/state/read-only-state.js +176 -0
  388. package/dist/esm/state/read-only-state.js.map +1 -0
  389. package/dist/esm/state/read-write-state.js +82 -0
  390. package/dist/esm/state/read-write-state.js.map +1 -0
  391. package/dist/esm/state/shared-api.js +35 -0
  392. package/dist/esm/state/shared-api.js.map +1 -0
  393. package/dist/esm/state/store.js +188 -0
  394. package/dist/esm/state/store.js.map +1 -0
  395. package/dist/esm/state/translations/get.js +27 -0
  396. package/dist/esm/state/translations/get.js.map +1 -0
  397. package/dist/esm/state/translations/merge.js +59 -0
  398. package/dist/esm/state/translations/merge.js.map +1 -0
  399. package/dist/esm/state/unified-state.js +1 -0
  400. package/dist/esm/state/unified-state.js.map +1 -0
  401. package/dist/esm/translations/index.js +7 -0
  402. package/dist/esm/translations/index.js.map +1 -0
  403. package/dist/esm/utils/deferred.js +15 -0
  404. package/dist/esm/utils/deferred.js.map +1 -0
  405. package/dist/esm/utils/ref-counted-map.js +96 -0
  406. package/dist/esm/utils/ref-counted-map.js.map +1 -0
  407. package/dist/types/api/api-resources-client.d.ts +57 -0
  408. package/dist/types/api/api-resources-client.d.ts.map +1 -0
  409. package/dist/types/api/client.d.ts +49 -0
  410. package/dist/types/api/client.d.ts.map +1 -0
  411. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts +201 -0
  412. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts.map +1 -0
  413. package/dist/types/builder/breakpoints/index.d.ts +2 -0
  414. package/dist/types/builder/breakpoints/index.d.ts.map +1 -0
  415. package/dist/types/builder/core/index.d.ts +2 -0
  416. package/dist/types/builder/core/index.d.ts.map +1 -0
  417. package/dist/types/builder/host-api.d.ts +3 -0
  418. package/dist/types/builder/host-api.d.ts.map +1 -0
  419. package/dist/types/builder/host-to-builder-actions.d.ts +28 -0
  420. package/dist/types/builder/host-to-builder-actions.d.ts.map +1 -0
  421. package/dist/types/builder/serialization.d.ts +23 -0
  422. package/dist/types/builder/serialization.d.ts.map +1 -0
  423. package/dist/types/builder/serialization.test.d.ts +2 -0
  424. package/dist/types/builder/serialization.test.d.ts.map +1 -0
  425. package/dist/types/client/index.d.ts +11 -11
  426. package/dist/types/client/tests/client.get-component-snapshots.test.d.ts +2 -0
  427. package/dist/types/client/tests/client.get-component-snapshots.test.d.ts.map +1 -0
  428. package/dist/types/client/tests/client.get-fonts.test.d.ts +2 -0
  429. package/dist/types/client/tests/client.get-fonts.test.d.ts.map +1 -0
  430. package/dist/types/client/tests/client.introspect-many.test.d.ts +2 -0
  431. package/dist/types/client/tests/client.introspect-many.test.d.ts.map +1 -0
  432. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  433. package/dist/types/components/hooks/__tests__/useMediaQuery.test.d.ts +3 -0
  434. package/dist/types/components/hooks/__tests__/useMediaQuery.test.d.ts.map +1 -0
  435. package/dist/types/controls/control.d.ts.map +1 -1
  436. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +12 -11
  437. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  438. package/dist/types/controls/rich-text-v2/translation.d.ts +6 -0
  439. package/dist/types/controls/rich-text-v2/translation.d.ts.map +1 -0
  440. package/dist/types/controls/serialization/base/index.d.ts +10 -0
  441. package/dist/types/controls/serialization/base/index.d.ts.map +1 -0
  442. package/dist/types/controls/serialization/base/visitor.d.ts +7 -0
  443. package/dist/types/controls/serialization/base/visitor.d.ts.map +1 -0
  444. package/dist/types/controls/serialization/index.d.ts +10 -0
  445. package/dist/types/controls/serialization/index.d.ts.map +1 -0
  446. package/dist/types/controls/serialization/message-port/function-serialization.d.ts +16 -0
  447. package/dist/types/controls/serialization/message-port/function-serialization.d.ts.map +1 -0
  448. package/dist/types/controls/serialization/message-port/function-serialization.test.d.ts +2 -0
  449. package/dist/types/controls/serialization/message-port/function-serialization.test.d.ts.map +1 -0
  450. package/dist/types/controls/serialization/message-port/index.d.ts +3 -0
  451. package/dist/types/controls/serialization/message-port/index.d.ts.map +1 -0
  452. package/dist/types/controls/serialization/message-port/visitor.d.ts +7 -0
  453. package/dist/types/controls/serialization/message-port/visitor.d.ts.map +1 -0
  454. package/dist/types/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.d.ts +9 -0
  455. package/dist/types/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.d.ts.map +1 -0
  456. package/dist/types/controls/visitors/message-port-serializer/function-serialization.d.ts +16 -0
  457. package/dist/types/controls/visitors/message-port-serializer/function-serialization.d.ts.map +1 -0
  458. package/dist/types/controls/visitors/message-port-serializer/function-serialization.test.d.ts +2 -0
  459. package/dist/types/controls/visitors/message-port-serializer/function-serialization.test.d.ts.map +1 -0
  460. package/dist/types/controls/visitors/message-port-serializer/index.d.ts +3 -0
  461. package/dist/types/controls/visitors/message-port-serializer/index.d.ts.map +1 -0
  462. package/dist/types/next/api-handler/config/pages-router.test.d.ts +2 -0
  463. package/dist/types/next/api-handler/config/pages-router.test.d.ts.map +1 -0
  464. package/dist/types/next/components/tests/controls/code-control.test.d.ts +2 -0
  465. package/dist/types/next/components/tests/controls/code-control.test.d.ts.map +1 -0
  466. package/dist/types/next/components/tests/makeswift-component/fixtures.d.ts +27 -0
  467. package/dist/types/next/components/tests/makeswift-component/fixtures.d.ts.map +1 -0
  468. package/dist/types/next/components/tests/makeswift-component/rendering.react18.test.d.ts +3 -0
  469. package/dist/types/next/components/tests/makeswift-component/rendering.react18.test.d.ts.map +1 -0
  470. package/dist/types/next/components/tests/makeswift-component/rendering.test.d.ts +3 -0
  471. package/dist/types/next/components/tests/makeswift-component/rendering.test.d.ts.map +1 -0
  472. package/dist/types/next/fetch.d.ts +3 -0
  473. package/dist/types/next/fetch.d.ts.map +1 -0
  474. package/dist/types/next/runtime.d.ts +10 -0
  475. package/dist/types/next/runtime.d.ts.map +1 -0
  476. package/dist/types/next/testing/react-runtime.d.ts +2 -0
  477. package/dist/types/next/testing/react-runtime.d.ts.map +1 -0
  478. package/dist/types/prop-controllers/serialization.d.ts +228 -0
  479. package/dist/types/prop-controllers/serialization.d.ts.map +1 -0
  480. package/dist/types/react/builtins/box.d.ts +3 -0
  481. package/dist/types/react/builtins/box.d.ts.map +1 -0
  482. package/dist/types/react/builtins/button.d.ts +3 -0
  483. package/dist/types/react/builtins/button.d.ts.map +1 -0
  484. package/dist/types/react/builtins/carousel.d.ts +3 -0
  485. package/dist/types/react/builtins/carousel.d.ts.map +1 -0
  486. package/dist/types/react/builtins/countdown.d.ts +3 -0
  487. package/dist/types/react/builtins/countdown.d.ts.map +1 -0
  488. package/dist/types/react/builtins/divider.d.ts +3 -0
  489. package/dist/types/react/builtins/divider.d.ts.map +1 -0
  490. package/dist/types/react/builtins/embed.d.ts +3 -0
  491. package/dist/types/react/builtins/embed.d.ts.map +1 -0
  492. package/dist/types/react/builtins/form.d.ts +3 -0
  493. package/dist/types/react/builtins/form.d.ts.map +1 -0
  494. package/dist/types/react/builtins/image.d.ts +3 -0
  495. package/dist/types/react/builtins/image.d.ts.map +1 -0
  496. package/dist/types/react/builtins/index.d.ts +2 -0
  497. package/dist/types/react/builtins/index.d.ts.map +1 -0
  498. package/dist/types/react/builtins/navigation.d.ts +3 -0
  499. package/dist/types/react/builtins/navigation.d.ts.map +1 -0
  500. package/dist/types/react/builtins/root.d.ts +3 -0
  501. package/dist/types/react/builtins/root.d.ts.map +1 -0
  502. package/dist/types/react/builtins/slot.d.ts +3 -0
  503. package/dist/types/react/builtins/slot.d.ts.map +1 -0
  504. package/dist/types/react/builtins/social-links.d.ts +3 -0
  505. package/dist/types/react/builtins/social-links.d.ts.map +1 -0
  506. package/dist/types/react/builtins/text.d.ts +3 -0
  507. package/dist/types/react/builtins/text.d.ts.map +1 -0
  508. package/dist/types/react/builtins/video.d.ts +3 -0
  509. package/dist/types/react/builtins/video.d.ts.map +1 -0
  510. package/dist/types/react/core/index.d.ts +2 -0
  511. package/dist/types/react/core/index.d.ts.map +1 -0
  512. package/dist/types/react/index.d.ts +2 -0
  513. package/dist/types/react/index.d.ts.map +1 -0
  514. package/dist/types/runtimes/react/components/GoogleFontLink.d.ts +14 -0
  515. package/dist/types/runtimes/react/components/GoogleFontLink.d.ts.map +1 -0
  516. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts +7 -0
  517. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts.map +1 -0
  518. package/dist/types/runtimes/react/components/activity-with-fallback.d.ts +13 -0
  519. package/dist/types/runtimes/react/components/activity-with-fallback.d.ts.map +1 -0
  520. package/dist/types/runtimes/react/components/page/index.d.ts.map +1 -1
  521. package/dist/types/runtimes/react/hooks/__tests__/use-async-effect.test.d.ts +2 -0
  522. package/dist/types/runtimes/react/hooks/__tests__/use-async-effect.test.d.ts.map +1 -0
  523. package/dist/types/runtimes/react/hooks/use-async-effect.d.ts +3 -0
  524. package/dist/types/runtimes/react/hooks/use-async-effect.d.ts.map +1 -0
  525. package/dist/types/runtimes/react/hooks/use-builtin-suspense.d.ts +2 -0
  526. package/dist/types/runtimes/react/hooks/use-builtin-suspense.d.ts.map +1 -0
  527. package/dist/types/runtimes/react/hooks/use-current-breakpoint.d.ts +3 -0
  528. package/dist/types/runtimes/react/hooks/use-current-breakpoint.d.ts.map +1 -0
  529. package/dist/types/runtimes/react/hooks/use-is-read-only.d.ts +2 -0
  530. package/dist/types/runtimes/react/hooks/use-is-read-only.d.ts.map +1 -0
  531. package/dist/types/runtimes/react/lib/resolved-style-to-css.d.ts +4 -0
  532. package/dist/types/runtimes/react/lib/resolved-style-to-css.d.ts.map +1 -0
  533. package/dist/types/runtimes/react/react-runtime-core.d.ts +24 -0
  534. package/dist/types/runtimes/react/react-runtime-core.d.ts.map +1 -0
  535. package/dist/types/runtimes/react/resource-resolver.d.ts +10 -0
  536. package/dist/types/runtimes/react/resource-resolver.d.ts.map +1 -0
  537. package/dist/types/runtimes/react/testing/react-runtime.d.ts +6 -0
  538. package/dist/types/runtimes/react/testing/react-runtime.d.ts.map +1 -0
  539. package/dist/types/runtimes/react/utils/google-fonts-url.d.ts +6 -0
  540. package/dist/types/runtimes/react/utils/google-fonts-url.d.ts.map +1 -0
  541. package/dist/types/slate/BlockPlugin/index.d.ts +13 -1
  542. package/dist/types/slate/BlockPlugin/index.d.ts.map +1 -1
  543. package/dist/types/slate/InlinePlugin/index.d.ts +13 -1
  544. package/dist/types/slate/InlinePlugin/index.d.ts.map +1 -1
  545. package/dist/types/slate/LinkPlugin/getValue.d.ts.map +1 -1
  546. package/dist/types/slate/LinkPlugin/index.d.ts.map +1 -1
  547. package/dist/types/slate/TextAlignPlugin/index.d.ts +13 -1
  548. package/dist/types/slate/TextAlignPlugin/index.d.ts.map +1 -1
  549. package/dist/types/slate/TypographyPlugin/getValue.d.ts.map +1 -1
  550. package/dist/types/slate/TypographyPlugin/index.d.ts.map +1 -1
  551. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts +5 -0
  552. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts.map +1 -0
  553. package/dist/types/state/__tests__/fixtures/translatable-content-sample.d.ts +3 -0
  554. package/dist/types/state/__tests__/fixtures/translatable-content-sample.d.ts.map +1 -0
  555. package/dist/types/state/__tests__/get-translatable-content.test.d.ts +2 -0
  556. package/dist/types/state/__tests__/get-translatable-content.test.d.ts.map +1 -0
  557. package/dist/types/state/__tests__/merge-element-tree-translated-data.test.d.ts +2 -0
  558. package/dist/types/state/__tests__/merge-element-tree-translated-data.test.d.ts.map +1 -0
  559. package/dist/types/state/__tests__/merge-element.test.d.ts +2 -0
  560. package/dist/types/state/__tests__/merge-element.test.d.ts.map +1 -0
  561. package/dist/types/state/__tests__/store.read-write-state.test.d.ts +2 -0
  562. package/dist/types/state/__tests__/store.read-write-state.test.d.ts.map +1 -0
  563. package/dist/types/state/__tests__/test-store.d.ts +31 -0
  564. package/dist/types/state/__tests__/test-store.d.ts.map +1 -0
  565. package/dist/types/state/actions/index.d.ts +61 -0
  566. package/dist/types/state/actions/index.d.ts.map +1 -0
  567. package/dist/types/state/actions/internal/index.d.ts +29 -0
  568. package/dist/types/state/actions/internal/index.d.ts.map +1 -0
  569. package/dist/types/state/actions/internal/read-only-actions.d.ts +171 -0
  570. package/dist/types/state/actions/internal/read-only-actions.d.ts.map +1 -0
  571. package/dist/types/state/actions/internal/read-write-actions.d.ts +53 -0
  572. package/dist/types/state/actions/internal/read-write-actions.d.ts.map +1 -0
  573. package/dist/types/state/actions/internal.d.ts +181 -0
  574. package/dist/types/state/actions/internal.d.ts.map +1 -0
  575. package/dist/types/state/api-client/client-store.d.ts +6 -0
  576. package/dist/types/state/api-client/client-store.d.ts.map +1 -0
  577. package/dist/types/state/api-client/fetch-api-resource.d.ts +11 -0
  578. package/dist/types/state/api-client/fetch-api-resource.d.ts.map +1 -0
  579. package/dist/types/state/api-client/state.d.ts +30 -0
  580. package/dist/types/state/api-client/state.d.ts.map +1 -0
  581. package/dist/types/state/api-client/store.d.ts +18 -0
  582. package/dist/types/state/api-client/store.d.ts.map +1 -0
  583. package/dist/types/state/builder-api/actions.d.ts +156 -0
  584. package/dist/types/state/builder-api/actions.d.ts.map +1 -0
  585. package/dist/types/state/builder-api/api.d.ts +9 -0
  586. package/dist/types/state/builder-api/api.d.ts.map +1 -0
  587. package/dist/types/state/builder-api/message-channel.d.ts +14 -0
  588. package/dist/types/state/builder-api/message-channel.d.ts.map +1 -0
  589. package/dist/types/state/builder-api/navigation-listener.d.ts +3 -0
  590. package/dist/types/state/builder-api/navigation-listener.d.ts.map +1 -0
  591. package/dist/types/state/builder-api/proxy.d.ts +16 -0
  592. package/dist/types/state/builder-api/proxy.d.ts.map +1 -0
  593. package/dist/types/state/host-api.d.ts +109 -0
  594. package/dist/types/state/host-api.d.ts.map +1 -0
  595. package/dist/types/state/middleware/makeswift-api-client-sync.d.ts +5 -0
  596. package/dist/types/state/middleware/makeswift-api-client-sync.d.ts.map +1 -0
  597. package/dist/types/state/middleware/read-only-element-tree.d.ts +4 -0
  598. package/dist/types/state/middleware/read-only-element-tree.d.ts.map +1 -0
  599. package/dist/types/state/middleware/read-write/builder-api/element-size.d.ts +12 -0
  600. package/dist/types/state/middleware/read-write/builder-api/element-size.d.ts.map +1 -0
  601. package/dist/types/state/middleware/read-write/builder-api/index.d.ts +5 -0
  602. package/dist/types/state/middleware/read-write/builder-api/index.d.ts.map +1 -0
  603. package/dist/types/state/middleware/read-write/builder-api/initialize-connection.d.ts +6 -0
  604. package/dist/types/state/middleware/read-write/builder-api/initialize-connection.d.ts.map +1 -0
  605. package/dist/types/state/middleware/read-write/index.d.ts +5 -0
  606. package/dist/types/state/middleware/read-write/index.d.ts.map +1 -0
  607. package/dist/types/state/middleware/read-write/measure-box-models.d.ts +4 -0
  608. package/dist/types/state/middleware/read-write/measure-box-models.d.ts.map +1 -0
  609. package/dist/types/state/middleware/read-write/prop-controller-handles.d.ts +4 -0
  610. package/dist/types/state/middleware/read-write/prop-controller-handles.d.ts.map +1 -0
  611. package/dist/types/state/middleware/read-write/update-element-tree.d.ts +4 -0
  612. package/dist/types/state/middleware/read-write/update-element-tree.d.ts.map +1 -0
  613. package/dist/types/state/mixins/breakpoint-watch.d.ts +11 -0
  614. package/dist/types/state/mixins/breakpoint-watch.d.ts.map +1 -0
  615. package/dist/types/state/modules/is-read-only.d.ts +6 -0
  616. package/dist/types/state/modules/is-read-only.d.ts.map +1 -0
  617. package/dist/types/state/modules/locale.d.ts +6 -0
  618. package/dist/types/state/modules/locale.d.ts.map +1 -0
  619. package/dist/types/state/modules/read-write/box-models.d.ts +26 -0
  620. package/dist/types/state/modules/read-write/box-models.d.ts.map +1 -0
  621. package/dist/types/state/modules/read-write/element-imperative-handles.d.ts +6 -0
  622. package/dist/types/state/modules/read-write/element-imperative-handles.d.ts.map +1 -0
  623. package/dist/types/state/modules/read-write/pointer.d.ts +11 -0
  624. package/dist/types/state/modules/read-write/pointer.d.ts.map +1 -0
  625. package/dist/types/state/modules/read-write/read-write-documents.d.ts +14 -0
  626. package/dist/types/state/modules/read-write/read-write-documents.d.ts.map +1 -0
  627. package/dist/types/state/modules/site-version.d.ts +7 -0
  628. package/dist/types/state/modules/site-version.d.ts.map +1 -0
  629. package/dist/types/state/ops/copy-element-tree.d.ts +37 -0
  630. package/dist/types/state/ops/copy-element-tree.d.ts.map +1 -0
  631. package/dist/types/state/ops/merge-element.d.ts +4 -0
  632. package/dist/types/state/ops/merge-element.d.ts.map +1 -0
  633. package/dist/types/state/read-only-state.d.ts +131 -0
  634. package/dist/types/state/read-only-state.d.ts.map +1 -0
  635. package/dist/types/state/read-write-state.d.ts +62 -0
  636. package/dist/types/state/read-write-state.d.ts.map +1 -0
  637. package/dist/types/state/shared-api.d.ts +50 -0
  638. package/dist/types/state/shared-api.d.ts.map +1 -0
  639. package/dist/types/state/store.d.ts +86 -0
  640. package/dist/types/state/store.d.ts.map +1 -0
  641. package/dist/types/state/translations/get.d.ts +4 -0
  642. package/dist/types/state/translations/get.d.ts.map +1 -0
  643. package/dist/types/state/translations/merge.d.ts +7 -0
  644. package/dist/types/state/translations/merge.d.ts.map +1 -0
  645. package/dist/types/state/unified-state.d.ts +9 -0
  646. package/dist/types/state/unified-state.d.ts.map +1 -0
  647. package/dist/types/translations/index.d.ts +6 -0
  648. package/dist/types/translations/index.d.ts.map +1 -0
  649. package/dist/types/utils/__tests__/ref-counted-map.test.d.ts +2 -0
  650. package/dist/types/utils/__tests__/ref-counted-map.test.d.ts.map +1 -0
  651. package/dist/types/utils/deferred.d.ts +7 -0
  652. package/dist/types/utils/deferred.d.ts.map +1 -0
  653. package/dist/types/utils/ref-counted-map.d.ts +32 -0
  654. package/dist/types/utils/ref-counted-map.d.ts.map +1 -0
  655. package/package.json +46 -45
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/builder/serialization.ts"],"sourcesContent":["import {\n type Data,\n ControlDefinition as UnifiedControlDefinition,\n type SerializedRecord,\n DeserializationPlugin,\n deserializeObject,\n} from '@makeswift/controls'\n\nimport {\n type SerializedLegacyControl,\n type DeserializedLegacyControl,\n serializeLegacyControl,\n deserializeLegacyControl,\n} from '../prop-controllers/serialization'\n\nimport { type Descriptor, isLegacyDescriptor } from '../prop-controllers/descriptors'\n\nimport { deserializeControl as deserializeUnifiedControl } from '../controls/serialization/base'\nimport {\n type DeserializedFunction,\n type SerializedFunction,\n ClientMessagePortSerializationVisitor,\n functionDeserializationPlugin,\n} from '../controls/serialization/message-port'\n\nimport {\n type DeserializeControlRecordsOptions,\n deserializeControlRecords,\n} from '../controls/serialization'\n\nexport * from '../prop-controllers/serialization'\n\nexport type SerializedControl<T extends Data = Data> = SerializedLegacyControl<T> | SerializedRecord\n\nexport type DeserializedControl<T extends Data = Data> =\n | DeserializedLegacyControl<T>\n | UnifiedControlDefinition\n\nexport function serializeControl<T extends Data>(\n control: Descriptor<T>,\n): [SerializedControl<T>, Transferable[]] {\n if (isLegacyDescriptor(control)) {\n return serializeLegacyControl(control)\n }\n\n const messagePortVisitor = new ClientMessagePortSerializationVisitor()\n const serializedControl = control.accept(messagePortVisitor)\n return [serializedControl, messagePortVisitor.getTransferables()]\n}\n\nfunction isSerializedLegacyControl<T extends Data>(\n control: SerializedControl<T>,\n): control is SerializedLegacyControl<T> {\n return 'options' in control\n}\n\nexport type DeserializeControlOptions = {\n plugins?: DeserializationPlugin<any>[]\n}\n\nexport function deserializeControl<T extends Data>(\n serializedControl: SerializedControl<T>,\n options?: DeserializeControlOptions,\n): DeserializedControl<T> {\n if (isSerializedLegacyControl(serializedControl)) {\n // Parity with controls deserialization logic below: \"preprocess\" serialized\n // legacy controls if the caller provided custom deserialization plugins\n const record = options?.plugins\n ? deserializeObject(serializedControl, options?.plugins)\n : serializedControl\n return deserializeLegacyControl(record as SerializedLegacyControl<T>)\n }\n\n const plugins = [functionDeserializationPlugin, ...(options?.plugins ?? [])]\n return deserializeUnifiedControl(serializedControl, { plugins })\n}\n\nexport function serializeControls(\n controls: Record<string, Descriptor>,\n): [Record<string, SerializedControl>, Transferable[]] {\n return Object.entries(controls).reduce(\n ([accControls, accTransferables], [key, control]) => {\n const [serializedControl, transferables] = serializeControl(control)\n\n return [{ ...accControls, [key]: serializedControl }, [...accTransferables, ...transferables]]\n },\n [{}, []] as [Record<string, SerializedControl>, Transferable[]],\n )\n}\n\nexport function deserializeControls(\n serializedControls: Record<string, unknown>,\n { onError, plugins }: DeserializeControlRecordsOptions = {},\n): Record<string, DeserializedControl> {\n return deserializeControlRecords<DeserializedControl>(\n serializedControls,\n (serializedControl, options) => deserializeControl(serializedControl, options),\n { onError, plugins },\n )\n}\n\ntype AnyFunction = (...args: any[]) => any\n\nexport type Serialize<T> = T extends AnyFunction\n ? SerializedFunction<T>\n : T extends Record<string, unknown>\n ? { [K in keyof T]: Serialize<T[K]> }\n : T\n\nexport type Deserialize<T> =\n T extends SerializedFunction<infer U>\n ? DeserializedFunction<U>\n : T extends Record<string, unknown>\n ? { [K in keyof T]: Deserialize<T[K]> }\n : T\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMO;AAEP,2BAKO;AAEP,yBAAoD;AAEpD,kBAAgE;AAChE,0BAKO;AAEP,IAAAA,wBAGO;AAEP,kCAAc,8CA9Bd;AAsCO,SAAS,iBACd,SACwC;AACxC,UAAI,uCAAmB,OAAO,GAAG;AAC/B,eAAO,6CAAuB,OAAO;AAAA,EACvC;AAEA,QAAM,qBAAqB,IAAI,0DAAsC;AACrE,QAAM,oBAAoB,QAAQ,OAAO,kBAAkB;AAC3D,SAAO,CAAC,mBAAmB,mBAAmB,iBAAiB,CAAC;AAClE;AAEA,SAAS,0BACP,SACuC;AACvC,SAAO,aAAa;AACtB;AAMO,SAAS,mBACd,mBACA,SACwB;AACxB,MAAI,0BAA0B,iBAAiB,GAAG;AAGhD,UAAM,SAAS,SAAS,cACpB,mCAAkB,mBAAmB,SAAS,OAAO,IACrD;AACJ,eAAO,+CAAyB,MAAoC;AAAA,EACtE;AAEA,QAAM,UAAU,CAAC,mDAA+B,GAAI,SAAS,WAAW,CAAC,CAAE;AAC3E,aAAO,YAAAC,oBAA0B,mBAAmB,EAAE,QAAQ,CAAC;AACjE;AAEO,SAAS,kBACd,UACqD;AACrD,SAAO,OAAO,QAAQ,QAAQ,EAAE;AAAA,IAC9B,CAAC,CAAC,aAAa,gBAAgB,GAAG,CAAC,KAAK,OAAO,MAAM;AACnD,YAAM,CAAC,mBAAmB,aAAa,IAAI,iBAAiB,OAAO;AAEnE,aAAO,CAAC,EAAE,GAAG,aAAa,CAAC,GAAG,GAAG,kBAAkB,GAAG,CAAC,GAAG,kBAAkB,GAAG,aAAa,CAAC;AAAA,IAC/F;AAAA,IACA,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,EACT;AACF;AAEO,SAAS,oBACd,oBACA,EAAE,SAAS,QAAQ,IAAsC,CAAC,GACrB;AACrC,aAAO;AAAA,IACL;AAAA,IACA,CAAC,mBAAmB,YAAY,mBAAmB,mBAAmB,OAAO;AAAA,IAC7E,EAAE,SAAS,QAAQ;AAAA,EACrB;AACF;","names":["import_serialization","deserializeUnifiedControl"]}
@@ -36,6 +36,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = require("react");
37
37
  var import_framer_motion = require("framer-motion");
38
38
  var import_react2 = require("@use-gesture/react");
39
+ var import_popcorn = require("@popmotion/popcorn");
39
40
  var import_controls = require("@makeswift/controls");
40
41
  var import_colorToString = require("../../utils/colorToString");
41
42
  var import_hooks = require("../../hooks");
@@ -44,10 +45,6 @@ var import_use_style = require("../../../runtimes/react/use-style");
44
45
  var import_css = require("@emotion/css");
45
46
  var import_responsive_style = require("../../utils/responsive-style");
46
47
  var import_use_breakpoints = require("../../../runtimes/react/hooks/use-breakpoints");
47
- function wrap(min, max, v) {
48
- const rangeSize = max - min;
49
- return ((v - min) % rangeSize + rangeSize) % rangeSize + min;
50
- }
51
48
  const LeftChevron = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "10", height: "14", viewBox: "0 0 10 14", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
52
49
  "path",
53
50
  {
@@ -93,7 +90,7 @@ const Carousel = (0, import_react.forwardRef)(function Carousel2({
93
90
  const breakpoints = (0, import_use_breakpoints.useBreakpoints)();
94
91
  const [index, setIndex] = (0, import_react.useState)(0);
95
92
  const swipe = (0, import_react.useRef)(0);
96
- const startIndex = wrap(0, images.length, index);
93
+ const startIndex = (0, import_popcorn.wrap)(0, images.length, index);
97
94
  const pageSize = (0, import_hooks.useMediaQuery)(responsivePageSize) || 1;
98
95
  const step = (0, import_hooks.useMediaQuery)(responsiveStep) || 1;
99
96
  const endIndex = startIndex + pageSize;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/builtin/Carousel/Carousel.tsx"],"sourcesContent":["'use client'\n\nimport {\n useState,\n useRef,\n useEffect,\n useCallback,\n forwardRef,\n Ref,\n ComponentPropsWithoutRef,\n} from 'react'\nimport { motion, useAnimation } from 'framer-motion'\nimport { useGesture } from '@use-gesture/react'\n\nimport { getBaseBreakpoint } from '@makeswift/controls'\n\nimport { colorToString } from '../../utils/colorToString'\nimport { type ResponsiveColor } from '../../utils/types'\nimport { useMediaQuery } from '../../hooks'\n\nimport Image from '../Image'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { cx } from '@emotion/css'\nimport { useResponsiveStyle } from '../../utils/responsive-style'\nimport { useBreakpoints } from '../../../runtimes/react/hooks/use-breakpoints'\nimport {\n type ResponsiveGapData,\n type ResponsiveNumberValue,\n type ResponsiveIconRadioGroupValue,\n type ImagesData,\n} from '@makeswift/prop-controllers'\n\n// Utility to wrap a value within a range. Pulled from:\n// https://github.com/Popmotion/popmotion/blob/adf681efd8568ada018ce68082dbd585f25c4c7d/packages/popmotion/src/utils/wrap.ts\nfunction wrap(min: number, max: number, v: number): number {\n const rangeSize = max - min\n return ((((v - min) % rangeSize) + rangeSize) % rangeSize) + min\n}\n\nconst LeftChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M7,13,1,7,7,1\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\nconst RightChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M3,1,9,7,3,13\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\ntype Props = {\n id?: string\n images?: ImagesData\n width?: string\n margin?: string\n pageSize?: ResponsiveNumberValue\n step?: ResponsiveNumberValue\n slideAlignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gap?: ResponsiveGapData\n autoplay?: boolean\n delay?: number\n showArrows?: boolean\n arrowPosition?: ResponsiveIconRadioGroupValue<'inside' | 'center' | 'outside'>\n arrowColor?: ResponsiveColor | null\n arrowBackground?: ResponsiveColor | null\n showDots?: boolean\n dotColor?: ResponsiveColor | null\n slideBorder?: string\n slideBorderRadius?: string\n}\n\nconst SWIPE_THRESHOLD = 20\nconst swipePower = (dx: number, velocity: number) => dx * (1 + velocity)\n\n// constructs a CSS [class selector](https://developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors),\n// returns a compound class selector if the `classname` string includes multiple class names\nconst classSelector = (classname: string) => `.${classname.split(' ').join('.')}`\n\nconst Carousel = forwardRef(function Carousel(\n {\n images = [],\n width,\n margin,\n pageSize: responsivePageSize,\n step: responsiveStep,\n gap,\n slideAlignment,\n showDots,\n showArrows,\n arrowPosition,\n arrowColor,\n arrowBackground,\n dotColor,\n autoplay = false,\n delay = 5,\n slideBorder,\n slideBorderRadius,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const breakpoints = useBreakpoints()\n const [index, setIndex] = useState(0)\n const swipe = useRef(0)\n const startIndex = wrap(0, images.length, index)\n const pageSize = useMediaQuery(responsivePageSize) || 1\n const step = useMediaQuery(responsiveStep) || 1\n const endIndex = startIndex + pageSize\n const pageCount = Math.ceil((images.length - pageSize) / step + 1)\n const pageIndex = Math.ceil(startIndex / step)\n const isFirstPage = pageIndex === 0\n const isLastPage = pageIndex === pageCount - 1\n const paginate = useCallback(\n (pageDistance: number) => {\n if (pageDistance === 0) return\n\n const direction = pageDistance / Math.abs(pageDistance)\n const remaining = direction > 0 ? images.slice(endIndex) : images.slice(0, startIndex)\n const distance = direction * Math.min(remaining.length, step * Math.abs(pageDistance))\n\n setIndex(index + distance)\n },\n [images, index, startIndex, endIndex, step],\n )\n // @ts-expect-error: `useAnimation` types expect no arguments.\n const animation = useAnimation({ x: 0, transition: { type: 'spring', stiffness: 100 } })\n const bindPage = useGesture(\n {\n onDrag: ({ movement: [mx], delta: [dx], velocity: [vx] }) => {\n animation.start({ x: mx })\n swipe.current = swipePower(dx, vx)\n },\n onDragEnd: () => {\n animation.start({ x: 0 })\n\n if (swipe.current > SWIPE_THRESHOLD) paginate(1)\n else if (swipe.current < -SWIPE_THRESHOLD) paginate(-1)\n },\n },\n {\n drag: {\n axis: 'x',\n bounds: { left: 0, right: 0 },\n rubberband: true,\n },\n },\n )\n\n useEffect(() => {\n if (!autoplay || pageSize !== 0) setIndex(0)\n }, [autoplay, pageSize])\n\n useEffect(() => {\n if (!autoplay) return () => {}\n\n const intervalId = setInterval(() => (isLastPage ? setIndex(0) : paginate(1)), delay * 1000)\n\n return () => clearInterval(intervalId)\n }, [autoplay, delay, paginate, isLastPage])\n\n const clipMaskClassName = useStyle({ overflow: 'hidden' })\n const pageClassName = useStyle({ position: 'relative', width: '100%' })\n const slideClassName = cx(\n useStyle({ display: 'flex' }),\n useStyle(\n useResponsiveStyle([responsivePageSize] as const, ([pageSize = 1]) => ({\n flexBasis: `${100 / pageSize}%`,\n maxWidth: `${100 / pageSize}%`,\n minWidth: `${100 / pageSize}%`,\n })),\n ),\n useStyle(\n useResponsiveStyle([slideAlignment] as const, ([alignItems = 'center']) => ({ alignItems })),\n ),\n )\n\n const reelClassName = cx(\n useStyle({ display: 'flex', position: 'relative', flexWrap: 'nowrap' }),\n useStyle(\n useResponsiveStyle([gap] as const, ([gap = { value: 0, unit: 'px' }]) => ({\n margin: `0 ${`${-gap.value / 2}${gap.unit}`}`,\n [`& > ${classSelector(slideClassName)}`]: {\n padding: `0 ${`${gap.value / 2}${gap.unit}`}`,\n },\n })),\n ),\n )\n\n const arrowClassName = cx(\n useStyle({\n padding: 10,\n borderRadius: '50%',\n outline: 0,\n border: 0,\n width: 40,\n height: 40,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n userSelect: 'none',\n }),\n useStyle(\n useResponsiveStyle(\n [arrowBackground] as const,\n ([background = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 }]) => ({\n background: colorToString(background),\n }),\n ),\n ),\n useStyle({ svg: { transition: 'transform 0.15s', stroke: 'currentcolor' } }),\n )\n\n const slopClassName = cx(\n useStyle({\n position: 'absolute',\n top: 0,\n bottom: 0,\n\n display: 'flex',\n '&[hidden]': {\n display: 'none',\n },\n\n alignItems: 'center',\n cursor: 'pointer',\n zIndex: 2,\n }),\n useStyle(\n useResponsiveStyle(\n [arrowColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n const leftSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(-100% - 8px))' }\n\n default:\n return { transform: 'translateX(calc(-50%))' }\n }\n }),\n ),\n useStyle({\n left: 0,\n\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(-2px)',\n },\n },\n }),\n )\n\n const rightSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(-8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(100% + 8px))' }\n\n default:\n return { transform: 'translateX(calc(50%))' }\n }\n }),\n ),\n useStyle({\n right: 0,\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(2px)',\n },\n },\n }),\n )\n\n const dotsClassName = cx(\n useStyle({ display: showDots ? 'flex' : 'none', justifyContent: 'center', marginTop: 20 }),\n useStyle(\n useResponsiveStyle(\n [dotColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n return (\n <div\n ref={ref}\n className={cx(\n useStyle({ position: 'relative', display: 'flex', flexDirection: 'column' }),\n width,\n margin,\n useStyle({ '&:focus': { outline: 0 } }),\n )}\n tabIndex={-1}\n onKeyDown={e => {\n switch (e.key) {\n case 'ArrowRight':\n paginate(1)\n break\n case 'ArrowLeft':\n paginate(-1)\n break\n default:\n }\n }}\n >\n {/* NOTE: We set height to 100% here to fix an issue on IE11 where the child height of a flex column extends too far */}\n <div className={useStyle({ position: 'relative', height: '100%' })}>\n <div className={clipMaskClassName}>\n {/* https://github.com/framer/motion/issues/1723 */}\n {/* @ts-expect-error: React HTMLElement typings conflict with motion components */}\n <motion.div {...bindPage()} className={pageClassName} animate={animation}>\n <motion.div\n className={reelClassName}\n animate={{ x: `${-(100 / pageSize) * startIndex}%` }}\n transition={{\n x: {\n type: 'tween',\n ease: [0.165, 0.84, 0.44, 1],\n duration: 0.5,\n },\n }}\n >\n {images.map(({ props: imageProps, key }) => (\n <motion.div\n key={key}\n className={slideClassName}\n onMouseDown={e => e.preventDefault()}\n onClick={e => {\n if (swipe.current !== 0) e.preventDefault()\n }}\n >\n <Image\n width={[\n {\n deviceId: getBaseBreakpoint(breakpoints).id,\n value: { value: 100, unit: '%' },\n },\n ]}\n file={imageProps.file}\n altText={imageProps.altText}\n link={imageProps.link}\n border={slideBorder}\n borderRadius={slideBorderRadius}\n />\n </motion.div>\n ))}\n </motion.div>\n </motion.div>\n </div>\n <div\n onClick={() => paginate(-1)}\n className={leftSlopClassName}\n hidden={!showArrows || isFirstPage}\n >\n <div className={arrowClassName}>\n <LeftChevron />\n </div>\n </div>\n <div\n onClick={() => paginate(1)}\n className={rightSlopClassName}\n hidden={!showArrows || isLastPage}\n >\n <div className={arrowClassName}>\n <RightChevron />\n </div>\n </div>\n </div>\n <div className={dotsClassName}>\n {Array.from({ length: pageCount }).map((_, i) => (\n <Dot key={i} active={i === pageIndex} onClick={() => paginate(i - pageIndex)} />\n ))}\n </div>\n </div>\n )\n})\n\nexport default Carousel\n\ntype DotBaseProps = {\n className?: string\n active: boolean\n}\n\ntype DotProps = DotBaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof DotBaseProps>\n\nfunction Dot({ className, active, ...restOfProps }: DotProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n position: 'relative',\n margin: '0 6px',\n borderRadius: '50%',\n cursor: 'pointer',\n width: 16,\n height: 16,\n\n '&::before, &::after': {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n left: '50%',\n display: 'block',\n borderRadius: '50%',\n transition: 'all 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n },\n\n '&::before': {\n boxShadow: '0 0 0 2px currentColor',\n transform: 'translate3d(-50%, -50%, 0)',\n width: active ? 16 : 10,\n height: active ? 16 : 10,\n },\n\n '&::after': {\n background: 'currentColor',\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n width: 10,\n height: 10,\n },\n\n '&:hover::after': {\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n },\n }),\n className,\n )}\n />\n )\n}\n"],"mappings":"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","names":["import_react","Carousel","pageSize","gap","Image"]}
1
+ {"version":3,"sources":["../../../../../src/components/builtin/Carousel/Carousel.tsx"],"sourcesContent":["'use client'\n\nimport {\n useState,\n useRef,\n useEffect,\n useCallback,\n forwardRef,\n Ref,\n ComponentPropsWithoutRef,\n} from 'react'\nimport { motion, useAnimation } from 'framer-motion'\nimport { useGesture } from '@use-gesture/react'\nimport { wrap } from '@popmotion/popcorn'\n\nimport { getBaseBreakpoint } from '@makeswift/controls'\n\nimport { colorToString } from '../../utils/colorToString'\nimport { type ResponsiveColor } from '../../utils/types'\nimport { useMediaQuery } from '../../hooks'\n\nimport Image from '../Image'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { cx } from '@emotion/css'\nimport { useResponsiveStyle } from '../../utils/responsive-style'\nimport { useBreakpoints } from '../../../runtimes/react/hooks/use-breakpoints'\nimport {\n type ResponsiveGapData,\n type ResponsiveNumberValue,\n type ResponsiveIconRadioGroupValue,\n type ImagesData,\n} from '@makeswift/prop-controllers'\n\nconst LeftChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M7,13,1,7,7,1\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\nconst RightChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M3,1,9,7,3,13\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\ntype Props = {\n id?: string\n images?: ImagesData\n width?: string\n margin?: string\n pageSize?: ResponsiveNumberValue\n step?: ResponsiveNumberValue\n slideAlignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gap?: ResponsiveGapData\n autoplay?: boolean\n delay?: number\n showArrows?: boolean\n arrowPosition?: ResponsiveIconRadioGroupValue<'inside' | 'center' | 'outside'>\n arrowColor?: ResponsiveColor | null\n arrowBackground?: ResponsiveColor | null\n showDots?: boolean\n dotColor?: ResponsiveColor | null\n slideBorder?: string\n slideBorderRadius?: string\n}\n\nconst SWIPE_THRESHOLD = 20\nconst swipePower = (dx: number, velocity: number) => dx * (1 + velocity)\n\n// constructs a CSS [class selector](https://developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors),\n// returns a compound class selector if the `classname` string includes multiple class names\nconst classSelector = (classname: string) => `.${classname.split(' ').join('.')}`\n\nconst Carousel = forwardRef(function Carousel(\n {\n images = [],\n width,\n margin,\n pageSize: responsivePageSize,\n step: responsiveStep,\n gap,\n slideAlignment,\n showDots,\n showArrows,\n arrowPosition,\n arrowColor,\n arrowBackground,\n dotColor,\n autoplay = false,\n delay = 5,\n slideBorder,\n slideBorderRadius,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const breakpoints = useBreakpoints()\n const [index, setIndex] = useState(0)\n const swipe = useRef(0)\n const startIndex = wrap(0, images.length, index)\n const pageSize = useMediaQuery(responsivePageSize) || 1\n const step = useMediaQuery(responsiveStep) || 1\n const endIndex = startIndex + pageSize\n const pageCount = Math.ceil((images.length - pageSize) / step + 1)\n const pageIndex = Math.ceil(startIndex / step)\n const isFirstPage = pageIndex === 0\n const isLastPage = pageIndex === pageCount - 1\n const paginate = useCallback(\n (pageDistance: number) => {\n if (pageDistance === 0) return\n\n const direction = pageDistance / Math.abs(pageDistance)\n const remaining = direction > 0 ? images.slice(endIndex) : images.slice(0, startIndex)\n const distance = direction * Math.min(remaining.length, step * Math.abs(pageDistance))\n\n setIndex(index + distance)\n },\n [images, index, startIndex, endIndex, step],\n )\n // @ts-expect-error: `useAnimation` types expect no arguments.\n const animation = useAnimation({ x: 0, transition: { type: 'spring', stiffness: 100 } })\n const bindPage = useGesture(\n {\n onDrag: ({ movement: [mx], delta: [dx], velocity: [vx] }) => {\n animation.start({ x: mx })\n swipe.current = swipePower(dx, vx)\n },\n onDragEnd: () => {\n animation.start({ x: 0 })\n\n if (swipe.current > SWIPE_THRESHOLD) paginate(1)\n else if (swipe.current < -SWIPE_THRESHOLD) paginate(-1)\n },\n },\n {\n drag: {\n axis: 'x',\n bounds: { left: 0, right: 0 },\n rubberband: true,\n },\n },\n )\n\n useEffect(() => {\n if (!autoplay || pageSize !== 0) setIndex(0)\n }, [autoplay, pageSize])\n\n useEffect(() => {\n if (!autoplay) return () => {}\n\n const intervalId = setInterval(() => (isLastPage ? setIndex(0) : paginate(1)), delay * 1000)\n\n return () => clearInterval(intervalId)\n }, [autoplay, delay, paginate, isLastPage])\n\n const clipMaskClassName = useStyle({ overflow: 'hidden' })\n const pageClassName = useStyle({ position: 'relative', width: '100%' })\n const slideClassName = cx(\n useStyle({ display: 'flex' }),\n useStyle(\n useResponsiveStyle([responsivePageSize] as const, ([pageSize = 1]) => ({\n flexBasis: `${100 / pageSize}%`,\n maxWidth: `${100 / pageSize}%`,\n minWidth: `${100 / pageSize}%`,\n })),\n ),\n useStyle(\n useResponsiveStyle([slideAlignment] as const, ([alignItems = 'center']) => ({ alignItems })),\n ),\n )\n\n const reelClassName = cx(\n useStyle({ display: 'flex', position: 'relative', flexWrap: 'nowrap' }),\n useStyle(\n useResponsiveStyle([gap] as const, ([gap = { value: 0, unit: 'px' }]) => ({\n margin: `0 ${`${-gap.value / 2}${gap.unit}`}`,\n [`& > ${classSelector(slideClassName)}`]: {\n padding: `0 ${`${gap.value / 2}${gap.unit}`}`,\n },\n })),\n ),\n )\n\n const arrowClassName = cx(\n useStyle({\n padding: 10,\n borderRadius: '50%',\n outline: 0,\n border: 0,\n width: 40,\n height: 40,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n userSelect: 'none',\n }),\n useStyle(\n useResponsiveStyle(\n [arrowBackground] as const,\n ([background = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 }]) => ({\n background: colorToString(background),\n }),\n ),\n ),\n useStyle({ svg: { transition: 'transform 0.15s', stroke: 'currentcolor' } }),\n )\n\n const slopClassName = cx(\n useStyle({\n position: 'absolute',\n top: 0,\n bottom: 0,\n\n display: 'flex',\n '&[hidden]': {\n display: 'none',\n },\n\n alignItems: 'center',\n cursor: 'pointer',\n zIndex: 2,\n }),\n useStyle(\n useResponsiveStyle(\n [arrowColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n const leftSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(-100% - 8px))' }\n\n default:\n return { transform: 'translateX(calc(-50%))' }\n }\n }),\n ),\n useStyle({\n left: 0,\n\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(-2px)',\n },\n },\n }),\n )\n\n const rightSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(-8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(100% + 8px))' }\n\n default:\n return { transform: 'translateX(calc(50%))' }\n }\n }),\n ),\n useStyle({\n right: 0,\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(2px)',\n },\n },\n }),\n )\n\n const dotsClassName = cx(\n useStyle({ display: showDots ? 'flex' : 'none', justifyContent: 'center', marginTop: 20 }),\n useStyle(\n useResponsiveStyle(\n [dotColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n return (\n <div\n ref={ref}\n className={cx(\n useStyle({ position: 'relative', display: 'flex', flexDirection: 'column' }),\n width,\n margin,\n useStyle({ '&:focus': { outline: 0 } }),\n )}\n tabIndex={-1}\n onKeyDown={e => {\n switch (e.key) {\n case 'ArrowRight':\n paginate(1)\n break\n case 'ArrowLeft':\n paginate(-1)\n break\n default:\n }\n }}\n >\n {/* NOTE: We set height to 100% here to fix an issue on IE11 where the child height of a flex column extends too far */}\n <div className={useStyle({ position: 'relative', height: '100%' })}>\n <div className={clipMaskClassName}>\n {/* https://github.com/framer/motion/issues/1723 */}\n {/* @ts-expect-error: React HTMLElement typings conflict with motion components */}\n <motion.div {...bindPage()} className={pageClassName} animate={animation}>\n <motion.div\n className={reelClassName}\n animate={{ x: `${-(100 / pageSize) * startIndex}%` }}\n transition={{\n x: {\n type: 'tween',\n ease: [0.165, 0.84, 0.44, 1],\n duration: 0.5,\n },\n }}\n >\n {images.map(({ props: imageProps, key }) => (\n <motion.div\n key={key}\n className={slideClassName}\n onMouseDown={e => e.preventDefault()}\n onClick={e => {\n if (swipe.current !== 0) e.preventDefault()\n }}\n >\n <Image\n width={[\n {\n deviceId: getBaseBreakpoint(breakpoints).id,\n value: { value: 100, unit: '%' },\n },\n ]}\n file={imageProps.file}\n altText={imageProps.altText}\n link={imageProps.link}\n border={slideBorder}\n borderRadius={slideBorderRadius}\n />\n </motion.div>\n ))}\n </motion.div>\n </motion.div>\n </div>\n <div\n onClick={() => paginate(-1)}\n className={leftSlopClassName}\n hidden={!showArrows || isFirstPage}\n >\n <div className={arrowClassName}>\n <LeftChevron />\n </div>\n </div>\n <div\n onClick={() => paginate(1)}\n className={rightSlopClassName}\n hidden={!showArrows || isLastPage}\n >\n <div className={arrowClassName}>\n <RightChevron />\n </div>\n </div>\n </div>\n <div className={dotsClassName}>\n {Array.from({ length: pageCount }).map((_, i) => (\n <Dot key={i} active={i === pageIndex} onClick={() => paginate(i - pageIndex)} />\n ))}\n </div>\n </div>\n )\n})\n\nexport default Carousel\n\ntype DotBaseProps = {\n className?: string\n active: boolean\n}\n\ntype DotProps = DotBaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof DotBaseProps>\n\nfunction Dot({ className, active, ...restOfProps }: DotProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n position: 'relative',\n margin: '0 6px',\n borderRadius: '50%',\n cursor: 'pointer',\n width: 16,\n height: 16,\n\n '&::before, &::after': {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n left: '50%',\n display: 'block',\n borderRadius: '50%',\n transition: 'all 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n },\n\n '&::before': {\n boxShadow: '0 0 0 2px currentColor',\n transform: 'translate3d(-50%, -50%, 0)',\n width: active ? 16 : 10,\n height: active ? 16 : 10,\n },\n\n '&::after': {\n background: 'currentColor',\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n width: 10,\n height: 10,\n },\n\n '&:hover::after': {\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n },\n }),\n className,\n )}\n />\n )\n}\n"],"mappings":"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","names":["import_react","Carousel","pageSize","gap","Image"]}
@@ -29,7 +29,6 @@ var import_prop_controllers = require("@makeswift/prop-controllers");
29
29
  var import_descriptors = require("../prop-controllers/descriptors");
30
30
  var import_copy = require("../prop-controllers/copy");
31
31
  var import_prop_controllers2 = require("../prop-controllers");
32
- var import_merge_translations_visitor = require("./visitors/merge-translations-visitor");
33
32
  function copy(definition, value, context) {
34
33
  if (!(0, import_descriptors.isLegacyDescriptor)(definition)) {
35
34
  return definition.copyData(value, context);
@@ -79,8 +78,7 @@ function mergeTranslatedData(definition, data, translatedData, context) {
79
78
  if (data == null)
80
79
  return data;
81
80
  if (!(0, import_descriptors.isLegacyDescriptor)(definition)) {
82
- const mergeTranslationsVisitor = new import_merge_translations_visitor.ReactMergeTranslationsVisitor(context);
83
- return definition.accept(mergeTranslationsVisitor, data, translatedData);
81
+ return definition.mergeTranslatedData(data, translatedData, context);
84
82
  }
85
83
  switch (definition.type) {
86
84
  case import_prop_controllers.Types.TextInput:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/controls/control.ts"],"sourcesContent":["import {\n copyRichTextData,\n type CopyContext,\n type Data,\n type MergeContext,\n type MergeTranslatableDataContext,\n} from '@makeswift/controls'\n\nimport {\n GridPropControllerData,\n Types as PropControllerTypes,\n mergeGridPropControllerTranslatedData,\n} from '@makeswift/prop-controllers'\n\nimport { Descriptor, isLegacyDescriptor } from '../prop-controllers/descriptors'\nimport { copy as propControllerCopy } from '../prop-controllers/copy'\nimport { DELETED_PROP_CONTROLLER_TYPES, PropControllerDescriptor } from '../prop-controllers'\nimport { ReactMergeTranslationsVisitor } from './visitors/merge-translations-visitor'\n\nexport function copy(definition: Descriptor, value: any, context: CopyContext) {\n if (!isLegacyDescriptor(definition)) {\n return definition.copyData(value, context)\n }\n\n switch (definition.type) {\n case PropControllerTypes.Backgrounds:\n case PropControllerTypes.Grid:\n case PropControllerTypes.NavigationLinks:\n case PropControllerTypes.Link:\n case PropControllerTypes.Shadows:\n case PropControllerTypes.Image:\n case PropControllerTypes.Images:\n case PropControllerTypes.ResponsiveColor:\n case PropControllerTypes.TableFormFields:\n case PropControllerTypes.Table:\n case PropControllerTypes.Border:\n case PropControllerTypes.ElementID:\n return propControllerCopy(definition, value, context)\n\n case DELETED_PROP_CONTROLLER_TYPES.RichText:\n return copyRichTextData(value, context)\n\n default:\n return value\n }\n}\n\nexport function merge(\n definition: PropControllerDescriptor,\n a: Data,\n b: Data = a,\n context: MergeContext,\n): Data {\n if (!isLegacyDescriptor(definition)) {\n return definition.mergeData(a, b, context)\n }\n\n switch (definition.type) {\n default:\n return b\n }\n}\n\nexport function getTranslatableData(definition: Descriptor, data: Data): Data {\n if (!isLegacyDescriptor(definition)) {\n return definition.getTranslatableData(data)\n }\n\n switch (definition.type) {\n case PropControllerTypes.TextInput:\n case PropControllerTypes.TextArea:\n return data\n\n default:\n return null\n }\n}\n\nexport function mergeTranslatedData(\n definition: PropControllerDescriptor,\n data: Data,\n translatedData: Data,\n context: MergeTranslatableDataContext,\n): Data {\n if (data == null) return data\n if (!isLegacyDescriptor(definition)) {\n const mergeTranslationsVisitor = new ReactMergeTranslationsVisitor(context)\n return definition.accept(mergeTranslationsVisitor, data, translatedData)\n }\n\n switch (definition.type) {\n case PropControllerTypes.TextInput:\n case PropControllerTypes.TextArea:\n if (translatedData == null) return data\n return translatedData\n\n case PropControllerTypes.Grid:\n return mergeGridPropControllerTranslatedData(data as GridPropControllerData, context)\n\n default:\n return data\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMO;AAEP,8BAIO;AAEP,yBAA+C;AAC/C,kBAA2C;AAC3C,IAAAA,2BAAwE;AACxE,wCAA8C;AAEvC,SAAS,KAAK,YAAwB,OAAY,SAAsB;AAC7E,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,SAAS,OAAO,OAAO;AAAA,EAC3C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAC,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,YAAAC,MAAmB,YAAY,OAAO,OAAO;AAAA,IAEtD,KAAK,uDAA8B;AACjC,iBAAO,kCAAiB,OAAO,OAAO;AAAA,IAExC;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,MACd,YACA,GACA,IAAU,GACV,SACM;AACN,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,UAAU,GAAG,GAAG,OAAO;AAAA,EAC3C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,oBAAoB,YAAwB,MAAkB;AAC5E,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,oBAAoB,IAAI;AAAA,EAC5C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAD,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,aAAO;AAAA,IAET;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,oBACd,YACA,MACA,gBACA,SACM;AACN,MAAI,QAAQ;AAAM,WAAO;AACzB,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,UAAM,2BAA2B,IAAI,gEAA8B,OAAO;AAC1E,WAAO,WAAW,OAAO,0BAA0B,MAAM,cAAc;AAAA,EACzE;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,UAAI,kBAAkB;AAAM,eAAO;AACnC,aAAO;AAAA,IAET,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,+DAAsC,MAAgC,OAAO;AAAA,IAEtF;AACE,aAAO;AAAA,EACX;AACF;","names":["import_prop_controllers","PropControllerTypes","propControllerCopy"]}
1
+ {"version":3,"sources":["../../../src/controls/control.ts"],"sourcesContent":["import {\n copyRichTextData,\n type CopyContext,\n type Data,\n type MergeContext,\n type MergeTranslatableDataContext,\n} from '@makeswift/controls'\n\nimport {\n GridPropControllerData,\n Types as PropControllerTypes,\n mergeGridPropControllerTranslatedData,\n} from '@makeswift/prop-controllers'\n\nimport { Descriptor, isLegacyDescriptor } from '../prop-controllers/descriptors'\nimport { copy as propControllerCopy } from '../prop-controllers/copy'\nimport { DELETED_PROP_CONTROLLER_TYPES, PropControllerDescriptor } from '../prop-controllers'\n\nexport function copy(definition: Descriptor, value: any, context: CopyContext) {\n if (!isLegacyDescriptor(definition)) {\n return definition.copyData(value, context)\n }\n\n switch (definition.type) {\n case PropControllerTypes.Backgrounds:\n case PropControllerTypes.Grid:\n case PropControllerTypes.NavigationLinks:\n case PropControllerTypes.Link:\n case PropControllerTypes.Shadows:\n case PropControllerTypes.Image:\n case PropControllerTypes.Images:\n case PropControllerTypes.ResponsiveColor:\n case PropControllerTypes.TableFormFields:\n case PropControllerTypes.Table:\n case PropControllerTypes.Border:\n case PropControllerTypes.ElementID:\n return propControllerCopy(definition, value, context)\n\n case DELETED_PROP_CONTROLLER_TYPES.RichText:\n return copyRichTextData(value, context)\n\n default:\n return value\n }\n}\n\nexport function merge(\n definition: PropControllerDescriptor,\n a: Data,\n b: Data = a,\n context: MergeContext,\n): Data {\n if (!isLegacyDescriptor(definition)) {\n return definition.mergeData(a, b, context)\n }\n\n switch (definition.type) {\n default:\n return b\n }\n}\n\nexport function getTranslatableData(definition: Descriptor, data: Data): Data {\n if (!isLegacyDescriptor(definition)) {\n return definition.getTranslatableData(data)\n }\n\n switch (definition.type) {\n case PropControllerTypes.TextInput:\n case PropControllerTypes.TextArea:\n return data\n\n default:\n return null\n }\n}\n\nexport function mergeTranslatedData(\n definition: PropControllerDescriptor,\n data: Data,\n translatedData: Data,\n context: MergeTranslatableDataContext,\n): Data {\n if (data == null) return data\n if (!isLegacyDescriptor(definition)) {\n return definition.mergeTranslatedData(data, translatedData, context)\n }\n\n switch (definition.type) {\n case PropControllerTypes.TextInput:\n case PropControllerTypes.TextArea:\n if (translatedData == null) return data\n return translatedData\n\n case PropControllerTypes.Grid:\n return mergeGridPropControllerTranslatedData(data as GridPropControllerData, context)\n\n default:\n return data\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMO;AAEP,8BAIO;AAEP,yBAA+C;AAC/C,kBAA2C;AAC3C,IAAAA,2BAAwE;AAEjE,SAAS,KAAK,YAAwB,OAAY,SAAsB;AAC7E,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,SAAS,OAAO,OAAO;AAAA,EAC3C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAC,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,YAAAC,MAAmB,YAAY,OAAO,OAAO;AAAA,IAEtD,KAAK,uDAA8B;AACjC,iBAAO,kCAAiB,OAAO,OAAO;AAAA,IAExC;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,MACd,YACA,GACA,IAAU,GACV,SACM;AACN,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,UAAU,GAAG,GAAG,OAAO;AAAA,EAC3C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,oBAAoB,YAAwB,MAAkB;AAC5E,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,oBAAoB,IAAI;AAAA,EAC5C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAD,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,aAAO;AAAA,IAET;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,oBACd,YACA,MACA,gBACA,SACM;AACN,MAAI,QAAQ;AAAM,WAAO;AACzB,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,oBAAoB,MAAM,gBAAgB,OAAO;AAAA,EACrE;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,UAAI,kBAAkB;AAAM,eAAO;AACnC,aAAO;AAAA,IAET,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,+DAAsC,MAAgC,OAAO;AAAA,IAEtF;AACE,aAAO;AAAA,EACX;AACF;","names":["import_prop_controllers","PropControllerTypes","propControllerCopy"]}
@@ -46,7 +46,7 @@ var import_utils = require("../../slate/utils");
46
46
  var import_rich_text_v2 = require("../../runtimes/react/controls/rich-text-v2");
47
47
  var import_plugin = require("./plugin");
48
48
  var import_control = require("./control");
49
- var import_get_translations = require("./translations/get-translations");
49
+ var import_translation = require("./translation");
50
50
  class Definition extends import_controls.RichTextDefinition {
51
51
  constructor({ mode, defaultValue }, plugins) {
52
52
  super({
@@ -113,7 +113,20 @@ class Definition extends import_controls.RichTextDefinition {
113
113
  getTranslatableData(data) {
114
114
  if (data == null)
115
115
  return null;
116
- return (0, import_get_translations.getTranslatableData)(Definition.dataToNodes(data), this.config.plugins);
116
+ return (0, import_translation.getTranslatableData)(Definition.dataToNodes(data), this.config.plugins);
117
+ }
118
+ mergeTranslatedData(data, translatedData, _context) {
119
+ if (data == null || translatedData == null)
120
+ return data;
121
+ const { descendants, ...rest } = Definition.normalizeData(data);
122
+ return {
123
+ ...rest,
124
+ descendants: (0, import_translation.mergeTranslatedNodes)(
125
+ descendants,
126
+ translatedData,
127
+ this.config.plugins
128
+ )
129
+ };
117
130
  }
118
131
  serialize() {
119
132
  const { plugins, ...config } = this.config;
@@ -1 +1 @@
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 isNotNil,\n ControlDefinition,\n SerializationSchema,\n serialize,\n StableValue,\n type Data,\n type Resolvable,\n type SendMessage,\n type SerializedRecord,\n type DeserializedRecord,\n type SchemaType,\n type SchemaTypeAny,\n type RichTextPluginControl,\n type ResourceResolver,\n type Stylesheet,\n type RichTextMode,\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/utils'\n\nimport { renderRichTextV2 } from '../../runtimes/react/controls/rich-text-v2'\n\nimport { RichTextV2Plugin, Plugin } from './plugin'\nimport { RichTextV2Control } from './control'\nimport { getTranslatableData } from './translations/get-translations'\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 resolveValue(\n data: DataType | undefined,\n _resolver: ResourceResolver,\n _stylesheet: Stylesheet,\n control?: InstanceType,\n ): Resolvable<ReactNode | undefined> {\n const stableValue = StableValue({\n name: Definition.type,\n read: () => renderRichTextV2(data, this, control ?? null),\n })\n\n return {\n ...stableValue,\n triggerResolve: async () => {},\n }\n }\n\n getTranslatableData(data: DataType | undefined): Data {\n if (data == null) return null\n return getTranslatableData(Definition.dataToNodes(data), this.config.plugins)\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":["BaseRichTextDefinition","ipsum"]}
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 isNotNil,\n ControlDefinition,\n SerializationSchema,\n serialize,\n StableValue,\n type Data,\n type Resolvable,\n type SendMessage,\n type SerializedRecord,\n type DeserializedRecord,\n type SchemaType,\n type SchemaTypeAny,\n type MergeTranslatableDataContext,\n type RichTextPluginControl,\n type ResourceResolver,\n type Stylesheet,\n type RichTextMode,\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/utils'\n\nimport { renderRichTextV2 } from '../../runtimes/react/controls/rich-text-v2'\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 resolveValue(\n data: DataType | undefined,\n _resolver: ResourceResolver,\n _stylesheet: Stylesheet,\n control?: InstanceType,\n ): Resolvable<ReactNode | undefined> {\n const stableValue = StableValue({\n name: Definition.type,\n read: () => renderRichTextV2(data, this, control ?? null),\n })\n\n return {\n ...stableValue,\n triggerResolve: async () => {},\n }\n }\n\n getTranslatableData(data: DataType | undefined): Data {\n if (data == null) return null\n return getTranslatableData(Definition.dataToNodes(data), this.config.plugins)\n }\n\n mergeTranslatedData(\n data: DataType | undefined,\n translatedData: Data,\n _context: MergeTranslatableDataContext,\n ): Data {\n if (data == null || 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":["BaseRichTextDefinition","ipsum"]}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var translation_exports = {};
30
+ __export(translation_exports, {
31
+ getTranslatableData: () => getTranslatableData,
32
+ mergeTranslatedNodes: () => mergeTranslatedNodes
33
+ });
34
+ module.exports = __toCommonJS(translation_exports);
35
+ var import_escape_html = __toESM(require("escape-html"));
36
+ var import_slate = require("slate");
37
+ var import_slate_hyperscript = require("slate-hyperscript");
38
+ var import_parse5 = require("parse5");
39
+ var import_controls = require("@makeswift/controls");
40
+ var import_types = require("../../slate/types");
41
+ function createEditorWithPlugins(plugins) {
42
+ return plugins.reduceRight(
43
+ (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,
44
+ (0, import_slate.createEditor)()
45
+ );
46
+ }
47
+ function pathToString(path) {
48
+ return path.join(":");
49
+ }
50
+ function stringToPath(s) {
51
+ return s.split(":").map((a) => parseInt(a));
52
+ }
53
+ function getDescendantTranslatableData(descendant, path) {
54
+ if (import_slate.Text.isText(descendant)) {
55
+ return {};
56
+ }
57
+ if (import_controls.Slate.isList(descendant) || import_controls.Slate.isListItem(descendant)) {
58
+ return descendant.children.reduce(
59
+ (acc, d, j) => ({ ...acc, ...getDescendantTranslatableData(d, [...path, j]) }),
60
+ {}
61
+ );
62
+ }
63
+ const text = getInlineOrTextTranslatableData(descendant);
64
+ if (text == null)
65
+ return {};
66
+ return { [pathToString(path)]: text };
67
+ }
68
+ function getInlineOrTextTranslatableData(descendant, path = []) {
69
+ if (import_slate.Text.isText(descendant)) {
70
+ let string = (0, import_escape_html.default)(descendant.text);
71
+ if (string === "")
72
+ return null;
73
+ if (descendant.typography === void 0)
74
+ return string;
75
+ return `<span key="${pathToString(path)}">${string}</span>`;
76
+ }
77
+ const children = descendant.children.map((child, i) => getInlineOrTextTranslatableData(child, [...path, i])).join("");
78
+ if (children === "")
79
+ return null;
80
+ switch (descendant.type) {
81
+ case import_types.InlineType.Link:
82
+ return `<a key="${pathToString(path)}">${children}</a>`;
83
+ case import_types.InlineType.SuperScript:
84
+ return `<sup key="${pathToString(path)}">${children}</sup>`;
85
+ case import_types.InlineType.SubScript:
86
+ return `<sub key="${pathToString(path)}">${children}</sub>`;
87
+ case import_types.InlineType.Code:
88
+ return `<code key="${pathToString(path)}">${children}</code>`;
89
+ default:
90
+ return children;
91
+ }
92
+ }
93
+ function getTranslatableData(nodes, plugins) {
94
+ const editor = createEditorWithPlugins(plugins);
95
+ editor.children = nodes;
96
+ editor.typographyNormalizationDirection = "up";
97
+ import_slate.Editor.normalize(editor, { force: true });
98
+ return editor.children.reduce(
99
+ (acc, descendant, i) => ({
100
+ ...acc,
101
+ ...getDescendantTranslatableData(descendant, [i])
102
+ }),
103
+ {}
104
+ );
105
+ }
106
+ function deserializeTranslationHtmlString(el, translationKey) {
107
+ if (el.nodeName === "#document-fragment") {
108
+ const children = Array.from(el.childNodes).map((element) => deserializeTranslationHtmlString(element)).flat();
109
+ if (children.length === 0) {
110
+ children.push((0, import_slate_hyperscript.jsx)("text", {}, ""));
111
+ }
112
+ return children;
113
+ }
114
+ if (el.nodeName === "#text" && "value" in el) {
115
+ return [(0, import_slate_hyperscript.jsx)("text", { translationKey: translationKey ?? void 0 }, el.value)];
116
+ }
117
+ if ("namespaceURI" in el) {
118
+ const translationKey2 = el.attrs.find((a) => a.name === "key")?.value ?? void 0;
119
+ const children = Array.from(el.childNodes).map((element) => deserializeTranslationHtmlString(element, translationKey2)).flat();
120
+ if (children.length === 0) {
121
+ children.push((0, import_slate_hyperscript.jsx)("text", {}, ""));
122
+ }
123
+ switch (el.nodeName) {
124
+ case "code":
125
+ return [(0, import_slate_hyperscript.jsx)("element", { type: import_types.InlineType.Code, translationKey: translationKey2 }, children)];
126
+ case "sub":
127
+ return [(0, import_slate_hyperscript.jsx)("element", { type: import_types.InlineType.SubScript, translationKey: translationKey2 }, children)];
128
+ case "sup":
129
+ return [(0, import_slate_hyperscript.jsx)("element", { type: import_types.InlineType.SuperScript, translationKey: translationKey2 }, children)];
130
+ case "a":
131
+ return [(0, import_slate_hyperscript.jsx)("element", { type: import_types.InlineType.Link, translationKey: translationKey2 }, children)];
132
+ default:
133
+ return children;
134
+ }
135
+ }
136
+ return [];
137
+ }
138
+ function mergeTranslatedNodes(nodes, translatedData, plugins) {
139
+ const sourceEditor = createEditorWithPlugins(plugins);
140
+ const targetEditor = createEditorWithPlugins(plugins);
141
+ sourceEditor.children = nodes;
142
+ sourceEditor.typographyNormalizationDirection = "up";
143
+ import_slate.Editor.normalize(sourceEditor, { force: true });
144
+ Object.entries(translatedData).reverse().forEach(([blockStringPath, htmlString]) => {
145
+ const blockPath = stringToPath(blockStringPath);
146
+ if (blockPath.length === 0)
147
+ return;
148
+ const html = (0, import_parse5.parseFragment)(htmlString);
149
+ const inlineDescendants = deserializeTranslationHtmlString(html);
150
+ targetEditor.children = [{ type: import_types.BlockType.Default, children: inlineDescendants }];
151
+ targetEditor.typographyNormalizationDirection = "neutral";
152
+ import_slate.Editor.normalize(targetEditor, { force: true });
153
+ for (const [descendant, absolutePathToTargetNode] of import_slate.Node.descendants(targetEditor)) {
154
+ if (!import_slate.Text.isText(descendant) && !import_controls.Slate.isInline(descendant) || descendant.translationKey == null || descendant.translationKey === "") {
155
+ continue;
156
+ }
157
+ const relativePathToSourceNode = stringToPath(descendant.translationKey);
158
+ const absolutePathToSourceNode = [...blockPath, ...relativePathToSourceNode];
159
+ const [sourceNode] = import_slate.Editor.node(sourceEditor, absolutePathToSourceNode);
160
+ if (import_slate.Text.isText(sourceNode) && import_slate.Text.isText(descendant)) {
161
+ const { translationKey, text, ...rest } = sourceNode;
162
+ import_slate.Transforms.setNodes(targetEditor, rest, { at: absolutePathToTargetNode });
163
+ import_slate.Transforms.unsetNodes(targetEditor, "translationKey", { at: absolutePathToTargetNode });
164
+ } else if (import_controls.Slate.isInline(sourceNode) && import_controls.Slate.isInline(descendant)) {
165
+ const { translationKey, children, ...rest } = sourceNode;
166
+ import_slate.Transforms.setNodes(targetEditor, rest, { at: absolutePathToTargetNode });
167
+ import_slate.Transforms.unsetNodes(targetEditor, "translationKey", { at: absolutePathToTargetNode });
168
+ }
169
+ }
170
+ const translatedChildren = targetEditor.children.at(0)?.children;
171
+ import_slate.Editor.withoutNormalizing(sourceEditor, () => {
172
+ Array.from(import_slate.Node.children(sourceEditor, blockPath)).reverse().forEach(([_, path]) => {
173
+ import_slate.Transforms.removeNodes(sourceEditor, { at: path });
174
+ });
175
+ import_slate.Transforms.insertNodes(sourceEditor, translatedChildren, { at: [...blockPath, 0] });
176
+ });
177
+ });
178
+ sourceEditor.typographyNormalizationDirection = "down";
179
+ import_slate.Editor.normalize(sourceEditor, { force: true });
180
+ return sourceEditor.children;
181
+ }
182
+ // Annotate the CommonJS export names for ESM import in node:
183
+ 0 && (module.exports = {
184
+ getTranslatableData,
185
+ mergeTranslatedNodes
186
+ });
187
+ //# sourceMappingURL=translation.js.map
@@ -0,0 +1 @@
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":["escapeHtml","translationKey"]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var base_exports = {};
20
+ __export(base_exports, {
21
+ deserializeControl: () => deserializeControl,
22
+ deserializeUnifiedControlDef: () => deserializeUnifiedControlDef,
23
+ serializeControls: () => serializeControls
24
+ });
25
+ module.exports = __toCommonJS(base_exports);
26
+ var import_controls = require("@makeswift/controls");
27
+ var import__ = require("../../index");
28
+ function serializeControls(controls, visitor) {
29
+ return Object.entries(controls).reduce(
30
+ (acc, [key, control]) => {
31
+ return { ...acc, [key]: control.accept(visitor) };
32
+ },
33
+ {}
34
+ );
35
+ }
36
+ function deserializeControl(serializedControl, options) {
37
+ const plugins = options?.plugins ?? [];
38
+ return deserializeUnifiedControlDef((0, import_controls.deserializeRecord)(serializedControl, plugins));
39
+ }
40
+ function deserializeUnifiedControlDef(record) {
41
+ const deserializeMethod = {
42
+ [import__.CheckboxDefinition.type]: import__.CheckboxDefinition.deserialize,
43
+ [import__.CodeDefinition.type]: import__.CodeDefinition.deserialize,
44
+ [import__.ColorDefinition.type]: import__.ColorDefinition.deserialize,
45
+ [import__.ComboboxDefinition.type]: import__.ComboboxDefinition.deserialize,
46
+ [import__.FontDefinition.type]: import__.FontDefinition.deserialize,
47
+ [import__.GroupDefinition.type]: (record2) => import__.GroupDefinition.deserialize(record2, deserializeUnifiedControlDef),
48
+ [import__.IconRadioGroupDefinition.type]: import__.IconRadioGroupDefinition.deserialize,
49
+ [import__.ImageDefinition.type]: import__.ImageDefinition.deserialize,
50
+ [import__.LinkDefinition.type]: import__.LinkDefinition.deserialize,
51
+ [import__.ListDefinition.type]: (record2) => import__.ListDefinition.deserialize(record2, deserializeUnifiedControlDef),
52
+ [import__.NumberDefinition.type]: import__.NumberDefinition.deserialize,
53
+ [import__.RichTextV1Definition.type]: import__.RichTextV1Definition.deserialize,
54
+ [import__.RichTextV2Definition.type]: (record2) => import__.RichTextV2Definition.deserialize(record2, deserializeUnifiedControlDef),
55
+ [import__.SelectDefinition.type]: import__.SelectDefinition.deserialize,
56
+ [import__.ShapeDefinition.type]: (record2) => import__.ShapeDefinition.deserialize(record2, deserializeUnifiedControlDef),
57
+ [import__.SliderDefinition.type]: import__.SliderDefinition.deserialize,
58
+ [import_controls.ShapeV2Definition.type]: (record2) => import_controls.ShapeV2Definition.deserialize(record2, deserializeUnifiedControlDef),
59
+ [import__.SlotDefinition.type]: import__.SlotDefinition.deserialize,
60
+ [import__.StyleDefinition.type]: import__.StyleDefinition.deserialize,
61
+ [import__.StyleV2Definition.type]: (record2) => import__.StyleV2Definition.deserialize(record2, deserializeUnifiedControlDef),
62
+ [import__.TextAreaDefinition.type]: import__.TextAreaDefinition.deserialize,
63
+ [import__.TextInputDefinition.type]: import__.TextInputDefinition.deserialize,
64
+ [import__.unstable_TypographyDefinition.type]: import__.unstable_TypographyDefinition.deserialize
65
+ };
66
+ const deserialize = deserializeMethod[record.type] ?? null;
67
+ if (deserialize == null) {
68
+ throw new Error(`Unknown control type: ${record.type}`);
69
+ }
70
+ return deserialize(record);
71
+ }
72
+ // Annotate the CommonJS export names for ESM import in node:
73
+ 0 && (module.exports = {
74
+ deserializeControl,
75
+ deserializeUnifiedControlDef,
76
+ serializeControls
77
+ });
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/controls/serialization/base/index.ts"],"sourcesContent":["import {\n ControlDefinition,\n type SerializedRecord,\n type DeserializedRecord,\n ShapeV2Definition,\n DeserializationPlugin,\n deserializeRecord,\n} from '@makeswift/controls'\n\nimport {\n CheckboxDefinition,\n CodeDefinition,\n ColorDefinition,\n ComboboxDefinition,\n FontDefinition,\n GroupDefinition,\n IconRadioGroupDefinition,\n ImageDefinition,\n LinkDefinition,\n ListDefinition,\n NumberDefinition,\n RichTextV1Definition,\n RichTextV2Definition,\n SelectDefinition,\n ShapeDefinition,\n SliderDefinition,\n SlotDefinition,\n StyleDefinition,\n StyleV2Definition,\n TextAreaDefinition,\n TextInputDefinition,\n unstable_TypographyDefinition,\n} from '../../index'\n\nimport { BaseControlSerializationVisitor } from './visitor'\n\nexport { type SerializedRecord, type DeserializedRecord } from '@makeswift/controls'\n\nexport function serializeControls(\n controls: Record<string, ControlDefinition>,\n visitor: BaseControlSerializationVisitor,\n): Record<string, SerializedRecord> {\n return Object.entries(controls).reduce<Record<string, SerializedRecord>>(\n (acc, [key, control]) => {\n return { ...acc, [key]: control.accept(visitor) }\n },\n {},\n )\n}\n\nexport type DeserializeControlOptions = {\n plugins: DeserializationPlugin<any>[]\n}\n\nexport function deserializeControl(\n serializedControl: SerializedRecord,\n options: DeserializeControlOptions,\n): ControlDefinition {\n const plugins = options?.plugins ?? []\n\n return deserializeUnifiedControlDef(deserializeRecord(serializedControl, plugins))\n}\n\nexport function deserializeUnifiedControlDef(record: DeserializedRecord): ControlDefinition {\n type DeserializeMethod = (data: DeserializedRecord) => ControlDefinition\n const deserializeMethod: Record<string, DeserializeMethod> = {\n [CheckboxDefinition.type]: CheckboxDefinition.deserialize,\n [CodeDefinition.type]: CodeDefinition.deserialize,\n [ColorDefinition.type]: ColorDefinition.deserialize,\n [ComboboxDefinition.type]: ComboboxDefinition.deserialize,\n [FontDefinition.type]: FontDefinition.deserialize,\n [GroupDefinition.type]: record =>\n GroupDefinition.deserialize(record, deserializeUnifiedControlDef),\n [IconRadioGroupDefinition.type]: IconRadioGroupDefinition.deserialize,\n [ImageDefinition.type]: ImageDefinition.deserialize,\n [LinkDefinition.type]: LinkDefinition.deserialize,\n [ListDefinition.type]: record =>\n ListDefinition.deserialize(record, deserializeUnifiedControlDef),\n [NumberDefinition.type]: NumberDefinition.deserialize,\n [RichTextV1Definition.type]: RichTextV1Definition.deserialize,\n [RichTextV2Definition.type]: record =>\n RichTextV2Definition.deserialize(record, deserializeUnifiedControlDef),\n [SelectDefinition.type]: SelectDefinition.deserialize,\n [ShapeDefinition.type]: record =>\n ShapeDefinition.deserialize(record, deserializeUnifiedControlDef),\n [SliderDefinition.type]: SliderDefinition.deserialize,\n [ShapeV2Definition.type]: record =>\n ShapeV2Definition.deserialize(record, deserializeUnifiedControlDef),\n [SlotDefinition.type]: SlotDefinition.deserialize,\n [StyleDefinition.type]: StyleDefinition.deserialize,\n [StyleV2Definition.type]: record =>\n StyleV2Definition.deserialize(record, deserializeUnifiedControlDef),\n [TextAreaDefinition.type]: TextAreaDefinition.deserialize,\n [TextInputDefinition.type]: TextInputDefinition.deserialize,\n [unstable_TypographyDefinition.type]: unstable_TypographyDefinition.deserialize,\n } as const\n\n const deserialize = deserializeMethod[record.type] ?? null\n if (deserialize == null) {\n throw new Error(`Unknown control type: ${record.type}`)\n }\n\n return deserialize(record)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOO;AAEP,eAuBO;AAMA,SAAS,kBACd,UACA,SACkC;AAClC,SAAO,OAAO,QAAQ,QAAQ,EAAE;AAAA,IAC9B,CAAC,KAAK,CAAC,KAAK,OAAO,MAAM;AACvB,aAAO,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,QAAQ,OAAO,OAAO,EAAE;AAAA,IAClD;AAAA,IACA,CAAC;AAAA,EACH;AACF;AAMO,SAAS,mBACd,mBACA,SACmB;AACnB,QAAM,UAAU,SAAS,WAAW,CAAC;AAErC,SAAO,iCAA6B,mCAAkB,mBAAmB,OAAO,CAAC;AACnF;AAEO,SAAS,6BAA6B,QAA+C;AAE1F,QAAM,oBAAuD;AAAA,IAC3D,CAAC,4BAAmB,IAAI,GAAG,4BAAmB;AAAA,IAC9C,CAAC,wBAAe,IAAI,GAAG,wBAAe;AAAA,IACtC,CAAC,yBAAgB,IAAI,GAAG,yBAAgB;AAAA,IACxC,CAAC,4BAAmB,IAAI,GAAG,4BAAmB;AAAA,IAC9C,CAAC,wBAAe,IAAI,GAAG,wBAAe;AAAA,IACtC,CAAC,yBAAgB,IAAI,GAAG,CAAAA,YACtB,yBAAgB,YAAYA,SAAQ,4BAA4B;AAAA,IAClE,CAAC,kCAAyB,IAAI,GAAG,kCAAyB;AAAA,IAC1D,CAAC,yBAAgB,IAAI,GAAG,yBAAgB;AAAA,IACxC,CAAC,wBAAe,IAAI,GAAG,wBAAe;AAAA,IACtC,CAAC,wBAAe,IAAI,GAAG,CAAAA,YACrB,wBAAe,YAAYA,SAAQ,4BAA4B;AAAA,IACjE,CAAC,0BAAiB,IAAI,GAAG,0BAAiB;AAAA,IAC1C,CAAC,8BAAqB,IAAI,GAAG,8BAAqB;AAAA,IAClD,CAAC,8BAAqB,IAAI,GAAG,CAAAA,YAC3B,8BAAqB,YAAYA,SAAQ,4BAA4B;AAAA,IACvE,CAAC,0BAAiB,IAAI,GAAG,0BAAiB;AAAA,IAC1C,CAAC,yBAAgB,IAAI,GAAG,CAAAA,YACtB,yBAAgB,YAAYA,SAAQ,4BAA4B;AAAA,IAClE,CAAC,0BAAiB,IAAI,GAAG,0BAAiB;AAAA,IAC1C,CAAC,kCAAkB,IAAI,GAAG,CAAAA,YACxB,kCAAkB,YAAYA,SAAQ,4BAA4B;AAAA,IACpE,CAAC,wBAAe,IAAI,GAAG,wBAAe;AAAA,IACtC,CAAC,yBAAgB,IAAI,GAAG,yBAAgB;AAAA,IACxC,CAAC,2BAAkB,IAAI,GAAG,CAAAA,YACxB,2BAAkB,YAAYA,SAAQ,4BAA4B;AAAA,IACpE,CAAC,4BAAmB,IAAI,GAAG,4BAAmB;AAAA,IAC9C,CAAC,6BAAoB,IAAI,GAAG,6BAAoB;AAAA,IAChD,CAAC,uCAA8B,IAAI,GAAG,uCAA8B;AAAA,EACtE;AAEA,QAAM,cAAc,kBAAkB,OAAO,IAAI,KAAK;AACtD,MAAI,eAAe,MAAM;AACvB,UAAM,IAAI,MAAM,yBAAyB,OAAO,IAAI,EAAE;AAAA,EACxD;AAEA,SAAO,YAAY,MAAM;AAC3B;","names":["record"]}