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

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 (508) 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/controls/slot.js.map +1 -1
  26. package/dist/cjs/next/testing/breakpoints.js +3 -15
  27. package/dist/cjs/next/testing/breakpoints.js.map +1 -1
  28. package/dist/cjs/next/testing/element-data.js +3 -82
  29. package/dist/cjs/next/testing/element-data.js.map +1 -1
  30. package/dist/cjs/next/testing/react-runtime.js.map +1 -1
  31. package/dist/cjs/prop-controllers/instances.js +20 -4
  32. package/dist/cjs/prop-controllers/instances.js.map +1 -1
  33. package/dist/cjs/runtimes/react/components/Element.js +37 -12
  34. package/dist/cjs/runtimes/react/components/Element.js.map +1 -1
  35. package/dist/cjs/runtimes/react/components/ElementRegistration.js +32 -11
  36. package/dist/cjs/runtimes/react/components/ElementRegistration.js.map +1 -1
  37. package/dist/cjs/runtimes/react/components/control-instances-context.js +38 -0
  38. package/dist/cjs/runtimes/react/components/control-instances-context.js.map +1 -0
  39. package/dist/cjs/runtimes/react/components/resolve-props.js +12 -1
  40. package/dist/cjs/runtimes/react/components/resolve-props.js.map +1 -1
  41. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/editable-text.js.map +1 -1
  42. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js +4 -2
  43. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js.map +1 -1
  44. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js +2 -2
  45. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  46. package/dist/cjs/{utils/is.js → runtimes/react/controls/slot/index.js} +10 -7
  47. package/dist/cjs/runtimes/react/controls/slot/index.js.map +1 -0
  48. package/dist/cjs/runtimes/react/controls/{group.js → slot/render-slot.js} +13 -21
  49. package/dist/cjs/runtimes/react/controls/slot/render-slot.js.map +1 -0
  50. package/dist/cjs/runtimes/react/controls/{slot.js → slot/slot-value.js} +24 -26
  51. package/dist/cjs/runtimes/react/controls/slot/slot-value.js.map +1 -0
  52. package/dist/cjs/runtimes/react/controls/style.js.map +1 -1
  53. package/dist/cjs/runtimes/react/element-imperative-handle.js +2 -2
  54. package/dist/cjs/runtimes/react/element-imperative-handle.js.map +1 -1
  55. package/dist/cjs/runtimes/react/hooks/use-control-instance.js +88 -0
  56. package/dist/cjs/runtimes/react/hooks/use-control-instance.js.map +1 -0
  57. package/dist/cjs/runtimes/react/hooks/use-control-instances.js +29 -0
  58. package/dist/cjs/runtimes/react/hooks/use-control-instances.js.map +1 -0
  59. package/dist/cjs/runtimes/react/hooks/use-disable-register-element.js +3 -3
  60. package/dist/cjs/runtimes/react/hooks/use-disable-register-element.js.map +1 -1
  61. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js +17 -33
  62. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  63. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js +3 -3
  64. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  65. package/dist/cjs/runtimes/react/react-runtime-core.js +2 -1
  66. package/dist/cjs/runtimes/react/react-runtime-core.js.map +1 -1
  67. package/dist/cjs/runtimes/react/stylesheet-factory.js +17 -0
  68. package/dist/cjs/runtimes/react/stylesheet-factory.js.map +1 -0
  69. package/dist/cjs/runtimes/react/testing/index.js +25 -0
  70. package/dist/cjs/runtimes/react/testing/index.js.map +1 -0
  71. package/dist/cjs/runtimes/react/testing/react-provider.js +38 -0
  72. package/dist/cjs/runtimes/react/testing/react-provider.js.map +1 -0
  73. package/dist/cjs/slate/TypographyPlugin/normalizeTypographyUp.js.map +1 -1
  74. package/dist/cjs/slate/selectors.js.map +1 -1
  75. package/dist/cjs/slate/utils/toText.js.map +1 -1
  76. package/dist/cjs/state/actions/index.js +4 -4
  77. package/dist/cjs/state/actions/index.js.map +1 -1
  78. package/dist/cjs/state/actions/internal/action-types.js +34 -0
  79. package/dist/cjs/state/actions/internal/action-types.js.map +1 -0
  80. package/dist/cjs/state/actions/internal/index.js +0 -17
  81. package/dist/cjs/state/actions/internal/index.js.map +1 -1
  82. package/dist/cjs/state/actions/internal/read-only-action-types.js +44 -0
  83. package/dist/cjs/state/actions/internal/read-only-action-types.js.map +1 -0
  84. package/dist/cjs/state/actions/internal/read-only-actions.js +13 -92
  85. package/dist/cjs/state/actions/internal/read-only-actions.js.map +1 -1
  86. package/dist/cjs/state/actions/internal/read-write-action-types.js +42 -0
  87. package/dist/cjs/state/actions/internal/read-write-action-types.js.map +1 -0
  88. package/dist/cjs/state/actions/internal/read-write-actions.js +119 -14
  89. package/dist/cjs/state/actions/internal/read-write-actions.js.map +1 -1
  90. package/dist/cjs/state/builder-api/action-types.js +49 -0
  91. package/dist/cjs/state/builder-api/action-types.js.map +1 -0
  92. package/dist/cjs/state/builder-api/actions.js +14 -36
  93. package/dist/cjs/state/builder-api/actions.js.map +1 -1
  94. package/dist/cjs/state/builder-api/proxy.js +2 -1
  95. package/dist/cjs/state/builder-api/proxy.js.map +1 -1
  96. package/dist/cjs/state/host-api/action-types.js +43 -0
  97. package/dist/cjs/state/host-api/action-types.js.map +1 -0
  98. package/dist/cjs/state/{host-api.js → host-api/actions.js} +17 -33
  99. package/dist/cjs/state/host-api/actions.js.map +1 -0
  100. package/dist/cjs/state/host-api/index.js +25 -0
  101. package/dist/cjs/state/host-api/index.js.map +1 -0
  102. package/dist/cjs/state/middleware/read-write/builder-api/index.js +15 -15
  103. package/dist/cjs/state/middleware/read-write/builder-api/index.js.map +1 -1
  104. package/dist/cjs/state/middleware/read-write/measure-box-models.js +3 -3
  105. package/dist/cjs/state/middleware/read-write/measure-box-models.js.map +1 -1
  106. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js +10 -47
  107. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js.map +1 -1
  108. package/dist/cjs/state/modules/api-resources.js +5 -5
  109. package/dist/cjs/state/modules/api-resources.js.map +1 -1
  110. package/dist/cjs/state/modules/breakpoints.js +4 -4
  111. package/dist/cjs/state/modules/breakpoints.js.map +1 -1
  112. package/dist/cjs/state/modules/components-meta.js +3 -3
  113. package/dist/cjs/state/modules/components-meta.js.map +1 -1
  114. package/dist/cjs/state/modules/element-trees.js +53 -25
  115. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  116. package/dist/cjs/state/modules/is-in-builder.js +2 -2
  117. package/dist/cjs/state/modules/is-in-builder.js.map +1 -1
  118. package/dist/cjs/state/modules/is-read-only.js +2 -2
  119. package/dist/cjs/state/modules/is-read-only.js.map +1 -1
  120. package/dist/cjs/state/modules/locale.js +2 -2
  121. package/dist/cjs/state/modules/locale.js.map +1 -1
  122. package/dist/cjs/state/modules/localized-resources-map.js +3 -3
  123. package/dist/cjs/state/modules/localized-resources-map.js.map +1 -1
  124. package/dist/cjs/state/modules/{prop-controllers.js → prop-controller-descriptors.js} +7 -7
  125. package/dist/cjs/state/modules/prop-controller-descriptors.js.map +1 -0
  126. package/dist/cjs/state/modules/react-components.js +3 -3
  127. package/dist/cjs/state/modules/react-components.js.map +1 -1
  128. package/dist/cjs/state/modules/read-write/box-models.js +5 -5
  129. package/dist/cjs/state/modules/read-write/box-models.js.map +1 -1
  130. package/dist/cjs/state/modules/read-write/element-imperative-handles.js +3 -3
  131. package/dist/cjs/state/modules/read-write/element-imperative-handles.js.map +1 -1
  132. package/dist/cjs/state/modules/{prop-controller-handles.js → read-write/prop-controllers.js} +5 -5
  133. package/dist/cjs/state/modules/read-write/prop-controllers.js.map +1 -0
  134. package/dist/cjs/state/read-only-state.js +9 -44
  135. package/dist/cjs/state/read-only-state.js.map +1 -1
  136. package/dist/cjs/state/read-write-state.js +37 -0
  137. package/dist/cjs/state/read-write-state.js.map +1 -1
  138. package/dist/cjs/state/shared-api/action-types.js +33 -0
  139. package/dist/cjs/state/shared-api/action-types.js.map +1 -0
  140. package/dist/cjs/state/{shared-api.js → shared-api/actions.js} +8 -14
  141. package/dist/cjs/state/shared-api/actions.js.map +1 -0
  142. package/dist/cjs/state/shared-api/index.js +25 -0
  143. package/dist/cjs/state/shared-api/index.js.map +1 -0
  144. package/dist/cjs/state/store.js +5 -3
  145. package/dist/cjs/state/store.js.map +1 -1
  146. package/dist/cjs/state/translations/get.js +1 -4
  147. package/dist/cjs/state/translations/get.js.map +1 -1
  148. package/dist/cjs/state/translations/merge.js.map +1 -1
  149. package/dist/cjs/state/unified-state.js +12 -0
  150. package/dist/cjs/state/unified-state.js.map +1 -1
  151. package/dist/cjs/testing/breakpoints.js +35 -0
  152. package/dist/cjs/testing/breakpoints.js.map +1 -0
  153. package/dist/cjs/testing/element-data.js +102 -0
  154. package/dist/cjs/testing/element-data.js.map +1 -0
  155. package/dist/cjs/testing/read-write-state.js +32 -0
  156. package/dist/cjs/testing/read-write-state.js.map +1 -0
  157. package/dist/cjs/translations/index.js.map +1 -1
  158. package/dist/cjs/utils/intersection.js.map +1 -1
  159. package/dist/esm/api/graphql-api-client.js +1 -1
  160. package/dist/esm/api/rest-api-client.js +1 -1
  161. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  162. package/dist/esm/builder/host-to-builder-actions.js +2 -4
  163. package/dist/esm/builder/host-to-builder-actions.js.map +1 -1
  164. package/dist/esm/client/index.js +1 -1
  165. package/dist/esm/components/builtin/Embed/Embed.js +3 -2
  166. package/dist/esm/components/builtin/Embed/Embed.js.map +1 -1
  167. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  168. package/dist/esm/components/builtin/Navigation/components/DropDownButton/index.js +5 -1
  169. package/dist/esm/components/builtin/Navigation/components/DropDownButton/index.js.map +1 -1
  170. package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js +5 -1
  171. package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js.map +1 -1
  172. package/dist/esm/controls/index.js +4 -0
  173. package/dist/esm/controls/index.js.map +1 -1
  174. package/dist/esm/controls/link.js.map +1 -1
  175. package/dist/esm/controls/rich-text/control.js +16 -3
  176. package/dist/esm/controls/rich-text/control.js.map +1 -1
  177. package/dist/esm/controls/rich-text/rich-text.js +2 -2
  178. package/dist/esm/controls/rich-text/rich-text.js.map +1 -1
  179. package/dist/esm/controls/rich-text-v2/control.js +15 -2
  180. package/dist/esm/controls/rich-text-v2/control.js.map +1 -1
  181. package/dist/esm/controls/rich-text-v2/rich-text-v2.js +2 -2
  182. package/dist/esm/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  183. package/dist/esm/controls/serialization/base/index.js +2 -0
  184. package/dist/esm/controls/serialization/base/index.js.map +1 -1
  185. package/dist/esm/controls/slot.js.map +1 -1
  186. package/dist/esm/next/testing/breakpoints.js +1 -8
  187. package/dist/esm/next/testing/breakpoints.js.map +1 -1
  188. package/dist/esm/next/testing/element-data.js +1 -75
  189. package/dist/esm/next/testing/element-data.js.map +1 -1
  190. package/dist/esm/next/testing/react-runtime.js.map +1 -1
  191. package/dist/esm/prop-controllers/instances.js +20 -4
  192. package/dist/esm/prop-controllers/instances.js.map +1 -1
  193. package/dist/esm/runtimes/react/components/Element.js +35 -13
  194. package/dist/esm/runtimes/react/components/Element.js.map +1 -1
  195. package/dist/esm/runtimes/react/components/ElementRegistration.js +37 -12
  196. package/dist/esm/runtimes/react/components/ElementRegistration.js.map +1 -1
  197. package/dist/esm/runtimes/react/components/control-instances-context.js +13 -0
  198. package/dist/esm/runtimes/react/components/control-instances-context.js.map +1 -0
  199. package/dist/esm/runtimes/react/components/resolve-props.js +12 -1
  200. package/dist/esm/runtimes/react/components/resolve-props.js.map +1 -1
  201. package/dist/esm/runtimes/react/controls/rich-text/EditableText/editable-text.js.map +1 -1
  202. package/dist/esm/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js +4 -2
  203. package/dist/esm/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js.map +1 -1
  204. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js +1 -1
  205. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  206. package/dist/esm/runtimes/react/controls/slot/index.js +5 -0
  207. package/dist/esm/runtimes/react/controls/slot/index.js.map +1 -0
  208. package/dist/esm/runtimes/react/controls/slot/render-slot.js +13 -0
  209. package/dist/esm/runtimes/react/controls/slot/render-slot.js.map +1 -0
  210. package/dist/esm/runtimes/react/controls/{slot.js → slot/slot-value.js} +27 -23
  211. package/dist/esm/runtimes/react/controls/slot/slot-value.js.map +1 -0
  212. package/dist/esm/runtimes/react/controls/style.js.map +1 -1
  213. package/dist/esm/runtimes/react/element-imperative-handle.js +1 -1
  214. package/dist/esm/runtimes/react/element-imperative-handle.js.map +1 -1
  215. package/dist/esm/runtimes/react/hooks/use-control-instance.js +62 -0
  216. package/dist/esm/runtimes/react/hooks/use-control-instance.js.map +1 -0
  217. package/dist/esm/runtimes/react/hooks/use-control-instances.js +5 -0
  218. package/dist/esm/runtimes/react/hooks/use-control-instances.js.map +1 -0
  219. package/dist/esm/runtimes/react/hooks/use-disable-register-element.js +2 -2
  220. package/dist/esm/runtimes/react/hooks/use-disable-register-element.js.map +1 -1
  221. package/dist/esm/runtimes/react/hooks/use-resolved-props.js +17 -23
  222. package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  223. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js +3 -3
  224. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  225. package/dist/esm/runtimes/react/react-runtime-core.js +2 -1
  226. package/dist/esm/runtimes/react/react-runtime-core.js.map +1 -1
  227. package/dist/esm/runtimes/react/stylesheet-factory.js +1 -0
  228. package/dist/esm/runtimes/react/stylesheet-factory.js.map +1 -0
  229. package/dist/esm/runtimes/react/testing/index.js +3 -0
  230. package/dist/esm/runtimes/react/testing/index.js.map +1 -0
  231. package/dist/esm/runtimes/react/testing/react-provider.js +14 -0
  232. package/dist/esm/runtimes/react/testing/react-provider.js.map +1 -0
  233. package/dist/esm/slate/TypographyPlugin/normalizeTypographyUp.js.map +1 -1
  234. package/dist/esm/slate/selectors.js.map +1 -1
  235. package/dist/esm/slate/utils/toText.js.map +1 -1
  236. package/dist/esm/state/actions/index.js +2 -2
  237. package/dist/esm/state/actions/index.js.map +1 -1
  238. package/dist/esm/state/actions/internal/action-types.js +10 -0
  239. package/dist/esm/state/actions/internal/action-types.js.map +1 -0
  240. package/dist/esm/state/actions/internal/index.js +0 -9
  241. package/dist/esm/state/actions/internal/index.js.map +1 -1
  242. package/dist/esm/state/actions/internal/read-only-action-types.js +20 -0
  243. package/dist/esm/state/actions/internal/read-only-action-types.js.map +1 -0
  244. package/dist/esm/state/actions/internal/read-only-actions.js +1 -73
  245. package/dist/esm/state/actions/internal/read-only-actions.js.map +1 -1
  246. package/dist/esm/state/actions/internal/read-write-action-types.js +18 -0
  247. package/dist/esm/state/actions/internal/read-write-action-types.js.map +1 -0
  248. package/dist/esm/state/actions/internal/read-write-actions.js +94 -8
  249. package/dist/esm/state/actions/internal/read-write-actions.js.map +1 -1
  250. package/dist/esm/state/builder-api/action-types.js +25 -0
  251. package/dist/esm/state/builder-api/action-types.js.map +1 -0
  252. package/dist/esm/state/builder-api/actions.js +1 -24
  253. package/dist/esm/state/builder-api/actions.js.map +1 -1
  254. package/dist/esm/state/builder-api/proxy.js +2 -1
  255. package/dist/esm/state/builder-api/proxy.js.map +1 -1
  256. package/dist/esm/state/host-api/action-types.js +19 -0
  257. package/dist/esm/state/host-api/action-types.js.map +1 -0
  258. package/dist/esm/state/{host-api.js → host-api/actions.js} +2 -17
  259. package/dist/esm/state/host-api/actions.js.map +1 -0
  260. package/dist/esm/state/host-api/index.js +3 -0
  261. package/dist/esm/state/host-api/index.js.map +1 -0
  262. package/dist/esm/state/middleware/read-write/builder-api/index.js +1 -1
  263. package/dist/esm/state/middleware/read-write/builder-api/index.js.map +1 -1
  264. package/dist/esm/state/middleware/read-write/measure-box-models.js +3 -3
  265. package/dist/esm/state/middleware/read-write/measure-box-models.js.map +1 -1
  266. package/dist/esm/state/middleware/read-write/prop-controller-handles.js +13 -47
  267. package/dist/esm/state/middleware/read-write/prop-controller-handles.js.map +1 -1
  268. package/dist/esm/state/modules/api-resources.js +2 -2
  269. package/dist/esm/state/modules/api-resources.js.map +1 -1
  270. package/dist/esm/state/modules/breakpoints.js +2 -2
  271. package/dist/esm/state/modules/breakpoints.js.map +1 -1
  272. package/dist/esm/state/modules/components-meta.js +1 -1
  273. package/dist/esm/state/modules/components-meta.js.map +1 -1
  274. package/dist/esm/state/modules/element-trees.js +50 -22
  275. package/dist/esm/state/modules/element-trees.js.map +1 -1
  276. package/dist/esm/state/modules/is-in-builder.js +1 -1
  277. package/dist/esm/state/modules/is-in-builder.js.map +1 -1
  278. package/dist/esm/state/modules/is-read-only.js +1 -1
  279. package/dist/esm/state/modules/is-read-only.js.map +1 -1
  280. package/dist/esm/state/modules/locale.js +1 -1
  281. package/dist/esm/state/modules/locale.js.map +1 -1
  282. package/dist/esm/state/modules/localized-resources-map.js +1 -1
  283. package/dist/esm/state/modules/localized-resources-map.js.map +1 -1
  284. package/dist/esm/state/modules/{prop-controllers.js → prop-controller-descriptors.js} +2 -2
  285. package/dist/esm/state/modules/prop-controller-descriptors.js.map +1 -0
  286. package/dist/esm/state/modules/react-components.js +1 -1
  287. package/dist/esm/state/modules/react-components.js.map +1 -1
  288. package/dist/esm/state/modules/read-write/box-models.js +2 -2
  289. package/dist/esm/state/modules/read-write/box-models.js.map +1 -1
  290. package/dist/esm/state/modules/read-write/element-imperative-handles.js +3 -3
  291. package/dist/esm/state/modules/read-write/element-imperative-handles.js.map +1 -1
  292. package/dist/esm/state/modules/{prop-controller-handles.js → read-write/prop-controllers.js} +2 -2
  293. package/dist/esm/state/modules/read-write/prop-controllers.js.map +1 -0
  294. package/dist/esm/state/read-only-state.js +9 -41
  295. package/dist/esm/state/read-only-state.js.map +1 -1
  296. package/dist/esm/state/read-write-state.js +34 -0
  297. package/dist/esm/state/read-write-state.js.map +1 -1
  298. package/dist/esm/state/shared-api/action-types.js +9 -0
  299. package/dist/esm/state/shared-api/action-types.js.map +1 -0
  300. package/dist/esm/state/{shared-api.js → shared-api/actions.js} +2 -7
  301. package/dist/esm/state/shared-api/actions.js.map +1 -0
  302. package/dist/esm/state/shared-api/index.js +3 -0
  303. package/dist/esm/state/shared-api/index.js.map +1 -0
  304. package/dist/esm/state/store.js +3 -1
  305. package/dist/esm/state/store.js.map +1 -1
  306. package/dist/esm/state/translations/get.js +1 -4
  307. package/dist/esm/state/translations/get.js.map +1 -1
  308. package/dist/esm/state/translations/merge.js +3 -1
  309. package/dist/esm/state/translations/merge.js.map +1 -1
  310. package/dist/esm/state/unified-state.js +4 -0
  311. package/dist/esm/state/unified-state.js.map +1 -1
  312. package/dist/esm/testing/breakpoints.js +9 -0
  313. package/dist/esm/testing/breakpoints.js.map +1 -0
  314. package/dist/esm/testing/element-data.js +76 -0
  315. package/dist/esm/testing/element-data.js.map +1 -0
  316. package/dist/esm/testing/read-write-state.js +8 -0
  317. package/dist/esm/testing/read-write-state.js.map +1 -0
  318. package/dist/esm/translations/index.js.map +1 -1
  319. package/dist/esm/utils/intersection.js.map +1 -1
  320. package/dist/types/api/schema/page-pathname-slice.d.ts +2 -2
  321. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts +6 -6
  322. package/dist/types/api-handler/handlers/webhook/types.d.ts +20 -20
  323. package/dist/types/builder/host-to-builder-actions.d.ts.map +1 -1
  324. package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
  325. package/dist/types/components/builtin/Form/Form.d.ts +1 -1
  326. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  327. package/dist/types/components/builtin/Navigation/components/DropDownButton/index.d.ts.map +1 -1
  328. package/dist/types/components/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  329. package/dist/types/components/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  330. package/dist/types/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts.map +1 -1
  331. package/dist/types/controls/__tests__/slot.test.d.ts +3 -0
  332. package/dist/types/controls/__tests__/slot.test.d.ts.map +1 -0
  333. package/dist/types/controls/index.d.ts +1 -1
  334. package/dist/types/controls/index.d.ts.map +1 -1
  335. package/dist/types/controls/rich-text/control.d.ts +5 -1
  336. package/dist/types/controls/rich-text/control.d.ts.map +1 -1
  337. package/dist/types/controls/rich-text/rich-text.d.ts +2 -2
  338. package/dist/types/controls/rich-text/rich-text.d.ts.map +1 -1
  339. package/dist/types/controls/rich-text-v2/control.d.ts +6 -2
  340. package/dist/types/controls/rich-text-v2/control.d.ts.map +1 -1
  341. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +2 -2
  342. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  343. package/dist/types/controls/serialization/base/index.d.ts.map +1 -1
  344. package/dist/types/controls/slot.d.ts +1 -1
  345. package/dist/types/controls/slot.d.ts.map +1 -1
  346. package/dist/types/locale.d.ts +1 -1
  347. package/dist/types/next/testing/breakpoints.d.ts +1 -3
  348. package/dist/types/next/testing/breakpoints.d.ts.map +1 -1
  349. package/dist/types/next/testing/element-data.d.ts +1 -54
  350. package/dist/types/next/testing/element-data.d.ts.map +1 -1
  351. package/dist/types/next/testing/react-runtime.d.ts.map +1 -1
  352. package/dist/types/prop-controllers/instances.d.ts +9 -3
  353. package/dist/types/prop-controllers/instances.d.ts.map +1 -1
  354. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  355. package/dist/types/runtimes/react/components/ElementRegistration.d.ts +4 -4
  356. package/dist/types/runtimes/react/components/ElementRegistration.d.ts.map +1 -1
  357. package/dist/types/runtimes/react/components/__tests__/element-registration.test.d.ts +3 -0
  358. package/dist/types/runtimes/react/components/__tests__/element-registration.test.d.ts.map +1 -0
  359. package/dist/types/runtimes/react/components/control-instances-context.d.ts +9 -0
  360. package/dist/types/runtimes/react/components/control-instances-context.d.ts.map +1 -0
  361. package/dist/types/runtimes/react/components/resolve-props.d.ts.map +1 -1
  362. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts +1 -1
  363. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts.map +1 -1
  364. package/dist/types/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.d.ts.map +1 -1
  365. package/dist/types/runtimes/react/controls/slot/index.d.ts +2 -0
  366. package/dist/types/runtimes/react/controls/slot/index.d.ts.map +1 -0
  367. package/dist/types/runtimes/react/controls/slot/render-slot.d.ts +9 -0
  368. package/dist/types/runtimes/react/controls/slot/render-slot.d.ts.map +1 -0
  369. package/dist/types/runtimes/react/controls/{slot.d.ts → slot/slot-value.d.ts} +7 -7
  370. package/dist/types/runtimes/react/controls/slot/slot-value.d.ts.map +1 -0
  371. package/dist/types/runtimes/react/element-imperative-handle.d.ts +1 -1
  372. package/dist/types/runtimes/react/element-imperative-handle.d.ts.map +1 -1
  373. package/dist/types/runtimes/react/hooks/__tests__/use-control-instance.test.d.ts +3 -0
  374. package/dist/types/runtimes/react/hooks/__tests__/use-control-instance.test.d.ts.map +1 -0
  375. package/dist/types/runtimes/react/hooks/use-control-instance.d.ts +7 -0
  376. package/dist/types/runtimes/react/hooks/use-control-instance.d.ts.map +1 -0
  377. package/dist/types/runtimes/react/hooks/use-control-instances.d.ts +2 -0
  378. package/dist/types/runtimes/react/hooks/use-control-instances.d.ts.map +1 -0
  379. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts +1 -1
  380. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts.map +1 -1
  381. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts +9 -2
  382. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts.map +1 -1
  383. package/dist/types/runtimes/react/hooks/use-store.d.ts +2 -4
  384. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  385. package/dist/types/runtimes/react/hooks/use-stylesheet-factory.d.ts +1 -5
  386. package/dist/types/runtimes/react/hooks/use-stylesheet-factory.d.ts.map +1 -1
  387. package/dist/types/runtimes/react/react-runtime-core.d.ts +9 -1
  388. package/dist/types/runtimes/react/react-runtime-core.d.ts.map +1 -1
  389. package/dist/types/runtimes/react/stylesheet-factory.d.ts +6 -0
  390. package/dist/types/runtimes/react/stylesheet-factory.d.ts.map +1 -0
  391. package/dist/types/runtimes/react/testing/index.d.ts +3 -0
  392. package/dist/types/runtimes/react/testing/index.d.ts.map +1 -0
  393. package/dist/types/runtimes/react/testing/react-provider.d.ts +8 -0
  394. package/dist/types/runtimes/react/testing/react-provider.d.ts.map +1 -0
  395. package/dist/types/slate/InlineModePlugin/index.d.ts +1 -1
  396. package/dist/types/slate/LinkPlugin/getValue.d.ts.map +1 -1
  397. package/dist/types/slate/LinkPlugin/index.d.ts.map +1 -1
  398. package/dist/types/slate/TypographyPlugin/getValue.d.ts.map +1 -1
  399. package/dist/types/slate/TypographyPlugin/index.d.ts.map +1 -1
  400. package/dist/types/slate/selectors.d.ts +2 -2
  401. package/dist/types/slate/selectors.d.ts.map +1 -1
  402. package/dist/types/slate/utils/toText.d.ts.map +1 -1
  403. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts.map +1 -1
  404. package/dist/types/state/__tests__/fixtures/translatable-content-sample.d.ts.map +1 -1
  405. package/dist/types/state/__tests__/test-store.d.ts +2 -4
  406. package/dist/types/state/__tests__/test-store.d.ts.map +1 -1
  407. package/dist/types/state/actions/index.d.ts +7 -6
  408. package/dist/types/state/actions/index.d.ts.map +1 -1
  409. package/dist/types/state/actions/internal/action-types.d.ts +27 -0
  410. package/dist/types/state/actions/internal/action-types.d.ts.map +1 -0
  411. package/dist/types/state/actions/internal/index.d.ts +0 -25
  412. package/dist/types/state/actions/internal/index.d.ts.map +1 -1
  413. package/dist/types/state/actions/internal/read-only-action-types.d.ts +15 -0
  414. package/dist/types/state/actions/internal/read-only-action-types.d.ts.map +1 -0
  415. package/dist/types/state/actions/internal/read-only-actions.d.ts +3 -76
  416. package/dist/types/state/actions/internal/read-only-actions.d.ts.map +1 -1
  417. package/dist/types/state/actions/internal/read-write-action-types.d.ts +15 -0
  418. package/dist/types/state/actions/internal/read-write-action-types.d.ts.map +1 -0
  419. package/dist/types/state/actions/internal/read-write-actions.d.ts +71 -8
  420. package/dist/types/state/actions/internal/read-write-actions.d.ts.map +1 -1
  421. package/dist/types/state/builder-api/action-types.d.ts +22 -0
  422. package/dist/types/state/builder-api/action-types.d.ts.map +1 -0
  423. package/dist/types/state/builder-api/actions.d.ts +1 -21
  424. package/dist/types/state/builder-api/actions.d.ts.map +1 -1
  425. package/dist/types/state/builder-api/proxy.d.ts.map +1 -1
  426. package/dist/types/state/host-api/action-types.d.ts +17 -0
  427. package/dist/types/state/host-api/action-types.d.ts.map +1 -0
  428. package/dist/types/state/{host-api.d.ts → host-api/actions.d.ts} +7 -22
  429. package/dist/types/state/host-api/actions.d.ts.map +1 -0
  430. package/dist/types/state/host-api/index.d.ts +3 -0
  431. package/dist/types/state/host-api/index.d.ts.map +1 -0
  432. package/dist/types/state/middleware/read-write/__tests__/fixtures/operations.d.ts.map +1 -0
  433. package/dist/types/state/middleware/read-write/__tests__/fixtures/root-elements.d.ts.map +1 -0
  434. package/dist/types/state/middleware/read-write/__tests__/prop-controller-handles.test.d.ts +2 -0
  435. package/dist/types/state/middleware/read-write/__tests__/prop-controller-handles.test.d.ts.map +1 -0
  436. package/dist/types/state/middleware/read-write/__tests__/update-element-tree.test.d.ts +2 -0
  437. package/dist/types/state/middleware/read-write/__tests__/update-element-tree.test.d.ts.map +1 -0
  438. package/dist/types/state/middleware/read-write/prop-controller-handles.d.ts.map +1 -1
  439. package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts +737 -0
  440. package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts.map +1 -1
  441. package/dist/types/state/modules/components-meta.d.ts +3 -0
  442. package/dist/types/state/modules/components-meta.d.ts.map +1 -1
  443. package/dist/types/state/modules/element-trees.d.ts +1 -1
  444. package/dist/types/state/modules/element-trees.d.ts.map +1 -1
  445. package/dist/types/state/modules/{prop-controllers.d.ts → prop-controller-descriptors.d.ts} +1 -1
  446. package/dist/types/state/modules/prop-controller-descriptors.d.ts.map +1 -0
  447. package/dist/types/state/modules/{prop-controller-handles.d.ts → read-write/prop-controllers.d.ts} +4 -4
  448. package/dist/types/state/modules/{prop-controller-handles.d.ts.map → read-write/prop-controllers.d.ts.map} +1 -1
  449. package/dist/types/state/read-only-state.d.ts +6 -70
  450. package/dist/types/state/read-only-state.d.ts.map +1 -1
  451. package/dist/types/state/read-write-state.d.ts +67 -4
  452. package/dist/types/state/read-write-state.d.ts.map +1 -1
  453. package/dist/types/state/shared-api/action-types.d.ts +6 -0
  454. package/dist/types/state/shared-api/action-types.d.ts.map +1 -0
  455. package/dist/types/state/{shared-api.d.ts → shared-api/actions.d.ts} +3 -7
  456. package/dist/types/state/shared-api/actions.d.ts.map +1 -0
  457. package/dist/types/state/shared-api/index.d.ts +3 -0
  458. package/dist/types/state/shared-api/index.d.ts.map +1 -0
  459. package/dist/types/state/store.d.ts +4 -8
  460. package/dist/types/state/store.d.ts.map +1 -1
  461. package/dist/types/state/translations/get.d.ts +1 -1
  462. package/dist/types/state/translations/get.d.ts.map +1 -1
  463. package/dist/types/state/translations/merge.d.ts +1 -1
  464. package/dist/types/state/translations/merge.d.ts.map +1 -1
  465. package/dist/types/state/unified-state.d.ts +2 -0
  466. package/dist/types/state/unified-state.d.ts.map +1 -1
  467. package/dist/types/testing/breakpoints.d.ts +4 -0
  468. package/dist/types/testing/breakpoints.d.ts.map +1 -0
  469. package/dist/types/testing/element-data.d.ts +59 -0
  470. package/dist/types/testing/element-data.d.ts.map +1 -0
  471. package/dist/types/testing/read-write-state.d.ts +3 -0
  472. package/dist/types/testing/read-write-state.d.ts.map +1 -0
  473. package/dist/types/translations/index.d.ts +1 -1
  474. package/dist/types/translations/index.d.ts.map +1 -1
  475. package/dist/types/utils/intersection.d.ts +2 -1
  476. package/dist/types/utils/intersection.d.ts.map +1 -1
  477. package/package.json +9 -6
  478. package/react/builtins/package.json +1 -1
  479. package/dist/cjs/runtimes/react/controls/group.js.map +0 -1
  480. package/dist/cjs/runtimes/react/controls/slot.js.map +0 -1
  481. package/dist/cjs/state/host-api.js.map +0 -1
  482. package/dist/cjs/state/modules/prop-controller-handles.js.map +0 -1
  483. package/dist/cjs/state/modules/prop-controllers.js.map +0 -1
  484. package/dist/cjs/state/shared-api.js.map +0 -1
  485. package/dist/cjs/utils/is.js.map +0 -1
  486. package/dist/esm/runtimes/react/controls/group.js +0 -23
  487. package/dist/esm/runtimes/react/controls/group.js.map +0 -1
  488. package/dist/esm/runtimes/react/controls/slot.js.map +0 -1
  489. package/dist/esm/state/host-api.js.map +0 -1
  490. package/dist/esm/state/modules/prop-controller-handles.js.map +0 -1
  491. package/dist/esm/state/modules/prop-controllers.js.map +0 -1
  492. package/dist/esm/state/shared-api.js.map +0 -1
  493. package/dist/esm/utils/is.js +0 -6
  494. package/dist/esm/utils/is.js.map +0 -1
  495. package/dist/types/runtimes/react/controls/group.d.ts +0 -11
  496. package/dist/types/runtimes/react/controls/group.d.ts.map +0 -1
  497. package/dist/types/runtimes/react/controls/slot.d.ts.map +0 -1
  498. package/dist/types/state/__tests__/fixtures/operations.d.ts.map +0 -1
  499. package/dist/types/state/__tests__/fixtures/root-elements.d.ts.map +0 -1
  500. package/dist/types/state/__tests__/react-builder-preview.test.d.ts +0 -2
  501. package/dist/types/state/__tests__/react-builder-preview.test.d.ts.map +0 -1
  502. package/dist/types/state/host-api.d.ts.map +0 -1
  503. package/dist/types/state/modules/prop-controllers.d.ts.map +0 -1
  504. package/dist/types/state/shared-api.d.ts.map +0 -1
  505. package/dist/types/utils/is.d.ts +0 -3
  506. package/dist/types/utils/is.d.ts.map +0 -1
  507. /package/dist/types/state/{__tests__ → middleware/read-write/__tests__}/fixtures/operations.d.ts +0 -0
  508. /package/dist/types/state/{__tests__ → middleware/read-write/__tests__}/fixtures/root-elements.d.ts +0 -0
@@ -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":";AAkHM;AAhHN,SAAS,UAAU;AACnB,SAAS,cAAc;AACvB,OAAO,cAAc;AACrB;AAAA,EAEE;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY,UAAU,WAAW,mBAAmB;AAEtE,SAAS,OAAO,wBAA4C;AAE5D,SAAS,0BAA0B;AAEnC,SAAS,WAAW,gBAAgB,aAAa,iBAAiB;AAClE,SAAS,uBAAuB;AAEhC,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY;AAE9B,SAAS,2BAA2B;AACpC,SAAS,0BAA0B;AASnC,MAAM,cAAiC;AAAA,EACrC,EAAE,MAAM,MAAM,UAAU,WAAW,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE;AAC9D;AAEO,MAAM,eAAe,WAAW,SAASA,cAC9C,EAAE,IAAI,MAAM,OAAO,OAAO,GAC1B,KACA;AACA,QAAM,CAAC,MAAM,IAAI,SAAS,MAAM,UAAU,eAAe,YAAY,UAAU,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACjG,QAAM,CAAC,0BAA0B,2BAA2B,IAAI,SAAS,KAAK;AAC9E,sBAAoB,QAAQ,wBAAwB;AACpD,QAAM,YAAY,mBAAmB,QAAQ,IAAI;AACjD,QAAM,WAAW,mBAAmB;AAEpC,QAAM,CAAC,iBAAiB,kBAAkB,IACxC,SAAyD,IAAI;AAC/D,QAAM,aAAa,iBAAiB;AAEpC,YAAU,MAAM;AACd,QAAI,cAAc;AAAM;AAExB,UAAM,UAAU,YAAY,UAAU,QAAQ,MAAM;AAEpD,WAAO,aAAa;AAAA,MAClB;AAAA,MACA,kBAAkB,cAAY,WAAW,eAAe,QAAQ;AAAA,IAClE,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,UAAU,CAAC;AAEvB;AAAA,IACE;AAAA,IACA,OAAO;AAAA,MACL,aAAa;AACX,eAAO,YAAY,UAAU,QAAQ,MAAM;AAAA,MAC7C;AAAA,MACA,cAAc;AACZ,eAAO,OAAO,YAAY,UAAU,QAAQ,MAAM,CAAC;AAAA,MACrD;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,kBAAkB;AAAA,EAC7B;AAEA,QAAM,eAAe,QAAQ,MAAO,OAAO,iBAAiB,IAAI,IAAI,aAAc,CAAC,IAAI,CAAC;AAExF,YAAU,MAAM;AACd,gBAAY,eAAe,MAAM;AAAA,EACnC,GAAG,CAAC,YAAY,MAAM,CAAC;AAEvB,QAAM,cAAc,YAAY,MAAM;AACpC,gBAAY,MAAM;AAClB,gCAA4B,IAAI;AAAA,EAClC,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,gBAAgB;AAAA,IACpB,CAAC,MAAqB;AACpB,UAAI,SAAS,eAAe,CAAC;AAAG,eAAO,YAAY,KAAK;AACxD,UAAI,SAAS,SAAS,CAAC;AAAG,eAAO,YAAY,KAAK;AAClD,UAAI,SAAS,QAAQ,EAAE,CAAC;AAAG,eAAO,YAAY,KAAK;AACnD,gBAAU,GAAG,MAAM;AAAA,IACrB;AAAA,IACA,CAAC,YAAY,MAAM;AAAA,EACrB;AAEA,QAAM,aAAa,YAAY,CAAC,MAAkB;AAEhD,QAAI,EAAE,iBAAiB;AAAM;AAE7B,gCAA4B,KAAK;AACjC,gBAAY,SAAS,MAAM;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,SACE,oBAAC,cAAW,QAAgB,OAAO,cAAc,UAAU,WACzD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,WAAW,GAAG,OAAO,MAAM;AAAA,MAC3B,UAAU,aAAa,gBAAgB;AAAA,MACvC,aAAY;AAAA;AAAA,EACd,GACF;AAEJ,CAAC;AAED,IAAO,wBAAQ;","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":";AAkHM;AAhHN,SAAS,UAAU;AACnB,SAAS,cAAc;AACvB,OAAO,cAAc;AACrB;AAAA,EAEE;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY,UAAU,WAAW,mBAAmB;AAEtE,SAAS,OAAO,wBAA4C;AAE5D,SAAS,0BAA0B;AAEnC,SAAS,WAAW,gBAAgB,aAAa,iBAAiB;AAClE,SAAS,uBAAuB;AAEhC,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY;AAE9B,SAAS,2BAA2B;AACpC,SAAS,0BAA0B;AASnC,MAAM,cAAiC;AAAA,EACrC,EAAE,MAAM,MAAM,UAAU,WAAW,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE;AAC9D;AAEO,MAAM,eAAe,WAAW,SAASA,cAC9C,EAAE,IAAI,MAAM,OAAO,OAAO,GAC1B,KACA;AACA,QAAM,CAAC,MAAM,IAAI,SAAS,MAAM,UAAU,eAAe,YAAY,UAAU,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACjG,QAAM,CAAC,0BAA0B,2BAA2B,IAAI,SAAS,KAAK;AAC9E,sBAAoB,QAAQ,wBAAwB;AACpD,QAAM,YAAY,mBAAmB,QAAQ,IAAI;AACjD,QAAM,WAAW,mBAAmB;AAEpC,QAAM,CAAC,iBAAiB,kBAAkB,IACxC,SAAyD,IAAI;AAC/D,QAAM,aAAa,iBAAiB;AAEpC,YAAU,MAAM;AACd,QAAI,cAAc;AAAM;AAExB,UAAM,UAAU,YAAY,UAAU,QAAQ,MAAM;AAEpD,WAAO,aAAa;AAAA,MAClB;AAAA,MACA,kBAAkB,cAAY,WAAW,eAAe,QAAQ;AAAA,IAClE,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,UAAU,CAAC;AAEvB;AAAA,IACE;AAAA,IACA,OAAO;AAAA,MACL,aAAa;AACX,eAAO,YAAY,UAAU,QAAQ,MAAM;AAAA,MAC7C;AAAA,MACA,cAAc;AACZ,eAAO,OAAO,YAAY,UAAU,QAAQ,MAAM,CAAC;AAAA,MACrD;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,kBAAkB;AAAA,EAC7B;AAEA,QAAM,eAAe,QAAQ,MAAO,OAAO,iBAAiB,IAAI,IAAI,aAAc,CAAC,IAAI,CAAC;AAExF,YAAU,MAAM;AACd,gBAAY,eAAe,MAAM;AAAA,EACnC,GAAG,CAAC,YAAY,MAAM,CAAC;AAEvB,QAAM,cAAc,YAAY,MAAM;AACpC,gBAAY,MAAM;AAClB,gCAA4B,IAAI;AAAA,EAClC,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,gBAAgB;AAAA,IACpB,CAAC,MAAqB;AACpB,UAAI,SAAS,eAAe,CAAC;AAAG,eAAO,YAAY,KAAK;AACxD,UAAI,SAAS,SAAS,CAAC;AAAG,eAAO,YAAY,KAAK;AAClD,UAAI,SAAS,QAAQ,EAAE,CAAC;AAAG,eAAO,YAAY,KAAK;AACnD,gBAAU,GAAG,MAAM;AAAA,IACrB;AAAA,IACA,CAAC,YAAY,MAAM;AAAA,EACrB;AAEA,QAAM,aAAa,YAAY,CAAC,MAAkB;AAEhD,QAAI,EAAE,iBAAiB;AAAM;AAE7B,gCAA4B,KAAK;AACjC,gBAAY,SAAS,MAAM;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,SACE,oBAAC,cAAW,QAAgB,OAAO,cAAc,UAAU,WACzD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,WAAW,GAAG,OAAO,MAAM;AAAA,MAC3B,UAAU,aAAa,gBAAgB;AAAA,MACvC,aAAY;AAAA;AAAA,EACd,GACF;AAEJ,CAAC;AAED,IAAO,wBAAQ;","names":["EditableText"]}
@@ -1,4 +1,5 @@
1
1
  import { useState, useEffect, useCallback } from "react";
2
+ import { Range } from "slate";
2
3
  import { richTextDTOtoDAO, richTextDTOtoSelection } from "@makeswift/controls";
3
4
  import { useIsInBuilder } from "../../../hooks/use-is-in-builder";
4
5
  import deepEqual from "../../../../../utils/deepEqual";
@@ -10,13 +11,14 @@ function useSyncWithBuilder(editor, text) {
10
11
  if (shouldCommit && text && isInBuilder) {
11
12
  const nextValue = richTextDTOtoDAO(text);
12
13
  const nextSelection = richTextDTOtoSelection(text);
13
- if (!deepEqual(editor.children, nextValue) || !deepEqual(editor.selection, nextSelection)) {
14
+ const sameSelection = editor.selection == null || nextSelection == null ? editor.selection == nextSelection : Range.equals(editor.selection, nextSelection);
15
+ if (!deepEqual(editor.children, nextValue) || !sameSelection) {
14
16
  editor.children = nextValue;
15
17
  editor.selection = nextSelection;
16
18
  editor.onChange();
17
19
  }
18
20
  }
19
- }, [editor, shouldCommit, text]);
21
+ }, [editor, isInBuilder, shouldCommit, text]);
20
22
  useEffect(() => {
21
23
  if (shouldCommit)
22
24
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.tsx"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react'\nimport { Editor } from 'slate'\nimport { type RichTextDTO, richTextDTOtoDAO, richTextDTOtoSelection } from '@makeswift/controls'\n\nimport { useIsInBuilder } from '../../../hooks/use-is-in-builder'\nimport deepEqual from '../../../../../utils/deepEqual'\n\nconst COMMIT_DEBOUNCE_DELAY = 500\n\n/**\n * Compare new prop value with current editor and update editor\n * if the values are not equal.\n */\nexport function useSyncWithBuilder(editor: Editor, text?: RichTextDTO) {\n const [shouldCommit, setShouldCommit] = useState(true)\n const isInBuilder = useIsInBuilder()\n\n useEffect(() => {\n if (shouldCommit && text && isInBuilder) {\n const nextValue = richTextDTOtoDAO(text)\n const nextSelection = richTextDTOtoSelection(text)\n if (!deepEqual(editor.children, nextValue) || !deepEqual(editor.selection, nextSelection)) {\n editor.children = nextValue\n editor.selection = nextSelection\n editor.onChange()\n }\n }\n }, [editor, shouldCommit, text])\n\n useEffect(() => {\n if (shouldCommit) return\n\n const timeoutId = window.setTimeout(() => {\n setShouldCommit(true)\n }, COMMIT_DEBOUNCE_DELAY)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [shouldCommit])\n\n return useCallback(() => setShouldCommit(false), [])\n}\n"],"mappings":"AAAA,SAAS,UAAU,WAAW,mBAAmB;AAEjD,SAA2B,kBAAkB,8BAA8B;AAE3E,SAAS,sBAAsB;AAC/B,OAAO,eAAe;AAEtB,MAAM,wBAAwB;AAMvB,SAAS,mBAAmB,QAAgB,MAAoB;AACrE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,IAAI;AACrD,QAAM,cAAc,eAAe;AAEnC,YAAU,MAAM;AACd,QAAI,gBAAgB,QAAQ,aAAa;AACvC,YAAM,YAAY,iBAAiB,IAAI;AACvC,YAAM,gBAAgB,uBAAuB,IAAI;AACjD,UAAI,CAAC,UAAU,OAAO,UAAU,SAAS,KAAK,CAAC,UAAU,OAAO,WAAW,aAAa,GAAG;AACzF,eAAO,WAAW;AAClB,eAAO,YAAY;AACnB,eAAO,SAAS;AAAA,MAClB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,cAAc,IAAI,CAAC;AAE/B,YAAU,MAAM;AACd,QAAI;AAAc;AAElB,UAAM,YAAY,OAAO,WAAW,MAAM;AACxC,sBAAgB,IAAI;AAAA,IACtB,GAAG,qBAAqB;AAExB,WAAO,MAAM;AACX,aAAO,aAAa,SAAS;AAAA,IAC/B;AAAA,EACF,GAAG,CAAC,YAAY,CAAC;AAEjB,SAAO,YAAY,MAAM,gBAAgB,KAAK,GAAG,CAAC,CAAC;AACrD;","names":[]}
1
+ {"version":3,"sources":["../../../../../../../src/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.tsx"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react'\nimport { Editor, Range } from 'slate'\nimport { type RichTextDTO, richTextDTOtoDAO, richTextDTOtoSelection } from '@makeswift/controls'\n\nimport { useIsInBuilder } from '../../../hooks/use-is-in-builder'\nimport deepEqual from '../../../../../utils/deepEqual'\n\nconst COMMIT_DEBOUNCE_DELAY = 500\n\n/**\n * Compare new prop value with current editor and update editor\n * if the values are not equal.\n */\nexport function useSyncWithBuilder(editor: Editor, text?: RichTextDTO) {\n const [shouldCommit, setShouldCommit] = useState(true)\n const isInBuilder = useIsInBuilder()\n\n useEffect(() => {\n if (shouldCommit && text && isInBuilder) {\n const nextValue = richTextDTOtoDAO(text)\n const nextSelection = richTextDTOtoSelection(text)\n const sameSelection =\n editor.selection == null || nextSelection == null\n ? editor.selection == nextSelection\n : Range.equals(editor.selection, nextSelection)\n\n if (!deepEqual(editor.children, nextValue) || !sameSelection) {\n editor.children = nextValue\n editor.selection = nextSelection\n editor.onChange()\n }\n }\n }, [editor, isInBuilder, shouldCommit, text])\n\n useEffect(() => {\n if (shouldCommit) return\n\n const timeoutId = window.setTimeout(() => {\n setShouldCommit(true)\n }, COMMIT_DEBOUNCE_DELAY)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [shouldCommit])\n\n return useCallback(() => setShouldCommit(false), [])\n}\n"],"mappings":"AAAA,SAAS,UAAU,WAAW,mBAAmB;AACjD,SAAiB,aAAa;AAC9B,SAA2B,kBAAkB,8BAA8B;AAE3E,SAAS,sBAAsB;AAC/B,OAAO,eAAe;AAEtB,MAAM,wBAAwB;AAMvB,SAAS,mBAAmB,QAAgB,MAAoB;AACrE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,IAAI;AACrD,QAAM,cAAc,eAAe;AAEnC,YAAU,MAAM;AACd,QAAI,gBAAgB,QAAQ,aAAa;AACvC,YAAM,YAAY,iBAAiB,IAAI;AACvC,YAAM,gBAAgB,uBAAuB,IAAI;AACjD,YAAM,gBACJ,OAAO,aAAa,QAAQ,iBAAiB,OACzC,OAAO,aAAa,gBACpB,MAAM,OAAO,OAAO,WAAW,aAAa;AAElD,UAAI,CAAC,UAAU,OAAO,UAAU,SAAS,KAAK,CAAC,eAAe;AAC5D,eAAO,WAAW;AAClB,eAAO,YAAY;AACnB,eAAO,SAAS;AAAA,MAClB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,aAAa,cAAc,IAAI,CAAC;AAE5C,YAAU,MAAM;AACd,QAAI;AAAc;AAElB,UAAM,YAAY,OAAO,WAAW,MAAM;AACxC,sBAAgB,IAAI;AAAA,IACtB,GAAG,qBAAqB;AAExB,WAAO,MAAM;AACX,aAAO,aAAa,SAAS;AAAA,IAC/B;AAAA,EACF,GAAG,CAAC,YAAY,CAAC;AAEjB,SAAO,YAAY,MAAM,gBAAgB,KAAK,GAAG,CAAC,CAAC;AACrD;","names":[]}
@@ -2,7 +2,7 @@ import { jsx } from "react/jsx-runtime";
2
2
  import { lazy, useCallback } from "react";
3
3
  import {
4
4
  isPropControllersHandle
5
- } from "../../../../state/modules/prop-controller-handles";
5
+ } from "../../../../state/modules/read-write/prop-controllers";
6
6
  import { useIsReadOnly } from "../../hooks/use-is-read-only";
7
7
  const EditableText = lazy(() => import("./EditableText"));
8
8
  const ReadOnlyText = lazy(() => import("./ReadOnlyText"));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/runtimes/react/controls/rich-text/rich-text.tsx"],"sourcesContent":["import { ReactNode, lazy, useCallback } from 'react'\n\nimport { type DataType } from '@makeswift/controls'\nimport { RichTextV1Control, RichTextV1Definition } from '../../../../controls/rich-text'\n\nimport {\n isPropControllersHandle,\n PropControllersHandle,\n} from '../../../../state/modules/prop-controller-handles'\n\nimport { useIsReadOnly } from '../../hooks/use-is-read-only'\n\nconst EditableText = lazy(() => import('./EditableText'))\nconst ReadOnlyText = lazy(() => import('./ReadOnlyText'))\n\nexport type RichTextControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextV1Definition }\n\nexport function renderRichText(\n data: DataType<RichTextV1Definition> | undefined,\n control: RichTextV1Control | null,\n) {\n return <RichText data={data} control={control} />\n}\n\nfunction RichText({\n data,\n control,\n}: {\n data: DataType<RichTextV1Definition> | undefined\n control: RichTextV1Control | null\n}) {\n const textCallbackRef = useCallback(\n (handle: PropControllersHandle<Descriptors> | HTMLDivElement | null) => {\n if (isPropControllersHandle(handle))\n handle?.setPropControllers?.(control == null ? null : { text: control })\n },\n [control],\n )\n\n return useIsReadOnly() ? (\n <ReadOnlyText text={data} ref={textCallbackRef} />\n ) : (\n <EditableText text={data} ref={textCallbackRef} />\n )\n}\n"],"mappings":"AAuBS;AAvBT,SAAoB,MAAM,mBAAmB;AAK7C;AAAA,EACE;AAAA,OAEK;AAEP,SAAS,qBAAqB;AAE9B,MAAM,eAAe,KAAK,MAAM,OAAO,gBAAgB,CAAC;AACxD,MAAM,eAAe,KAAK,MAAM,OAAO,gBAAgB,CAAC;AAMjD,SAAS,eACd,MACA,SACA;AACA,SAAO,oBAAC,YAAS,MAAY,SAAkB;AACjD;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AACF,GAGG;AACD,QAAM,kBAAkB;AAAA,IACtB,CAAC,WAAuE;AACtE,UAAI,wBAAwB,MAAM;AAChC,gBAAQ,qBAAqB,WAAW,OAAO,OAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,IAC3E;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,SAAO,cAAc,IACnB,oBAAC,gBAAa,MAAM,MAAM,KAAK,iBAAiB,IAEhD,oBAAC,gBAAa,MAAM,MAAM,KAAK,iBAAiB;AAEpD;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/runtimes/react/controls/rich-text/rich-text.tsx"],"sourcesContent":["import { ReactNode, lazy, useCallback } from 'react'\n\nimport { type DataType } from '@makeswift/controls'\nimport { RichTextV1Control, RichTextV1Definition } from '../../../../controls/rich-text'\n\nimport {\n isPropControllersHandle,\n PropControllersHandle,\n} from '../../../../state/modules/read-write/prop-controllers'\n\nimport { useIsReadOnly } from '../../hooks/use-is-read-only'\n\nconst EditableText = lazy(() => import('./EditableText'))\nconst ReadOnlyText = lazy(() => import('./ReadOnlyText'))\n\nexport type RichTextControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextV1Definition }\n\nexport function renderRichText(\n data: DataType<RichTextV1Definition> | undefined,\n control: RichTextV1Control | null,\n) {\n return <RichText data={data} control={control} />\n}\n\nfunction RichText({\n data,\n control,\n}: {\n data: DataType<RichTextV1Definition> | undefined\n control: RichTextV1Control | null\n}) {\n const textCallbackRef = useCallback(\n (handle: PropControllersHandle<Descriptors> | HTMLDivElement | null) => {\n if (isPropControllersHandle(handle))\n handle?.setPropControllers?.(control == null ? null : { text: control })\n },\n [control],\n )\n\n return useIsReadOnly() ? (\n <ReadOnlyText text={data} ref={textCallbackRef} />\n ) : (\n <EditableText text={data} ref={textCallbackRef} />\n )\n}\n"],"mappings":"AAuBS;AAvBT,SAAoB,MAAM,mBAAmB;AAK7C;AAAA,EACE;AAAA,OAEK;AAEP,SAAS,qBAAqB;AAE9B,MAAM,eAAe,KAAK,MAAM,OAAO,gBAAgB,CAAC;AACxD,MAAM,eAAe,KAAK,MAAM,OAAO,gBAAgB,CAAC;AAMjD,SAAS,eACd,MACA,SACA;AACA,SAAO,oBAAC,YAAS,MAAY,SAAkB;AACjD;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AACF,GAGG;AACD,QAAM,kBAAkB;AAAA,IACtB,CAAC,WAAuE;AACtE,UAAI,wBAAwB,MAAM;AAChC,gBAAQ,qBAAqB,WAAW,OAAO,OAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,IAC3E;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,SAAO,cAAc,IACnB,oBAAC,gBAAa,MAAM,MAAM,KAAK,iBAAiB,IAEhD,oBAAC,gBAAa,MAAM,MAAM,KAAK,iBAAiB;AAEpD;","names":[]}
@@ -0,0 +1,5 @@
1
+ import { renderSlot } from "./render-slot";
2
+ export {
3
+ renderSlot
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/runtimes/react/controls/slot/index.ts"],"sourcesContent":["export { renderSlot } from './render-slot'\n"],"mappings":"AAAA,SAAS,kBAAkB;","names":[]}
@@ -0,0 +1,13 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { SlotValue } from "./slot-value";
3
+ function renderSlot({
4
+ data,
5
+ control,
6
+ config
7
+ }) {
8
+ return /* @__PURE__ */ jsx(SlotValue, { data, instanceKey: control?.instanceKey, config });
9
+ }
10
+ export {
11
+ renderSlot
12
+ };
13
+ //# sourceMappingURL=render-slot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/runtimes/react/controls/slot/render-slot.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\nimport { SlotDefinition, SlotControl, type DataType } from '@makeswift/controls'\n\nimport { type SlotConfig } from '../../../../controls/slot'\n\nimport { SlotValue } from './slot-value'\n\nexport function renderSlot({\n data,\n control,\n config,\n}: {\n data: DataType<SlotDefinition<ReactNode>> | undefined\n control: SlotControl | null\n config: SlotConfig\n}): ReactNode {\n // To make `SlotValue` interactive in the builder after it has been rendered as part of an\n // RSC component's server output and hydrated on the client, we need some way to connect\n // it to the corresponding control instance. Handling this purely client-side isn't an\n // option, as by itself the rendered slot has no identity we could use to look up its control\n // instance. Instantiating the instance on the server and simply passing it as a prop is\n // also not an option, as class instances like `SlotControl` can't cross the RSC server-client\n // serialization boundary. We can, however, pass the control's `instanceKey` instead, and use\n // it to look up the corresponding client-side control instance in `SlotValue` via\n // `useControlInstance`, and it works equally well for purely client-side rendering.\n return <SlotValue data={data} instanceKey={control?.instanceKey} config={config} />\n}\n"],"mappings":"AAyBS;AApBT,SAAS,iBAAiB;AAEnB,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF,GAIc;AAUZ,SAAO,oBAAC,aAAU,MAAY,aAAa,SAAS,aAAa,QAAgB;AACnF;","names":[]}
@@ -1,28 +1,32 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useEffect, useState, memo } from "react";
3
+ import {
4
+ useEffect,
5
+ useState,
6
+ memo
7
+ } from "react";
4
8
  import { cx } from "@emotion/css";
5
- import { Element } from "../components/Element";
6
- import { useIsInBuilder } from "../hooks/use-is-in-builder";
7
- import { getIndexes } from "../../../components/utils/columns";
8
- import { useResponsiveStyle } from "../../../components/utils/responsive-style";
9
- import { useStyle } from "../use-style";
10
- import { pollBoxModel } from "../poll-box-model";
11
- function renderSlot(props) {
12
- return /* @__PURE__ */ jsx(SlotValue, { ...props });
13
- }
14
- const SlotValue = memo(
15
- ({
16
- data,
17
- control,
18
- config
19
- }) => {
20
- if (data == null || data.elements.length === 0) {
21
- return /* @__PURE__ */ jsx(Slot.Placeholder, { control, placeholder: config.unstable_placeholder });
22
- }
23
- return /* @__PURE__ */ jsx(Slot, { control, children: data.elements.map((element, i) => /* @__PURE__ */ jsx(Slot.Item, { control, grid: data.columns, index: i, children: /* @__PURE__ */ jsx(Element, { element }) }, element.key)) });
9
+ import {
10
+ SlotControl
11
+ } from "@makeswift/controls";
12
+ import { Element } from "../../components/Element";
13
+ import { getIndexes } from "../../../../components/utils/columns";
14
+ import { useResponsiveStyle } from "../../../../components/utils/responsive-style";
15
+ import { useIsInBuilder } from "../../hooks/use-is-in-builder";
16
+ import { useControlInstance } from "../../hooks/use-control-instance";
17
+ import { useStyle } from "../../use-style";
18
+ import { pollBoxModel } from "../../poll-box-model";
19
+ const SlotValue = memo(function SlotValue2({
20
+ data,
21
+ instanceKey,
22
+ config
23
+ }) {
24
+ const control = useControlInstance(instanceKey, SlotControl);
25
+ if (data == null || data.elements.length === 0) {
26
+ return /* @__PURE__ */ jsx(Slot.Placeholder, { control, placeholder: config.unstable_placeholder });
24
27
  }
25
- );
28
+ return /* @__PURE__ */ jsx(Slot, { control, children: data.elements.map((element, i) => /* @__PURE__ */ jsx(Slot.Item, { control, grid: data.columns, index: i, children: /* @__PURE__ */ jsx(Element, { element }) }, element.key)) });
29
+ });
26
30
  function Slot({
27
31
  as,
28
32
  control,
@@ -153,6 +157,6 @@ function SlotPlaceholder({ control, placeholder }) {
153
157
  }
154
158
  export {
155
159
  Slot,
156
- renderSlot
160
+ SlotValue
157
161
  };
158
- //# sourceMappingURL=slot.js.map
162
+ //# sourceMappingURL=slot-value.js.map