@makeswift/runtime 0.28.8-canary.2 → 0.28.8-canary.20

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 (483) hide show
  1. package/dist/cjs/api/graphql-api-client.js +1 -1
  2. package/dist/cjs/api/rest-api-client.js +1 -1
  3. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  4. package/dist/cjs/builder/host-to-builder-actions.js +5 -5
  5. package/dist/cjs/builder/host-to-builder-actions.js.map +1 -1
  6. package/dist/cjs/client/index.js +1 -1
  7. package/dist/cjs/components/builtin/Embed/Embed.js +2 -1
  8. package/dist/cjs/components/builtin/Embed/Embed.js.map +1 -1
  9. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  10. package/dist/cjs/components/builtin/Navigation/components/DropDownButton/index.js.map +1 -1
  11. package/dist/cjs/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js.map +1 -1
  12. package/dist/cjs/controls/index.js +4 -0
  13. package/dist/cjs/controls/index.js.map +1 -1
  14. package/dist/cjs/controls/link.js.map +1 -1
  15. package/dist/cjs/controls/rich-text/control.js +16 -3
  16. package/dist/cjs/controls/rich-text/control.js.map +1 -1
  17. package/dist/cjs/controls/rich-text/rich-text.js +2 -2
  18. package/dist/cjs/controls/rich-text/rich-text.js.map +1 -1
  19. package/dist/cjs/controls/rich-text-v2/control.js +15 -2
  20. package/dist/cjs/controls/rich-text-v2/control.js.map +1 -1
  21. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js +2 -2
  22. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  23. package/dist/cjs/controls/serialization/base/index.js +1 -0
  24. package/dist/cjs/controls/serialization/base/index.js.map +1 -1
  25. package/dist/cjs/next/testing/breakpoints.js +3 -15
  26. package/dist/cjs/next/testing/breakpoints.js.map +1 -1
  27. package/dist/cjs/next/testing/element-data.js +3 -82
  28. package/dist/cjs/next/testing/element-data.js.map +1 -1
  29. package/dist/cjs/next/testing/react-runtime.js.map +1 -1
  30. package/dist/cjs/prop-controllers/instances.js +20 -4
  31. package/dist/cjs/prop-controllers/instances.js.map +1 -1
  32. package/dist/cjs/runtimes/react/components/Element.js +37 -12
  33. package/dist/cjs/runtimes/react/components/Element.js.map +1 -1
  34. package/dist/cjs/runtimes/react/components/ElementRegistration.js +32 -11
  35. package/dist/cjs/runtimes/react/components/ElementRegistration.js.map +1 -1
  36. package/dist/cjs/runtimes/react/components/control-instances-context.js +38 -0
  37. package/dist/cjs/runtimes/react/components/control-instances-context.js.map +1 -0
  38. package/dist/cjs/runtimes/react/components/resolve-props.js +12 -1
  39. package/dist/cjs/runtimes/react/components/resolve-props.js.map +1 -1
  40. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/editable-text.js.map +1 -1
  41. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js +4 -2
  42. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js.map +1 -1
  43. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js +2 -2
  44. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  45. package/dist/cjs/runtimes/react/controls/style.js.map +1 -1
  46. package/dist/cjs/runtimes/react/element-imperative-handle.js +2 -2
  47. package/dist/cjs/runtimes/react/element-imperative-handle.js.map +1 -1
  48. package/dist/cjs/runtimes/react/hooks/use-control-instance.js +88 -0
  49. package/dist/cjs/runtimes/react/hooks/use-control-instance.js.map +1 -0
  50. package/dist/cjs/runtimes/react/hooks/use-control-instances.js +29 -0
  51. package/dist/cjs/runtimes/react/hooks/use-control-instances.js.map +1 -0
  52. package/dist/cjs/runtimes/react/hooks/use-disable-register-element.js +3 -3
  53. package/dist/cjs/runtimes/react/hooks/use-disable-register-element.js.map +1 -1
  54. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js +17 -33
  55. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  56. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js +3 -3
  57. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  58. package/dist/cjs/runtimes/react/react-runtime-core.js +2 -1
  59. package/dist/cjs/runtimes/react/react-runtime-core.js.map +1 -1
  60. package/dist/cjs/{utils/is.js → runtimes/react/stylesheet-factory.js} +3 -12
  61. package/dist/cjs/runtimes/react/stylesheet-factory.js.map +1 -0
  62. package/dist/cjs/runtimes/react/testing/index.js +25 -0
  63. package/dist/cjs/runtimes/react/testing/index.js.map +1 -0
  64. package/dist/cjs/runtimes/react/{controls/group.js → testing/react-provider.js} +14 -21
  65. package/dist/cjs/runtimes/react/testing/react-provider.js.map +1 -0
  66. package/dist/cjs/slate/TypographyPlugin/normalizeTypographyUp.js.map +1 -1
  67. package/dist/cjs/slate/selectors.js.map +1 -1
  68. package/dist/cjs/slate/utils/toText.js.map +1 -1
  69. package/dist/cjs/state/actions/index.js +4 -4
  70. package/dist/cjs/state/actions/index.js.map +1 -1
  71. package/dist/cjs/state/actions/internal/action-types.js +34 -0
  72. package/dist/cjs/state/actions/internal/action-types.js.map +1 -0
  73. package/dist/cjs/state/actions/internal/index.js +0 -17
  74. package/dist/cjs/state/actions/internal/index.js.map +1 -1
  75. package/dist/cjs/state/actions/internal/read-only-action-types.js +44 -0
  76. package/dist/cjs/state/actions/internal/read-only-action-types.js.map +1 -0
  77. package/dist/cjs/state/actions/internal/read-only-actions.js +13 -92
  78. package/dist/cjs/state/actions/internal/read-only-actions.js.map +1 -1
  79. package/dist/cjs/state/actions/internal/read-write-action-types.js +42 -0
  80. package/dist/cjs/state/actions/internal/read-write-action-types.js.map +1 -0
  81. package/dist/cjs/state/actions/internal/read-write-actions.js +119 -14
  82. package/dist/cjs/state/actions/internal/read-write-actions.js.map +1 -1
  83. package/dist/cjs/state/builder-api/action-types.js +49 -0
  84. package/dist/cjs/state/builder-api/action-types.js.map +1 -0
  85. package/dist/cjs/state/builder-api/actions.js +14 -36
  86. package/dist/cjs/state/builder-api/actions.js.map +1 -1
  87. package/dist/cjs/state/builder-api/proxy.js +2 -1
  88. package/dist/cjs/state/builder-api/proxy.js.map +1 -1
  89. package/dist/cjs/state/host-api/action-types.js +43 -0
  90. package/dist/cjs/state/host-api/action-types.js.map +1 -0
  91. package/dist/cjs/state/{host-api.js → host-api/actions.js} +17 -33
  92. package/dist/cjs/state/host-api/actions.js.map +1 -0
  93. package/dist/cjs/state/host-api/index.js +25 -0
  94. package/dist/cjs/state/host-api/index.js.map +1 -0
  95. package/dist/cjs/state/middleware/read-write/builder-api/index.js +15 -15
  96. package/dist/cjs/state/middleware/read-write/builder-api/index.js.map +1 -1
  97. package/dist/cjs/state/middleware/read-write/measure-box-models.js +3 -3
  98. package/dist/cjs/state/middleware/read-write/measure-box-models.js.map +1 -1
  99. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js +10 -47
  100. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js.map +1 -1
  101. package/dist/cjs/state/modules/api-resources.js +5 -5
  102. package/dist/cjs/state/modules/api-resources.js.map +1 -1
  103. package/dist/cjs/state/modules/breakpoints.js +4 -4
  104. package/dist/cjs/state/modules/breakpoints.js.map +1 -1
  105. package/dist/cjs/state/modules/components-meta.js +3 -3
  106. package/dist/cjs/state/modules/components-meta.js.map +1 -1
  107. package/dist/cjs/state/modules/element-trees.js +53 -25
  108. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  109. package/dist/cjs/state/modules/is-in-builder.js +2 -2
  110. package/dist/cjs/state/modules/is-in-builder.js.map +1 -1
  111. package/dist/cjs/state/modules/is-read-only.js +2 -2
  112. package/dist/cjs/state/modules/is-read-only.js.map +1 -1
  113. package/dist/cjs/state/modules/locale.js +2 -2
  114. package/dist/cjs/state/modules/locale.js.map +1 -1
  115. package/dist/cjs/state/modules/localized-resources-map.js +3 -3
  116. package/dist/cjs/state/modules/localized-resources-map.js.map +1 -1
  117. package/dist/cjs/state/modules/{prop-controllers.js → prop-controller-descriptors.js} +7 -7
  118. package/dist/cjs/state/modules/prop-controller-descriptors.js.map +1 -0
  119. package/dist/cjs/state/modules/react-components.js +3 -3
  120. package/dist/cjs/state/modules/react-components.js.map +1 -1
  121. package/dist/cjs/state/modules/read-write/box-models.js +5 -5
  122. package/dist/cjs/state/modules/read-write/box-models.js.map +1 -1
  123. package/dist/cjs/state/modules/read-write/element-imperative-handles.js +3 -3
  124. package/dist/cjs/state/modules/read-write/element-imperative-handles.js.map +1 -1
  125. package/dist/cjs/state/modules/{prop-controller-handles.js → read-write/prop-controllers.js} +5 -5
  126. package/dist/cjs/state/modules/read-write/prop-controllers.js.map +1 -0
  127. package/dist/cjs/state/read-only-state.js +9 -44
  128. package/dist/cjs/state/read-only-state.js.map +1 -1
  129. package/dist/cjs/state/read-write-state.js +37 -0
  130. package/dist/cjs/state/read-write-state.js.map +1 -1
  131. package/dist/cjs/state/shared-api/action-types.js +33 -0
  132. package/dist/cjs/state/shared-api/action-types.js.map +1 -0
  133. package/dist/cjs/state/{shared-api.js → shared-api/actions.js} +8 -14
  134. package/dist/cjs/state/shared-api/actions.js.map +1 -0
  135. package/dist/cjs/state/shared-api/index.js +25 -0
  136. package/dist/cjs/state/shared-api/index.js.map +1 -0
  137. package/dist/cjs/state/store.js +5 -3
  138. package/dist/cjs/state/store.js.map +1 -1
  139. package/dist/cjs/state/translations/get.js +1 -4
  140. package/dist/cjs/state/translations/get.js.map +1 -1
  141. package/dist/cjs/state/translations/merge.js.map +1 -1
  142. package/dist/cjs/state/unified-state.js +12 -0
  143. package/dist/cjs/state/unified-state.js.map +1 -1
  144. package/dist/cjs/testing/breakpoints.js +35 -0
  145. package/dist/cjs/testing/breakpoints.js.map +1 -0
  146. package/dist/cjs/testing/element-data.js +102 -0
  147. package/dist/cjs/testing/element-data.js.map +1 -0
  148. package/dist/cjs/testing/read-write-state.js +32 -0
  149. package/dist/cjs/testing/read-write-state.js.map +1 -0
  150. package/dist/cjs/translations/index.js.map +1 -1
  151. package/dist/cjs/utils/intersection.js.map +1 -1
  152. package/dist/esm/api/graphql-api-client.js +1 -1
  153. package/dist/esm/api/rest-api-client.js +1 -1
  154. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  155. package/dist/esm/builder/host-to-builder-actions.js +2 -4
  156. package/dist/esm/builder/host-to-builder-actions.js.map +1 -1
  157. package/dist/esm/client/index.js +1 -1
  158. package/dist/esm/components/builtin/Embed/Embed.js +3 -2
  159. package/dist/esm/components/builtin/Embed/Embed.js.map +1 -1
  160. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  161. package/dist/esm/components/builtin/Navigation/components/DropDownButton/index.js +5 -1
  162. package/dist/esm/components/builtin/Navigation/components/DropDownButton/index.js.map +1 -1
  163. package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js +5 -1
  164. package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js.map +1 -1
  165. package/dist/esm/controls/index.js +4 -0
  166. package/dist/esm/controls/index.js.map +1 -1
  167. package/dist/esm/controls/link.js.map +1 -1
  168. package/dist/esm/controls/rich-text/control.js +16 -3
  169. package/dist/esm/controls/rich-text/control.js.map +1 -1
  170. package/dist/esm/controls/rich-text/rich-text.js +2 -2
  171. package/dist/esm/controls/rich-text/rich-text.js.map +1 -1
  172. package/dist/esm/controls/rich-text-v2/control.js +15 -2
  173. package/dist/esm/controls/rich-text-v2/control.js.map +1 -1
  174. package/dist/esm/controls/rich-text-v2/rich-text-v2.js +2 -2
  175. package/dist/esm/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  176. package/dist/esm/controls/serialization/base/index.js +2 -0
  177. package/dist/esm/controls/serialization/base/index.js.map +1 -1
  178. package/dist/esm/next/testing/breakpoints.js +1 -8
  179. package/dist/esm/next/testing/breakpoints.js.map +1 -1
  180. package/dist/esm/next/testing/element-data.js +1 -75
  181. package/dist/esm/next/testing/element-data.js.map +1 -1
  182. package/dist/esm/next/testing/react-runtime.js.map +1 -1
  183. package/dist/esm/prop-controllers/instances.js +20 -4
  184. package/dist/esm/prop-controllers/instances.js.map +1 -1
  185. package/dist/esm/runtimes/react/components/Element.js +35 -13
  186. package/dist/esm/runtimes/react/components/Element.js.map +1 -1
  187. package/dist/esm/runtimes/react/components/ElementRegistration.js +37 -12
  188. package/dist/esm/runtimes/react/components/ElementRegistration.js.map +1 -1
  189. package/dist/esm/runtimes/react/components/control-instances-context.js +13 -0
  190. package/dist/esm/runtimes/react/components/control-instances-context.js.map +1 -0
  191. package/dist/esm/runtimes/react/components/resolve-props.js +12 -1
  192. package/dist/esm/runtimes/react/components/resolve-props.js.map +1 -1
  193. package/dist/esm/runtimes/react/controls/rich-text/EditableText/editable-text.js.map +1 -1
  194. package/dist/esm/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js +4 -2
  195. package/dist/esm/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js.map +1 -1
  196. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js +1 -1
  197. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  198. package/dist/esm/runtimes/react/controls/style.js.map +1 -1
  199. package/dist/esm/runtimes/react/element-imperative-handle.js +1 -1
  200. package/dist/esm/runtimes/react/element-imperative-handle.js.map +1 -1
  201. package/dist/esm/runtimes/react/hooks/use-control-instance.js +62 -0
  202. package/dist/esm/runtimes/react/hooks/use-control-instance.js.map +1 -0
  203. package/dist/esm/runtimes/react/hooks/use-control-instances.js +5 -0
  204. package/dist/esm/runtimes/react/hooks/use-control-instances.js.map +1 -0
  205. package/dist/esm/runtimes/react/hooks/use-disable-register-element.js +2 -2
  206. package/dist/esm/runtimes/react/hooks/use-disable-register-element.js.map +1 -1
  207. package/dist/esm/runtimes/react/hooks/use-resolved-props.js +17 -23
  208. package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  209. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js +3 -3
  210. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  211. package/dist/esm/runtimes/react/react-runtime-core.js +2 -1
  212. package/dist/esm/runtimes/react/react-runtime-core.js.map +1 -1
  213. package/dist/esm/runtimes/react/stylesheet-factory.js +1 -0
  214. package/dist/esm/runtimes/react/stylesheet-factory.js.map +1 -0
  215. package/dist/esm/runtimes/react/testing/index.js +3 -0
  216. package/dist/esm/runtimes/react/testing/index.js.map +1 -0
  217. package/dist/esm/runtimes/react/testing/react-provider.js +14 -0
  218. package/dist/esm/runtimes/react/testing/react-provider.js.map +1 -0
  219. package/dist/esm/slate/TypographyPlugin/normalizeTypographyUp.js.map +1 -1
  220. package/dist/esm/slate/selectors.js.map +1 -1
  221. package/dist/esm/slate/utils/toText.js.map +1 -1
  222. package/dist/esm/state/actions/index.js +2 -2
  223. package/dist/esm/state/actions/index.js.map +1 -1
  224. package/dist/esm/state/actions/internal/action-types.js +10 -0
  225. package/dist/esm/state/actions/internal/action-types.js.map +1 -0
  226. package/dist/esm/state/actions/internal/index.js +0 -9
  227. package/dist/esm/state/actions/internal/index.js.map +1 -1
  228. package/dist/esm/state/actions/internal/read-only-action-types.js +20 -0
  229. package/dist/esm/state/actions/internal/read-only-action-types.js.map +1 -0
  230. package/dist/esm/state/actions/internal/read-only-actions.js +1 -73
  231. package/dist/esm/state/actions/internal/read-only-actions.js.map +1 -1
  232. package/dist/esm/state/actions/internal/read-write-action-types.js +18 -0
  233. package/dist/esm/state/actions/internal/read-write-action-types.js.map +1 -0
  234. package/dist/esm/state/actions/internal/read-write-actions.js +94 -8
  235. package/dist/esm/state/actions/internal/read-write-actions.js.map +1 -1
  236. package/dist/esm/state/builder-api/action-types.js +25 -0
  237. package/dist/esm/state/builder-api/action-types.js.map +1 -0
  238. package/dist/esm/state/builder-api/actions.js +1 -24
  239. package/dist/esm/state/builder-api/actions.js.map +1 -1
  240. package/dist/esm/state/builder-api/proxy.js +2 -1
  241. package/dist/esm/state/builder-api/proxy.js.map +1 -1
  242. package/dist/esm/state/host-api/action-types.js +19 -0
  243. package/dist/esm/state/host-api/action-types.js.map +1 -0
  244. package/dist/esm/state/{host-api.js → host-api/actions.js} +2 -17
  245. package/dist/esm/state/host-api/actions.js.map +1 -0
  246. package/dist/esm/state/host-api/index.js +3 -0
  247. package/dist/esm/state/host-api/index.js.map +1 -0
  248. package/dist/esm/state/middleware/read-write/builder-api/index.js +1 -1
  249. package/dist/esm/state/middleware/read-write/builder-api/index.js.map +1 -1
  250. package/dist/esm/state/middleware/read-write/measure-box-models.js +3 -3
  251. package/dist/esm/state/middleware/read-write/measure-box-models.js.map +1 -1
  252. package/dist/esm/state/middleware/read-write/prop-controller-handles.js +13 -47
  253. package/dist/esm/state/middleware/read-write/prop-controller-handles.js.map +1 -1
  254. package/dist/esm/state/modules/api-resources.js +2 -2
  255. package/dist/esm/state/modules/api-resources.js.map +1 -1
  256. package/dist/esm/state/modules/breakpoints.js +2 -2
  257. package/dist/esm/state/modules/breakpoints.js.map +1 -1
  258. package/dist/esm/state/modules/components-meta.js +1 -1
  259. package/dist/esm/state/modules/components-meta.js.map +1 -1
  260. package/dist/esm/state/modules/element-trees.js +50 -22
  261. package/dist/esm/state/modules/element-trees.js.map +1 -1
  262. package/dist/esm/state/modules/is-in-builder.js +1 -1
  263. package/dist/esm/state/modules/is-in-builder.js.map +1 -1
  264. package/dist/esm/state/modules/is-read-only.js +1 -1
  265. package/dist/esm/state/modules/is-read-only.js.map +1 -1
  266. package/dist/esm/state/modules/locale.js +1 -1
  267. package/dist/esm/state/modules/locale.js.map +1 -1
  268. package/dist/esm/state/modules/localized-resources-map.js +1 -1
  269. package/dist/esm/state/modules/localized-resources-map.js.map +1 -1
  270. package/dist/esm/state/modules/{prop-controllers.js → prop-controller-descriptors.js} +2 -2
  271. package/dist/esm/state/modules/prop-controller-descriptors.js.map +1 -0
  272. package/dist/esm/state/modules/react-components.js +1 -1
  273. package/dist/esm/state/modules/react-components.js.map +1 -1
  274. package/dist/esm/state/modules/read-write/box-models.js +2 -2
  275. package/dist/esm/state/modules/read-write/box-models.js.map +1 -1
  276. package/dist/esm/state/modules/read-write/element-imperative-handles.js +3 -3
  277. package/dist/esm/state/modules/read-write/element-imperative-handles.js.map +1 -1
  278. package/dist/esm/state/modules/{prop-controller-handles.js → read-write/prop-controllers.js} +2 -2
  279. package/dist/esm/state/modules/read-write/prop-controllers.js.map +1 -0
  280. package/dist/esm/state/read-only-state.js +9 -41
  281. package/dist/esm/state/read-only-state.js.map +1 -1
  282. package/dist/esm/state/read-write-state.js +34 -0
  283. package/dist/esm/state/read-write-state.js.map +1 -1
  284. package/dist/esm/state/shared-api/action-types.js +9 -0
  285. package/dist/esm/state/shared-api/action-types.js.map +1 -0
  286. package/dist/esm/state/{shared-api.js → shared-api/actions.js} +2 -7
  287. package/dist/esm/state/shared-api/actions.js.map +1 -0
  288. package/dist/esm/state/shared-api/index.js +3 -0
  289. package/dist/esm/state/shared-api/index.js.map +1 -0
  290. package/dist/esm/state/store.js +3 -1
  291. package/dist/esm/state/store.js.map +1 -1
  292. package/dist/esm/state/translations/get.js +1 -4
  293. package/dist/esm/state/translations/get.js.map +1 -1
  294. package/dist/esm/state/translations/merge.js +3 -1
  295. package/dist/esm/state/translations/merge.js.map +1 -1
  296. package/dist/esm/state/unified-state.js +4 -0
  297. package/dist/esm/state/unified-state.js.map +1 -1
  298. package/dist/esm/testing/breakpoints.js +9 -0
  299. package/dist/esm/testing/breakpoints.js.map +1 -0
  300. package/dist/esm/testing/element-data.js +76 -0
  301. package/dist/esm/testing/element-data.js.map +1 -0
  302. package/dist/esm/testing/read-write-state.js +8 -0
  303. package/dist/esm/testing/read-write-state.js.map +1 -0
  304. package/dist/esm/translations/index.js.map +1 -1
  305. package/dist/esm/utils/intersection.js.map +1 -1
  306. package/dist/types/api/schema/page-pathname-slice.d.ts +2 -2
  307. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts +6 -6
  308. package/dist/types/api-handler/handlers/webhook/types.d.ts +20 -20
  309. package/dist/types/builder/host-to-builder-actions.d.ts.map +1 -1
  310. package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
  311. package/dist/types/components/builtin/Form/Form.d.ts +1 -1
  312. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  313. package/dist/types/components/builtin/Navigation/components/DropDownButton/index.d.ts.map +1 -1
  314. package/dist/types/components/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  315. package/dist/types/components/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  316. package/dist/types/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts.map +1 -1
  317. package/dist/types/controls/__tests__/slot.test.d.ts +3 -0
  318. package/dist/types/controls/__tests__/slot.test.d.ts.map +1 -0
  319. package/dist/types/controls/index.d.ts +1 -1
  320. package/dist/types/controls/index.d.ts.map +1 -1
  321. package/dist/types/controls/rich-text/control.d.ts +5 -1
  322. package/dist/types/controls/rich-text/control.d.ts.map +1 -1
  323. package/dist/types/controls/rich-text/rich-text.d.ts +2 -2
  324. package/dist/types/controls/rich-text/rich-text.d.ts.map +1 -1
  325. package/dist/types/controls/rich-text-v2/control.d.ts +6 -2
  326. package/dist/types/controls/rich-text-v2/control.d.ts.map +1 -1
  327. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +2 -2
  328. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  329. package/dist/types/controls/serialization/base/index.d.ts.map +1 -1
  330. package/dist/types/locale.d.ts +1 -1
  331. package/dist/types/next/testing/breakpoints.d.ts +1 -3
  332. package/dist/types/next/testing/breakpoints.d.ts.map +1 -1
  333. package/dist/types/next/testing/element-data.d.ts +1 -54
  334. package/dist/types/next/testing/element-data.d.ts.map +1 -1
  335. package/dist/types/next/testing/react-runtime.d.ts.map +1 -1
  336. package/dist/types/prop-controllers/instances.d.ts +9 -3
  337. package/dist/types/prop-controllers/instances.d.ts.map +1 -1
  338. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  339. package/dist/types/runtimes/react/components/ElementRegistration.d.ts +4 -4
  340. package/dist/types/runtimes/react/components/ElementRegistration.d.ts.map +1 -1
  341. package/dist/types/runtimes/react/components/__tests__/element-registration.test.d.ts +3 -0
  342. package/dist/types/runtimes/react/components/__tests__/element-registration.test.d.ts.map +1 -0
  343. package/dist/types/runtimes/react/components/control-instances-context.d.ts +9 -0
  344. package/dist/types/runtimes/react/components/control-instances-context.d.ts.map +1 -0
  345. package/dist/types/runtimes/react/components/resolve-props.d.ts.map +1 -1
  346. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts +1 -1
  347. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts.map +1 -1
  348. package/dist/types/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.d.ts.map +1 -1
  349. package/dist/types/runtimes/react/element-imperative-handle.d.ts +1 -1
  350. package/dist/types/runtimes/react/element-imperative-handle.d.ts.map +1 -1
  351. package/dist/types/runtimes/react/hooks/__tests__/use-control-instance.test.d.ts +3 -0
  352. package/dist/types/runtimes/react/hooks/__tests__/use-control-instance.test.d.ts.map +1 -0
  353. package/dist/types/runtimes/react/hooks/use-control-instance.d.ts +7 -0
  354. package/dist/types/runtimes/react/hooks/use-control-instance.d.ts.map +1 -0
  355. package/dist/types/runtimes/react/hooks/use-control-instances.d.ts +2 -0
  356. package/dist/types/runtimes/react/hooks/use-control-instances.d.ts.map +1 -0
  357. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts +1 -1
  358. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts.map +1 -1
  359. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts +9 -2
  360. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts.map +1 -1
  361. package/dist/types/runtimes/react/hooks/use-store.d.ts +2 -4
  362. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  363. package/dist/types/runtimes/react/hooks/use-stylesheet-factory.d.ts +1 -5
  364. package/dist/types/runtimes/react/hooks/use-stylesheet-factory.d.ts.map +1 -1
  365. package/dist/types/runtimes/react/react-runtime-core.d.ts +9 -1
  366. package/dist/types/runtimes/react/react-runtime-core.d.ts.map +1 -1
  367. package/dist/types/runtimes/react/stylesheet-factory.d.ts +6 -0
  368. package/dist/types/runtimes/react/stylesheet-factory.d.ts.map +1 -0
  369. package/dist/types/runtimes/react/testing/index.d.ts +3 -0
  370. package/dist/types/runtimes/react/testing/index.d.ts.map +1 -0
  371. package/dist/types/runtimes/react/testing/react-provider.d.ts +8 -0
  372. package/dist/types/runtimes/react/testing/react-provider.d.ts.map +1 -0
  373. package/dist/types/slate/InlineModePlugin/index.d.ts +1 -1
  374. package/dist/types/slate/LinkPlugin/getValue.d.ts.map +1 -1
  375. package/dist/types/slate/LinkPlugin/index.d.ts.map +1 -1
  376. package/dist/types/slate/TypographyPlugin/getValue.d.ts.map +1 -1
  377. package/dist/types/slate/TypographyPlugin/index.d.ts.map +1 -1
  378. package/dist/types/slate/selectors.d.ts +2 -2
  379. package/dist/types/slate/selectors.d.ts.map +1 -1
  380. package/dist/types/slate/utils/toText.d.ts.map +1 -1
  381. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts.map +1 -1
  382. package/dist/types/state/__tests__/fixtures/translatable-content-sample.d.ts.map +1 -1
  383. package/dist/types/state/__tests__/test-store.d.ts +2 -4
  384. package/dist/types/state/__tests__/test-store.d.ts.map +1 -1
  385. package/dist/types/state/actions/index.d.ts +7 -6
  386. package/dist/types/state/actions/index.d.ts.map +1 -1
  387. package/dist/types/state/actions/internal/action-types.d.ts +27 -0
  388. package/dist/types/state/actions/internal/action-types.d.ts.map +1 -0
  389. package/dist/types/state/actions/internal/index.d.ts +0 -25
  390. package/dist/types/state/actions/internal/index.d.ts.map +1 -1
  391. package/dist/types/state/actions/internal/read-only-action-types.d.ts +15 -0
  392. package/dist/types/state/actions/internal/read-only-action-types.d.ts.map +1 -0
  393. package/dist/types/state/actions/internal/read-only-actions.d.ts +3 -76
  394. package/dist/types/state/actions/internal/read-only-actions.d.ts.map +1 -1
  395. package/dist/types/state/actions/internal/read-write-action-types.d.ts +15 -0
  396. package/dist/types/state/actions/internal/read-write-action-types.d.ts.map +1 -0
  397. package/dist/types/state/actions/internal/read-write-actions.d.ts +71 -8
  398. package/dist/types/state/actions/internal/read-write-actions.d.ts.map +1 -1
  399. package/dist/types/state/builder-api/action-types.d.ts +22 -0
  400. package/dist/types/state/builder-api/action-types.d.ts.map +1 -0
  401. package/dist/types/state/builder-api/actions.d.ts +1 -21
  402. package/dist/types/state/builder-api/actions.d.ts.map +1 -1
  403. package/dist/types/state/builder-api/proxy.d.ts.map +1 -1
  404. package/dist/types/state/host-api/action-types.d.ts +17 -0
  405. package/dist/types/state/host-api/action-types.d.ts.map +1 -0
  406. package/dist/types/state/{host-api.d.ts → host-api/actions.d.ts} +7 -22
  407. package/dist/types/state/host-api/actions.d.ts.map +1 -0
  408. package/dist/types/state/host-api/index.d.ts +3 -0
  409. package/dist/types/state/host-api/index.d.ts.map +1 -0
  410. package/dist/types/state/middleware/read-write/__tests__/fixtures/operations.d.ts.map +1 -0
  411. package/dist/types/state/middleware/read-write/__tests__/fixtures/root-elements.d.ts.map +1 -0
  412. package/dist/types/state/middleware/read-write/__tests__/prop-controller-handles.test.d.ts +2 -0
  413. package/dist/types/state/middleware/read-write/__tests__/prop-controller-handles.test.d.ts.map +1 -0
  414. package/dist/types/state/middleware/read-write/__tests__/update-element-tree.test.d.ts +2 -0
  415. package/dist/types/state/middleware/read-write/__tests__/update-element-tree.test.d.ts.map +1 -0
  416. package/dist/types/state/middleware/read-write/prop-controller-handles.d.ts.map +1 -1
  417. package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts +737 -0
  418. package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts.map +1 -1
  419. package/dist/types/state/modules/components-meta.d.ts +3 -0
  420. package/dist/types/state/modules/components-meta.d.ts.map +1 -1
  421. package/dist/types/state/modules/element-trees.d.ts +1 -1
  422. package/dist/types/state/modules/element-trees.d.ts.map +1 -1
  423. package/dist/types/state/modules/{prop-controllers.d.ts → prop-controller-descriptors.d.ts} +1 -1
  424. package/dist/types/state/modules/prop-controller-descriptors.d.ts.map +1 -0
  425. package/dist/types/state/modules/{prop-controller-handles.d.ts → read-write/prop-controllers.d.ts} +4 -4
  426. package/dist/types/state/modules/{prop-controller-handles.d.ts.map → read-write/prop-controllers.d.ts.map} +1 -1
  427. package/dist/types/state/read-only-state.d.ts +6 -70
  428. package/dist/types/state/read-only-state.d.ts.map +1 -1
  429. package/dist/types/state/read-write-state.d.ts +67 -4
  430. package/dist/types/state/read-write-state.d.ts.map +1 -1
  431. package/dist/types/state/shared-api/action-types.d.ts +6 -0
  432. package/dist/types/state/shared-api/action-types.d.ts.map +1 -0
  433. package/dist/types/state/{shared-api.d.ts → shared-api/actions.d.ts} +3 -7
  434. package/dist/types/state/shared-api/actions.d.ts.map +1 -0
  435. package/dist/types/state/shared-api/index.d.ts +3 -0
  436. package/dist/types/state/shared-api/index.d.ts.map +1 -0
  437. package/dist/types/state/store.d.ts +4 -8
  438. package/dist/types/state/store.d.ts.map +1 -1
  439. package/dist/types/state/translations/get.d.ts +1 -1
  440. package/dist/types/state/translations/get.d.ts.map +1 -1
  441. package/dist/types/state/translations/merge.d.ts +1 -1
  442. package/dist/types/state/translations/merge.d.ts.map +1 -1
  443. package/dist/types/state/unified-state.d.ts +2 -0
  444. package/dist/types/state/unified-state.d.ts.map +1 -1
  445. package/dist/types/testing/breakpoints.d.ts +4 -0
  446. package/dist/types/testing/breakpoints.d.ts.map +1 -0
  447. package/dist/types/testing/element-data.d.ts +59 -0
  448. package/dist/types/testing/element-data.d.ts.map +1 -0
  449. package/dist/types/testing/read-write-state.d.ts +3 -0
  450. package/dist/types/testing/read-write-state.d.ts.map +1 -0
  451. package/dist/types/translations/index.d.ts +1 -1
  452. package/dist/types/translations/index.d.ts.map +1 -1
  453. package/dist/types/utils/intersection.d.ts +2 -1
  454. package/dist/types/utils/intersection.d.ts.map +1 -1
  455. package/package.json +9 -6
  456. package/react/builtins/package.json +1 -1
  457. package/dist/cjs/runtimes/react/controls/group.js.map +0 -1
  458. package/dist/cjs/state/host-api.js.map +0 -1
  459. package/dist/cjs/state/modules/prop-controller-handles.js.map +0 -1
  460. package/dist/cjs/state/modules/prop-controllers.js.map +0 -1
  461. package/dist/cjs/state/shared-api.js.map +0 -1
  462. package/dist/cjs/utils/is.js.map +0 -1
  463. package/dist/esm/runtimes/react/controls/group.js +0 -23
  464. package/dist/esm/runtimes/react/controls/group.js.map +0 -1
  465. package/dist/esm/state/host-api.js.map +0 -1
  466. package/dist/esm/state/modules/prop-controller-handles.js.map +0 -1
  467. package/dist/esm/state/modules/prop-controllers.js.map +0 -1
  468. package/dist/esm/state/shared-api.js.map +0 -1
  469. package/dist/esm/utils/is.js +0 -6
  470. package/dist/esm/utils/is.js.map +0 -1
  471. package/dist/types/runtimes/react/controls/group.d.ts +0 -11
  472. package/dist/types/runtimes/react/controls/group.d.ts.map +0 -1
  473. package/dist/types/state/__tests__/fixtures/operations.d.ts.map +0 -1
  474. package/dist/types/state/__tests__/fixtures/root-elements.d.ts.map +0 -1
  475. package/dist/types/state/__tests__/react-builder-preview.test.d.ts +0 -2
  476. package/dist/types/state/__tests__/react-builder-preview.test.d.ts.map +0 -1
  477. package/dist/types/state/host-api.d.ts.map +0 -1
  478. package/dist/types/state/modules/prop-controllers.d.ts.map +0 -1
  479. package/dist/types/state/shared-api.d.ts.map +0 -1
  480. package/dist/types/utils/is.d.ts +0 -3
  481. package/dist/types/utils/is.d.ts.map +0 -1
  482. /package/dist/types/state/{__tests__ → middleware/read-write/__tests__}/fixtures/operations.d.ts +0 -0
  483. /package/dist/types/state/{__tests__ → middleware/read-write/__tests__}/fixtures/root-elements.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/controls/rich-text-v2/control.ts"],"sourcesContent":["import { Editor } from 'slate'\n// @ts-expect-error: there are no types for 'corporate-ipsum'\nimport ipsum from 'corporate-ipsum'\n\nimport {\n RichTextDefinition,\n ControlInstance,\n Slate,\n type BoxDisplayModel,\n type DataType,\n type SendMessage,\n type Data,\n} from '@makeswift/controls'\n\nimport { RichTextV2Definition } from './rich-text-v2'\n\n// COSMOS -> HOST\ntype ResetValueMessage = { type: typeof RichTextV2Control.RESET_VALUE }\ntype FocusMessage = { type: typeof RichTextV2Control.FOCUS }\ntype RunPluginControlActionMessage = {\n type: typeof RichTextV2Control.RUN_PLUGIN_CONTROL_ACTION\n pluginIndex: number\n value: Data\n}\n\n// HOST -> COSMOS\ntype SetDefaultValueMessage = {\n type: typeof RichTextV2Control.SET_DEFAULT_VALUE\n value: Slate.Descendant[]\n}\n\ntype SetPluginControlValueMessage = {\n type: typeof RichTextV2Control.SET_PLUGIN_CONTROL_VALUE\n value: Data[]\n}\n\ntype OnChangeMessage = {\n type: typeof RichTextV2Control.ON_CHANGE\n value: DataType<RichTextV2Definition>\n}\n\ntype SelectMessage = { type: typeof RichTextV2Control.SELECT }\n\ntype SwitchToBuildModeMessage = {\n type: typeof RichTextV2Control.SWITCH_TO_BUILD_MODE\n}\n\ntype ChangeBoxModelMessage = {\n type: typeof RichTextV2Control.CHANGE_BOX_MODEL\n payload: { boxModel: BoxDisplayModel | null }\n}\n\ntype UndoMessage = { type: typeof RichTextV2Control.UNDO }\ntype RedoMessage = { type: typeof RichTextV2Control.REDO }\n\ntype Message =\n | ResetValueMessage\n | FocusMessage\n | RunPluginControlActionMessage\n | SetDefaultValueMessage\n | SetPluginControlValueMessage\n | OnChangeMessage\n | SelectMessage\n | SwitchToBuildModeMessage\n | ChangeBoxModelMessage\n | UndoMessage\n | RedoMessage\n\nexport class RichTextV2Control extends ControlInstance<Message> {\n private static readonly messagePrefix = `${RichTextDefinition.type}::control-message` as const\n\n // COSMOS -> HOST\n static readonly RESET_VALUE = `${this.messagePrefix}::reset-value` as const\n static readonly FOCUS = `${this.messagePrefix}::focus` as const\n static readonly RUN_PLUGIN_CONTROL_ACTION =\n `${this.messagePrefix}::run-plugin-control-action` as const\n\n // HOST -> COSMOS\n static readonly SET_DEFAULT_VALUE = `${this.messagePrefix}::set-default-value` as const\n static readonly SET_PLUGIN_CONTROL_VALUE =\n `${this.messagePrefix}::set-plugin-control-value` as const\n static readonly ON_CHANGE = `${this.messagePrefix}::on-change` as const\n static readonly SELECT = `${this.messagePrefix}::select` as const\n static readonly SWITCH_TO_BUILD_MODE = `${this.messagePrefix}::switch-to-build-mode` as const\n static readonly CHANGE_BOX_MODEL = `${this.messagePrefix}::change-box-model` as const\n\n static readonly REDO = `${this.messagePrefix}::redo` as const\n static readonly UNDO = `${this.messagePrefix}::undo` as const\n\n private editor: Editor | null = null\n private defaultValue: Slate.Descendant[] | null = null\n\n constructor(\n send: SendMessage<Message>,\n private readonly descriptor: RichTextV2Definition,\n ) {\n super(send)\n }\n\n recv = (message: Message): void => {\n if (!this.editor) return\n\n switch (message.type) {\n case RichTextV2Control.FOCUS: {\n this.editor.focusAndSelectAll()\n break\n }\n\n case RichTextV2Control.RESET_VALUE: {\n if (this.defaultValue) {\n this.editor.resetValue(this.defaultValue)\n setTimeout(() => {\n this.onLocalUserChange()\n })\n }\n break\n }\n\n case RichTextV2Control.RUN_PLUGIN_CONTROL_ACTION: {\n this.descriptor.pluginControlAt(message.pluginIndex)?.onChange?.(this.editor, message.value)\n break\n }\n }\n }\n\n child(_key: string): ControlInstance | undefined {\n return undefined\n }\n\n setEditor(editor: Editor) {\n this.editor = editor\n this.sendMessage({\n type: RichTextV2Control.SET_PLUGIN_CONTROL_VALUE,\n value: this.getValue(editor),\n })\n\n const _onChange = editor.onChange\n this.editor.onChange = options => {\n _onChange(options)\n this.updatePluginValues()\n if (this.editor == null || options?.operation == null) return\n this.onLocalUserChange()\n }\n }\n\n setDefaultValue(defaultValue: Slate.Descendant[]) {\n this.defaultValue = defaultValue\n this.sendMessage({\n type: RichTextV2Control.SET_DEFAULT_VALUE,\n value: defaultValue,\n })\n }\n\n onLocalUserChange() {\n if (this.editor == null) return\n\n this.sendMessage({\n type: RichTextV2Control.ON_CHANGE,\n value: RichTextV2Definition.nodesToDataV2(this.editor.children, this.editor.currentKey),\n })\n }\n\n updatePluginValues() {\n const editor = this.editor\n if (editor == null) return\n\n this.sendMessage({\n type: RichTextV2Control.SET_PLUGIN_CONTROL_VALUE,\n value: this.getValue(editor),\n })\n }\n\n getValue(editor: Editor) {\n return this.descriptor.pluginControls.map(control => control.getValue?.(editor)) ?? []\n }\n\n select() {\n this.sendMessage({ type: RichTextV2Control.SELECT })\n }\n\n switchToBuildMode() {\n this.sendMessage({ type: RichTextV2Control.SWITCH_TO_BUILD_MODE })\n }\n\n undo() {\n this.sendMessage({ type: RichTextV2Control.UNDO })\n }\n\n redo() {\n this.sendMessage({ type: RichTextV2Control.REDO })\n }\n\n changeBoxModel(boxModel: BoxDisplayModel | null): void {\n this.sendMessage({\n type: RichTextV2Control.CHANGE_BOX_MODEL,\n payload: { boxModel },\n })\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/controls/rich-text-v2/control.ts"],"sourcesContent":["import { Editor } from 'slate'\n// @ts-expect-error: there are no types for 'corporate-ipsum'\nimport ipsum from 'corporate-ipsum'\n\nimport {\n RichTextDefinition,\n ControlInstance,\n Slate,\n type BoxDisplayModel,\n type DataType,\n type ControlInstanceArgs,\n type Data,\n} from '@makeswift/controls'\n\nimport { RichTextV2Definition } from './rich-text-v2'\n\n// COSMOS -> HOST\ntype ResetValueMessage = { type: typeof RichTextV2Control.RESET_VALUE }\ntype FocusMessage = { type: typeof RichTextV2Control.FOCUS }\ntype RunPluginControlActionMessage = {\n type: typeof RichTextV2Control.RUN_PLUGIN_CONTROL_ACTION\n pluginIndex: number\n value: Data\n}\n\n// HOST -> COSMOS\ntype SetDefaultValueMessage = {\n type: typeof RichTextV2Control.SET_DEFAULT_VALUE\n value: Slate.Descendant[]\n}\n\ntype SetPluginControlValueMessage = {\n type: typeof RichTextV2Control.SET_PLUGIN_CONTROL_VALUE\n value: Data[]\n}\n\ntype OnChangeMessage = {\n type: typeof RichTextV2Control.ON_CHANGE\n value: DataType<RichTextV2Definition>\n}\n\ntype SelectMessage = { type: typeof RichTextV2Control.SELECT }\n\ntype SwitchToBuildModeMessage = {\n type: typeof RichTextV2Control.SWITCH_TO_BUILD_MODE\n}\n\ntype ChangeBoxModelMessage = {\n type: typeof RichTextV2Control.CHANGE_BOX_MODEL\n payload: { boxModel: BoxDisplayModel | null }\n}\n\ntype UndoMessage = { type: typeof RichTextV2Control.UNDO }\ntype RedoMessage = { type: typeof RichTextV2Control.REDO }\n\ntype Message =\n | ResetValueMessage\n | FocusMessage\n | RunPluginControlActionMessage\n | SetDefaultValueMessage\n | SetPluginControlValueMessage\n | OnChangeMessage\n | SelectMessage\n | SwitchToBuildModeMessage\n | ChangeBoxModelMessage\n | UndoMessage\n | RedoMessage\n\nexport class RichTextV2Control extends ControlInstance<Message> {\n private static readonly messagePrefix = `${RichTextDefinition.type}::control-message` as const\n\n // COSMOS -> HOST\n static readonly RESET_VALUE = `${this.messagePrefix}::reset-value` as const\n static readonly FOCUS = `${this.messagePrefix}::focus` as const\n static readonly RUN_PLUGIN_CONTROL_ACTION =\n `${this.messagePrefix}::run-plugin-control-action` as const\n\n // HOST -> COSMOS\n static readonly SET_DEFAULT_VALUE = `${this.messagePrefix}::set-default-value` as const\n static readonly SET_PLUGIN_CONTROL_VALUE =\n `${this.messagePrefix}::set-plugin-control-value` as const\n static readonly ON_CHANGE = `${this.messagePrefix}::on-change` as const\n static readonly SELECT = `${this.messagePrefix}::select` as const\n static readonly SWITCH_TO_BUILD_MODE = `${this.messagePrefix}::switch-to-build-mode` as const\n static readonly CHANGE_BOX_MODEL = `${this.messagePrefix}::change-box-model` as const\n\n static readonly REDO = `${this.messagePrefix}::redo` as const\n static readonly UNDO = `${this.messagePrefix}::undo` as const\n\n private editor: Editor | null = null\n private defaultValue: Slate.Descendant[] | null = null\n\n constructor(\n private readonly descriptor: RichTextV2Definition,\n args: ControlInstanceArgs<Message>,\n ) {\n super(args)\n }\n\n recv = (message: Message): void => {\n if (!this.editor) return\n\n switch (message.type) {\n case RichTextV2Control.FOCUS: {\n this.editor.focusAndSelectAll()\n break\n }\n\n case RichTextV2Control.RESET_VALUE: {\n if (this.defaultValue) {\n this.editor.resetValue(this.defaultValue)\n setTimeout(() => {\n this.onLocalUserChange()\n })\n }\n break\n }\n\n case RichTextV2Control.RUN_PLUGIN_CONTROL_ACTION: {\n this.descriptor.pluginControlAt(message.pluginIndex)?.onChange?.(this.editor, message.value)\n break\n }\n }\n }\n\n subscribe(_listener: () => void): () => void {\n // No mutable state, nothing to subscribe to\n return () => {}\n }\n\n isCompositeProp(): boolean {\n return false\n }\n\n children(): ControlInstance[] {\n return []\n }\n\n child(_key: string): ControlInstance | undefined {\n return undefined\n }\n\n resolvesToRenderableNode(): boolean {\n return true\n }\n\n setEditor(editor: Editor) {\n this.editor = editor\n this.sendMessage({\n type: RichTextV2Control.SET_PLUGIN_CONTROL_VALUE,\n value: this.getValue(editor),\n })\n\n const _onChange = editor.onChange\n this.editor.onChange = options => {\n _onChange(options)\n this.updatePluginValues()\n if (this.editor == null || options?.operation == null) return\n this.onLocalUserChange()\n }\n }\n\n setDefaultValue(defaultValue: Slate.Descendant[]) {\n this.defaultValue = defaultValue\n this.sendMessage({\n type: RichTextV2Control.SET_DEFAULT_VALUE,\n value: defaultValue,\n })\n }\n\n onLocalUserChange() {\n if (this.editor == null) return\n\n this.sendMessage({\n type: RichTextV2Control.ON_CHANGE,\n value: RichTextV2Definition.nodesToDataV2(this.editor.children, this.editor.currentKey),\n })\n }\n\n updatePluginValues() {\n const editor = this.editor\n if (editor == null) return\n\n this.sendMessage({\n type: RichTextV2Control.SET_PLUGIN_CONTROL_VALUE,\n value: this.getValue(editor),\n })\n }\n\n getValue(editor: Editor) {\n return this.descriptor.pluginControls.map(control => control.getValue?.(editor)) ?? []\n }\n\n select() {\n this.sendMessage({ type: RichTextV2Control.SELECT })\n }\n\n switchToBuildMode() {\n this.sendMessage({ type: RichTextV2Control.SWITCH_TO_BUILD_MODE })\n }\n\n undo() {\n this.sendMessage({ type: RichTextV2Control.UNDO })\n }\n\n redo() {\n this.sendMessage({ type: RichTextV2Control.REDO })\n }\n\n changeBoxModel(boxModel: BoxDisplayModel | null): void {\n this.sendMessage({\n type: RichTextV2Control.CHANGE_BOX_MODEL,\n payload: { boxModel },\n })\n }\n}\n"],"mappings":"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","names":[]}
@@ -66,8 +66,8 @@ class Definition extends BaseRichTextDefinition {
66
66
  get configSchema() {
67
67
  return Definition.fullSchema({ pluginDef: z.any() }).config;
68
68
  }
69
- createInstance(sendMessage) {
70
- return new RichTextV2Control(sendMessage, this);
69
+ createInstance(args) {
70
+ return new RichTextV2Control(this, args);
71
71
  }
72
72
  resolveValue(data, _resolver, _stylesheet, control) {
73
73
  const stableValue = StableValue({
@@ -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 StableValue,\n type Data,\n type Resolvable,\n type SendMessage,\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 get pluginControls(): RichTextPluginControl[] {\n return this.config.plugins.map(plugin => plugin.control).filter(isNotNil)\n }\n\n pluginControlAt(index: number): RichTextPluginControl | undefined {\n return this.pluginControls[index]\n }\n\n toText(data: DataType | undefined): string {\n if (data == null) return ''\n return toText(Definition.dataToNodes(data), this.config.mode ?? Definition.Mode.Block)\n }\n}\n\nexport class RichTextV2Definition extends Definition {}\n\nexport function RichText(config?: UserConfig): RichTextV2Definition {\n return new RichTextV2Definition(config ?? {})\n}\n\nRichText.Mode = Definition.Mode\nRichText.isV1Data = Definition.isV1Data\nRichText.dataToNodes = Definition.dataToNodes\nRichText.Plugin = Plugin\n\nexport { RichTextMode as RichTextV2Mode, type DataV2Type as RichTextDataV2, RichTextV2Control }\n"],"mappings":"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","names":[]}
1
+ {"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 StableValue,\n type Data,\n type Resolvable,\n type ControlInstanceArgs,\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(args: ControlInstanceArgs) {\n return new RichTextV2Control(this, args)\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 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":[]}
@@ -8,6 +8,7 @@ import {
8
8
  ColorDefinition,
9
9
  ComboboxDefinition,
10
10
  FontDefinition,
11
+ unstable_GalleryDefinition,
11
12
  GroupDefinition,
12
13
  IconRadioGroupDefinition,
13
14
  ImageDefinition,
@@ -45,6 +46,7 @@ function deserializeUnifiedControlDef(record) {
45
46
  [ColorDefinition.type]: ColorDefinition.deserialize,
46
47
  [ComboboxDefinition.type]: ComboboxDefinition.deserialize,
47
48
  [FontDefinition.type]: FontDefinition.deserialize,
49
+ [unstable_GalleryDefinition.type]: unstable_GalleryDefinition.deserialize,
48
50
  [GroupDefinition.type]: (record2) => GroupDefinition.deserialize(record2, deserializeUnifiedControlDef),
49
51
  [IconRadioGroupDefinition.type]: IconRadioGroupDefinition.deserialize,
50
52
  [ImageDefinition.type]: ImageDefinition.deserialize,
@@ -1 +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,EAIE;AAAA,EAEA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;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,6BAA6B,kBAAkB,mBAAmB,OAAO,CAAC;AACnF;AAEO,SAAS,6BAA6B,QAA+C;AAE1F,QAAM,oBAAuD;AAAA,IAC3D,CAAC,mBAAmB,IAAI,GAAG,mBAAmB;AAAA,IAC9C,CAAC,eAAe,IAAI,GAAG,eAAe;AAAA,IACtC,CAAC,gBAAgB,IAAI,GAAG,gBAAgB;AAAA,IACxC,CAAC,mBAAmB,IAAI,GAAG,mBAAmB;AAAA,IAC9C,CAAC,eAAe,IAAI,GAAG,eAAe;AAAA,IACtC,CAAC,gBAAgB,IAAI,GAAG,CAAAA,YACtB,gBAAgB,YAAYA,SAAQ,4BAA4B;AAAA,IAClE,CAAC,yBAAyB,IAAI,GAAG,yBAAyB;AAAA,IAC1D,CAAC,gBAAgB,IAAI,GAAG,gBAAgB;AAAA,IACxC,CAAC,eAAe,IAAI,GAAG,eAAe;AAAA,IACtC,CAAC,eAAe,IAAI,GAAG,CAAAA,YACrB,eAAe,YAAYA,SAAQ,4BAA4B;AAAA,IACjE,CAAC,iBAAiB,IAAI,GAAG,iBAAiB;AAAA,IAC1C,CAAC,qBAAqB,IAAI,GAAG,qBAAqB;AAAA,IAClD,CAAC,qBAAqB,IAAI,GAAG,CAAAA,YAC3B,qBAAqB,YAAYA,SAAQ,4BAA4B;AAAA,IACvE,CAAC,iBAAiB,IAAI,GAAG,iBAAiB;AAAA,IAC1C,CAAC,gBAAgB,IAAI,GAAG,CAAAA,YACtB,gBAAgB,YAAYA,SAAQ,4BAA4B;AAAA,IAClE,CAAC,iBAAiB,IAAI,GAAG,iBAAiB;AAAA,IAC1C,CAAC,kBAAkB,IAAI,GAAG,CAAAA,YACxB,kBAAkB,YAAYA,SAAQ,4BAA4B;AAAA,IACpE,CAAC,eAAe,IAAI,GAAG,eAAe;AAAA,IACtC,CAAC,gBAAgB,IAAI,GAAG,gBAAgB;AAAA,IACxC,CAAC,kBAAkB,IAAI,GAAG,CAAAA,YACxB,kBAAkB,YAAYA,SAAQ,4BAA4B;AAAA,IACpE,CAAC,mBAAmB,IAAI,GAAG,mBAAmB;AAAA,IAC9C,CAAC,oBAAoB,IAAI,GAAG,oBAAoB;AAAA,IAChD,CAAC,8BAA8B,IAAI,GAAG,8BAA8B;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"]}
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 unstable_GalleryDefinition,\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 [unstable_GalleryDefinition.type]: unstable_GalleryDefinition.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,EAIE;AAAA,EAEA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;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,6BAA6B,kBAAkB,mBAAmB,OAAO,CAAC;AACnF;AAEO,SAAS,6BAA6B,QAA+C;AAE1F,QAAM,oBAAuD;AAAA,IAC3D,CAAC,mBAAmB,IAAI,GAAG,mBAAmB;AAAA,IAC9C,CAAC,eAAe,IAAI,GAAG,eAAe;AAAA,IACtC,CAAC,gBAAgB,IAAI,GAAG,gBAAgB;AAAA,IACxC,CAAC,mBAAmB,IAAI,GAAG,mBAAmB;AAAA,IAC9C,CAAC,eAAe,IAAI,GAAG,eAAe;AAAA,IACtC,CAAC,2BAA2B,IAAI,GAAG,2BAA2B;AAAA,IAC9D,CAAC,gBAAgB,IAAI,GAAG,CAAAA,YACtB,gBAAgB,YAAYA,SAAQ,4BAA4B;AAAA,IAClE,CAAC,yBAAyB,IAAI,GAAG,yBAAyB;AAAA,IAC1D,CAAC,gBAAgB,IAAI,GAAG,gBAAgB;AAAA,IACxC,CAAC,eAAe,IAAI,GAAG,eAAe;AAAA,IACtC,CAAC,eAAe,IAAI,GAAG,CAAAA,YACrB,eAAe,YAAYA,SAAQ,4BAA4B;AAAA,IACjE,CAAC,iBAAiB,IAAI,GAAG,iBAAiB;AAAA,IAC1C,CAAC,qBAAqB,IAAI,GAAG,qBAAqB;AAAA,IAClD,CAAC,qBAAqB,IAAI,GAAG,CAAAA,YAC3B,qBAAqB,YAAYA,SAAQ,4BAA4B;AAAA,IACvE,CAAC,iBAAiB,IAAI,GAAG,iBAAiB;AAAA,IAC1C,CAAC,gBAAgB,IAAI,GAAG,CAAAA,YACtB,gBAAgB,YAAYA,SAAQ,4BAA4B;AAAA,IAClE,CAAC,iBAAiB,IAAI,GAAG,iBAAiB;AAAA,IAC1C,CAAC,kBAAkB,IAAI,GAAG,CAAAA,YACxB,kBAAkB,YAAYA,SAAQ,4BAA4B;AAAA,IACpE,CAAC,eAAe,IAAI,GAAG,eAAe;AAAA,IACtC,CAAC,gBAAgB,IAAI,GAAG,gBAAgB;AAAA,IACxC,CAAC,kBAAkB,IAAI,GAAG,CAAAA,YACxB,kBAAkB,YAAYA,SAAQ,4BAA4B;AAAA,IACpE,CAAC,mBAAmB,IAAI,GAAG,mBAAmB;AAAA,IAC9C,CAAC,oBAAoB,IAAI,GAAG,oBAAoB;AAAA,IAChD,CAAC,8BAA8B,IAAI,GAAG,8BAA8B;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"]}
@@ -1,9 +1,2 @@
1
- const DESKTOP_MEDIA_QUERY = "only screen and (min-width: 769px)";
2
- const TABLET_MEDIA_QUERY = "only screen and (min-width: 769px)";
3
- const MOBILE_MEDIA_QUERY = "only screen and (min-width: 769px)";
4
- export {
5
- DESKTOP_MEDIA_QUERY,
6
- MOBILE_MEDIA_QUERY,
7
- TABLET_MEDIA_QUERY
8
- };
1
+ export * from "../../testing/breakpoints";
9
2
  //# sourceMappingURL=breakpoints.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/testing/breakpoints.ts"],"sourcesContent":["export const DESKTOP_MEDIA_QUERY = 'only screen and (min-width: 769px)'\nexport const TABLET_MEDIA_QUERY = 'only screen and (min-width: 769px)'\nexport const MOBILE_MEDIA_QUERY = 'only screen and (min-width: 769px)'\n"],"mappings":"AAAO,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,qBAAqB;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/testing/breakpoints.ts"],"sourcesContent":["export * from '../../testing/breakpoints'\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -1,76 +1,2 @@
1
- import { randomUUID } from "crypto";
2
- import { CacheData } from "../../api/api-resources-client";
3
- import { MakeswiftComponentType } from "../../components/builtin/constants";
4
- function createRootComponent(elements, rootId) {
5
- return {
6
- key: rootId ?? randomUUID(),
7
- type: MakeswiftComponentType.Root,
8
- props: {
9
- children: {
10
- columns: [
11
- {
12
- deviceId: "desktop",
13
- value: {
14
- count: 12,
15
- spans: elements?.map(() => [12])
16
- }
17
- }
18
- ],
19
- elements
20
- }
21
- }
22
- };
23
- }
24
- const isDocument = (elementDataOrDocument) => "snippets" in elementDataOrDocument || "fonts" in elementDataOrDocument || "meta" in elementDataOrDocument || "seo" in elementDataOrDocument;
25
- function createMakeswiftPageSnapshot(elementDataOrDocument, {
26
- cacheData = {},
27
- locale = null
28
- } = {}) {
29
- return {
30
- document: isDocument(elementDataOrDocument) ? elementDataOrDocument : {
31
- id: "test-page-id",
32
- site: { id: "test-site-id" },
33
- data: elementDataOrDocument,
34
- snippets: [],
35
- fonts: [],
36
- meta: {},
37
- seo: {},
38
- localizedPages: [],
39
- locale
40
- },
41
- cacheData: {
42
- ...CacheData.empty(),
43
- ...cacheData
44
- }
45
- };
46
- }
47
- function createMakeswiftComponentSnapshot(elementData, {
48
- cacheData = {},
49
- locale = null
50
- } = {}) {
51
- return {
52
- key: randomUUID(),
53
- document: {
54
- id: "test-component-id",
55
- name: "Test Component Document",
56
- siteId: "test-site-id",
57
- data: elementData,
58
- inheritsFromParent: false,
59
- locale
60
- },
61
- meta: {
62
- allowLocaleFallback: false,
63
- requestedLocale: locale
64
- },
65
- cacheData: {
66
- ...CacheData.empty(),
67
- ...cacheData
68
- }
69
- };
70
- }
71
- export {
72
- createMakeswiftComponentSnapshot,
73
- createMakeswiftPageSnapshot,
74
- createRootComponent
75
- };
1
+ export * from "../../testing/element-data";
76
2
  //# sourceMappingURL=element-data.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/testing/element-data.ts"],"sourcesContent":["import { randomUUID } from 'crypto'\n\nimport {\n type MakeswiftPageSnapshot,\n type MakeswiftPageDocument,\n type MakeswiftComponentSnapshot,\n} from '../../client'\nimport { CacheData } from '../../api/api-resources-client'\nimport { type ElementData } from '../../state/read-only-state'\nimport { MakeswiftComponentType } from '../../components/builtin/constants'\n\nexport function createRootComponent(elements: ElementData[], rootId?: string) {\n return {\n key: rootId ?? randomUUID(),\n type: MakeswiftComponentType.Root,\n props: {\n children: {\n columns: [\n {\n deviceId: 'desktop',\n value: {\n count: 12,\n spans: elements?.map(() => [12]),\n },\n },\n ],\n elements,\n },\n },\n }\n}\n\nconst isDocument = (\n elementDataOrDocument: ElementData | MakeswiftPageDocument,\n): elementDataOrDocument is MakeswiftPageDocument =>\n 'snippets' in elementDataOrDocument ||\n 'fonts' in elementDataOrDocument ||\n 'meta' in elementDataOrDocument ||\n 'seo' in elementDataOrDocument\n\nexport function createMakeswiftPageSnapshot(\n elementDataOrDocument: ElementData | MakeswiftPageDocument,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftPageSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftPageSnapshot {\n return {\n document: isDocument(elementDataOrDocument)\n ? elementDataOrDocument\n : {\n id: 'test-page-id',\n site: { id: 'test-site-id' },\n data: elementDataOrDocument,\n snippets: [],\n fonts: [],\n meta: {},\n seo: {},\n localizedPages: [],\n locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n\nexport function createMakeswiftComponentSnapshot(\n elementData: ElementData | null,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftComponentSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftComponentSnapshot {\n return {\n key: randomUUID(),\n document: {\n id: 'test-component-id',\n name: 'Test Component Document',\n siteId: 'test-site-id',\n data: elementData,\n inheritsFromParent: false,\n locale,\n },\n meta: {\n allowLocaleFallback: false,\n requestedLocale: locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAO3B,SAAS,iBAAiB;AAE1B,SAAS,8BAA8B;AAEhC,SAAS,oBAAoB,UAAyB,QAAiB;AAC5E,SAAO;AAAA,IACL,KAAK,UAAU,WAAW;AAAA,IAC1B,MAAM,uBAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAAS;AAAA,UACP;AAAA,YACE,UAAU;AAAA,YACV,OAAO;AAAA,cACL,OAAO;AAAA,cACP,OAAO,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,MAAM,aAAa,CACjB,0BAEA,cAAc,yBACd,WAAW,yBACX,UAAU,yBACV,SAAS;AAEJ,SAAS,4BACd,uBACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAAyF,CAAC,GACnE;AACvB,SAAO;AAAA,IACL,UAAU,WAAW,qBAAqB,IACtC,wBACA;AAAA,MACE,IAAI;AAAA,MACJ,MAAM,EAAE,IAAI,eAAe;AAAA,MAC3B,MAAM;AAAA,MACN,UAAU,CAAC;AAAA,MACX,OAAO,CAAC;AAAA,MACR,MAAM,CAAC;AAAA,MACP,KAAK,CAAC;AAAA,MACN,gBAAgB,CAAC;AAAA,MACjB;AAAA,IACF;AAAA,IACJ,WAAW;AAAA,MACT,GAAG,UAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,iCACd,aACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAA8F,CAAC,GACnE;AAC5B,SAAO;AAAA,IACL,KAAK,WAAW;AAAA,IAChB,UAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,oBAAoB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,IACnB;AAAA,IACA,WAAW;AAAA,MACT,GAAG,UAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/testing/element-data.ts"],"sourcesContent":["export * from '../../testing/element-data'\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/testing/react-runtime.tsx"],"sourcesContent":["export { createReactRuntime } from '../../runtimes/react/testing/react-runtime'\n"],"mappings":"AAAA,SAAS,0BAA0B;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/testing/react-runtime.ts"],"sourcesContent":["export { createReactRuntime } from '../../runtimes/react/testing/react-runtime'\n"],"mappings":"AAAA,SAAS,0BAA0B;","names":[]}
@@ -11,9 +11,22 @@ const TableFormFieldsMessageType = {
11
11
  class TableFormFieldsPropController extends ControlInstance {
12
12
  recv = () => {
13
13
  };
14
+ subscribe(_listener) {
15
+ return () => {
16
+ };
17
+ }
18
+ isCompositeProp() {
19
+ return false;
20
+ }
21
+ children() {
22
+ return [];
23
+ }
14
24
  child(_key) {
15
25
  return void 0;
16
26
  }
27
+ resolvesToRenderableNode() {
28
+ return false;
29
+ }
17
30
  tableFormLayoutChange(payload) {
18
31
  this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_LAYOUT_CHANGE, payload });
19
32
  }
@@ -21,15 +34,18 @@ class TableFormFieldsPropController extends ControlInstance {
21
34
  this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_FIELD_LAYOUT_CHANGE, payload });
22
35
  }
23
36
  }
24
- function createPropController(descriptor, send) {
37
+ function createPropController({
38
+ descriptor,
39
+ ...args
40
+ }) {
25
41
  if (!isLegacyDescriptor(descriptor)) {
26
- return descriptor.createInstance(send);
42
+ return descriptor.createInstance(args);
27
43
  }
28
44
  switch (descriptor.type) {
29
45
  case PropControllerTypes.TableFormFields:
30
- return new TableFormFieldsPropController(send);
46
+ return new TableFormFieldsPropController(args);
31
47
  default:
32
- return new DefaultControlInstance(send);
48
+ return new DefaultControlInstance(args);
33
49
  }
34
50
  }
35
51
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prop-controllers/instances.ts"],"sourcesContent":["import { type Descriptor, isLegacyDescriptor } from './descriptors'\nimport { Types as PropControllerTypes } from '@makeswift/prop-controllers'\n\nimport {\n type BoxDisplayModel,\n type ControlMessage,\n type SendMessage,\n type InstanceType,\n ControlInstance,\n DefaultControlInstance,\n} from '@makeswift/controls'\n\nexport type PropControllerMessage = ControlMessage\n\nexport const TableFormFieldsMessageType = {\n TABLE_FORM_LAYOUT_CHANGE: 'TABLE_FORM_LAYOUT_CHANGE',\n TABLE_FORM_FIELD_LAYOUT_CHANGE: 'TABLE_FORM_FIELD_LAYOUT_CHANGE',\n} as const\n\ntype TableLayoutTableFormFieldsMessage = {\n type: typeof TableFormFieldsMessageType.TABLE_FORM_LAYOUT_CHANGE\n payload: { layout: BoxDisplayModel }\n}\n\ntype TableFieldLayoutTableFormFieldsMessage = {\n type: typeof TableFormFieldsMessageType.TABLE_FORM_FIELD_LAYOUT_CHANGE\n payload: { layout: BoxDisplayModel; index: number }\n}\n\nexport type TableFormFieldsMessage =\n | TableLayoutTableFormFieldsMessage\n | TableFieldLayoutTableFormFieldsMessage\n\nexport class TableFormFieldsPropController extends ControlInstance<TableFormFieldsMessage> {\n recv = () => {}\n child(_key: string): ControlInstance | undefined {\n return undefined\n }\n\n tableFormLayoutChange(payload: { layout: BoxDisplayModel }) {\n this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_LAYOUT_CHANGE, payload })\n }\n\n tableFormFieldLayoutChange(payload: { layout: BoxDisplayModel; index: number }) {\n this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_FIELD_LAYOUT_CHANGE, payload })\n }\n}\n\ntype DescriptorPropController<T extends Descriptor> = T extends {\n type: typeof PropControllerTypes.TableFormFields\n}\n ? TableFormFieldsPropController\n : InstanceType<T>\n\nexport type DescriptorsPropControllers<T extends Record<string, Descriptor>> = {\n [K in keyof T]: undefined extends T[K]\n ? DescriptorPropController<Exclude<T[K], undefined>>\n : DescriptorPropController<T[K]>\n}\n\nexport type AnyPropController = ControlInstance<any> | TableFormFieldsPropController\n\nexport function createPropController(\n descriptor: Descriptor,\n send: SendMessage<PropControllerMessage>,\n): AnyPropController {\n if (!isLegacyDescriptor(descriptor)) {\n return descriptor.createInstance(send)\n }\n\n switch (descriptor.type) {\n case PropControllerTypes.TableFormFields:\n return new TableFormFieldsPropController(send as SendMessage<TableFormFieldsMessage>)\n\n default:\n return new DefaultControlInstance(send as SendMessage)\n }\n}\n"],"mappings":"AAAA,SAA0B,0BAA0B;AACpD,SAAS,SAAS,2BAA2B;AAE7C;AAAA,EAKE;AAAA,EACA;AAAA,OACK;AAIA,MAAM,6BAA6B;AAAA,EACxC,0BAA0B;AAAA,EAC1B,gCAAgC;AAClC;AAgBO,MAAM,sCAAsC,gBAAwC;AAAA,EACzF,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,MAAM,MAA2C;AAC/C,WAAO;AAAA,EACT;AAAA,EAEA,sBAAsB,SAAsC;AAC1D,SAAK,YAAY,EAAE,MAAM,2BAA2B,0BAA0B,QAAQ,CAAC;AAAA,EACzF;AAAA,EAEA,2BAA2B,SAAqD;AAC9E,SAAK,YAAY,EAAE,MAAM,2BAA2B,gCAAgC,QAAQ,CAAC;AAAA,EAC/F;AACF;AAgBO,SAAS,qBACd,YACA,MACmB;AACnB,MAAI,CAAC,mBAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,eAAe,IAAI;AAAA,EACvC;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,oBAAoB;AACvB,aAAO,IAAI,8BAA8B,IAA2C;AAAA,IAEtF;AACE,aAAO,IAAI,uBAAuB,IAAmB;AAAA,EACzD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/prop-controllers/instances.ts"],"sourcesContent":["import { type Descriptor, isLegacyDescriptor } from './descriptors'\nimport { Types as PropControllerTypes } from '@makeswift/prop-controllers'\n\nimport {\n type BoxDisplayModel,\n type ControlInstanceArgs,\n type ControlMessage,\n type InstanceType,\n type AnyControlInstance,\n ControlInstance,\n DefaultControlInstance,\n} from '@makeswift/controls'\n\nexport type PropControllerMessage = ControlMessage\n\nexport const TableFormFieldsMessageType = {\n TABLE_FORM_LAYOUT_CHANGE: 'TABLE_FORM_LAYOUT_CHANGE',\n TABLE_FORM_FIELD_LAYOUT_CHANGE: 'TABLE_FORM_FIELD_LAYOUT_CHANGE',\n} as const\n\ntype TableLayoutTableFormFieldsMessage = {\n type: typeof TableFormFieldsMessageType.TABLE_FORM_LAYOUT_CHANGE\n payload: { layout: BoxDisplayModel }\n}\n\ntype TableFieldLayoutTableFormFieldsMessage = {\n type: typeof TableFormFieldsMessageType.TABLE_FORM_FIELD_LAYOUT_CHANGE\n payload: { layout: BoxDisplayModel; index: number }\n}\n\nexport type TableFormFieldsMessage =\n | TableLayoutTableFormFieldsMessage\n | TableFieldLayoutTableFormFieldsMessage\n\nexport class TableFormFieldsPropController extends ControlInstance<TableFormFieldsMessage> {\n recv = () => {}\n\n subscribe(_listener: () => void): () => void {\n // No mutable state, nothing to subscribe to\n return () => {}\n }\n\n isCompositeProp(): boolean {\n return false\n }\n\n children(): ControlInstance[] {\n return []\n }\n\n child(_key: string): ControlInstance | undefined {\n return undefined\n }\n\n resolvesToRenderableNode(): boolean {\n return false\n }\n\n tableFormLayoutChange(payload: { layout: BoxDisplayModel }) {\n this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_LAYOUT_CHANGE, payload })\n }\n\n tableFormFieldLayoutChange(payload: { layout: BoxDisplayModel; index: number }) {\n this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_FIELD_LAYOUT_CHANGE, payload })\n }\n}\n\ntype DescriptorPropController<T extends Descriptor> = T extends {\n type: typeof PropControllerTypes.TableFormFields\n}\n ? TableFormFieldsPropController\n : InstanceType<T>\n\nexport type DescriptorsPropControllers<T extends Record<string, Descriptor>> = {\n [K in keyof T]: undefined extends T[K]\n ? DescriptorPropController<Exclude<T[K], undefined>>\n : DescriptorPropController<T[K]>\n}\n\nexport type AnyPropController = AnyControlInstance | TableFormFieldsPropController\n\nexport function createPropController({\n descriptor,\n ...args\n}: {\n descriptor: Descriptor\n} & ControlInstanceArgs): AnyPropController {\n if (!isLegacyDescriptor(descriptor)) {\n return descriptor.createInstance(args)\n }\n\n switch (descriptor.type) {\n case PropControllerTypes.TableFormFields:\n return new TableFormFieldsPropController(args)\n\n default:\n return new DefaultControlInstance(args)\n }\n}\n"],"mappings":"AAAA,SAA0B,0BAA0B;AACpD,SAAS,SAAS,2BAA2B;AAE7C;AAAA,EAME;AAAA,EACA;AAAA,OACK;AAIA,MAAM,6BAA6B;AAAA,EACxC,0BAA0B;AAAA,EAC1B,gCAAgC;AAClC;AAgBO,MAAM,sCAAsC,gBAAwC;AAAA,EACzF,OAAO,MAAM;AAAA,EAAC;AAAA,EAEd,UAAU,WAAmC;AAE3C,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AAAA,EAEA,kBAA2B;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,WAA8B;AAC5B,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,MAA2C;AAC/C,WAAO;AAAA,EACT;AAAA,EAEA,2BAAoC;AAClC,WAAO;AAAA,EACT;AAAA,EAEA,sBAAsB,SAAsC;AAC1D,SAAK,YAAY,EAAE,MAAM,2BAA2B,0BAA0B,QAAQ,CAAC;AAAA,EACzF;AAAA,EAEA,2BAA2B,SAAqD;AAC9E,SAAK,YAAY,EAAE,MAAM,2BAA2B,gCAAgC,QAAQ,CAAC;AAAA,EAC/F;AACF;AAgBO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA,GAAG;AACL,GAE4C;AAC1C,MAAI,CAAC,mBAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,eAAe,IAAI;AAAA,EACvC;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,oBAAoB;AACvB,aAAO,IAAI,8BAA8B,IAAI;AAAA,IAE/C;AACE,aAAO,IAAI,uBAAuB,IAAI;AAAA,EAC1C;AACF;","names":[]}
@@ -1,16 +1,25 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { forwardRef, memo, useCallback, useImperativeHandle, useRef } from "react";
3
+ import {
4
+ forwardRef,
5
+ memo,
6
+ useCallback,
7
+ useImperativeHandle,
8
+ useRef,
9
+ lazy
10
+ } from "react";
4
11
  import {
5
12
  isElementReference
6
13
  } from "../../../state/read-only-state";
7
- import { ElementRegistration } from "./ElementRegistration";
8
- import { ElementReference } from "./ElementReference";
9
- import { ElementData } from "./ElementData";
10
- import { ElementImperativeHandle } from "../element-imperative-handle";
11
- import { FindDomNode } from "../find-dom-node";
12
14
  import { FallbackComponent } from "../../../components/shared/FallbackComponent";
13
15
  import { ErrorBoundary } from "../../../components/shared/ErrorBoundary";
16
+ import { useIsReadOnly } from "../hooks/use-is-read-only";
17
+ import { useIsRegisterElementDisabled } from "../hooks/use-disable-register-element";
18
+ import { ElementImperativeHandle } from "../element-imperative-handle";
19
+ import { FindDomNode } from "../find-dom-node";
20
+ import { ElementReference } from "./ElementReference";
21
+ import { ElementData } from "./ElementData";
22
+ const BuilderElementRegistration = lazy(() => import("./ElementRegistration"));
14
23
  const Element = memo(
15
24
  forwardRef(function Element2({ element }, ref) {
16
25
  const useFindDomNodeRef = useRef(true);
@@ -25,16 +34,29 @@ const Element = memo(
25
34
  imperativeHandleRef.current.callback(() => current);
26
35
  }, []);
27
36
  useImperativeHandle(ref, () => imperativeHandleRef.current, []);
28
- return /* @__PURE__ */ jsx(ElementRegistration, { componentHandle: imperativeHandleRef.current, elementKey: element.key, children: /* @__PURE__ */ jsx(FindDomNode, { ref: findDomNodeCallbackRef, children: /* @__PURE__ */ jsx(ErrorBoundary, { FallbackComponent: ErrorFallback, children: isElementReference(element) ? /* @__PURE__ */ jsx(
29
- ElementReference,
37
+ const isRegisterElementDisabled = useIsRegisterElementDisabled();
38
+ const ElementRegistration = useIsReadOnly() || isRegisterElementDisabled ? NoOp : BuilderElementRegistration;
39
+ return /* @__PURE__ */ jsx(
40
+ ElementRegistration,
30
41
  {
31
- ref: elementCallbackRef,
32
- elementReference: element
33
- },
34
- element.key
35
- ) : /* @__PURE__ */ jsx(ElementData, { ref: elementCallbackRef, elementData: element }, element.key) }) }) });
42
+ componentHandle: imperativeHandleRef.current,
43
+ elementKey: element.key,
44
+ componentType: element.type,
45
+ children: /* @__PURE__ */ jsx(FindDomNode, { ref: findDomNodeCallbackRef, children: /* @__PURE__ */ jsx(ErrorBoundary, { FallbackComponent: ErrorFallback, children: isElementReference(element) ? /* @__PURE__ */ jsx(
46
+ ElementReference,
47
+ {
48
+ ref: elementCallbackRef,
49
+ elementReference: element
50
+ },
51
+ element.key
52
+ ) : /* @__PURE__ */ jsx(ElementData, { ref: elementCallbackRef, elementData: element }, element.key) }) })
53
+ }
54
+ );
36
55
  })
37
56
  );
57
+ function NoOp({ children }) {
58
+ return children;
59
+ }
38
60
  function ErrorFallback() {
39
61
  return /* @__PURE__ */ jsx(FallbackComponent, { text: `Error rendering component` });
40
62
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/components/Element.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef, memo, Ref, useCallback, useImperativeHandle, useRef, ReactNode } from 'react'\nimport {\n isElementReference,\n type Element as ElementDataOrRef,\n} from '../../../state/read-only-state'\nimport { ElementRegistration } from './ElementRegistration'\nimport { ElementReference } from './ElementReference'\nimport { ElementData } from './ElementData'\nimport { ElementImperativeHandle } from '../element-imperative-handle'\nimport { FindDomNode } from '../find-dom-node'\nimport { FallbackComponent } from '../../../components/shared/FallbackComponent'\nimport { ErrorBoundary } from '../../../components/shared/ErrorBoundary'\n\ntype Props = {\n element: ElementDataOrRef\n}\n\nexport const Element = memo(\n forwardRef(function Element(\n { element }: Props,\n ref: Ref<ElementImperativeHandle>,\n ): ReactNode | null {\n const useFindDomNodeRef = useRef(true)\n const imperativeHandleRef = useRef(new ElementImperativeHandle())\n\n const findDomNodeCallbackRef = useCallback((current: (() => Element | Text | null) | null) => {\n if (useFindDomNodeRef.current === true) {\n imperativeHandleRef.current.callback(() => current?.() ?? null)\n }\n }, [])\n\n const elementCallbackRef = useCallback((current: unknown | null) => {\n useFindDomNodeRef.current = false\n\n imperativeHandleRef.current.callback(() => current)\n }, [])\n\n useImperativeHandle(ref, () => imperativeHandleRef.current, [])\n\n return (\n <ElementRegistration componentHandle={imperativeHandleRef.current} elementKey={element.key}>\n <FindDomNode ref={findDomNodeCallbackRef}>\n <ErrorBoundary FallbackComponent={ErrorFallback}>\n {isElementReference(element) ? (\n <ElementReference\n key={element.key}\n ref={elementCallbackRef}\n elementReference={element}\n />\n ) : (\n <ElementData key={element.key} ref={elementCallbackRef} elementData={element} />\n )}\n </ErrorBoundary>\n </FindDomNode>\n </ElementRegistration>\n )\n }),\n)\n\nfunction ErrorFallback() {\n return <FallbackComponent text={`Error rendering component`} />\n}\n"],"mappings":";AA8Cc;AA5Cd,SAAS,YAAY,MAAW,aAAa,qBAAqB,cAAyB;AAC3F;AAAA,EACE;AAAA,OAEK;AACP,SAAS,2BAA2B;AACpC,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAC5B,SAAS,+BAA+B;AACxC,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,qBAAqB;AAMvB,MAAM,UAAU;AAAA,EACrB,WAAW,SAASA,SAClB,EAAE,QAAQ,GACV,KACkB;AAClB,UAAM,oBAAoB,OAAO,IAAI;AACrC,UAAM,sBAAsB,OAAO,IAAI,wBAAwB,CAAC;AAEhE,UAAM,yBAAyB,YAAY,CAAC,YAAkD;AAC5F,UAAI,kBAAkB,YAAY,MAAM;AACtC,4BAAoB,QAAQ,SAAS,MAAM,UAAU,KAAK,IAAI;AAAA,MAChE;AAAA,IACF,GAAG,CAAC,CAAC;AAEL,UAAM,qBAAqB,YAAY,CAAC,YAA4B;AAClE,wBAAkB,UAAU;AAE5B,0BAAoB,QAAQ,SAAS,MAAM,OAAO;AAAA,IACpD,GAAG,CAAC,CAAC;AAEL,wBAAoB,KAAK,MAAM,oBAAoB,SAAS,CAAC,CAAC;AAE9D,WACE,oBAAC,uBAAoB,iBAAiB,oBAAoB,SAAS,YAAY,QAAQ,KACrF,8BAAC,eAAY,KAAK,wBAChB,8BAAC,iBAAc,mBAAmB,eAC/B,6BAAmB,OAAO,IACzB;AAAA,MAAC;AAAA;AAAA,QAEC,KAAK;AAAA,QACL,kBAAkB;AAAA;AAAA,MAFb,QAAQ;AAAA,IAGf,IAEA,oBAAC,eAA8B,KAAK,oBAAoB,aAAa,WAAnD,QAAQ,GAAoD,GAElF,GACF,GACF;AAAA,EAEJ,CAAC;AACH;AAEA,SAAS,gBAAgB;AACvB,SAAO,oBAAC,qBAAkB,MAAM,6BAA6B;AAC/D;","names":["Element"]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/Element.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ReactNode,\n type Ref,\n type PropsWithChildren,\n forwardRef,\n memo,\n useCallback,\n useImperativeHandle,\n useRef,\n lazy,\n} from 'react'\n\nimport {\n isElementReference,\n type Element as ElementDataOrRef,\n} from '../../../state/read-only-state'\n\nimport { FallbackComponent } from '../../../components/shared/FallbackComponent'\nimport { ErrorBoundary } from '../../../components/shared/ErrorBoundary'\n\nimport { useIsReadOnly } from '../hooks/use-is-read-only'\nimport { useIsRegisterElementDisabled } from '../hooks/use-disable-register-element'\n\nimport { ElementImperativeHandle } from '../element-imperative-handle'\nimport { FindDomNode } from '../find-dom-node'\n\nimport { ElementReference } from './ElementReference'\nimport { ElementData } from './ElementData'\n\nconst BuilderElementRegistration = lazy(() => import('./ElementRegistration'))\n\ntype Props = {\n element: ElementDataOrRef\n}\n\nexport const Element = memo(\n forwardRef(function Element(\n { element }: Props,\n ref: Ref<ElementImperativeHandle>,\n ): ReactNode | null {\n const useFindDomNodeRef = useRef(true)\n const imperativeHandleRef = useRef(new ElementImperativeHandle())\n\n const findDomNodeCallbackRef = useCallback((current: (() => Element | Text | null) | null) => {\n if (useFindDomNodeRef.current === true) {\n imperativeHandleRef.current.callback(() => current?.() ?? null)\n }\n }, [])\n\n const elementCallbackRef = useCallback((current: unknown | null) => {\n useFindDomNodeRef.current = false\n\n imperativeHandleRef.current.callback(() => current)\n }, [])\n\n useImperativeHandle(ref, () => imperativeHandleRef.current, [])\n\n const isRegisterElementDisabled = useIsRegisterElementDisabled()\n const ElementRegistration =\n useIsReadOnly() || isRegisterElementDisabled ? NoOp : BuilderElementRegistration\n\n return (\n <ElementRegistration\n componentHandle={imperativeHandleRef.current}\n elementKey={element.key}\n componentType={element.type}\n >\n <FindDomNode ref={findDomNodeCallbackRef}>\n <ErrorBoundary FallbackComponent={ErrorFallback}>\n {isElementReference(element) ? (\n <ElementReference\n key={element.key}\n ref={elementCallbackRef}\n elementReference={element}\n />\n ) : (\n <ElementData key={element.key} ref={elementCallbackRef} elementData={element} />\n )}\n </ErrorBoundary>\n </FindDomNode>\n </ElementRegistration>\n )\n }),\n)\n\nfunction NoOp({ children }: PropsWithChildren) {\n return children\n}\n\nfunction ErrorFallback() {\n return <FallbackComponent text={`Error rendering component`} />\n}\n"],"mappings":";AAwEc;AAtEd;AAAA,EAIE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,OAEK;AAEP,SAAS,yBAAyB;AAClC,SAAS,qBAAqB;AAE9B,SAAS,qBAAqB;AAC9B,SAAS,oCAAoC;AAE7C,SAAS,+BAA+B;AACxC,SAAS,mBAAmB;AAE5B,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAE5B,MAAM,6BAA6B,KAAK,MAAM,OAAO,uBAAuB,CAAC;AAMtE,MAAM,UAAU;AAAA,EACrB,WAAW,SAASA,SAClB,EAAE,QAAQ,GACV,KACkB;AAClB,UAAM,oBAAoB,OAAO,IAAI;AACrC,UAAM,sBAAsB,OAAO,IAAI,wBAAwB,CAAC;AAEhE,UAAM,yBAAyB,YAAY,CAAC,YAAkD;AAC5F,UAAI,kBAAkB,YAAY,MAAM;AACtC,4BAAoB,QAAQ,SAAS,MAAM,UAAU,KAAK,IAAI;AAAA,MAChE;AAAA,IACF,GAAG,CAAC,CAAC;AAEL,UAAM,qBAAqB,YAAY,CAAC,YAA4B;AAClE,wBAAkB,UAAU;AAE5B,0BAAoB,QAAQ,SAAS,MAAM,OAAO;AAAA,IACpD,GAAG,CAAC,CAAC;AAEL,wBAAoB,KAAK,MAAM,oBAAoB,SAAS,CAAC,CAAC;AAE9D,UAAM,4BAA4B,6BAA6B;AAC/D,UAAM,sBACJ,cAAc,KAAK,4BAA4B,OAAO;AAExD,WACE;AAAA,MAAC;AAAA;AAAA,QACC,iBAAiB,oBAAoB;AAAA,QACrC,YAAY,QAAQ;AAAA,QACpB,eAAe,QAAQ;AAAA,QAEvB,8BAAC,eAAY,KAAK,wBAChB,8BAAC,iBAAc,mBAAmB,eAC/B,6BAAmB,OAAO,IACzB;AAAA,UAAC;AAAA;AAAA,YAEC,KAAK;AAAA,YACL,kBAAkB;AAAA;AAAA,UAFb,QAAQ;AAAA,QAGf,IAEA,oBAAC,eAA8B,KAAK,oBAAoB,aAAa,WAAnD,QAAQ,GAAoD,GAElF,GACF;AAAA;AAAA,IACF;AAAA,EAEJ,CAAC;AACH;AAEA,SAAS,KAAK,EAAE,SAAS,GAAsB;AAC7C,SAAO;AACT;AAEA,SAAS,gBAAgB;AACvB,SAAO,oBAAC,qBAAkB,MAAM,6BAA6B;AAC/D;","names":["Element"]}
@@ -1,32 +1,57 @@
1
1
  "use client";
2
- import { Fragment, jsx } from "react/jsx-runtime";
3
- import { memo, useEffect } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { memo, useMemo, useEffect } from "react";
4
+ import {
5
+ createPropControllers,
6
+ registerComponentHandleEffect,
7
+ registerPropControllersEffect
8
+ } from "../../../state/actions/internal/read-write-actions";
9
+ import { mountComponentEffect } from "../../../state/builder-api/actions";
4
10
  import { useDispatch } from "../hooks/use-dispatch";
5
11
  import { useDocumentKey } from "../hooks/use-document-context";
6
- import { useDisableRegisterElement } from "../hooks/use-disable-register-element";
7
- import { mountComponentEffect } from "../../../state/builder-api/actions";
8
- import { registerComponentHandleEffect } from "../../../state/actions/internal/read-only-actions";
12
+ import { ControlInstancesProvider } from "./control-instances-context";
9
13
  const ElementRegistration = memo(function ElementRegistration2({
10
14
  elementKey,
15
+ componentType,
11
16
  componentHandle,
12
17
  children
13
18
  }) {
14
19
  const dispatch = useDispatch();
15
20
  const documentKey = useDocumentKey();
16
- const isRegisterElementDisabled = useDisableRegisterElement();
21
+ const controlInstancesContext = useMemo(
22
+ () => ({
23
+ elementKey,
24
+ instances: documentKey ? dispatch(createPropControllers({ documentKey, elementKey, componentType })) : null
25
+ }),
26
+ [dispatch, documentKey, elementKey, componentType]
27
+ );
28
+ const controlInstances = controlInstancesContext?.instances;
29
+ useEffect(() => {
30
+ if (controlInstances == null)
31
+ return;
32
+ componentHandle.setPropControllers(controlInstances);
33
+ return () => componentHandle.setPropControllers(null);
34
+ }, [controlInstances, componentHandle]);
35
+ useEffect(() => {
36
+ if (documentKey == null || controlInstances == null)
37
+ return;
38
+ return dispatch(registerPropControllersEffect(documentKey, elementKey, controlInstances));
39
+ }, [dispatch, documentKey, elementKey, controlInstances]);
17
40
  useEffect(() => {
18
- if (documentKey == null || isRegisterElementDisabled)
41
+ if (documentKey == null)
19
42
  return;
20
43
  return dispatch(registerComponentHandleEffect(documentKey, elementKey, componentHandle));
21
- }, [dispatch, documentKey, elementKey, isRegisterElementDisabled]);
44
+ }, [dispatch, documentKey, elementKey, componentHandle]);
22
45
  useEffect(() => {
23
- if (documentKey == null || isRegisterElementDisabled)
46
+ if (documentKey == null)
24
47
  return;
25
48
  return dispatch(mountComponentEffect(documentKey, elementKey));
26
- }, [dispatch, documentKey, elementKey, isRegisterElementDisabled]);
27
- return /* @__PURE__ */ jsx(Fragment, { children });
49
+ }, [dispatch, documentKey, elementKey]);
50
+ return /* @__PURE__ */ jsx(ControlInstancesProvider, { value: controlInstancesContext, children });
28
51
  });
52
+ var ElementRegistration_default = ElementRegistration;
29
53
  export {
30
- ElementRegistration
54
+ ElementRegistration,
55
+ ElementRegistration_default as default
31
56
  };
32
57
  //# sourceMappingURL=ElementRegistration.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/components/ElementRegistration.tsx"],"sourcesContent":["'use client'\n\nimport { ReactNode, memo, useEffect } from 'react'\nimport { ElementImperativeHandle } from '../element-imperative-handle'\nimport { useDispatch } from '../hooks/use-dispatch'\nimport { useDocumentKey } from '../hooks/use-document-context'\nimport { useDisableRegisterElement } from '../hooks/use-disable-register-element'\nimport { mountComponentEffect } from '../../../state/builder-api/actions'\nimport { registerComponentHandleEffect } from '../../../state/actions/internal/read-only-actions'\n\ntype RegisterChildrenAsElementProps = {\n elementKey: string\n componentHandle: ElementImperativeHandle\n children?: ReactNode\n}\n\nexport const ElementRegistration = memo(function ElementRegistration({\n elementKey,\n componentHandle,\n children,\n}: RegisterChildrenAsElementProps): ReactNode {\n const dispatch = useDispatch()\n const documentKey = useDocumentKey()\n\n const isRegisterElementDisabled = useDisableRegisterElement()\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(registerComponentHandleEffect(documentKey, elementKey, componentHandle))\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(mountComponentEffect(documentKey, elementKey))\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n return <>{children}</>\n})\n"],"mappings":";AAsCS;AApCT,SAAoB,MAAM,iBAAiB;AAE3C,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,iCAAiC;AAC1C,SAAS,4BAA4B;AACrC,SAAS,qCAAqC;AAQvC,MAAM,sBAAsB,KAAK,SAASA,qBAAoB;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AACF,GAA8C;AAC5C,QAAM,WAAW,YAAY;AAC7B,QAAM,cAAc,eAAe;AAEnC,QAAM,4BAA4B,0BAA0B;AAE5D,YAAU,MAAM;AACd,QAAI,eAAe,QAAQ;AAA2B;AAEtD,WAAO,SAAS,8BAA8B,aAAa,YAAY,eAAe,CAAC;AAAA,EACzF,GAAG,CAAC,UAAU,aAAa,YAAY,yBAAyB,CAAC;AAEjE,YAAU,MAAM;AACd,QAAI,eAAe,QAAQ;AAA2B;AAEtD,WAAO,SAAS,qBAAqB,aAAa,UAAU,CAAC;AAAA,EAC/D,GAAG,CAAC,UAAU,aAAa,YAAY,yBAAyB,CAAC;AAEjE,SAAO,gCAAG,UAAS;AACrB,CAAC;","names":["ElementRegistration"]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/ElementRegistration.tsx"],"sourcesContent":["'use client'\n\nimport { ReactNode, memo, useMemo, useEffect } from 'react'\n\nimport {\n createPropControllers,\n registerComponentHandleEffect,\n registerPropControllersEffect,\n} from '../../../state/actions/internal/read-write-actions'\nimport { mountComponentEffect } from '../../../state/builder-api/actions'\n\nimport { useDispatch } from '../hooks/use-dispatch'\nimport { useDocumentKey } from '../hooks/use-document-context'\n\nimport { ElementImperativeHandle } from '../element-imperative-handle'\n\nimport { ControlInstancesProvider } from './control-instances-context'\n\nexport const ElementRegistration = memo(function ElementRegistration({\n elementKey,\n componentType,\n componentHandle,\n children,\n}: {\n elementKey: string\n componentHandle: ElementImperativeHandle\n componentType: string\n children?: ReactNode\n}): ReactNode {\n const dispatch = useDispatch()\n const documentKey = useDocumentKey()\n\n // Create control instances on first render and make them available down the React tree\n // through `ControlInstancesProvider`\n const controlInstancesContext = useMemo(\n () => ({\n elementKey,\n instances: documentKey\n ? dispatch(createPropControllers({ documentKey, elementKey, componentType }))\n : null,\n }),\n [dispatch, documentKey, elementKey, componentType],\n )\n\n const controlInstances = controlInstancesContext?.instances\n\n // Set control instances into the corresponding component handle\n useEffect(() => {\n if (controlInstances == null) return\n\n componentHandle.setPropControllers(controlInstances)\n return () => componentHandle.setPropControllers(null)\n }, [controlInstances, componentHandle])\n\n // Register the control instances and component handle in the state\n useEffect(() => {\n if (documentKey == null || controlInstances == null) return\n\n return dispatch(registerPropControllersEffect(documentKey, elementKey, controlInstances))\n }, [dispatch, documentKey, elementKey, controlInstances])\n\n useEffect(() => {\n if (documentKey == null) return\n\n return dispatch(registerComponentHandleEffect(documentKey, elementKey, componentHandle))\n }, [dispatch, documentKey, elementKey, componentHandle])\n\n // Register the element with to the builder\n useEffect(() => {\n if (documentKey == null) return\n\n return dispatch(mountComponentEffect(documentKey, elementKey))\n }, [dispatch, documentKey, elementKey])\n\n return (\n <ControlInstancesProvider value={controlInstancesContext}>{children}</ControlInstancesProvider>\n )\n})\n\nexport default ElementRegistration\n"],"mappings":";AA2EI;AAzEJ,SAAoB,MAAM,SAAS,iBAAiB;AAEpD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,4BAA4B;AAErC,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAI/B,SAAS,gCAAgC;AAElC,MAAM,sBAAsB,KAAK,SAASA,qBAAoB;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKc;AACZ,QAAM,WAAW,YAAY;AAC7B,QAAM,cAAc,eAAe;AAInC,QAAM,0BAA0B;AAAA,IAC9B,OAAO;AAAA,MACL;AAAA,MACA,WAAW,cACP,SAAS,sBAAsB,EAAE,aAAa,YAAY,cAAc,CAAC,CAAC,IAC1E;AAAA,IACN;AAAA,IACA,CAAC,UAAU,aAAa,YAAY,aAAa;AAAA,EACnD;AAEA,QAAM,mBAAmB,yBAAyB;AAGlD,YAAU,MAAM;AACd,QAAI,oBAAoB;AAAM;AAE9B,oBAAgB,mBAAmB,gBAAgB;AACnD,WAAO,MAAM,gBAAgB,mBAAmB,IAAI;AAAA,EACtD,GAAG,CAAC,kBAAkB,eAAe,CAAC;AAGtC,YAAU,MAAM;AACd,QAAI,eAAe,QAAQ,oBAAoB;AAAM;AAErD,WAAO,SAAS,8BAA8B,aAAa,YAAY,gBAAgB,CAAC;AAAA,EAC1F,GAAG,CAAC,UAAU,aAAa,YAAY,gBAAgB,CAAC;AAExD,YAAU,MAAM;AACd,QAAI,eAAe;AAAM;AAEzB,WAAO,SAAS,8BAA8B,aAAa,YAAY,eAAe,CAAC;AAAA,EACzF,GAAG,CAAC,UAAU,aAAa,YAAY,eAAe,CAAC;AAGvD,YAAU,MAAM;AACd,QAAI,eAAe;AAAM;AAEzB,WAAO,SAAS,qBAAqB,aAAa,UAAU,CAAC;AAAA,EAC/D,GAAG,CAAC,UAAU,aAAa,UAAU,CAAC;AAEtC,SACE,oBAAC,4BAAyB,OAAO,yBAA0B,UAAS;AAExE,CAAC;AAED,IAAO,8BAAQ;","names":["ElementRegistration"]}
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { createContext, useContext } from "react";
3
+ const ControlInstancesContext = createContext(null);
4
+ const ControlInstancesProvider = ControlInstancesContext.Provider;
5
+ function useControlInstances(elementKey) {
6
+ const cx = useContext(ControlInstancesContext);
7
+ return cx && cx.elementKey === elementKey ? cx.instances : null;
8
+ }
9
+ export {
10
+ ControlInstancesProvider,
11
+ useControlInstances
12
+ };
13
+ //# sourceMappingURL=control-instances-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/control-instances-context.tsx"],"sourcesContent":["'use client'\n\nimport { createContext, useContext } from 'react'\n\nimport { type AnyControlInstance } from '@makeswift/controls'\n\ntype Context = {\n elementKey: string\n instances: Record<string, AnyControlInstance> | null\n}\n\nconst ControlInstancesContext = createContext<Context | null>(null)\n\nexport const ControlInstancesProvider = ControlInstancesContext.Provider\n\nexport function useControlInstances(elementKey: string | undefined): Context['instances'] | null {\n const cx = useContext(ControlInstancesContext)\n return cx && cx.elementKey === elementKey ? cx.instances : null\n}\n"],"mappings":";AAEA,SAAS,eAAe,kBAAkB;AAS1C,MAAM,0BAA0B,cAA8B,IAAI;AAE3D,MAAM,2BAA2B,wBAAwB;AAEzD,SAAS,oBAAoB,YAA6D;AAC/F,QAAM,KAAK,WAAW,uBAAuB;AAC7C,SAAO,MAAM,GAAG,eAAe,aAAa,GAAG,YAAY;AAC7D;","names":[]}
@@ -1,12 +1,23 @@
1
1
  import { useControlDefs } from "../hooks/use-control-defs";
2
2
  import { useResolvedProps } from "../hooks/use-resolved-props";
3
+ import { useControlInstances } from "../hooks/use-control-instances";
4
+ import { useStylesheetFactory } from "../hooks/use-stylesheet-factory";
3
5
  import { resolveLegacyDescriptorProp } from "../legacy-controls";
4
6
  function ResolveProps({
5
7
  element,
6
8
  children: renderComponent
7
9
  }) {
8
10
  const [legacyDescriptors, definitions] = useControlDefs({ elementType: element.type });
9
- const resolvedProps = useResolvedProps(definitions, element.props, element.key);
11
+ const elementKey = element.key;
12
+ const stylesheetFactory = useStylesheetFactory();
13
+ const controlInstances = useControlInstances(elementKey);
14
+ const resolvedProps = useResolvedProps({
15
+ elementKey,
16
+ propDefs: definitions,
17
+ propData: element.props,
18
+ controlInstances,
19
+ stylesheetFactory
20
+ });
10
21
  const renderFn = Object.entries(legacyDescriptors).reduceRight(
11
22
  (renderFn2, [propName, descriptor]) => (props) => resolveLegacyDescriptorProp(descriptor, propName, element.props[propName], props, renderFn2),
12
23
  renderComponent
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/components/resolve-props.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\n\nimport { type ElementData } from '../../../state/read-only-state'\n\nimport { useControlDefs } from '../hooks/use-control-defs'\nimport { useResolvedProps } from '../hooks/use-resolved-props'\n\nimport { resolveLegacyDescriptorProp } from '../legacy-controls'\n\nexport function ResolveProps({\n element,\n children: renderComponent,\n}: {\n element: ElementData\n children: (props: Record<string, unknown>) => ReactNode\n}): ReactNode {\n const [legacyDescriptors, definitions] = useControlDefs({ elementType: element.type })\n\n const resolvedProps = useResolvedProps(definitions, element.props, element.key)\n\n const renderFn = Object.entries(legacyDescriptors).reduceRight(\n (renderFn, [propName, descriptor]) =>\n props =>\n resolveLegacyDescriptorProp(descriptor, propName, element.props[propName], props, renderFn),\n renderComponent,\n )\n\n return renderFn(resolvedProps)\n}\n"],"mappings":"AAIA,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AAEjC,SAAS,mCAAmC;AAErC,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,UAAU;AACZ,GAGc;AACZ,QAAM,CAAC,mBAAmB,WAAW,IAAI,eAAe,EAAE,aAAa,QAAQ,KAAK,CAAC;AAErF,QAAM,gBAAgB,iBAAiB,aAAa,QAAQ,OAAO,QAAQ,GAAG;AAE9E,QAAM,WAAW,OAAO,QAAQ,iBAAiB,EAAE;AAAA,IACjD,CAACA,WAAU,CAAC,UAAU,UAAU,MAC9B,WACE,4BAA4B,YAAY,UAAU,QAAQ,MAAM,QAAQ,GAAG,OAAOA,SAAQ;AAAA,IAC9F;AAAA,EACF;AAEA,SAAO,SAAS,aAAa;AAC/B;","names":["renderFn"]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/resolve-props.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\n\nimport { type ElementData } from '../../../state/read-only-state'\n\nimport { useControlDefs } from '../hooks/use-control-defs'\nimport { useResolvedProps } from '../hooks/use-resolved-props'\nimport { useControlInstances } from '../hooks/use-control-instances'\nimport { useStylesheetFactory } from '../hooks/use-stylesheet-factory'\n\nimport { resolveLegacyDescriptorProp } from '../legacy-controls'\n\nexport function ResolveProps({\n element,\n children: renderComponent,\n}: {\n element: ElementData\n children: (props: Record<string, unknown>) => ReactNode\n}): ReactNode {\n const [legacyDescriptors, definitions] = useControlDefs({ elementType: element.type })\n\n const elementKey = element.key\n const stylesheetFactory = useStylesheetFactory()\n const controlInstances = useControlInstances(elementKey)\n const resolvedProps = useResolvedProps({\n elementKey,\n propDefs: definitions,\n propData: element.props,\n controlInstances,\n stylesheetFactory,\n })\n\n const renderFn = Object.entries(legacyDescriptors).reduceRight(\n (renderFn, [propName, descriptor]) =>\n props =>\n resolveLegacyDescriptorProp(descriptor, propName, element.props[propName], props, renderFn),\n renderComponent,\n )\n\n return renderFn(resolvedProps)\n}\n"],"mappings":"AAIA,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC,SAAS,2BAA2B;AACpC,SAAS,4BAA4B;AAErC,SAAS,mCAAmC;AAErC,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,UAAU;AACZ,GAGc;AACZ,QAAM,CAAC,mBAAmB,WAAW,IAAI,eAAe,EAAE,aAAa,QAAQ,KAAK,CAAC;AAErF,QAAM,aAAa,QAAQ;AAC3B,QAAM,oBAAoB,qBAAqB;AAC/C,QAAM,mBAAmB,oBAAoB,UAAU;AACvD,QAAM,gBAAgB,iBAAiB;AAAA,IACrC;AAAA,IACA,UAAU;AAAA,IACV,UAAU,QAAQ;AAAA,IAClB;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,WAAW,OAAO,QAAQ,iBAAiB,EAAE;AAAA,IACjD,CAACA,WAAU,CAAC,UAAU,UAAU,MAC9B,WACE,4BAA4B,YAAY,UAAU,QAAQ,MAAM,QAAQ,GAAG,OAAOA,SAAQ;AAAA,IAC9F;AAAA,EACF;AAEA,SAAO,SAAS,aAAa;AAC/B;","names":["renderFn"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/runtimes/react/controls/rich-text/EditableText/editable-text.tsx"],"sourcesContent":["'use client'\n\nimport { cx } from '@emotion/css'\nimport { getBox } from 'css-box-model'\nimport isHotkey from 'is-hotkey'\nimport {\n FocusEvent,\n forwardRef,\n KeyboardEvent,\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\n\nimport { createEditor } from 'slate'\nimport { Slate as SlateReact, Editable, withReact, ReactEditor } from 'slate-react'\n\nimport { Slate, richTextDTOtoDAO, type RichTextValue } from '@makeswift/controls'\n\nimport { useBuilderEditMode } from '../../..'\nimport { DescriptorsPropControllers } from '../../../../../prop-controllers/instances'\nimport { withBlock, withTypography, withBuilder, onKeyDown } from '../../../../../slate'\nimport { BuilderEditMode } from '../../../../../state/modules/builder-edit-mode'\nimport { PropControllersHandle } from '../../../../../state/modules/prop-controller-handles'\nimport { pollBoxModel } from '../../../poll-box-model'\nimport { Element, Leaf } from '../components'\nimport { Descriptors } from '../rich-text'\nimport { useSyncDOMSelection } from './useSyncDOMSelection'\nimport { useSyncWithBuilder } from './useSyncWithBuilder'\n\ntype Props = {\n id?: string\n text?: RichTextValue\n width?: string\n margin?: string\n}\n\nconst defaultText: Slate.RichTextDAO = [\n { type: Slate.BlockType.Paragraph, children: [{ text: '' }] },\n]\n\nexport const EditableText = forwardRef(function EditableText(\n { id, text, width, margin }: Props,\n ref: Ref<PropControllersHandle<Descriptors>>,\n) {\n const [editor] = useState(() => withBlock(withTypography(withBuilder(withReact(createEditor())))))\n const [isPreservingDOMSElection, setIsPreservingDOMSelection] = useState(false)\n useSyncDOMSelection(editor, isPreservingDOMSElection)\n const delaySync = useSyncWithBuilder(editor, text)\n const editMode = useBuilderEditMode()\n\n const [propControllers, setPropControllers] =\n useState<DescriptorsPropControllers<Descriptors> | null>(null)\n const controller = propControllers?.text\n\n useEffect(() => {\n if (controller == null) return\n\n const element = ReactEditor.toDOMNode(editor, editor)\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => controller.changeBoxModel(boxModel),\n })\n }, [editor, controller])\n\n useImperativeHandle(\n ref,\n () => ({\n getDomNode() {\n return ReactEditor.toDOMNode(editor, editor)\n },\n getBoxModel() {\n return getBox(ReactEditor.toDOMNode(editor, editor))\n },\n setPropControllers,\n }),\n [editor, setPropControllers],\n )\n\n const initialValue = useMemo(() => (text ? richTextDTOtoDAO(text) : defaultText), [text])\n\n useEffect(() => {\n controller?.setSlateEditor(editor)\n }, [controller, editor])\n\n const handleFocus = useCallback(() => {\n controller?.focus()\n setIsPreservingDOMSelection(true)\n }, [controller])\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isHotkey('mod+shift+z', e)) return controller?.redo()\n if (isHotkey('mod+z', e)) return controller?.undo()\n if (isHotkey('escape')(e)) return controller?.blur()\n onKeyDown(e, editor)\n },\n [controller, editor],\n )\n\n const handleBlur = useCallback((e: FocusEvent) => {\n // When clicking outside of the iframe (`relatedTarget` is null) we want to preserve the DOM selection.\n if (e.relatedTarget == null) return\n // Otherwise we want to deselect on blur and stop preserving selection.\n setIsPreservingDOMSelection(false)\n ReactEditor.deselect(editor)\n }, [])\n\n return (\n <SlateReact editor={editor} value={initialValue} onChange={delaySync}>\n <Editable\n id={id}\n renderLeaf={Leaf}\n renderElement={Element}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n className={cx(width, margin)}\n readOnly={editMode !== BuilderEditMode.CONTENT}\n placeholder=\"Write some text...\"\n />\n </SlateReact>\n )\n})\n\nexport default EditableText\n"],"mappings":"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","names":["EditableText"]}
1
+ {"version":3,"sources":["../../../../../../../src/runtimes/react/controls/rich-text/EditableText/editable-text.tsx"],"sourcesContent":["'use client'\n\nimport { cx } from '@emotion/css'\nimport { getBox } from 'css-box-model'\nimport isHotkey from 'is-hotkey'\nimport {\n FocusEvent,\n forwardRef,\n KeyboardEvent,\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\n\nimport { createEditor } from 'slate'\nimport { Slate as SlateReact, Editable, withReact, ReactEditor } from 'slate-react'\n\nimport { Slate, richTextDTOtoDAO, type RichTextValue } from '@makeswift/controls'\n\nimport { useBuilderEditMode } from '../../..'\nimport { DescriptorsPropControllers } from '../../../../../prop-controllers/instances'\nimport { withBlock, withTypography, withBuilder, onKeyDown } from '../../../../../slate'\nimport { BuilderEditMode } from '../../../../../state/modules/builder-edit-mode'\nimport { PropControllersHandle } from '../../../../../state/modules/read-write/prop-controllers'\nimport { pollBoxModel } from '../../../poll-box-model'\nimport { Element, Leaf } from '../components'\nimport { Descriptors } from '../rich-text'\nimport { useSyncDOMSelection } from './useSyncDOMSelection'\nimport { useSyncWithBuilder } from './useSyncWithBuilder'\n\ntype Props = {\n id?: string\n text?: RichTextValue\n width?: string\n margin?: string\n}\n\nconst defaultText: Slate.RichTextDAO = [\n { type: Slate.BlockType.Paragraph, children: [{ text: '' }] },\n]\n\nexport const EditableText = forwardRef(function EditableText(\n { id, text, width, margin }: Props,\n ref: Ref<PropControllersHandle<Descriptors>>,\n) {\n const [editor] = useState(() => withBlock(withTypography(withBuilder(withReact(createEditor())))))\n const [isPreservingDOMSElection, setIsPreservingDOMSelection] = useState(false)\n useSyncDOMSelection(editor, isPreservingDOMSElection)\n const delaySync = useSyncWithBuilder(editor, text)\n const editMode = useBuilderEditMode()\n\n const [propControllers, setPropControllers] =\n useState<DescriptorsPropControllers<Descriptors> | null>(null)\n const controller = propControllers?.text\n\n useEffect(() => {\n if (controller == null) return\n\n const element = ReactEditor.toDOMNode(editor, editor)\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => controller.changeBoxModel(boxModel),\n })\n }, [editor, controller])\n\n useImperativeHandle(\n ref,\n () => ({\n getDomNode() {\n return ReactEditor.toDOMNode(editor, editor)\n },\n getBoxModel() {\n return getBox(ReactEditor.toDOMNode(editor, editor))\n },\n setPropControllers,\n }),\n [editor, setPropControllers],\n )\n\n const initialValue = useMemo(() => (text ? richTextDTOtoDAO(text) : defaultText), [text])\n\n useEffect(() => {\n controller?.setSlateEditor(editor)\n }, [controller, editor])\n\n const handleFocus = useCallback(() => {\n controller?.focus()\n setIsPreservingDOMSelection(true)\n }, [controller])\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isHotkey('mod+shift+z', e)) return controller?.redo()\n if (isHotkey('mod+z', e)) return controller?.undo()\n if (isHotkey('escape')(e)) return controller?.blur()\n onKeyDown(e, editor)\n },\n [controller, editor],\n )\n\n const handleBlur = useCallback((e: FocusEvent) => {\n // When clicking outside of the iframe (`relatedTarget` is null) we want to preserve the DOM selection.\n if (e.relatedTarget == null) return\n // Otherwise we want to deselect on blur and stop preserving selection.\n setIsPreservingDOMSelection(false)\n ReactEditor.deselect(editor)\n }, [])\n\n return (\n <SlateReact editor={editor} value={initialValue} onChange={delaySync}>\n <Editable\n id={id}\n renderLeaf={Leaf}\n renderElement={Element}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n className={cx(width, margin)}\n readOnly={editMode !== BuilderEditMode.CONTENT}\n placeholder=\"Write some text...\"\n />\n </SlateReact>\n )\n})\n\nexport default EditableText\n"],"mappings":"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","names":["EditableText"]}