@makeswift/runtime 0.28.8-canary.8 → 0.28.8

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 (513) hide show
  1. package/dist/cjs/api/api-resources-client.js +3 -0
  2. package/dist/cjs/api/api-resources-client.js.map +1 -1
  3. package/dist/cjs/api/graphql-api-client.js +1 -1
  4. package/dist/cjs/api/rest-api-client.js +85 -43
  5. package/dist/cjs/api/rest-api-client.js.map +1 -1
  6. package/dist/cjs/api/types.js.map +1 -1
  7. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  8. package/dist/cjs/builder/host-to-builder-actions.js +5 -5
  9. package/dist/cjs/builder/host-to-builder-actions.js.map +1 -1
  10. package/dist/cjs/client/index.js +40 -44
  11. package/dist/cjs/client/index.js.map +1 -1
  12. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  13. package/dist/cjs/controls/rich-text/control.js +16 -3
  14. package/dist/cjs/controls/rich-text/control.js.map +1 -1
  15. package/dist/cjs/controls/rich-text/rich-text.js +2 -2
  16. package/dist/cjs/controls/rich-text/rich-text.js.map +1 -1
  17. package/dist/cjs/controls/rich-text-v2/control.js +15 -2
  18. package/dist/cjs/controls/rich-text-v2/control.js.map +1 -1
  19. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js +2 -2
  20. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  21. package/dist/cjs/controls/slot.js.map +1 -1
  22. package/dist/cjs/next/testing/breakpoints.js +3 -15
  23. package/dist/cjs/next/testing/breakpoints.js.map +1 -1
  24. package/dist/cjs/next/testing/element-data.js +3 -82
  25. package/dist/cjs/next/testing/element-data.js.map +1 -1
  26. package/dist/cjs/next/testing/react-runtime.js.map +1 -1
  27. package/dist/cjs/prop-controllers/instances.js +20 -4
  28. package/dist/cjs/prop-controllers/instances.js.map +1 -1
  29. package/dist/cjs/runtimes/react/components/Element.js +53 -24
  30. package/dist/cjs/runtimes/react/components/Element.js.map +1 -1
  31. package/dist/cjs/runtimes/react/components/ElementRegistration.js +32 -11
  32. package/dist/cjs/runtimes/react/components/ElementRegistration.js.map +1 -1
  33. package/dist/cjs/runtimes/react/components/control-instances-context.js +38 -0
  34. package/dist/cjs/runtimes/react/components/control-instances-context.js.map +1 -0
  35. package/dist/cjs/runtimes/react/components/framework-context.js +1 -0
  36. package/dist/cjs/runtimes/react/components/framework-context.js.map +1 -1
  37. package/dist/cjs/runtimes/react/components/resolve-props.js +5 -1
  38. package/dist/cjs/runtimes/react/components/resolve-props.js.map +1 -1
  39. package/dist/cjs/runtimes/react/controls/node-value/editable-node-value.js +42 -0
  40. package/dist/cjs/runtimes/react/controls/node-value/editable-node-value.js.map +1 -0
  41. package/dist/cjs/runtimes/react/controls/node-value/index.js +51 -0
  42. package/dist/cjs/runtimes/react/controls/node-value/index.js.map +1 -0
  43. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/editable-text.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/runtimes/react/controls/slot/index.js +29 -0
  47. package/dist/cjs/runtimes/react/controls/slot/index.js.map +1 -0
  48. package/dist/cjs/runtimes/react/controls/slot/render-slot.js +37 -0
  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} +31 -26
  51. package/dist/cjs/runtimes/react/controls/slot/slot-value.js.map +1 -0
  52. package/dist/cjs/runtimes/react/element-imperative-handle.js +2 -2
  53. package/dist/cjs/runtimes/react/element-imperative-handle.js.map +1 -1
  54. package/dist/cjs/runtimes/react/hooks/use-control-instance.js +88 -0
  55. package/dist/cjs/runtimes/react/hooks/use-control-instance.js.map +1 -0
  56. package/dist/cjs/runtimes/react/hooks/use-control-instances.js +2 -12
  57. package/dist/cjs/runtimes/react/hooks/use-control-instances.js.map +1 -1
  58. package/dist/cjs/runtimes/react/hooks/use-disable-register-element.js +3 -3
  59. package/dist/cjs/runtimes/react/hooks/use-disable-register-element.js.map +1 -1
  60. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js +10 -9
  61. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  62. package/dist/cjs/runtimes/react/hooks/use-resolved-value-override.js +58 -0
  63. package/dist/cjs/runtimes/react/hooks/use-resolved-value-override.js.map +1 -0
  64. package/dist/cjs/runtimes/react/hooks/use-selector.js +8 -2
  65. package/dist/cjs/runtimes/react/hooks/use-selector.js.map +1 -1
  66. package/dist/cjs/runtimes/react/testing/index.js +25 -0
  67. package/dist/cjs/runtimes/react/testing/index.js.map +1 -0
  68. package/dist/cjs/runtimes/react/testing/react-provider.js +38 -0
  69. package/dist/cjs/runtimes/react/testing/react-provider.js.map +1 -0
  70. package/dist/cjs/state/actions/index.js +4 -4
  71. package/dist/cjs/state/actions/index.js.map +1 -1
  72. package/dist/cjs/state/actions/internal/action-types.js +34 -0
  73. package/dist/cjs/state/actions/internal/action-types.js.map +1 -0
  74. package/dist/cjs/state/actions/internal/index.js +0 -17
  75. package/dist/cjs/state/actions/internal/index.js.map +1 -1
  76. package/dist/cjs/state/actions/internal/read-only-action-types.js +44 -0
  77. package/dist/cjs/state/actions/internal/read-only-action-types.js.map +1 -0
  78. package/dist/cjs/state/actions/internal/read-only-actions.js +13 -92
  79. package/dist/cjs/state/actions/internal/read-only-actions.js.map +1 -1
  80. package/dist/cjs/state/actions/internal/read-write-action-types.js +44 -0
  81. package/dist/cjs/state/actions/internal/read-write-action-types.js.map +1 -0
  82. package/dist/cjs/state/actions/internal/read-write-actions.js +135 -14
  83. package/dist/cjs/state/actions/internal/read-write-actions.js.map +1 -1
  84. package/dist/cjs/state/api-client/state.js +8 -0
  85. package/dist/cjs/state/api-client/state.js.map +1 -1
  86. package/dist/cjs/state/builder-api/action-types.js +49 -0
  87. package/dist/cjs/state/builder-api/action-types.js.map +1 -0
  88. package/dist/cjs/state/builder-api/actions.js +14 -36
  89. package/dist/cjs/state/builder-api/actions.js.map +1 -1
  90. package/dist/cjs/state/builder-api/proxy.js +2 -1
  91. package/dist/cjs/state/builder-api/proxy.js.map +1 -1
  92. package/dist/cjs/state/host-api/action-types.js +43 -0
  93. package/dist/cjs/state/host-api/action-types.js.map +1 -0
  94. package/dist/cjs/state/{host-api.js → host-api/actions.js} +17 -33
  95. package/dist/cjs/state/host-api/actions.js.map +1 -0
  96. package/dist/cjs/state/host-api/index.js +25 -0
  97. package/dist/cjs/state/host-api/index.js.map +1 -0
  98. package/dist/cjs/state/middleware/read-write/builder-api/index.js +2 -58
  99. package/dist/cjs/state/middleware/read-write/builder-api/index.js.map +1 -1
  100. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js +3 -0
  101. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -1
  102. package/dist/cjs/state/middleware/read-write/builder-api/middleware.js +89 -0
  103. package/dist/cjs/state/middleware/read-write/builder-api/middleware.js.map +1 -0
  104. package/dist/cjs/state/middleware/read-write/builder-api/mount-change-action-buffer.js +72 -0
  105. package/dist/cjs/state/middleware/read-write/builder-api/mount-change-action-buffer.js.map +1 -0
  106. package/dist/cjs/state/middleware/read-write/measure-box-models.js +3 -3
  107. package/dist/cjs/state/middleware/read-write/measure-box-models.js.map +1 -1
  108. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js +10 -47
  109. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js.map +1 -1
  110. package/dist/cjs/state/modules/api-resources.js +5 -5
  111. package/dist/cjs/state/modules/api-resources.js.map +1 -1
  112. package/dist/cjs/state/modules/breakpoints.js +4 -4
  113. package/dist/cjs/state/modules/breakpoints.js.map +1 -1
  114. package/dist/cjs/state/modules/components-meta.js +3 -3
  115. package/dist/cjs/state/modules/components-meta.js.map +1 -1
  116. package/dist/cjs/state/modules/element-trees.js +5 -5
  117. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  118. package/dist/cjs/state/modules/is-in-builder.js +2 -2
  119. package/dist/cjs/state/modules/is-in-builder.js.map +1 -1
  120. package/dist/cjs/state/modules/is-read-only.js +2 -2
  121. package/dist/cjs/state/modules/is-read-only.js.map +1 -1
  122. package/dist/cjs/state/modules/locale.js +2 -2
  123. package/dist/cjs/state/modules/locale.js.map +1 -1
  124. package/dist/cjs/state/modules/localized-resources-map.js +3 -3
  125. package/dist/cjs/state/modules/localized-resources-map.js.map +1 -1
  126. package/dist/cjs/state/modules/{prop-controllers.js → prop-controller-descriptors.js} +7 -7
  127. package/dist/cjs/state/modules/prop-controller-descriptors.js.map +1 -0
  128. package/dist/cjs/state/modules/react-components.js +3 -3
  129. package/dist/cjs/state/modules/react-components.js.map +1 -1
  130. package/dist/cjs/state/modules/read-write/box-models.js +5 -5
  131. package/dist/cjs/state/modules/read-write/box-models.js.map +1 -1
  132. package/dist/cjs/state/modules/read-write/element-imperative-handles.js +3 -3
  133. package/dist/cjs/state/modules/read-write/element-imperative-handles.js.map +1 -1
  134. package/dist/cjs/state/modules/{prop-controller-handles.js → read-write/prop-controllers.js} +5 -5
  135. package/dist/cjs/state/modules/read-write/prop-controllers.js.map +1 -0
  136. package/dist/cjs/state/modules/read-write/resolved-value-overrides.js +70 -0
  137. package/dist/cjs/state/modules/read-write/resolved-value-overrides.js.map +1 -0
  138. package/dist/cjs/state/read-only-state.js +9 -44
  139. package/dist/cjs/state/read-only-state.js.map +1 -1
  140. package/dist/cjs/state/read-write-state.js +61 -1
  141. package/dist/cjs/state/read-write-state.js.map +1 -1
  142. package/dist/cjs/state/shared-api/action-types.js +33 -0
  143. package/dist/cjs/state/shared-api/action-types.js.map +1 -0
  144. package/dist/cjs/state/{shared-api.js → shared-api/actions.js} +8 -14
  145. package/dist/cjs/state/shared-api/actions.js.map +1 -0
  146. package/dist/cjs/state/shared-api/index.js +25 -0
  147. package/dist/cjs/state/shared-api/index.js.map +1 -0
  148. package/dist/cjs/state/store.js +5 -3
  149. package/dist/cjs/state/store.js.map +1 -1
  150. package/dist/cjs/state/translations/get.js.map +1 -1
  151. package/dist/cjs/state/translations/merge.js.map +1 -1
  152. package/dist/cjs/state/unified-state.js +12 -0
  153. package/dist/cjs/state/unified-state.js.map +1 -1
  154. package/dist/cjs/testing/breakpoints.js +35 -0
  155. package/dist/cjs/testing/breakpoints.js.map +1 -0
  156. package/dist/cjs/testing/element-data.js +102 -0
  157. package/dist/cjs/testing/element-data.js.map +1 -0
  158. package/dist/cjs/testing/read-write-state.js +32 -0
  159. package/dist/cjs/testing/read-write-state.js.map +1 -0
  160. package/dist/cjs/translations/index.js.map +1 -1
  161. package/dist/esm/api/api-resources-client.js +3 -0
  162. package/dist/esm/api/api-resources-client.js.map +1 -1
  163. package/dist/esm/api/graphql-api-client.js +1 -1
  164. package/dist/esm/api/rest-api-client.js +84 -43
  165. package/dist/esm/api/rest-api-client.js.map +1 -1
  166. package/dist/esm/api/types.js.map +1 -1
  167. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  168. package/dist/esm/builder/host-to-builder-actions.js +2 -4
  169. package/dist/esm/builder/host-to-builder-actions.js.map +1 -1
  170. package/dist/esm/client/index.js +45 -45
  171. package/dist/esm/client/index.js.map +1 -1
  172. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  173. package/dist/esm/controls/rich-text/control.js +16 -3
  174. package/dist/esm/controls/rich-text/control.js.map +1 -1
  175. package/dist/esm/controls/rich-text/rich-text.js +2 -2
  176. package/dist/esm/controls/rich-text/rich-text.js.map +1 -1
  177. package/dist/esm/controls/rich-text-v2/control.js +15 -2
  178. package/dist/esm/controls/rich-text-v2/control.js.map +1 -1
  179. package/dist/esm/controls/rich-text-v2/rich-text-v2.js +2 -2
  180. package/dist/esm/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  181. package/dist/esm/controls/slot.js.map +1 -1
  182. package/dist/esm/next/testing/breakpoints.js +1 -8
  183. package/dist/esm/next/testing/breakpoints.js.map +1 -1
  184. package/dist/esm/next/testing/element-data.js +1 -75
  185. package/dist/esm/next/testing/element-data.js.map +1 -1
  186. package/dist/esm/next/testing/react-runtime.js.map +1 -1
  187. package/dist/esm/prop-controllers/instances.js +20 -4
  188. package/dist/esm/prop-controllers/instances.js.map +1 -1
  189. package/dist/esm/runtimes/react/components/Element.js +51 -25
  190. package/dist/esm/runtimes/react/components/Element.js.map +1 -1
  191. package/dist/esm/runtimes/react/components/ElementRegistration.js +37 -12
  192. package/dist/esm/runtimes/react/components/ElementRegistration.js.map +1 -1
  193. package/dist/esm/runtimes/react/components/control-instances-context.js +13 -0
  194. package/dist/esm/runtimes/react/components/control-instances-context.js.map +1 -0
  195. package/dist/esm/runtimes/react/components/framework-context.js +1 -0
  196. package/dist/esm/runtimes/react/components/framework-context.js.map +1 -1
  197. package/dist/esm/runtimes/react/components/resolve-props.js +5 -1
  198. package/dist/esm/runtimes/react/components/resolve-props.js.map +1 -1
  199. package/dist/esm/runtimes/react/controls/node-value/editable-node-value.js +21 -0
  200. package/dist/esm/runtimes/react/controls/node-value/editable-node-value.js.map +1 -0
  201. package/dist/esm/runtimes/react/controls/node-value/index.js +17 -0
  202. package/dist/esm/runtimes/react/controls/node-value/index.js.map +1 -0
  203. package/dist/esm/runtimes/react/controls/rich-text/EditableText/editable-text.js.map +1 -1
  204. package/dist/esm/runtimes/react/controls/rich-text/EditableText/useSyncDOMSelection.js.map +1 -0
  205. package/dist/esm/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js.map +1 -0
  206. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js +1 -1
  207. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  208. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js.map +1 -0
  209. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.js.map +1 -0
  210. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/useSyncDOMSelection.js.map +1 -0
  211. package/dist/esm/runtimes/react/controls/slot/index.js +5 -0
  212. package/dist/esm/runtimes/react/controls/slot/index.js.map +1 -0
  213. package/dist/esm/runtimes/react/controls/slot/render-slot.js +13 -0
  214. package/dist/esm/runtimes/react/controls/slot/render-slot.js.map +1 -0
  215. package/dist/esm/runtimes/react/controls/{slot.js → slot/slot-value.js} +34 -23
  216. package/dist/esm/runtimes/react/controls/slot/slot-value.js.map +1 -0
  217. package/dist/esm/runtimes/react/element-imperative-handle.js +1 -1
  218. package/dist/esm/runtimes/react/element-imperative-handle.js.map +1 -1
  219. package/dist/esm/runtimes/react/hooks/use-control-instance.js +62 -0
  220. package/dist/esm/runtimes/react/hooks/use-control-instance.js.map +1 -0
  221. package/dist/esm/runtimes/react/hooks/use-control-instances.js +1 -11
  222. package/dist/esm/runtimes/react/hooks/use-control-instances.js.map +1 -1
  223. package/dist/esm/runtimes/react/hooks/use-disable-register-element.js +2 -2
  224. package/dist/esm/runtimes/react/hooks/use-disable-register-element.js.map +1 -1
  225. package/dist/esm/runtimes/react/hooks/use-resolved-props.js +10 -9
  226. package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  227. package/dist/esm/runtimes/react/hooks/use-resolved-value-override.js +35 -0
  228. package/dist/esm/runtimes/react/hooks/use-resolved-value-override.js.map +1 -0
  229. package/dist/esm/runtimes/react/hooks/use-selector.js +8 -2
  230. package/dist/esm/runtimes/react/hooks/use-selector.js.map +1 -1
  231. package/dist/esm/runtimes/react/testing/index.js +3 -0
  232. package/dist/esm/runtimes/react/testing/index.js.map +1 -0
  233. package/dist/esm/runtimes/react/testing/react-provider.js +14 -0
  234. package/dist/esm/runtimes/react/testing/react-provider.js.map +1 -0
  235. package/dist/esm/state/actions/index.js +2 -2
  236. package/dist/esm/state/actions/index.js.map +1 -1
  237. package/dist/esm/state/actions/internal/action-types.js +10 -0
  238. package/dist/esm/state/actions/internal/action-types.js.map +1 -0
  239. package/dist/esm/state/actions/internal/index.js +0 -9
  240. package/dist/esm/state/actions/internal/index.js.map +1 -1
  241. package/dist/esm/state/actions/internal/read-only-action-types.js +20 -0
  242. package/dist/esm/state/actions/internal/read-only-action-types.js.map +1 -0
  243. package/dist/esm/state/actions/internal/read-only-actions.js +1 -73
  244. package/dist/esm/state/actions/internal/read-only-actions.js.map +1 -1
  245. package/dist/esm/state/actions/internal/read-write-action-types.js +20 -0
  246. package/dist/esm/state/actions/internal/read-write-action-types.js.map +1 -0
  247. package/dist/esm/state/actions/internal/read-write-actions.js +108 -8
  248. package/dist/esm/state/actions/internal/read-write-actions.js.map +1 -1
  249. package/dist/esm/state/api-client/state.js +7 -0
  250. package/dist/esm/state/api-client/state.js.map +1 -1
  251. package/dist/esm/state/builder-api/action-types.js +25 -0
  252. package/dist/esm/state/builder-api/action-types.js.map +1 -0
  253. package/dist/esm/state/builder-api/actions.js +1 -24
  254. package/dist/esm/state/builder-api/actions.js.map +1 -1
  255. package/dist/esm/state/builder-api/proxy.js +2 -1
  256. package/dist/esm/state/builder-api/proxy.js.map +1 -1
  257. package/dist/esm/state/host-api/action-types.js +19 -0
  258. package/dist/esm/state/host-api/action-types.js.map +1 -0
  259. package/dist/esm/state/{host-api.js → host-api/actions.js} +2 -17
  260. package/dist/esm/state/host-api/actions.js.map +1 -0
  261. package/dist/esm/state/host-api/index.js +3 -0
  262. package/dist/esm/state/host-api/index.js.map +1 -0
  263. package/dist/esm/state/middleware/read-write/builder-api/index.js +1 -57
  264. package/dist/esm/state/middleware/read-write/builder-api/index.js.map +1 -1
  265. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js +3 -0
  266. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -1
  267. package/dist/esm/state/middleware/read-write/builder-api/middleware.js +65 -0
  268. package/dist/esm/state/middleware/read-write/builder-api/middleware.js.map +1 -0
  269. package/dist/esm/state/middleware/read-write/builder-api/mount-change-action-buffer.js +48 -0
  270. package/dist/esm/state/middleware/read-write/builder-api/mount-change-action-buffer.js.map +1 -0
  271. package/dist/esm/state/middleware/read-write/measure-box-models.js +3 -3
  272. package/dist/esm/state/middleware/read-write/measure-box-models.js.map +1 -1
  273. package/dist/esm/state/middleware/read-write/prop-controller-handles.js +13 -47
  274. package/dist/esm/state/middleware/read-write/prop-controller-handles.js.map +1 -1
  275. package/dist/esm/state/modules/api-resources.js +2 -2
  276. package/dist/esm/state/modules/api-resources.js.map +1 -1
  277. package/dist/esm/state/modules/breakpoints.js +2 -2
  278. package/dist/esm/state/modules/breakpoints.js.map +1 -1
  279. package/dist/esm/state/modules/components-meta.js +1 -1
  280. package/dist/esm/state/modules/components-meta.js.map +1 -1
  281. package/dist/esm/state/modules/element-trees.js +2 -2
  282. package/dist/esm/state/modules/element-trees.js.map +1 -1
  283. package/dist/esm/state/modules/is-in-builder.js +1 -1
  284. package/dist/esm/state/modules/is-in-builder.js.map +1 -1
  285. package/dist/esm/state/modules/is-read-only.js +1 -1
  286. package/dist/esm/state/modules/is-read-only.js.map +1 -1
  287. package/dist/esm/state/modules/locale.js +1 -1
  288. package/dist/esm/state/modules/locale.js.map +1 -1
  289. package/dist/esm/state/modules/localized-resources-map.js +1 -1
  290. package/dist/esm/state/modules/localized-resources-map.js.map +1 -1
  291. package/dist/esm/state/modules/{prop-controllers.js → prop-controller-descriptors.js} +2 -2
  292. package/dist/esm/state/modules/prop-controller-descriptors.js.map +1 -0
  293. package/dist/esm/state/modules/react-components.js +1 -1
  294. package/dist/esm/state/modules/react-components.js.map +1 -1
  295. package/dist/esm/state/modules/read-write/box-models.js +2 -2
  296. package/dist/esm/state/modules/read-write/box-models.js.map +1 -1
  297. package/dist/esm/state/modules/read-write/element-imperative-handles.js +3 -3
  298. package/dist/esm/state/modules/read-write/element-imperative-handles.js.map +1 -1
  299. package/dist/esm/state/modules/{prop-controller-handles.js → read-write/prop-controllers.js} +2 -2
  300. package/dist/esm/state/modules/read-write/prop-controllers.js.map +1 -0
  301. package/dist/esm/state/modules/read-write/resolved-value-overrides.js +43 -0
  302. package/dist/esm/state/modules/read-write/resolved-value-overrides.js.map +1 -0
  303. package/dist/esm/state/read-only-state.js +9 -41
  304. package/dist/esm/state/read-only-state.js.map +1 -1
  305. package/dist/esm/state/read-write-state.js +56 -1
  306. package/dist/esm/state/read-write-state.js.map +1 -1
  307. package/dist/esm/state/shared-api/action-types.js +9 -0
  308. package/dist/esm/state/shared-api/action-types.js.map +1 -0
  309. package/dist/esm/state/{shared-api.js → shared-api/actions.js} +2 -7
  310. package/dist/esm/state/shared-api/actions.js.map +1 -0
  311. package/dist/esm/state/shared-api/index.js +3 -0
  312. package/dist/esm/state/shared-api/index.js.map +1 -0
  313. package/dist/esm/state/store.js +3 -1
  314. package/dist/esm/state/store.js.map +1 -1
  315. package/dist/esm/state/translations/get.js.map +1 -1
  316. package/dist/esm/state/translations/merge.js +3 -1
  317. package/dist/esm/state/translations/merge.js.map +1 -1
  318. package/dist/esm/state/unified-state.js +4 -0
  319. package/dist/esm/state/unified-state.js.map +1 -1
  320. package/dist/esm/testing/breakpoints.js +9 -0
  321. package/dist/esm/testing/breakpoints.js.map +1 -0
  322. package/dist/esm/testing/element-data.js +76 -0
  323. package/dist/esm/testing/element-data.js.map +1 -0
  324. package/dist/esm/testing/read-write-state.js +8 -0
  325. package/dist/esm/testing/read-write-state.js.map +1 -0
  326. package/dist/esm/translations/index.js.map +1 -1
  327. package/dist/types/api/__tests__/rest-api-client.retries.test.d.ts +2 -0
  328. package/dist/types/api/__tests__/rest-api-client.retries.test.d.ts.map +1 -0
  329. package/dist/types/api/api-resources-client.d.ts +1 -0
  330. package/dist/types/api/api-resources-client.d.ts.map +1 -1
  331. package/dist/types/api/rest-api-client.d.ts +4 -0
  332. package/dist/types/api/rest-api-client.d.ts.map +1 -1
  333. package/dist/types/api/schema/page-pathname-slice.d.ts +2 -2
  334. package/dist/types/api/types.d.ts +1 -1
  335. package/dist/types/api/types.d.ts.map +1 -1
  336. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts +6 -6
  337. package/dist/types/api-handler/handlers/webhook/types.d.ts +20 -20
  338. package/dist/types/builder/host-to-builder-actions.d.ts.map +1 -1
  339. package/dist/types/client/index.d.ts.map +1 -1
  340. package/dist/types/components/builtin/Form/Form.d.ts +1 -1
  341. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  342. package/dist/types/components/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  343. package/dist/types/components/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  344. package/dist/types/controls/__tests__/slot.test.d.ts +3 -0
  345. package/dist/types/controls/__tests__/slot.test.d.ts.map +1 -0
  346. package/dist/types/controls/rich-text/control.d.ts +5 -1
  347. package/dist/types/controls/rich-text/control.d.ts.map +1 -1
  348. package/dist/types/controls/rich-text/rich-text.d.ts +2 -2
  349. package/dist/types/controls/rich-text/rich-text.d.ts.map +1 -1
  350. package/dist/types/controls/rich-text-v2/control.d.ts +6 -2
  351. package/dist/types/controls/rich-text-v2/control.d.ts.map +1 -1
  352. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +2 -2
  353. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  354. package/dist/types/controls/slot.d.ts +1 -1
  355. package/dist/types/controls/slot.d.ts.map +1 -1
  356. package/dist/types/locale.d.ts +1 -1
  357. package/dist/types/next/testing/breakpoints.d.ts +1 -3
  358. package/dist/types/next/testing/breakpoints.d.ts.map +1 -1
  359. package/dist/types/next/testing/element-data.d.ts +1 -54
  360. package/dist/types/next/testing/element-data.d.ts.map +1 -1
  361. package/dist/types/next/testing/react-runtime.d.ts.map +1 -1
  362. package/dist/types/prop-controllers/instances.d.ts +9 -3
  363. package/dist/types/prop-controllers/instances.d.ts.map +1 -1
  364. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  365. package/dist/types/runtimes/react/components/ElementRegistration.d.ts +4 -4
  366. package/dist/types/runtimes/react/components/ElementRegistration.d.ts.map +1 -1
  367. package/dist/types/runtimes/react/components/__tests__/element-registration.test.d.ts +3 -0
  368. package/dist/types/runtimes/react/components/__tests__/element-registration.test.d.ts.map +1 -0
  369. package/dist/types/runtimes/react/components/control-instances-context.d.ts +9 -0
  370. package/dist/types/runtimes/react/components/control-instances-context.d.ts.map +1 -0
  371. package/dist/types/runtimes/react/components/framework-context.d.ts.map +1 -1
  372. package/dist/types/runtimes/react/components/resolve-props.d.ts.map +1 -1
  373. package/dist/types/runtimes/react/controls/node-value/editable-node-value.d.ts +7 -0
  374. package/dist/types/runtimes/react/controls/node-value/editable-node-value.d.ts.map +1 -0
  375. package/dist/types/runtimes/react/controls/node-value/index.d.ts +6 -0
  376. package/dist/types/runtimes/react/controls/node-value/index.d.ts.map +1 -0
  377. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts +1 -1
  378. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts.map +1 -1
  379. package/dist/types/runtimes/react/controls/slot/index.d.ts +2 -0
  380. package/dist/types/runtimes/react/controls/slot/index.d.ts.map +1 -0
  381. package/dist/types/runtimes/react/controls/slot/render-slot.d.ts +9 -0
  382. package/dist/types/runtimes/react/controls/slot/render-slot.d.ts.map +1 -0
  383. package/dist/types/runtimes/react/controls/{slot.d.ts → slot/slot-value.d.ts} +7 -7
  384. package/dist/types/runtimes/react/controls/slot/slot-value.d.ts.map +1 -0
  385. package/dist/types/runtimes/react/element-imperative-handle.d.ts +1 -1
  386. package/dist/types/runtimes/react/element-imperative-handle.d.ts.map +1 -1
  387. package/dist/types/runtimes/react/hooks/__tests__/use-control-instance.test.d.ts +3 -0
  388. package/dist/types/runtimes/react/hooks/__tests__/use-control-instance.test.d.ts.map +1 -0
  389. package/dist/types/runtimes/react/hooks/use-control-instance.d.ts +7 -0
  390. package/dist/types/runtimes/react/hooks/use-control-instance.d.ts.map +1 -0
  391. package/dist/types/runtimes/react/hooks/use-control-instances.d.ts +1 -2
  392. package/dist/types/runtimes/react/hooks/use-control-instances.d.ts.map +1 -1
  393. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts +1 -1
  394. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts.map +1 -1
  395. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts +4 -3
  396. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts.map +1 -1
  397. package/dist/types/runtimes/react/hooks/use-resolved-value-override.d.ts +5 -0
  398. package/dist/types/runtimes/react/hooks/use-resolved-value-override.d.ts.map +1 -0
  399. package/dist/types/runtimes/react/hooks/use-selector.d.ts +2 -5
  400. package/dist/types/runtimes/react/hooks/use-selector.d.ts.map +1 -1
  401. package/dist/types/runtimes/react/hooks/use-store.d.ts +2 -4
  402. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  403. package/dist/types/runtimes/react/testing/index.d.ts +3 -0
  404. package/dist/types/runtimes/react/testing/index.d.ts.map +1 -0
  405. package/dist/types/runtimes/react/testing/react-provider.d.ts +8 -0
  406. package/dist/types/runtimes/react/testing/react-provider.d.ts.map +1 -0
  407. package/dist/types/slate/InlineModePlugin/index.d.ts +1 -1
  408. package/dist/types/slate/LinkPlugin/getValue.d.ts.map +1 -1
  409. package/dist/types/slate/LinkPlugin/index.d.ts.map +1 -1
  410. package/dist/types/slate/TypographyPlugin/getValue.d.ts.map +1 -1
  411. package/dist/types/slate/TypographyPlugin/index.d.ts.map +1 -1
  412. package/dist/types/state/__tests__/test-store.d.ts +2 -4
  413. package/dist/types/state/__tests__/test-store.d.ts.map +1 -1
  414. package/dist/types/state/actions/index.d.ts +9 -6
  415. package/dist/types/state/actions/index.d.ts.map +1 -1
  416. package/dist/types/state/actions/internal/action-types.d.ts +29 -0
  417. package/dist/types/state/actions/internal/action-types.d.ts.map +1 -0
  418. package/dist/types/state/actions/internal/index.d.ts +0 -25
  419. package/dist/types/state/actions/internal/index.d.ts.map +1 -1
  420. package/dist/types/state/actions/internal/read-only-action-types.d.ts +15 -0
  421. package/dist/types/state/actions/internal/read-only-action-types.d.ts.map +1 -0
  422. package/dist/types/state/actions/internal/read-only-actions.d.ts +3 -76
  423. package/dist/types/state/actions/internal/read-only-actions.d.ts.map +1 -1
  424. package/dist/types/state/actions/internal/read-write-action-types.d.ts +17 -0
  425. package/dist/types/state/actions/internal/read-write-action-types.d.ts.map +1 -0
  426. package/dist/types/state/actions/internal/read-write-actions.d.ts +89 -8
  427. package/dist/types/state/actions/internal/read-write-actions.d.ts.map +1 -1
  428. package/dist/types/state/api-client/state.d.ts +1 -0
  429. package/dist/types/state/api-client/state.d.ts.map +1 -1
  430. package/dist/types/state/builder-api/action-types.d.ts +22 -0
  431. package/dist/types/state/builder-api/action-types.d.ts.map +1 -0
  432. package/dist/types/state/builder-api/actions.d.ts +3 -23
  433. package/dist/types/state/builder-api/actions.d.ts.map +1 -1
  434. package/dist/types/state/builder-api/proxy.d.ts.map +1 -1
  435. package/dist/types/state/host-api/action-types.d.ts +17 -0
  436. package/dist/types/state/host-api/action-types.d.ts.map +1 -0
  437. package/dist/types/state/{host-api.d.ts → host-api/actions.d.ts} +7 -22
  438. package/dist/types/state/host-api/actions.d.ts.map +1 -0
  439. package/dist/types/state/host-api/index.d.ts +3 -0
  440. package/dist/types/state/host-api/index.d.ts.map +1 -0
  441. package/dist/types/state/middleware/read-write/__tests__/fixtures/operations.d.ts.map +1 -0
  442. package/dist/types/state/middleware/read-write/__tests__/fixtures/root-elements.d.ts.map +1 -0
  443. package/dist/types/state/middleware/read-write/__tests__/prop-controller-handles.test.d.ts +2 -0
  444. package/dist/types/state/middleware/read-write/__tests__/prop-controller-handles.test.d.ts.map +1 -0
  445. package/dist/types/state/middleware/read-write/__tests__/update-element-tree.test.d.ts +2 -0
  446. package/dist/types/state/middleware/read-write/__tests__/update-element-tree.test.d.ts.map +1 -0
  447. package/dist/types/state/middleware/read-write/builder-api/__tests__/middleware.test.d.ts +2 -0
  448. package/dist/types/state/middleware/read-write/builder-api/__tests__/middleware.test.d.ts.map +1 -0
  449. package/dist/types/state/middleware/read-write/builder-api/__tests__/mount-change-action-buffer.test.d.ts +2 -0
  450. package/dist/types/state/middleware/read-write/builder-api/__tests__/mount-change-action-buffer.test.d.ts.map +1 -0
  451. package/dist/types/state/middleware/read-write/builder-api/index.d.ts +1 -4
  452. package/dist/types/state/middleware/read-write/builder-api/index.d.ts.map +1 -1
  453. package/dist/types/state/middleware/read-write/builder-api/initialize-connection.d.ts.map +1 -1
  454. package/dist/types/state/middleware/read-write/builder-api/middleware.d.ts +5 -0
  455. package/dist/types/state/middleware/read-write/builder-api/middleware.d.ts.map +1 -0
  456. package/dist/types/state/middleware/read-write/builder-api/mount-change-action-buffer.d.ts +28 -0
  457. package/dist/types/state/middleware/read-write/builder-api/mount-change-action-buffer.d.ts.map +1 -0
  458. package/dist/types/state/middleware/read-write/prop-controller-handles.d.ts.map +1 -1
  459. package/dist/types/state/modules/element-trees.d.ts +1 -1
  460. package/dist/types/state/modules/element-trees.d.ts.map +1 -1
  461. package/dist/types/state/modules/{prop-controllers.d.ts → prop-controller-descriptors.d.ts} +1 -1
  462. package/dist/types/state/modules/prop-controller-descriptors.d.ts.map +1 -0
  463. package/dist/types/state/modules/{prop-controller-handles.d.ts → read-write/prop-controllers.d.ts} +4 -4
  464. package/dist/types/state/modules/{prop-controller-handles.d.ts.map → read-write/prop-controllers.d.ts.map} +1 -1
  465. package/dist/types/state/modules/read-write/resolved-value-overrides.d.ts +15 -0
  466. package/dist/types/state/modules/read-write/resolved-value-overrides.d.ts.map +1 -0
  467. package/dist/types/state/read-only-state.d.ts +6 -70
  468. package/dist/types/state/read-only-state.d.ts.map +1 -1
  469. package/dist/types/state/read-write-state.d.ts +74 -4
  470. package/dist/types/state/read-write-state.d.ts.map +1 -1
  471. package/dist/types/state/shared-api/action-types.d.ts +6 -0
  472. package/dist/types/state/shared-api/action-types.d.ts.map +1 -0
  473. package/dist/types/state/{shared-api.d.ts → shared-api/actions.d.ts} +3 -7
  474. package/dist/types/state/shared-api/actions.d.ts.map +1 -0
  475. package/dist/types/state/shared-api/index.d.ts +3 -0
  476. package/dist/types/state/shared-api/index.d.ts.map +1 -0
  477. package/dist/types/state/store.d.ts +4 -8
  478. package/dist/types/state/store.d.ts.map +1 -1
  479. package/dist/types/state/translations/get.d.ts +1 -1
  480. package/dist/types/state/translations/get.d.ts.map +1 -1
  481. package/dist/types/state/translations/merge.d.ts +1 -1
  482. package/dist/types/state/translations/merge.d.ts.map +1 -1
  483. package/dist/types/state/unified-state.d.ts +2 -0
  484. package/dist/types/state/unified-state.d.ts.map +1 -1
  485. package/dist/types/testing/breakpoints.d.ts +4 -0
  486. package/dist/types/testing/breakpoints.d.ts.map +1 -0
  487. package/dist/types/testing/element-data.d.ts +59 -0
  488. package/dist/types/testing/element-data.d.ts.map +1 -0
  489. package/dist/types/testing/read-write-state.d.ts +3 -0
  490. package/dist/types/testing/read-write-state.d.ts.map +1 -0
  491. package/dist/types/translations/index.d.ts +1 -1
  492. package/dist/types/translations/index.d.ts.map +1 -1
  493. package/package.json +7 -5
  494. package/dist/cjs/runtimes/react/controls/slot.js.map +0 -1
  495. package/dist/cjs/state/host-api.js.map +0 -1
  496. package/dist/cjs/state/modules/prop-controller-handles.js.map +0 -1
  497. package/dist/cjs/state/modules/prop-controllers.js.map +0 -1
  498. package/dist/cjs/state/shared-api.js.map +0 -1
  499. package/dist/esm/runtimes/react/controls/slot.js.map +0 -1
  500. package/dist/esm/state/host-api.js.map +0 -1
  501. package/dist/esm/state/modules/prop-controller-handles.js.map +0 -1
  502. package/dist/esm/state/modules/prop-controllers.js.map +0 -1
  503. package/dist/esm/state/shared-api.js.map +0 -1
  504. package/dist/types/runtimes/react/controls/slot.d.ts.map +0 -1
  505. package/dist/types/state/__tests__/fixtures/operations.d.ts.map +0 -1
  506. package/dist/types/state/__tests__/fixtures/root-elements.d.ts.map +0 -1
  507. package/dist/types/state/__tests__/react-builder-preview.test.d.ts +0 -2
  508. package/dist/types/state/__tests__/react-builder-preview.test.d.ts.map +0 -1
  509. package/dist/types/state/host-api.d.ts.map +0 -1
  510. package/dist/types/state/modules/prop-controllers.d.ts.map +0 -1
  511. package/dist/types/state/shared-api.d.ts.map +0 -1
  512. /package/dist/types/state/{__tests__ → middleware/read-write/__tests__}/fixtures/operations.d.ts +0 -0
  513. /package/dist/types/state/{__tests__ → middleware/read-write/__tests__}/fixtures/root-elements.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/controls/slot.ts"],"sourcesContent":["import { ReactNode } from 'react'\nimport {\n SlotDefinition as BaseSlotDefinition,\n SlotControl,\n StableValue,\n type DeserializedRecord,\n type ResourceResolver,\n type Stylesheet,\n type Resolvable,\n type DataType,\n} from '@makeswift/controls'\n\nimport { renderSlot } from '../runtimes/react/controls/slot'\n\nexport type SlotPlaceholderConfig = {\n builderOnly?: boolean\n height?: number\n text?: string\n}\n\n// TODO: We need to make a decision on how we want to allow users to configure\n// the Slot placeholder. Some considerations (not exhaustive):\n// - Inline vs block slot placeholders\n// - Slots that shouldn't occupy space when they are empty\n// - Slots that are only shown when you engage drop & drop in the builder\n// - Which of these behaviors should be configurable vs. hardcoded\n// - Addressing the builtin box\n//\n// For now, this initial config allows us to experiment with some initial\n// customization. This is subject to change.\nexport type SlotConfig = {\n unstable_placeholder?: SlotPlaceholderConfig\n}\n\nabstract class BaseDefinition extends BaseSlotDefinition<ReactNode, SlotConfig> {}\n\nexport class SlotDefinition extends BaseDefinition {\n static deserialize(data: DeserializedRecord): SlotDefinition {\n if (data.type !== SlotDefinition.type) {\n throw new Error(`Slot: expected type ${SlotDefinition.type}, got ${data.type}`)\n }\n\n return Slot(data.config ?? {})\n }\n\n constructor(config: SlotConfig = {}) {\n super(config)\n }\n\n resolveValue(\n data: DataType<BaseDefinition> | undefined,\n _resolver: ResourceResolver,\n _stylesheet: Stylesheet,\n control?: SlotControl,\n ): Resolvable<ReactNode | undefined> {\n const stableValue = StableValue({\n name: SlotDefinition.type,\n read: () => renderSlot({ data, control: control ?? null, config: this.config }),\n })\n\n return {\n ...stableValue,\n triggerResolve: async () => {},\n }\n }\n}\n\nexport function Slot(config: SlotConfig = {}): SlotDefinition {\n return new SlotDefinition(config)\n}\n\nexport { SlotControl }\n"],"mappings":"AACA;AAAA,EACE,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,OAMK;AAEP,SAAS,kBAAkB;AAsB3B,MAAe,uBAAuB,mBAA0C;AAAC;AAE1E,MAAM,uBAAuB,eAAe;AAAA,EACjD,OAAO,YAAY,MAA0C;AAC3D,QAAI,KAAK,SAAS,eAAe,MAAM;AACrC,YAAM,IAAI,MAAM,uBAAuB,eAAe,IAAI,SAAS,KAAK,IAAI,EAAE;AAAA,IAChF;AAEA,WAAO,KAAK,KAAK,UAAU,CAAC,CAAC;AAAA,EAC/B;AAAA,EAEA,YAAY,SAAqB,CAAC,GAAG;AACnC,UAAM,MAAM;AAAA,EACd;AAAA,EAEA,aACE,MACA,WACA,aACA,SACmC;AACnC,UAAM,cAAc,YAAY;AAAA,MAC9B,MAAM,eAAe;AAAA,MACrB,MAAM,MAAM,WAAW,EAAE,MAAM,SAAS,WAAW,MAAM,QAAQ,KAAK,OAAO,CAAC;AAAA,IAChF,CAAC;AAED,WAAO;AAAA,MACL,GAAG;AAAA,MACH,gBAAgB,YAAY;AAAA,MAAC;AAAA,IAC/B;AAAA,EACF;AACF;AAEO,SAAS,KAAK,SAAqB,CAAC,GAAmB;AAC5D,SAAO,IAAI,eAAe,MAAM;AAClC;","names":[]}
1
+ {"version":3,"sources":["../../../src/controls/slot.ts"],"sourcesContent":["import { type ReactNode } from 'react'\nimport {\n SlotDefinition as BaseSlotDefinition,\n SlotControl,\n StableValue,\n type DeserializedRecord,\n type ResourceResolver,\n type Stylesheet,\n type Resolvable,\n type DataType,\n} from '@makeswift/controls'\n\nimport { renderSlot } from '../runtimes/react/controls/slot'\n\nexport type SlotPlaceholderConfig = {\n builderOnly?: boolean\n height?: number\n text?: string\n}\n\n// TODO: We need to make a decision on how we want to allow users to configure\n// the Slot placeholder. Some considerations (not exhaustive):\n// - Inline vs block slot placeholders\n// - Slots that shouldn't occupy space when they are empty\n// - Slots that are only shown when you engage drop & drop in the builder\n// - Which of these behaviors should be configurable vs. hardcoded\n// - Addressing the builtin box\n//\n// For now, this initial config allows us to experiment with some initial\n// customization. This is subject to change.\nexport type SlotConfig = {\n unstable_placeholder?: SlotPlaceholderConfig\n}\n\nabstract class BaseDefinition extends BaseSlotDefinition<ReactNode, SlotConfig> {}\n\nexport class SlotDefinition extends BaseDefinition {\n static deserialize(data: DeserializedRecord): SlotDefinition {\n if (data.type !== SlotDefinition.type) {\n throw new Error(`Slot: expected type ${SlotDefinition.type}, got ${data.type}`)\n }\n\n return Slot(data.config ?? {})\n }\n\n constructor(config: SlotConfig = {}) {\n super(config)\n }\n\n resolveValue(\n data: DataType<BaseDefinition> | undefined,\n _resolver: ResourceResolver,\n _stylesheet: Stylesheet,\n control?: SlotControl,\n ): Resolvable<ReactNode | undefined> {\n const stableValue = StableValue({\n name: SlotDefinition.type,\n read: () => renderSlot({ data, control: control ?? null, config: this.config }),\n })\n\n return {\n ...stableValue,\n triggerResolve: async () => {},\n }\n }\n}\n\nexport function Slot(config: SlotConfig = {}): SlotDefinition {\n return new SlotDefinition(config)\n}\n\nexport { SlotControl }\n"],"mappings":"AACA;AAAA,EACE,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,OAMK;AAEP,SAAS,kBAAkB;AAsB3B,MAAe,uBAAuB,mBAA0C;AAAC;AAE1E,MAAM,uBAAuB,eAAe;AAAA,EACjD,OAAO,YAAY,MAA0C;AAC3D,QAAI,KAAK,SAAS,eAAe,MAAM;AACrC,YAAM,IAAI,MAAM,uBAAuB,eAAe,IAAI,SAAS,KAAK,IAAI,EAAE;AAAA,IAChF;AAEA,WAAO,KAAK,KAAK,UAAU,CAAC,CAAC;AAAA,EAC/B;AAAA,EAEA,YAAY,SAAqB,CAAC,GAAG;AACnC,UAAM,MAAM;AAAA,EACd;AAAA,EAEA,aACE,MACA,WACA,aACA,SACmC;AACnC,UAAM,cAAc,YAAY;AAAA,MAC9B,MAAM,eAAe;AAAA,MACrB,MAAM,MAAM,WAAW,EAAE,MAAM,SAAS,WAAW,MAAM,QAAQ,KAAK,OAAO,CAAC;AAAA,IAChF,CAAC;AAED,WAAO;AAAA,MACL,GAAG;AAAA,MACH,gBAAgB,YAAY;AAAA,MAAC;AAAA,IAC/B;AAAA,EACF;AACF;AAEO,SAAS,KAAK,SAAqB,CAAC,GAAmB;AAC5D,SAAO,IAAI,eAAe,MAAM;AAClC;","names":[]}
@@ -1,9 +1,2 @@
1
- const DESKTOP_MEDIA_QUERY = "only screen and (min-width: 769px)";
2
- const TABLET_MEDIA_QUERY = "only screen and (min-width: 769px)";
3
- const MOBILE_MEDIA_QUERY = "only screen and (min-width: 769px)";
4
- export {
5
- DESKTOP_MEDIA_QUERY,
6
- MOBILE_MEDIA_QUERY,
7
- TABLET_MEDIA_QUERY
8
- };
1
+ export * from "../../testing/breakpoints";
9
2
  //# sourceMappingURL=breakpoints.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/testing/breakpoints.ts"],"sourcesContent":["export const DESKTOP_MEDIA_QUERY = 'only screen and (min-width: 769px)'\nexport const TABLET_MEDIA_QUERY = 'only screen and (min-width: 769px)'\nexport const MOBILE_MEDIA_QUERY = 'only screen and (min-width: 769px)'\n"],"mappings":"AAAO,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,qBAAqB;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/testing/breakpoints.ts"],"sourcesContent":["export * from '../../testing/breakpoints'\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -1,76 +1,2 @@
1
- import { randomUUID } from "crypto";
2
- import { CacheData } from "../../api/api-resources-client";
3
- import { MakeswiftComponentType } from "../../components/builtin/constants";
4
- function createRootComponent(elements, rootId) {
5
- return {
6
- key: rootId ?? randomUUID(),
7
- type: MakeswiftComponentType.Root,
8
- props: {
9
- children: {
10
- columns: [
11
- {
12
- deviceId: "desktop",
13
- value: {
14
- count: 12,
15
- spans: elements?.map(() => [12])
16
- }
17
- }
18
- ],
19
- elements
20
- }
21
- }
22
- };
23
- }
24
- const isDocument = (elementDataOrDocument) => "snippets" in elementDataOrDocument || "fonts" in elementDataOrDocument || "meta" in elementDataOrDocument || "seo" in elementDataOrDocument;
25
- function createMakeswiftPageSnapshot(elementDataOrDocument, {
26
- cacheData = {},
27
- locale = null
28
- } = {}) {
29
- return {
30
- document: isDocument(elementDataOrDocument) ? elementDataOrDocument : {
31
- id: "test-page-id",
32
- site: { id: "test-site-id" },
33
- data: elementDataOrDocument,
34
- snippets: [],
35
- fonts: [],
36
- meta: {},
37
- seo: {},
38
- localizedPages: [],
39
- locale
40
- },
41
- cacheData: {
42
- ...CacheData.empty(),
43
- ...cacheData
44
- }
45
- };
46
- }
47
- function createMakeswiftComponentSnapshot(elementData, {
48
- cacheData = {},
49
- locale = null
50
- } = {}) {
51
- return {
52
- key: randomUUID(),
53
- document: {
54
- id: "test-component-id",
55
- name: "Test Component Document",
56
- siteId: "test-site-id",
57
- data: elementData,
58
- inheritsFromParent: false,
59
- locale
60
- },
61
- meta: {
62
- allowLocaleFallback: false,
63
- requestedLocale: locale
64
- },
65
- cacheData: {
66
- ...CacheData.empty(),
67
- ...cacheData
68
- }
69
- };
70
- }
71
- export {
72
- createMakeswiftComponentSnapshot,
73
- createMakeswiftPageSnapshot,
74
- createRootComponent
75
- };
1
+ export * from "../../testing/element-data";
76
2
  //# sourceMappingURL=element-data.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/testing/element-data.ts"],"sourcesContent":["import { randomUUID } from 'crypto'\n\nimport {\n type MakeswiftPageSnapshot,\n type MakeswiftPageDocument,\n type MakeswiftComponentSnapshot,\n} from '../../client'\nimport { CacheData } from '../../api/api-resources-client'\nimport { type ElementData } from '../../state/read-only-state'\nimport { MakeswiftComponentType } from '../../components/builtin/constants'\n\nexport function createRootComponent(elements: ElementData[], rootId?: string) {\n return {\n key: rootId ?? randomUUID(),\n type: MakeswiftComponentType.Root,\n props: {\n children: {\n columns: [\n {\n deviceId: 'desktop',\n value: {\n count: 12,\n spans: elements?.map(() => [12]),\n },\n },\n ],\n elements,\n },\n },\n }\n}\n\nconst isDocument = (\n elementDataOrDocument: ElementData | MakeswiftPageDocument,\n): elementDataOrDocument is MakeswiftPageDocument =>\n 'snippets' in elementDataOrDocument ||\n 'fonts' in elementDataOrDocument ||\n 'meta' in elementDataOrDocument ||\n 'seo' in elementDataOrDocument\n\nexport function createMakeswiftPageSnapshot(\n elementDataOrDocument: ElementData | MakeswiftPageDocument,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftPageSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftPageSnapshot {\n return {\n document: isDocument(elementDataOrDocument)\n ? elementDataOrDocument\n : {\n id: 'test-page-id',\n site: { id: 'test-site-id' },\n data: elementDataOrDocument,\n snippets: [],\n fonts: [],\n meta: {},\n seo: {},\n localizedPages: [],\n locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n\nexport function createMakeswiftComponentSnapshot(\n elementData: ElementData | null,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftComponentSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftComponentSnapshot {\n return {\n key: randomUUID(),\n document: {\n id: 'test-component-id',\n name: 'Test Component Document',\n siteId: 'test-site-id',\n data: elementData,\n inheritsFromParent: false,\n locale,\n },\n meta: {\n allowLocaleFallback: false,\n requestedLocale: locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAO3B,SAAS,iBAAiB;AAE1B,SAAS,8BAA8B;AAEhC,SAAS,oBAAoB,UAAyB,QAAiB;AAC5E,SAAO;AAAA,IACL,KAAK,UAAU,WAAW;AAAA,IAC1B,MAAM,uBAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAAS;AAAA,UACP;AAAA,YACE,UAAU;AAAA,YACV,OAAO;AAAA,cACL,OAAO;AAAA,cACP,OAAO,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,MAAM,aAAa,CACjB,0BAEA,cAAc,yBACd,WAAW,yBACX,UAAU,yBACV,SAAS;AAEJ,SAAS,4BACd,uBACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAAyF,CAAC,GACnE;AACvB,SAAO;AAAA,IACL,UAAU,WAAW,qBAAqB,IACtC,wBACA;AAAA,MACE,IAAI;AAAA,MACJ,MAAM,EAAE,IAAI,eAAe;AAAA,MAC3B,MAAM;AAAA,MACN,UAAU,CAAC;AAAA,MACX,OAAO,CAAC;AAAA,MACR,MAAM,CAAC;AAAA,MACP,KAAK,CAAC;AAAA,MACN,gBAAgB,CAAC;AAAA,MACjB;AAAA,IACF;AAAA,IACJ,WAAW;AAAA,MACT,GAAG,UAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,iCACd,aACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAA8F,CAAC,GACnE;AAC5B,SAAO;AAAA,IACL,KAAK,WAAW;AAAA,IAChB,UAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,oBAAoB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,IACnB;AAAA,IACA,WAAW;AAAA,MACT,GAAG,UAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/testing/element-data.ts"],"sourcesContent":["export * from '../../testing/element-data'\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/testing/react-runtime.tsx"],"sourcesContent":["export { createReactRuntime } from '../../runtimes/react/testing/react-runtime'\n"],"mappings":"AAAA,SAAS,0BAA0B;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/testing/react-runtime.ts"],"sourcesContent":["export { createReactRuntime } from '../../runtimes/react/testing/react-runtime'\n"],"mappings":"AAAA,SAAS,0BAA0B;","names":[]}
@@ -11,9 +11,22 @@ const TableFormFieldsMessageType = {
11
11
  class TableFormFieldsPropController extends ControlInstance {
12
12
  recv = () => {
13
13
  };
14
+ subscribe(_listener) {
15
+ return () => {
16
+ };
17
+ }
18
+ isCompositeProp() {
19
+ return false;
20
+ }
21
+ children() {
22
+ return [];
23
+ }
14
24
  child(_key) {
15
25
  return void 0;
16
26
  }
27
+ resolvesToRenderableNode() {
28
+ return false;
29
+ }
17
30
  tableFormLayoutChange(payload) {
18
31
  this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_LAYOUT_CHANGE, payload });
19
32
  }
@@ -21,15 +34,18 @@ class TableFormFieldsPropController extends ControlInstance {
21
34
  this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_FIELD_LAYOUT_CHANGE, payload });
22
35
  }
23
36
  }
24
- function createPropController(descriptor, send) {
37
+ function createPropController({
38
+ descriptor,
39
+ ...args
40
+ }) {
25
41
  if (!isLegacyDescriptor(descriptor)) {
26
- return descriptor.createInstance(send);
42
+ return descriptor.createInstance(args);
27
43
  }
28
44
  switch (descriptor.type) {
29
45
  case PropControllerTypes.TableFormFields:
30
- return new TableFormFieldsPropController(send);
46
+ return new TableFormFieldsPropController(args);
31
47
  default:
32
- return new DefaultControlInstance(send);
48
+ return new DefaultControlInstance(args);
33
49
  }
34
50
  }
35
51
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prop-controllers/instances.ts"],"sourcesContent":["import { type Descriptor, isLegacyDescriptor } from './descriptors'\nimport { Types as PropControllerTypes } from '@makeswift/prop-controllers'\n\nimport {\n type BoxDisplayModel,\n type ControlMessage,\n type SendMessage,\n type InstanceType,\n ControlInstance,\n DefaultControlInstance,\n} from '@makeswift/controls'\n\nexport type PropControllerMessage = ControlMessage\n\nexport const TableFormFieldsMessageType = {\n TABLE_FORM_LAYOUT_CHANGE: 'TABLE_FORM_LAYOUT_CHANGE',\n TABLE_FORM_FIELD_LAYOUT_CHANGE: 'TABLE_FORM_FIELD_LAYOUT_CHANGE',\n} as const\n\ntype TableLayoutTableFormFieldsMessage = {\n type: typeof TableFormFieldsMessageType.TABLE_FORM_LAYOUT_CHANGE\n payload: { layout: BoxDisplayModel }\n}\n\ntype TableFieldLayoutTableFormFieldsMessage = {\n type: typeof TableFormFieldsMessageType.TABLE_FORM_FIELD_LAYOUT_CHANGE\n payload: { layout: BoxDisplayModel; index: number }\n}\n\nexport type TableFormFieldsMessage =\n | TableLayoutTableFormFieldsMessage\n | TableFieldLayoutTableFormFieldsMessage\n\nexport class TableFormFieldsPropController extends ControlInstance<TableFormFieldsMessage> {\n recv = () => {}\n child(_key: string): ControlInstance | undefined {\n return undefined\n }\n\n tableFormLayoutChange(payload: { layout: BoxDisplayModel }) {\n this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_LAYOUT_CHANGE, payload })\n }\n\n tableFormFieldLayoutChange(payload: { layout: BoxDisplayModel; index: number }) {\n this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_FIELD_LAYOUT_CHANGE, payload })\n }\n}\n\ntype DescriptorPropController<T extends Descriptor> = T extends {\n type: typeof PropControllerTypes.TableFormFields\n}\n ? TableFormFieldsPropController\n : InstanceType<T>\n\nexport type DescriptorsPropControllers<T extends Record<string, Descriptor>> = {\n [K in keyof T]: undefined extends T[K]\n ? DescriptorPropController<Exclude<T[K], undefined>>\n : DescriptorPropController<T[K]>\n}\n\nexport type AnyPropController = ControlInstance<any> | TableFormFieldsPropController\n\nexport function createPropController(\n descriptor: Descriptor,\n send: SendMessage<PropControllerMessage>,\n): AnyPropController {\n if (!isLegacyDescriptor(descriptor)) {\n return descriptor.createInstance(send)\n }\n\n switch (descriptor.type) {\n case PropControllerTypes.TableFormFields:\n return new TableFormFieldsPropController(send as SendMessage<TableFormFieldsMessage>)\n\n default:\n return new DefaultControlInstance(send as SendMessage)\n }\n}\n"],"mappings":"AAAA,SAA0B,0BAA0B;AACpD,SAAS,SAAS,2BAA2B;AAE7C;AAAA,EAKE;AAAA,EACA;AAAA,OACK;AAIA,MAAM,6BAA6B;AAAA,EACxC,0BAA0B;AAAA,EAC1B,gCAAgC;AAClC;AAgBO,MAAM,sCAAsC,gBAAwC;AAAA,EACzF,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,MAAM,MAA2C;AAC/C,WAAO;AAAA,EACT;AAAA,EAEA,sBAAsB,SAAsC;AAC1D,SAAK,YAAY,EAAE,MAAM,2BAA2B,0BAA0B,QAAQ,CAAC;AAAA,EACzF;AAAA,EAEA,2BAA2B,SAAqD;AAC9E,SAAK,YAAY,EAAE,MAAM,2BAA2B,gCAAgC,QAAQ,CAAC;AAAA,EAC/F;AACF;AAgBO,SAAS,qBACd,YACA,MACmB;AACnB,MAAI,CAAC,mBAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,eAAe,IAAI;AAAA,EACvC;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,oBAAoB;AACvB,aAAO,IAAI,8BAA8B,IAA2C;AAAA,IAEtF;AACE,aAAO,IAAI,uBAAuB,IAAmB;AAAA,EACzD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/prop-controllers/instances.ts"],"sourcesContent":["import { type Descriptor, isLegacyDescriptor } from './descriptors'\nimport { Types as PropControllerTypes } from '@makeswift/prop-controllers'\n\nimport {\n type BoxDisplayModel,\n type ControlInstanceArgs,\n type ControlMessage,\n type InstanceType,\n type AnyControlInstance,\n ControlInstance,\n DefaultControlInstance,\n} from '@makeswift/controls'\n\nexport type PropControllerMessage = ControlMessage\n\nexport const TableFormFieldsMessageType = {\n TABLE_FORM_LAYOUT_CHANGE: 'TABLE_FORM_LAYOUT_CHANGE',\n TABLE_FORM_FIELD_LAYOUT_CHANGE: 'TABLE_FORM_FIELD_LAYOUT_CHANGE',\n} as const\n\ntype TableLayoutTableFormFieldsMessage = {\n type: typeof TableFormFieldsMessageType.TABLE_FORM_LAYOUT_CHANGE\n payload: { layout: BoxDisplayModel }\n}\n\ntype TableFieldLayoutTableFormFieldsMessage = {\n type: typeof TableFormFieldsMessageType.TABLE_FORM_FIELD_LAYOUT_CHANGE\n payload: { layout: BoxDisplayModel; index: number }\n}\n\nexport type TableFormFieldsMessage =\n | TableLayoutTableFormFieldsMessage\n | TableFieldLayoutTableFormFieldsMessage\n\nexport class TableFormFieldsPropController extends ControlInstance<TableFormFieldsMessage> {\n recv = () => {}\n\n subscribe(_listener: () => void): () => void {\n // No mutable state, nothing to subscribe to\n return () => {}\n }\n\n isCompositeProp(): boolean {\n return false\n }\n\n children(): ControlInstance[] {\n return []\n }\n\n child(_key: string): ControlInstance | undefined {\n return undefined\n }\n\n resolvesToRenderableNode(): boolean {\n return false\n }\n\n tableFormLayoutChange(payload: { layout: BoxDisplayModel }) {\n this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_LAYOUT_CHANGE, payload })\n }\n\n tableFormFieldLayoutChange(payload: { layout: BoxDisplayModel; index: number }) {\n this.sendMessage({ type: TableFormFieldsMessageType.TABLE_FORM_FIELD_LAYOUT_CHANGE, payload })\n }\n}\n\ntype DescriptorPropController<T extends Descriptor> = T extends {\n type: typeof PropControllerTypes.TableFormFields\n}\n ? TableFormFieldsPropController\n : InstanceType<T>\n\nexport type DescriptorsPropControllers<T extends Record<string, Descriptor>> = {\n [K in keyof T]: undefined extends T[K]\n ? DescriptorPropController<Exclude<T[K], undefined>>\n : DescriptorPropController<T[K]>\n}\n\nexport type AnyPropController = AnyControlInstance | TableFormFieldsPropController\n\nexport function createPropController({\n descriptor,\n ...args\n}: {\n descriptor: Descriptor\n} & ControlInstanceArgs): AnyPropController {\n if (!isLegacyDescriptor(descriptor)) {\n return descriptor.createInstance(args)\n }\n\n switch (descriptor.type) {\n case PropControllerTypes.TableFormFields:\n return new TableFormFieldsPropController(args)\n\n default:\n return new DefaultControlInstance(args)\n }\n}\n"],"mappings":"AAAA,SAA0B,0BAA0B;AACpD,SAAS,SAAS,2BAA2B;AAE7C;AAAA,EAME;AAAA,EACA;AAAA,OACK;AAIA,MAAM,6BAA6B;AAAA,EACxC,0BAA0B;AAAA,EAC1B,gCAAgC;AAClC;AAgBO,MAAM,sCAAsC,gBAAwC;AAAA,EACzF,OAAO,MAAM;AAAA,EAAC;AAAA,EAEd,UAAU,WAAmC;AAE3C,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AAAA,EAEA,kBAA2B;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,WAA8B;AAC5B,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,MAA2C;AAC/C,WAAO;AAAA,EACT;AAAA,EAEA,2BAAoC;AAClC,WAAO;AAAA,EACT;AAAA,EAEA,sBAAsB,SAAsC;AAC1D,SAAK,YAAY,EAAE,MAAM,2BAA2B,0BAA0B,QAAQ,CAAC;AAAA,EACzF;AAAA,EAEA,2BAA2B,SAAqD;AAC9E,SAAK,YAAY,EAAE,MAAM,2BAA2B,gCAAgC,QAAQ,CAAC;AAAA,EAC/F;AACF;AAgBO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA,GAAG;AACL,GAE4C;AAC1C,MAAI,CAAC,mBAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,eAAe,IAAI;AAAA,EACvC;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,oBAAoB;AACvB,aAAO,IAAI,8BAA8B,IAAI;AAAA,IAE/C;AACE,aAAO,IAAI,uBAAuB,IAAI;AAAA,EAC1C;AACF;","names":[]}
@@ -1,40 +1,66 @@
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
- const useFindDomNodeRef = useRef(true);
17
- const imperativeHandleRef = useRef(new ElementImperativeHandle());
18
- const findDomNodeCallbackRef = useCallback((current) => {
19
- if (useFindDomNodeRef.current === true) {
20
- imperativeHandleRef.current.callback(() => current?.() ?? null);
21
- }
22
- }, []);
23
- const elementCallbackRef = useCallback((current) => {
24
- useFindDomNodeRef.current = false;
25
- imperativeHandleRef.current.callback(() => current);
26
- }, []);
27
- 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,
25
+ const { imperativeHandleRef, findDomNodeCallbackRef, elementCallbackRef } = useElementImperativeHandle(ref);
26
+ const isRegisterElementDisabled = useIsRegisterElementDisabled();
27
+ const ElementRegistration = useIsReadOnly() || isRegisterElementDisabled ? NoOp : BuilderElementRegistration;
28
+ return /* @__PURE__ */ jsx(
29
+ ElementRegistration,
30
30
  {
31
- ref: elementCallbackRef,
32
- elementReference: element
33
- },
34
- element.key
35
- ) : /* @__PURE__ */ jsx(ElementData, { ref: elementCallbackRef, elementData: element }, element.key) }) }) });
31
+ componentHandle: imperativeHandleRef.current,
32
+ elementKey: element.key,
33
+ componentType: element.type,
34
+ children: /* @__PURE__ */ jsx(FindDomNode, { ref: findDomNodeCallbackRef, children: /* @__PURE__ */ jsx(ErrorBoundary, { FallbackComponent: ErrorFallback, children: isElementReference(element) ? /* @__PURE__ */ jsx(
35
+ ElementReference,
36
+ {
37
+ ref: elementCallbackRef,
38
+ elementReference: element
39
+ },
40
+ element.key
41
+ ) : /* @__PURE__ */ jsx(ElementData, { ref: elementCallbackRef, elementData: element }, element.key) }) })
42
+ }
43
+ );
36
44
  })
37
45
  );
46
+ function useElementImperativeHandle(ref) {
47
+ const useFindDomNodeRef = useRef(true);
48
+ const imperativeHandleRef = useRef(new ElementImperativeHandle());
49
+ const findDomNodeCallbackRef = useCallback((current) => {
50
+ if (useFindDomNodeRef.current === true) {
51
+ imperativeHandleRef.current.callback(() => current?.() ?? null);
52
+ }
53
+ }, []);
54
+ const elementCallbackRef = useCallback((current) => {
55
+ useFindDomNodeRef.current = false;
56
+ imperativeHandleRef.current.callback(() => current);
57
+ }, []);
58
+ useImperativeHandle(ref, () => imperativeHandleRef.current, []);
59
+ return { imperativeHandleRef, findDomNodeCallbackRef, elementCallbackRef };
60
+ }
61
+ function NoOp({ children }) {
62
+ return children;
63
+ }
38
64
  function ErrorFallback() {
39
65
  return /* @__PURE__ */ jsx(FallbackComponent, { text: `Error rendering component` });
40
66
  }
@@ -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 { imperativeHandleRef, findDomNodeCallbackRef, elementCallbackRef } =\n useElementImperativeHandle(ref)\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\n/**\n * Creates an `ElementImperativeHandle` instance that reports the element's DOM location to\n * the builder.\n *\n * Uses the element's attached ref when available; otherwise, falls back to React's\n * `findDOMNode` to locate the rendered DOM node.\n */\nfunction useElementImperativeHandle(ref: Ref<ElementImperativeHandle>) {\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 { imperativeHandleRef, findDomNodeCallbackRef, elementCallbackRef }\n}\n\nfunction NoOp({ children }: PropsWithChildren) {\n return children\n}\n\nfunction ErrorFallback() {\n return <FallbackComponent text={`Error rendering component`} />\n}\n"],"mappings":";AA0Dc;AAxDd;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,EAAE,qBAAqB,wBAAwB,mBAAmB,IACtE,2BAA2B,GAAG;AAEhC,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;AASA,SAAS,2BAA2B,KAAmC;AACrE,QAAM,oBAAoB,OAAO,IAAI;AACrC,QAAM,sBAAsB,OAAO,IAAI,wBAAwB,CAAC;AAEhE,QAAM,yBAAyB,YAAY,CAAC,YAAkD;AAC5F,QAAI,kBAAkB,YAAY,MAAM;AACtC,0BAAoB,QAAQ,SAAS,MAAM,UAAU,KAAK,IAAI;AAAA,IAChE;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,qBAAqB,YAAY,CAAC,YAA4B;AAClE,sBAAkB,UAAU;AAE5B,wBAAoB,QAAQ,SAAS,MAAM,OAAO;AAAA,EACpD,GAAG,CAAC,CAAC;AAEL,sBAAoB,KAAK,MAAM,oBAAoB,SAAS,CAAC,CAAC;AAE9D,SAAO,EAAE,qBAAqB,wBAAwB,mBAAmB;AAC3E;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,3 +1,4 @@
1
+ "use client";
1
2
  import { Fragment, jsx } from "react/jsx-runtime";
2
3
  import {
3
4
  forwardRef,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/components/framework-context.tsx"],"sourcesContent":["import {\n type ReactNode,\n type PropsWithChildren,\n type CSSProperties,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ForwardRefExoticComponent,\n type RefAttributes,\n forwardRef,\n createContext,\n useContext,\n useMemo,\n} from 'react'\n\nimport { type LinkData } from '@makeswift/prop-controllers'\n\nimport { type Snippet } from '../../../client'\n\nimport { BaseHeadSnippet } from './page/HeadSnippet'\n\ntype HeadComponent = (props: { children: ReactNode }) => ReactNode\ntype HeadSnippet = (props: { snippet: Snippet }) => ReactNode\ntype ImageComponent = (props: {\n src: string\n alt: string\n sizes?: string\n width?: number\n height?: number\n priority?: boolean\n fill?: boolean\n style?: CSSProperties\n}) => ReactNode\n\ntype LinkProps = Omit<ComponentPropsWithoutRef<'a'>, 'onClick'> & {\n linkType?: LinkData['type']\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => unknown\n}\n\ntype LinkComponent = ForwardRefExoticComponent<RefAttributes<HTMLAnchorElement> & LinkProps>\n\nexport type FrameworkContext = {\n Head: HeadComponent\n HeadSnippet: HeadSnippet\n Image: ImageComponent\n Link: LinkComponent\n}\n\n// React 19 automatically hoists metadata tags to the <head>\nconst DefaultHead = ({ children }: PropsWithChildren) => <>{children}</>\n\nconst DefaultHeadSnippet = BaseHeadSnippet\n\nconst DefaultImage: ImageComponent = ({ priority, fill, style, ...props }) => (\n <img\n {...props}\n style={{\n ...(fill\n ? {\n height: '100%',\n width: '100%',\n objectFit: 'cover',\n }\n : {}),\n ...style,\n }}\n loading={priority ? 'eager' : 'lazy'}\n />\n)\n\nconst DefaultLink: LinkComponent = forwardRef<HTMLAnchorElement, LinkProps>(\n ({ linkType, ...props }, ref) => <a {...props} ref={ref} />,\n)\n\nconst FrameworkContext = createContext<Partial<FrameworkContext>>({})\n\nexport const FrameworkContextProvider = ({\n value,\n children,\n}: PropsWithChildren<{ value: Partial<FrameworkContext> }>) => {\n const parentContext = useContext(FrameworkContext)\n const mergedContext = useMemo(() => ({ ...parentContext, ...value }), [parentContext, value])\n\n return <FrameworkContext.Provider value={mergedContext}>{children}</FrameworkContext.Provider>\n}\n\nconst defaultContext: FrameworkContext = {\n Head: DefaultHead,\n HeadSnippet: DefaultHeadSnippet,\n Image: DefaultImage,\n Link: DefaultLink,\n}\n\nexport function useFrameworkContext(): FrameworkContext {\n return { ...defaultContext, ...useContext(FrameworkContext) }\n}\n"],"mappings":"AAgDyD;AAhDzD;AAAA,EAQE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP,SAAS,uBAAuB;AA8BhC,MAAM,cAAc,CAAC,EAAE,SAAS,MAAyB,gCAAG,UAAS;AAErE,MAAM,qBAAqB;AAE3B,MAAM,eAA+B,CAAC,EAAE,UAAU,MAAM,OAAO,GAAG,MAAM,MACtE;AAAA,EAAC;AAAA;AAAA,IACE,GAAG;AAAA,IACJ,OAAO;AAAA,MACL,GAAI,OACA;AAAA,QACE,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,WAAW;AAAA,MACb,IACA,CAAC;AAAA,MACL,GAAG;AAAA,IACL;AAAA,IACA,SAAS,WAAW,UAAU;AAAA;AAChC;AAGF,MAAM,cAA6B;AAAA,EACjC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,oBAAC,OAAG,GAAG,OAAO,KAAU;AAC3D;AAEA,MAAM,mBAAmB,cAAyC,CAAC,CAAC;AAE7D,MAAM,2BAA2B,CAAC;AAAA,EACvC;AAAA,EACA;AACF,MAA+D;AAC7D,QAAM,gBAAgB,WAAW,gBAAgB;AACjD,QAAM,gBAAgB,QAAQ,OAAO,EAAE,GAAG,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,KAAK,CAAC;AAE5F,SAAO,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,eAAgB,UAAS;AACpE;AAEA,MAAM,iBAAmC;AAAA,EACvC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,OAAO;AAAA,EACP,MAAM;AACR;AAEO,SAAS,sBAAwC;AACtD,SAAO,EAAE,GAAG,gBAAgB,GAAG,WAAW,gBAAgB,EAAE;AAC9D;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/framework-context.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ReactNode,\n type PropsWithChildren,\n type CSSProperties,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ForwardRefExoticComponent,\n type RefAttributes,\n forwardRef,\n createContext,\n useContext,\n useMemo,\n} from 'react'\n\nimport { type LinkData } from '@makeswift/prop-controllers'\n\nimport { type Snippet } from '../../../client'\n\nimport { BaseHeadSnippet } from './page/HeadSnippet'\n\ntype HeadComponent = (props: { children: ReactNode }) => ReactNode\ntype HeadSnippet = (props: { snippet: Snippet }) => ReactNode\ntype ImageComponent = (props: {\n src: string\n alt: string\n sizes?: string\n width?: number\n height?: number\n priority?: boolean\n fill?: boolean\n style?: CSSProperties\n}) => ReactNode\n\ntype LinkProps = Omit<ComponentPropsWithoutRef<'a'>, 'onClick'> & {\n linkType?: LinkData['type']\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => unknown\n}\n\ntype LinkComponent = ForwardRefExoticComponent<RefAttributes<HTMLAnchorElement> & LinkProps>\n\nexport type FrameworkContext = {\n Head: HeadComponent\n HeadSnippet: HeadSnippet\n Image: ImageComponent\n Link: LinkComponent\n}\n\n// React 19 automatically hoists metadata tags to the <head>\nconst DefaultHead = ({ children }: PropsWithChildren) => <>{children}</>\n\nconst DefaultHeadSnippet = BaseHeadSnippet\n\nconst DefaultImage: ImageComponent = ({ priority, fill, style, ...props }) => (\n <img\n {...props}\n style={{\n ...(fill\n ? {\n height: '100%',\n width: '100%',\n objectFit: 'cover',\n }\n : {}),\n ...style,\n }}\n loading={priority ? 'eager' : 'lazy'}\n />\n)\n\nconst DefaultLink: LinkComponent = forwardRef<HTMLAnchorElement, LinkProps>(\n ({ linkType, ...props }, ref) => <a {...props} ref={ref} />,\n)\n\nconst FrameworkContext = createContext<Partial<FrameworkContext>>({})\n\nexport const FrameworkContextProvider = ({\n value,\n children,\n}: PropsWithChildren<{ value: Partial<FrameworkContext> }>) => {\n const parentContext = useContext(FrameworkContext)\n const mergedContext = useMemo(() => ({ ...parentContext, ...value }), [parentContext, value])\n\n return <FrameworkContext.Provider value={mergedContext}>{children}</FrameworkContext.Provider>\n}\n\nconst defaultContext: FrameworkContext = {\n Head: DefaultHead,\n HeadSnippet: DefaultHeadSnippet,\n Image: DefaultImage,\n Link: DefaultLink,\n}\n\nexport function useFrameworkContext(): FrameworkContext {\n return { ...defaultContext, ...useContext(FrameworkContext) }\n}\n"],"mappings":";AAkDyD;AAhDzD;AAAA,EAQE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP,SAAS,uBAAuB;AA8BhC,MAAM,cAAc,CAAC,EAAE,SAAS,MAAyB,gCAAG,UAAS;AAErE,MAAM,qBAAqB;AAE3B,MAAM,eAA+B,CAAC,EAAE,UAAU,MAAM,OAAO,GAAG,MAAM,MACtE;AAAA,EAAC;AAAA;AAAA,IACE,GAAG;AAAA,IACJ,OAAO;AAAA,MACL,GAAI,OACA;AAAA,QACE,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,WAAW;AAAA,MACb,IACA,CAAC;AAAA,MACL,GAAG;AAAA,IACL;AAAA,IACA,SAAS,WAAW,UAAU;AAAA;AAChC;AAGF,MAAM,cAA6B;AAAA,EACjC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,oBAAC,OAAG,GAAG,OAAO,KAAU;AAC3D;AAEA,MAAM,mBAAmB,cAAyC,CAAC,CAAC;AAE7D,MAAM,2BAA2B,CAAC;AAAA,EACvC;AAAA,EACA;AACF,MAA+D;AAC7D,QAAM,gBAAgB,WAAW,gBAAgB;AACjD,QAAM,gBAAgB,QAAQ,OAAO,EAAE,GAAG,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,KAAK,CAAC;AAE5F,SAAO,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,eAAgB,UAAS;AACpE;AAEA,MAAM,iBAAmC;AAAA,EACvC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,OAAO;AAAA,EACP,MAAM;AACR;AAEO,SAAS,sBAAwC;AACtD,SAAO,EAAE,GAAG,gBAAgB,GAAG,WAAW,gBAAgB,EAAE;AAC9D;","names":[]}
@@ -1,5 +1,6 @@
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";
3
4
  import { useStylesheetFactory } from "../hooks/use-stylesheet-factory";
4
5
  import { resolveLegacyDescriptorProp } from "../legacy-controls";
5
6
  function ResolveProps({
@@ -7,11 +8,14 @@ function ResolveProps({
7
8
  children: renderComponent
8
9
  }) {
9
10
  const [legacyDescriptors, definitions] = useControlDefs({ elementType: element.type });
11
+ const elementKey = element.key;
10
12
  const stylesheetFactory = useStylesheetFactory();
13
+ const controlInstances = useControlInstances(elementKey);
11
14
  const resolvedProps = useResolvedProps({
15
+ elementKey,
12
16
  propDefs: definitions,
13
17
  propData: element.props,
14
- elementKey: element.key,
18
+ controlInstances,
15
19
  stylesheetFactory
16
20
  });
17
21
  const renderFn = Object.entries(legacyDescriptors).reduceRight(
@@ -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'\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 stylesheetFactory = useStylesheetFactory()\n const resolvedProps = useResolvedProps({\n propDefs: definitions,\n propData: element.props,\n elementKey: element.key,\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,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,oBAAoB,qBAAqB;AAC/C,QAAM,gBAAgB,iBAAiB;AAAA,IACrC,UAAU;AAAA,IACV,UAAU,QAAQ;AAAA,IAClB,YAAY,QAAQ;AAAA,IACpB;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
+ {"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"]}
@@ -0,0 +1,21 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import {
3
+ useResolvedValueOverride,
4
+ DisableResolvedValueOverride
5
+ } from "../../hooks/use-resolved-value-override";
6
+ const EditableNodeValue = ({
7
+ instanceKey,
8
+ children: value
9
+ }) => {
10
+ const [valueOverride, shouldOverride] = useResolvedValueOverride(instanceKey);
11
+ if (shouldOverride) {
12
+ return /* @__PURE__ */ jsx(DisableResolvedValueOverride.Provider, { value: instanceKey, children: valueOverride });
13
+ }
14
+ return value;
15
+ };
16
+ var editable_node_value_default = EditableNodeValue;
17
+ export {
18
+ EditableNodeValue,
19
+ editable_node_value_default as default
20
+ };
21
+ //# sourceMappingURL=editable-node-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/runtimes/react/controls/node-value/editable-node-value.tsx"],"sourcesContent":["import { type ReactNode, type PropsWithChildren } from 'react'\n\nimport { type ControlInstanceKey } from '@makeswift/controls'\n\nimport {\n useResolvedValueOverride,\n DisableResolvedValueOverride,\n} from '../../hooks/use-resolved-value-override'\n\nexport const EditableNodeValue = ({\n instanceKey,\n children: value,\n}: PropsWithChildren<{ instanceKey: ControlInstanceKey | undefined }>): ReactNode => {\n // To make ReactNode props that have been rendered by an RSC component editable purely\n // client-side, we store the edits in the read-write store as overrides and swap them\n // in when present\n const [valueOverride, shouldOverride] = useResolvedValueOverride(instanceKey)\n if (shouldOverride) {\n // disable the override for this instance while rendering it to prevent infinite recursion\n // (the override for a `Slot` prop is a `SlotValue`, which recursively renders another\n // instance of `EditableNodeValue`, which, if we don’t disable it, will find the override\n // and render it again, ad infinitum)\n return (\n <DisableResolvedValueOverride.Provider value={instanceKey}>\n {valueOverride as ReactNode}\n </DisableResolvedValueOverride.Provider>\n )\n }\n\n return value\n}\n\nexport default EditableNodeValue\n"],"mappings":"AAuBM;AAnBN;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEA,MAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA,UAAU;AACZ,MAAqF;AAInF,QAAM,CAAC,eAAe,cAAc,IAAI,yBAAyB,WAAW;AAC5E,MAAI,gBAAgB;AAKlB,WACE,oBAAC,6BAA6B,UAA7B,EAAsC,OAAO,aAC3C,yBACH;AAAA,EAEJ;AAEA,SAAO;AACT;AAEA,IAAO,8BAAQ;","names":[]}
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { memo, lazy } from "react";
4
+ import { useIsReadOnly } from "../../hooks/use-is-read-only";
5
+ const EditableNodeValue = lazy(() => import("./editable-node-value"));
6
+ const ReadOnlyNodeValue = ({ children }) => children;
7
+ const NodeValue = memo(function NodeValue2({
8
+ instanceKey,
9
+ children
10
+ }) {
11
+ const NodeContainer = useIsReadOnly() ? ReadOnlyNodeValue : EditableNodeValue;
12
+ return /* @__PURE__ */ jsx(NodeContainer, { instanceKey, children });
13
+ });
14
+ export {
15
+ NodeValue
16
+ };
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/runtimes/react/controls/node-value/index.tsx"],"sourcesContent":["'use client'\n\nimport { type ReactNode, type PropsWithChildren, memo, lazy } from 'react'\n\nimport { type ControlInstanceKey } from '@makeswift/controls'\n\nimport { useIsReadOnly } from '../../hooks/use-is-read-only'\n\nconst EditableNodeValue = lazy(() => import('./editable-node-value'))\nconst ReadOnlyNodeValue = ({ children }: PropsWithChildren) => children\n\nexport const NodeValue = memo(function NodeValue({\n instanceKey,\n children,\n}: PropsWithChildren<{ instanceKey: ControlInstanceKey | undefined }>): ReactNode {\n const NodeContainer = useIsReadOnly() ? ReadOnlyNodeValue : EditableNodeValue\n return <NodeContainer instanceKey={instanceKey}>{children}</NodeContainer>\n})\n"],"mappings":";AAgBS;AAdT,SAAiD,MAAM,YAAY;AAInE,SAAS,qBAAqB;AAE9B,MAAM,oBAAoB,KAAK,MAAM,OAAO,uBAAuB,CAAC;AACpE,MAAM,oBAAoB,CAAC,EAAE,SAAS,MAAyB;AAExD,MAAM,YAAY,KAAK,SAASA,WAAU;AAAA,EAC/C;AAAA,EACA;AACF,GAAkF;AAChF,QAAM,gBAAgB,cAAc,IAAI,oBAAoB;AAC5D,SAAO,oBAAC,iBAAc,aAA2B,UAAS;AAC5D,CAAC;","names":["NodeValue"]}
@@ -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"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/runtimes/react/controls/rich-text/EditableText/useSyncDOMSelection.tsx"],"sourcesContent":["import { ReactEditor } from 'slate-react'\nimport { Editor, Range as SlateRange } from 'slate'\nimport { useIsomorphicLayoutEffect } from '../../../../../components/hooks/useIsomorphicLayoutEffect'\n\n/**\n * Clicking outside of the host blurs our `<Editable />`.\n * `<Editable />` only updates the DOM's selection to match slate when it is focused.\n * In the case of a panel being clicked this hook updates the DOM selection to match slate.\n */\nexport function useSyncDOMSelection(editor: Editor, isEnabled: boolean) {\n useIsomorphicLayoutEffect(() => {\n if (!isEnabled || editor.selection == null || ReactEditor.isFocused(editor)) return\n try {\n const root = ReactEditor.findDocumentOrShadowRoot(editor) as Document\n const domSelection = root.getSelection()\n const newDomRange: Range | null = ReactEditor.toDOMRange(editor, editor.selection)\n\n if (newDomRange) {\n if (SlateRange.isBackward(editor.selection!)) {\n domSelection?.setBaseAndExtent(\n newDomRange.endContainer,\n newDomRange.endOffset,\n newDomRange.startContainer,\n newDomRange.startOffset,\n )\n } else {\n domSelection?.setBaseAndExtent(\n newDomRange.startContainer,\n newDomRange.startOffset,\n newDomRange.endContainer,\n newDomRange.endOffset,\n )\n }\n } else {\n domSelection?.removeAllRanges()\n }\n } catch (e) {\n console.error(e)\n }\n })\n}\n"],"mappings":"AAAA,SAAS,mBAAmB;AAC5B,SAAiB,SAAS,kBAAkB;AAC5C,SAAS,iCAAiC;AAOnC,SAAS,oBAAoB,QAAgB,WAAoB;AACtE,4BAA0B,MAAM;AAC9B,QAAI,CAAC,aAAa,OAAO,aAAa,QAAQ,YAAY,UAAU,MAAM;AAAG;AAC7E,QAAI;AACF,YAAM,OAAO,YAAY,yBAAyB,MAAM;AACxD,YAAM,eAAe,KAAK,aAAa;AACvC,YAAM,cAA4B,YAAY,WAAW,QAAQ,OAAO,SAAS;AAEjF,UAAI,aAAa;AACf,YAAI,WAAW,WAAW,OAAO,SAAU,GAAG;AAC5C,wBAAc;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,UACd;AAAA,QACF,OAAO;AACL,wBAAc;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,YAAY;AAAA,UACd;AAAA,QACF;AAAA,MACF,OAAO;AACL,sBAAc,gBAAgB;AAAA,MAChC;AAAA,IACF,SAAS,GAAG;AACV,cAAQ,MAAM,CAAC;AAAA,IACjB;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1 @@
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"));