@makeswift/runtime 0.26.3 → 0.26.4-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. package/dist/cjs/api/{react.js → client.js} +4 -4
  2. package/dist/cjs/api/client.js.map +1 -0
  3. package/dist/cjs/api-handler/handlers/element-tree.js.map +1 -1
  4. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  5. package/dist/cjs/api-handler/handlers/merge-translated-data.js.map +1 -1
  6. package/dist/cjs/api-handler/handlers/translatable-data.js.map +1 -1
  7. package/dist/cjs/builder/host-to-builder-actions.js +3 -3
  8. package/dist/cjs/builder/host-to-builder-actions.js.map +1 -1
  9. package/dist/cjs/builder/index.js +2 -2
  10. package/dist/cjs/builder/index.js.map +1 -1
  11. package/dist/cjs/client/index.js +8 -8
  12. package/dist/cjs/client/index.js.map +1 -1
  13. package/dist/cjs/components/builtin/Box/Box.js +1 -1
  14. package/dist/cjs/components/builtin/Box/Box.js.map +1 -1
  15. package/dist/cjs/components/builtin/Form/Form.js +1 -1
  16. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  17. package/dist/cjs/components/hooks/useTableFormFieldRefs.js +1 -1
  18. package/dist/cjs/components/hooks/useTableFormFieldRefs.js.map +1 -1
  19. package/dist/cjs/next/components/tests/controls/color-control/fixtures.js.map +1 -1
  20. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js +1 -2
  21. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  22. package/dist/cjs/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -1
  23. package/dist/cjs/next/components/tests/makeswift-component/fixtures.js +1 -2
  24. package/dist/cjs/next/components/tests/makeswift-component/fixtures.js.map +1 -1
  25. package/dist/cjs/next/components/tests/prop-controllers/page-prop-controller.js +2 -3
  26. package/dist/cjs/next/components/tests/prop-controllers/page-prop-controller.js.map +1 -1
  27. package/dist/cjs/next/testing/element-data.js +3 -3
  28. package/dist/cjs/next/testing/element-data.js.map +1 -1
  29. package/dist/cjs/next/testing/index.js +2 -0
  30. package/dist/cjs/next/testing/index.js.map +1 -1
  31. package/dist/cjs/next/testing/page-rendering.js +3 -3
  32. package/dist/cjs/next/testing/page-rendering.js.map +1 -1
  33. package/dist/cjs/next/testing/react-runtime.js +29 -0
  34. package/dist/cjs/next/testing/react-runtime.js.map +1 -0
  35. package/dist/cjs/prop-controllers/descriptors.js.map +1 -1
  36. package/dist/cjs/prop-controllers/instances.js.map +1 -1
  37. package/dist/cjs/runtimes/react/components/Document.js +2 -2
  38. package/dist/cjs/runtimes/react/components/Document.js.map +1 -1
  39. package/dist/cjs/runtimes/react/components/DocumentRoot.js.map +1 -1
  40. package/dist/cjs/runtimes/react/components/Element.js +2 -2
  41. package/dist/cjs/runtimes/react/components/Element.js.map +1 -1
  42. package/dist/cjs/runtimes/react/components/ElementData.js.map +1 -1
  43. package/dist/cjs/runtimes/react/components/ElementReference.js.map +1 -1
  44. package/dist/cjs/runtimes/react/components/ElementRegistration.js +2 -2
  45. package/dist/cjs/runtimes/react/components/ElementRegistration.js.map +1 -1
  46. package/dist/cjs/runtimes/react/components/MakeswiftComponent.js +2 -2
  47. package/dist/cjs/runtimes/react/components/MakeswiftComponent.js.map +1 -1
  48. package/dist/cjs/runtimes/react/components/RuntimeProvider.js +3 -3
  49. package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
  50. package/dist/cjs/runtimes/react/components/page/Page.js.map +1 -1
  51. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js +2 -3
  52. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  53. package/dist/cjs/runtimes/react/controls/rich-text-v2/rich-text-v2.js +2 -2
  54. package/dist/cjs/runtimes/react/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  55. package/dist/cjs/runtimes/react/controls.js +2 -2
  56. package/dist/cjs/runtimes/react/controls.js.map +1 -1
  57. package/dist/cjs/runtimes/react/element-imperative-handle.js +1 -1
  58. package/dist/cjs/runtimes/react/element-imperative-handle.js.map +1 -1
  59. package/dist/cjs/runtimes/react/hooks/use-breakpoints.js +2 -2
  60. package/dist/cjs/runtimes/react/hooks/use-breakpoints.js.map +1 -1
  61. package/dist/cjs/runtimes/react/hooks/use-builder-edit-mode.js +2 -2
  62. package/dist/cjs/runtimes/react/hooks/use-builder-edit-mode.js.map +1 -1
  63. package/dist/cjs/runtimes/react/hooks/use-cache-data.js +2 -2
  64. package/dist/cjs/runtimes/react/hooks/use-cache-data.js.map +1 -1
  65. package/dist/cjs/runtimes/react/hooks/use-component.js +3 -3
  66. package/dist/cjs/runtimes/react/hooks/use-component.js.map +1 -1
  67. package/dist/cjs/runtimes/react/hooks/use-dispatch.js.map +1 -1
  68. package/dist/cjs/runtimes/react/hooks/use-document.js +2 -2
  69. package/dist/cjs/runtimes/react/hooks/use-document.js.map +1 -1
  70. package/dist/cjs/runtimes/react/hooks/use-element-id.js +2 -2
  71. package/dist/cjs/runtimes/react/hooks/use-element-id.js.map +1 -1
  72. package/dist/cjs/runtimes/react/hooks/use-is-in-builder.js +2 -2
  73. package/dist/cjs/runtimes/react/hooks/use-is-in-builder.js.map +1 -1
  74. package/dist/cjs/runtimes/react/hooks/{use-is-preview.js → use-is-read-only.js} +9 -9
  75. package/dist/cjs/runtimes/react/hooks/use-is-read-only.js.map +1 -0
  76. package/dist/cjs/runtimes/react/hooks/use-register-document.js.map +1 -1
  77. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js +2 -2
  78. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  79. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js +1 -1
  80. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  81. package/dist/cjs/runtimes/react/hooks/use-selector.js.map +1 -1
  82. package/dist/cjs/runtimes/react/hooks/use-store.js.map +1 -1
  83. package/dist/cjs/runtimes/react/hooks/use-universal-dispatch.js.map +1 -1
  84. package/dist/cjs/runtimes/react/host-api-client.js +2 -2
  85. package/dist/cjs/runtimes/react/host-api-client.js.map +1 -1
  86. package/dist/cjs/runtimes/react/index.js +3 -3
  87. package/dist/cjs/runtimes/react/index.js.map +1 -1
  88. package/dist/cjs/runtimes/react/poll-box-model.js +1 -1
  89. package/dist/cjs/runtimes/react/poll-box-model.js.map +1 -1
  90. package/dist/cjs/runtimes/react/react-runtime-core.js +3 -3
  91. package/dist/cjs/runtimes/react/react-runtime-core.js.map +1 -1
  92. package/dist/cjs/runtimes/react/runtime-core.js +4 -2
  93. package/dist/cjs/runtimes/react/runtime-core.js.map +1 -1
  94. package/dist/cjs/runtimes/react/testing/react-runtime.js +32 -0
  95. package/dist/cjs/runtimes/react/testing/react-runtime.js.map +1 -0
  96. package/dist/cjs/runtimes/react/utils/can-accept-ref.js.map +1 -1
  97. package/dist/cjs/state/actions/internal/index.js +34 -0
  98. package/dist/cjs/state/actions/internal/index.js.map +1 -0
  99. package/dist/cjs/state/actions/{internal.js → internal/read-only-actions.js} +30 -62
  100. package/dist/cjs/state/actions/internal/read-only-actions.js.map +1 -0
  101. package/dist/cjs/state/actions/internal/read-write-actions.js +70 -0
  102. package/dist/cjs/state/actions/internal/read-write-actions.js.map +1 -0
  103. package/dist/cjs/state/builder-api/actions.js +11 -8
  104. package/dist/cjs/state/builder-api/actions.js.map +1 -1
  105. package/dist/cjs/state/host-api.js.map +1 -1
  106. package/dist/cjs/state/makeswift-api-client.js +2 -2
  107. package/dist/cjs/state/makeswift-api-client.js.map +1 -1
  108. package/dist/cjs/state/middleware/prop-controller-handles.js +114 -0
  109. package/dist/cjs/state/middleware/prop-controller-handles.js.map +1 -0
  110. package/dist/cjs/state/middleware/read-only-element-tree.js +52 -0
  111. package/dist/cjs/state/middleware/read-only-element-tree.js.map +1 -0
  112. package/dist/cjs/state/middleware/read-write/builder-api/element-size.js +40 -0
  113. package/dist/cjs/state/middleware/read-write/builder-api/element-size.js.map +1 -0
  114. package/dist/cjs/state/middleware/read-write/builder-api/index.js +76 -0
  115. package/dist/cjs/state/middleware/read-write/builder-api/index.js.map +1 -0
  116. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js +278 -0
  117. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -0
  118. package/dist/cjs/state/middleware/read-write/makeswift-api-client-sync.js +37 -0
  119. package/dist/cjs/state/middleware/read-write/makeswift-api-client-sync.js.map +1 -0
  120. package/dist/cjs/state/middleware/read-write/measure-box-models.js +71 -0
  121. package/dist/cjs/state/middleware/read-write/measure-box-models.js.map +1 -0
  122. package/dist/cjs/state/middleware/read-write/update-element-tree.js +59 -0
  123. package/dist/cjs/state/middleware/read-write/update-element-tree.js.map +1 -0
  124. package/dist/cjs/state/modules/api-resources.js +7 -4
  125. package/dist/cjs/state/modules/api-resources.js.map +1 -1
  126. package/dist/cjs/state/modules/breakpoints.js +2 -1
  127. package/dist/cjs/state/modules/breakpoints.js.map +1 -1
  128. package/dist/cjs/state/modules/builder-edit-mode.js +2 -1
  129. package/dist/cjs/state/modules/builder-edit-mode.js.map +1 -1
  130. package/dist/cjs/state/modules/components-meta.js +3 -2
  131. package/dist/cjs/state/modules/components-meta.js.map +1 -1
  132. package/dist/cjs/state/modules/element-trees.js +5 -3
  133. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  134. package/dist/cjs/state/modules/is-in-builder.js +2 -1
  135. package/dist/cjs/state/modules/is-in-builder.js.map +1 -1
  136. package/dist/cjs/state/modules/{is-preview.js → is-read-only.js} +12 -9
  137. package/dist/cjs/state/modules/is-read-only.js.map +1 -0
  138. package/dist/cjs/state/modules/localized-resources-map.js +4 -2
  139. package/dist/cjs/state/modules/localized-resources-map.js.map +1 -1
  140. package/dist/cjs/state/modules/prop-controllers.js +3 -2
  141. package/dist/cjs/state/modules/prop-controllers.js.map +1 -1
  142. package/dist/cjs/state/modules/react-components.js +3 -2
  143. package/dist/cjs/state/modules/react-components.js.map +1 -1
  144. package/dist/cjs/state/modules/read-only-documents.js +3 -2
  145. package/dist/cjs/state/modules/read-only-documents.js.map +1 -1
  146. package/dist/cjs/state/modules/{box-models.js → read-write/box-models.js} +6 -4
  147. package/dist/cjs/state/modules/read-write/box-models.js.map +1 -0
  148. package/dist/cjs/state/modules/{element-imperative-handles.js → read-write/element-imperative-handles.js} +4 -3
  149. package/dist/cjs/state/modules/read-write/element-imperative-handles.js.map +1 -0
  150. package/dist/cjs/state/modules/{pointer.js → read-write/pointer.js} +3 -2
  151. package/dist/cjs/state/modules/read-write/pointer.js.map +1 -0
  152. package/dist/cjs/state/modules/{read-write-documents.js → read-write/read-write-documents.js} +3 -3
  153. package/dist/cjs/state/modules/read-write/read-write-documents.js.map +1 -0
  154. package/dist/cjs/state/ops/copy-element-tree.js +67 -0
  155. package/dist/cjs/state/ops/copy-element-tree.js.map +1 -0
  156. package/dist/cjs/state/ops/merge-element.js +73 -0
  157. package/dist/cjs/state/ops/merge-element.js.map +1 -0
  158. package/dist/cjs/state/react-builder-preview.js +18 -508
  159. package/dist/cjs/state/react-builder-preview.js.map +1 -1
  160. package/dist/cjs/state/react-page.js +6 -250
  161. package/dist/cjs/state/react-page.js.map +1 -1
  162. package/dist/cjs/state/read-only-state.js +209 -0
  163. package/dist/cjs/state/read-only-state.js.map +1 -0
  164. package/dist/cjs/state/read-write-state.js +121 -0
  165. package/dist/cjs/state/read-write-state.js.map +1 -0
  166. package/dist/cjs/state/shared-api.js.map +1 -1
  167. package/dist/cjs/state/translations/get.js +2 -2
  168. package/dist/cjs/state/translations/get.js.map +1 -1
  169. package/dist/cjs/state/translations/merge.js +2 -2
  170. package/dist/cjs/state/translations/merge.js.map +1 -1
  171. package/dist/esm/api/{react.js → client.js} +1 -1
  172. package/dist/esm/api/client.js.map +1 -0
  173. package/dist/esm/api-handler/handlers/element-tree.js.map +1 -1
  174. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  175. package/dist/esm/api-handler/handlers/merge-translated-data.js.map +1 -1
  176. package/dist/esm/api-handler/handlers/translatable-data.js.map +1 -1
  177. package/dist/esm/builder/host-to-builder-actions.js +4 -4
  178. package/dist/esm/builder/host-to-builder-actions.js.map +1 -1
  179. package/dist/esm/builder/index.js +1 -1
  180. package/dist/esm/builder/index.js.map +1 -1
  181. package/dist/esm/client/index.js +5 -5
  182. package/dist/esm/client/index.js.map +1 -1
  183. package/dist/esm/components/builtin/Box/Box.js +1 -1
  184. package/dist/esm/components/builtin/Box/Box.js.map +1 -1
  185. package/dist/esm/components/builtin/Form/Form.js +1 -1
  186. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  187. package/dist/esm/components/hooks/useTableFormFieldRefs.js +1 -1
  188. package/dist/esm/components/hooks/useTableFormFieldRefs.js.map +1 -1
  189. package/dist/esm/next/components/tests/controls/color-control/fixtures.js.map +1 -1
  190. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js +1 -2
  191. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  192. package/dist/esm/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -1
  193. package/dist/esm/next/components/tests/makeswift-component/fixtures.js +1 -2
  194. package/dist/esm/next/components/tests/makeswift-component/fixtures.js.map +1 -1
  195. package/dist/esm/next/components/tests/prop-controllers/page-prop-controller.js +2 -3
  196. package/dist/esm/next/components/tests/prop-controllers/page-prop-controller.js.map +1 -1
  197. package/dist/esm/next/testing/element-data.js +1 -1
  198. package/dist/esm/next/testing/element-data.js.map +1 -1
  199. package/dist/esm/next/testing/index.js +1 -0
  200. package/dist/esm/next/testing/index.js.map +1 -1
  201. package/dist/esm/next/testing/page-rendering.js +3 -3
  202. package/dist/esm/next/testing/page-rendering.js.map +1 -1
  203. package/dist/esm/next/testing/react-runtime.js +5 -0
  204. package/dist/esm/next/testing/react-runtime.js.map +1 -0
  205. package/dist/esm/prop-controllers/descriptors.js.map +1 -1
  206. package/dist/esm/prop-controllers/instances.js.map +1 -1
  207. package/dist/esm/runtimes/react/components/Document.js +1 -1
  208. package/dist/esm/runtimes/react/components/Document.js.map +1 -1
  209. package/dist/esm/runtimes/react/components/DocumentRoot.js.map +1 -1
  210. package/dist/esm/runtimes/react/components/Element.js +3 -1
  211. package/dist/esm/runtimes/react/components/Element.js.map +1 -1
  212. package/dist/esm/runtimes/react/components/ElementData.js.map +1 -1
  213. package/dist/esm/runtimes/react/components/ElementReference.js.map +1 -1
  214. package/dist/esm/runtimes/react/components/ElementRegistration.js +1 -1
  215. package/dist/esm/runtimes/react/components/ElementRegistration.js.map +1 -1
  216. package/dist/esm/runtimes/react/components/MakeswiftComponent.js +1 -1
  217. package/dist/esm/runtimes/react/components/MakeswiftComponent.js.map +1 -1
  218. package/dist/esm/runtimes/react/components/RuntimeProvider.js +2 -2
  219. package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
  220. package/dist/esm/runtimes/react/components/page/Page.js.map +1 -1
  221. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js +2 -3
  222. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  223. package/dist/esm/runtimes/react/controls/rich-text-v2/rich-text-v2.js +2 -2
  224. package/dist/esm/runtimes/react/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  225. package/dist/esm/runtimes/react/controls.js +2 -2
  226. package/dist/esm/runtimes/react/controls.js.map +1 -1
  227. package/dist/esm/runtimes/react/element-imperative-handle.js +1 -1
  228. package/dist/esm/runtimes/react/element-imperative-handle.js.map +1 -1
  229. package/dist/esm/runtimes/react/hooks/use-breakpoints.js +1 -1
  230. package/dist/esm/runtimes/react/hooks/use-breakpoints.js.map +1 -1
  231. package/dist/esm/runtimes/react/hooks/use-builder-edit-mode.js +1 -1
  232. package/dist/esm/runtimes/react/hooks/use-builder-edit-mode.js.map +1 -1
  233. package/dist/esm/runtimes/react/hooks/use-cache-data.js +1 -1
  234. package/dist/esm/runtimes/react/hooks/use-cache-data.js.map +1 -1
  235. package/dist/esm/runtimes/react/hooks/use-component.js +1 -1
  236. package/dist/esm/runtimes/react/hooks/use-component.js.map +1 -1
  237. package/dist/esm/runtimes/react/hooks/use-dispatch.js.map +1 -1
  238. package/dist/esm/runtimes/react/hooks/use-document.js +1 -1
  239. package/dist/esm/runtimes/react/hooks/use-document.js.map +1 -1
  240. package/dist/esm/runtimes/react/hooks/use-element-id.js +1 -1
  241. package/dist/esm/runtimes/react/hooks/use-element-id.js.map +1 -1
  242. package/dist/esm/runtimes/react/hooks/use-is-in-builder.js +1 -1
  243. package/dist/esm/runtimes/react/hooks/use-is-in-builder.js.map +1 -1
  244. package/dist/esm/runtimes/react/hooks/use-is-read-only.js +9 -0
  245. package/dist/esm/runtimes/react/hooks/use-is-read-only.js.map +1 -0
  246. package/dist/esm/runtimes/react/hooks/use-register-document.js.map +1 -1
  247. package/dist/esm/runtimes/react/hooks/use-resolved-props.js +2 -2
  248. package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  249. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js +1 -1
  250. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  251. package/dist/esm/runtimes/react/hooks/use-selector.js.map +1 -1
  252. package/dist/esm/runtimes/react/hooks/use-store.js.map +1 -1
  253. package/dist/esm/runtimes/react/hooks/use-universal-dispatch.js.map +1 -1
  254. package/dist/esm/runtimes/react/host-api-client.js +1 -1
  255. package/dist/esm/runtimes/react/host-api-client.js.map +1 -1
  256. package/dist/esm/runtimes/react/index.js +2 -2
  257. package/dist/esm/runtimes/react/index.js.map +1 -1
  258. package/dist/esm/runtimes/react/poll-box-model.js +1 -1
  259. package/dist/esm/runtimes/react/poll-box-model.js.map +1 -1
  260. package/dist/esm/runtimes/react/react-runtime-core.js +4 -1
  261. package/dist/esm/runtimes/react/react-runtime-core.js.map +1 -1
  262. package/dist/esm/runtimes/react/runtime-core.js +3 -5
  263. package/dist/esm/runtimes/react/runtime-core.js.map +1 -1
  264. package/dist/esm/runtimes/react/testing/react-runtime.js +8 -0
  265. package/dist/esm/runtimes/react/testing/react-runtime.js.map +1 -0
  266. package/dist/esm/runtimes/react/utils/can-accept-ref.js.map +1 -1
  267. package/dist/esm/state/actions/internal/index.js +10 -0
  268. package/dist/esm/state/actions/internal/index.js.map +1 -0
  269. package/dist/esm/state/actions/{internal.js → internal/read-only-actions.js} +24 -52
  270. package/dist/esm/state/actions/internal/read-only-actions.js.map +1 -0
  271. package/dist/esm/state/actions/internal/read-write-actions.js +41 -0
  272. package/dist/esm/state/actions/internal/read-write-actions.js.map +1 -0
  273. package/dist/esm/state/builder-api/actions.js +8 -7
  274. package/dist/esm/state/builder-api/actions.js.map +1 -1
  275. package/dist/esm/state/host-api.js.map +1 -1
  276. package/dist/esm/state/makeswift-api-client.js +1 -1
  277. package/dist/esm/state/makeswift-api-client.js.map +1 -1
  278. package/dist/esm/state/middleware/prop-controller-handles.js +80 -0
  279. package/dist/esm/state/middleware/prop-controller-handles.js.map +1 -0
  280. package/dist/esm/state/middleware/read-only-element-tree.js +28 -0
  281. package/dist/esm/state/middleware/read-only-element-tree.js.map +1 -0
  282. package/dist/esm/state/middleware/read-write/builder-api/element-size.js +16 -0
  283. package/dist/esm/state/middleware/read-write/builder-api/element-size.js.map +1 -0
  284. package/dist/esm/state/middleware/read-write/builder-api/index.js +52 -0
  285. package/dist/esm/state/middleware/read-write/builder-api/index.js.map +1 -0
  286. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js +251 -0
  287. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -0
  288. package/dist/esm/state/middleware/read-write/makeswift-api-client-sync.js +13 -0
  289. package/dist/esm/state/middleware/read-write/makeswift-api-client-sync.js.map +1 -0
  290. package/dist/esm/state/middleware/read-write/measure-box-models.js +37 -0
  291. package/dist/esm/state/middleware/read-write/measure-box-models.js.map +1 -0
  292. package/dist/esm/state/middleware/read-write/update-element-tree.js +35 -0
  293. package/dist/esm/state/middleware/read-write/update-element-tree.js.map +1 -0
  294. package/dist/esm/state/modules/api-resources.js +8 -5
  295. package/dist/esm/state/modules/api-resources.js.map +1 -1
  296. package/dist/esm/state/modules/breakpoints.js +3 -2
  297. package/dist/esm/state/modules/breakpoints.js.map +1 -1
  298. package/dist/esm/state/modules/builder-edit-mode.js +3 -2
  299. package/dist/esm/state/modules/builder-edit-mode.js.map +1 -1
  300. package/dist/esm/state/modules/components-meta.js +4 -3
  301. package/dist/esm/state/modules/components-meta.js.map +1 -1
  302. package/dist/esm/state/modules/element-trees.js +6 -4
  303. package/dist/esm/state/modules/element-trees.js.map +1 -1
  304. package/dist/esm/state/modules/is-in-builder.js +3 -2
  305. package/dist/esm/state/modules/is-in-builder.js.map +1 -1
  306. package/dist/esm/state/modules/is-read-only.js +24 -0
  307. package/dist/esm/state/modules/is-read-only.js.map +1 -0
  308. package/dist/esm/state/modules/localized-resources-map.js +5 -3
  309. package/dist/esm/state/modules/localized-resources-map.js.map +1 -1
  310. package/dist/esm/state/modules/prop-controllers.js +4 -3
  311. package/dist/esm/state/modules/prop-controllers.js.map +1 -1
  312. package/dist/esm/state/modules/react-components.js +4 -3
  313. package/dist/esm/state/modules/react-components.js.map +1 -1
  314. package/dist/esm/state/modules/read-only-documents.js +4 -6
  315. package/dist/esm/state/modules/read-only-documents.js.map +1 -1
  316. package/dist/esm/state/modules/{box-models.js → read-write/box-models.js} +6 -4
  317. package/dist/esm/state/modules/read-write/box-models.js.map +1 -0
  318. package/dist/esm/state/modules/{element-imperative-handles.js → read-write/element-imperative-handles.js} +4 -3
  319. package/dist/esm/state/modules/read-write/element-imperative-handles.js.map +1 -0
  320. package/dist/esm/state/modules/{pointer.js → read-write/pointer.js} +3 -2
  321. package/dist/esm/state/modules/read-write/pointer.js.map +1 -0
  322. package/dist/esm/state/modules/{read-write-documents.js → read-write/read-write-documents.js} +3 -3
  323. package/dist/esm/state/modules/read-write/read-write-documents.js.map +1 -0
  324. package/dist/esm/state/ops/copy-element-tree.js +37 -0
  325. package/dist/esm/state/ops/copy-element-tree.js.map +1 -0
  326. package/dist/esm/state/ops/merge-element.js +39 -0
  327. package/dist/esm/state/ops/merge-element.js.map +1 -0
  328. package/dist/esm/state/react-builder-preview.js +15 -500
  329. package/dist/esm/state/react-builder-preview.js.map +1 -1
  330. package/dist/esm/state/react-page.js +7 -240
  331. package/dist/esm/state/react-page.js.map +1 -1
  332. package/dist/esm/state/read-only-state.js +157 -0
  333. package/dist/esm/state/read-only-state.js.map +1 -0
  334. package/dist/esm/state/read-write-state.js +76 -0
  335. package/dist/esm/state/read-write-state.js.map +1 -0
  336. package/dist/esm/state/shared-api.js.map +1 -1
  337. package/dist/esm/state/translations/get.js +1 -1
  338. package/dist/esm/state/translations/get.js.map +1 -1
  339. package/dist/esm/state/translations/merge.js +1 -1
  340. package/dist/esm/state/translations/merge.js.map +1 -1
  341. package/dist/types/api/{react.d.ts → client.d.ts} +1 -1
  342. package/dist/types/api/client.d.ts.map +1 -0
  343. package/dist/types/api-handler/handlers/element-tree.d.ts +1 -1
  344. package/dist/types/api-handler/handlers/element-tree.d.ts.map +1 -1
  345. package/dist/types/api-handler/handlers/merge-translated-data.d.ts +1 -1
  346. package/dist/types/api-handler/handlers/merge-translated-data.d.ts.map +1 -1
  347. package/dist/types/api-handler/handlers/translatable-data.d.ts +1 -1
  348. package/dist/types/api-handler/handlers/translatable-data.d.ts.map +1 -1
  349. package/dist/types/api-handler/handlers/webhook/types.d.ts +4 -4
  350. package/dist/types/builder/host-to-builder-actions.d.ts +2 -2
  351. package/dist/types/builder/host-to-builder-actions.d.ts.map +1 -1
  352. package/dist/types/builder/index.d.ts +2 -2
  353. package/dist/types/builder/index.d.ts.map +1 -1
  354. package/dist/types/client/index.d.ts +2 -2
  355. package/dist/types/client/index.d.ts.map +1 -1
  356. package/dist/types/components/builtin/Box/Box.d.ts +1 -1
  357. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  358. package/dist/types/components/builtin/Form/Form.d.ts +1 -1
  359. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  360. package/dist/types/locale.d.ts +1 -1
  361. package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts +1 -1
  362. package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts.map +1 -1
  363. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts +3 -3
  364. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts.map +1 -1
  365. package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts +1 -1
  366. package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts.map +1 -1
  367. package/dist/types/next/components/tests/makeswift-component/fixtures.d.ts +1 -1
  368. package/dist/types/next/components/tests/makeswift-component/fixtures.d.ts.map +1 -1
  369. package/dist/types/next/components/tests/prop-controllers/page-prop-controller.d.ts +1 -1
  370. package/dist/types/next/components/tests/prop-controllers/page-prop-controller.d.ts.map +1 -1
  371. package/dist/types/next/testing/element-data.d.ts +1 -1
  372. package/dist/types/next/testing/element-data.d.ts.map +1 -1
  373. package/dist/types/next/testing/index.d.ts +1 -0
  374. package/dist/types/next/testing/index.d.ts.map +1 -1
  375. package/dist/types/next/testing/page-rendering.d.ts.map +1 -1
  376. package/dist/types/next/testing/react-runtime.d.ts +2 -0
  377. package/dist/types/next/testing/react-runtime.d.ts.map +1 -0
  378. package/dist/types/prop-controllers/descriptors.d.ts +1 -1
  379. package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
  380. package/dist/types/prop-controllers/instances.d.ts +1 -1
  381. package/dist/types/prop-controllers/instances.d.ts.map +1 -1
  382. package/dist/types/runtimes/react/components/Document.d.ts +1 -1
  383. package/dist/types/runtimes/react/components/Document.d.ts.map +1 -1
  384. package/dist/types/runtimes/react/components/DocumentRoot.d.ts +1 -1
  385. package/dist/types/runtimes/react/components/DocumentRoot.d.ts.map +1 -1
  386. package/dist/types/runtimes/react/components/Element.d.ts +1 -1
  387. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  388. package/dist/types/runtimes/react/components/ElementData.d.ts +1 -1
  389. package/dist/types/runtimes/react/components/ElementData.d.ts.map +1 -1
  390. package/dist/types/runtimes/react/components/ElementReference.d.ts +1 -1
  391. package/dist/types/runtimes/react/components/ElementReference.d.ts.map +1 -1
  392. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts +1 -1
  393. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts.map +1 -1
  394. package/dist/types/runtimes/react/components/page/Page.d.ts +1 -1
  395. package/dist/types/runtimes/react/components/page/Page.d.ts.map +1 -1
  396. package/dist/types/runtimes/react/controls.d.ts +2 -2
  397. package/dist/types/runtimes/react/controls.d.ts.map +1 -1
  398. package/dist/types/runtimes/react/element-imperative-handle.d.ts +1 -1
  399. package/dist/types/runtimes/react/element-imperative-handle.d.ts.map +1 -1
  400. package/dist/types/runtimes/react/hooks/use-cache-data.d.ts +1 -1
  401. package/dist/types/runtimes/react/hooks/use-cache-data.d.ts.map +1 -1
  402. package/dist/types/runtimes/react/hooks/use-component.d.ts +1 -1
  403. package/dist/types/runtimes/react/hooks/use-component.d.ts.map +1 -1
  404. package/dist/types/runtimes/react/hooks/use-dispatch.d.ts +3 -3
  405. package/dist/types/runtimes/react/hooks/use-dispatch.d.ts.map +1 -1
  406. package/dist/types/runtimes/react/hooks/use-document.d.ts +1 -1
  407. package/dist/types/runtimes/react/hooks/use-document.d.ts.map +1 -1
  408. package/dist/types/runtimes/react/hooks/use-is-read-only.d.ts +2 -0
  409. package/dist/types/runtimes/react/hooks/use-is-read-only.d.ts.map +1 -0
  410. package/dist/types/runtimes/react/hooks/use-register-document.d.ts +1 -1
  411. package/dist/types/runtimes/react/hooks/use-register-document.d.ts.map +1 -1
  412. package/dist/types/runtimes/react/hooks/use-selector.d.ts +3 -3
  413. package/dist/types/runtimes/react/hooks/use-selector.d.ts.map +1 -1
  414. package/dist/types/runtimes/react/hooks/use-store.d.ts +4 -4
  415. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  416. package/dist/types/runtimes/react/hooks/use-universal-dispatch.d.ts +1 -1
  417. package/dist/types/runtimes/react/hooks/use-universal-dispatch.d.ts.map +1 -1
  418. package/dist/types/runtimes/react/host-api-client.d.ts +1 -1
  419. package/dist/types/runtimes/react/host-api-client.d.ts.map +1 -1
  420. package/dist/types/runtimes/react/index.d.ts +1 -1
  421. package/dist/types/runtimes/react/index.d.ts.map +1 -1
  422. package/dist/types/runtimes/react/poll-box-model.d.ts +1 -1
  423. package/dist/types/runtimes/react/poll-box-model.d.ts.map +1 -1
  424. package/dist/types/runtimes/react/react-runtime-core.d.ts +1 -1
  425. package/dist/types/runtimes/react/react-runtime-core.d.ts.map +1 -1
  426. package/dist/types/runtimes/react/runtime-core.d.ts +2 -1
  427. package/dist/types/runtimes/react/runtime-core.d.ts.map +1 -1
  428. package/dist/types/runtimes/react/testing/react-runtime.d.ts +3 -0
  429. package/dist/types/runtimes/react/testing/react-runtime.d.ts.map +1 -0
  430. package/dist/types/runtimes/react/utils/can-accept-ref.d.ts +1 -1
  431. package/dist/types/runtimes/react/utils/can-accept-ref.d.ts.map +1 -1
  432. package/dist/types/state/__tests__/merge-element.test.d.ts +2 -0
  433. package/dist/types/state/__tests__/merge-element.test.d.ts.map +1 -0
  434. package/dist/types/state/actions/index.d.ts +6 -5
  435. package/dist/types/state/actions/index.d.ts.map +1 -1
  436. package/dist/types/state/actions/internal/index.d.ts +25 -0
  437. package/dist/types/state/actions/internal/index.d.ts.map +1 -0
  438. package/dist/types/state/actions/{internal.d.ts → internal/read-only-actions.d.ts} +33 -67
  439. package/dist/types/state/actions/internal/read-only-actions.d.ts.map +1 -0
  440. package/dist/types/state/actions/internal/read-write-actions.d.ts +48 -0
  441. package/dist/types/state/actions/internal/read-write-actions.d.ts.map +1 -0
  442. package/dist/types/state/builder-api/actions.d.ts +14 -14
  443. package/dist/types/state/builder-api/actions.d.ts.map +1 -1
  444. package/dist/types/state/host-api.d.ts +1 -1
  445. package/dist/types/state/host-api.d.ts.map +1 -1
  446. package/dist/types/state/middleware/prop-controller-handles.d.ts +4 -0
  447. package/dist/types/state/middleware/prop-controller-handles.d.ts.map +1 -0
  448. package/dist/types/state/middleware/read-only-element-tree.d.ts +4 -0
  449. package/dist/types/state/middleware/read-only-element-tree.d.ts.map +1 -0
  450. package/dist/types/state/middleware/read-write/builder-api/element-size.d.ts +12 -0
  451. package/dist/types/state/middleware/read-write/builder-api/element-size.d.ts.map +1 -0
  452. package/dist/types/state/middleware/read-write/builder-api/index.d.ts +5 -0
  453. package/dist/types/state/middleware/read-write/builder-api/index.d.ts.map +1 -0
  454. package/dist/types/state/middleware/read-write/builder-api/initialize-connection.d.ts +6 -0
  455. package/dist/types/state/middleware/read-write/builder-api/initialize-connection.d.ts.map +1 -0
  456. package/dist/types/state/middleware/read-write/makeswift-api-client-sync.d.ts +5 -0
  457. package/dist/types/state/middleware/read-write/makeswift-api-client-sync.d.ts.map +1 -0
  458. package/dist/types/state/middleware/read-write/measure-box-models.d.ts +4 -0
  459. package/dist/types/state/middleware/read-write/measure-box-models.d.ts.map +1 -0
  460. package/dist/types/state/middleware/read-write/update-element-tree.d.ts +4 -0
  461. package/dist/types/state/middleware/read-write/update-element-tree.d.ts.map +1 -0
  462. package/dist/types/state/modules/api-resources.d.ts.map +1 -1
  463. package/dist/types/state/modules/breakpoints.d.ts.map +1 -1
  464. package/dist/types/state/modules/builder-edit-mode.d.ts.map +1 -1
  465. package/dist/types/state/modules/components-meta.d.ts.map +1 -1
  466. package/dist/types/state/modules/element-trees.d.ts.map +1 -1
  467. package/dist/types/state/modules/is-in-builder.d.ts.map +1 -1
  468. package/dist/types/state/modules/{is-preview.d.ts → is-read-only.d.ts} +3 -3
  469. package/dist/types/state/modules/is-read-only.d.ts.map +1 -0
  470. package/dist/types/state/modules/localized-resources-map.d.ts.map +1 -1
  471. package/dist/types/state/modules/prop-controllers.d.ts.map +1 -1
  472. package/dist/types/state/modules/react-components.d.ts.map +1 -1
  473. package/dist/types/state/modules/read-only-documents.d.ts.map +1 -1
  474. package/dist/types/state/modules/{box-models.d.ts → read-write/box-models.d.ts} +1 -1
  475. package/dist/types/state/modules/read-write/box-models.d.ts.map +1 -0
  476. package/dist/types/state/modules/read-write/element-imperative-handles.d.ts +6 -0
  477. package/dist/types/state/modules/read-write/element-imperative-handles.d.ts.map +1 -0
  478. package/dist/types/state/modules/{pointer.d.ts → read-write/pointer.d.ts} +2 -3
  479. package/dist/types/state/modules/read-write/pointer.d.ts.map +1 -0
  480. package/dist/types/state/modules/{read-write-documents.d.ts → read-write/read-write-documents.d.ts} +4 -4
  481. package/dist/types/state/modules/read-write/read-write-documents.d.ts.map +1 -0
  482. package/dist/types/state/ops/copy-element-tree.d.ts +37 -0
  483. package/dist/types/state/ops/copy-element-tree.d.ts.map +1 -0
  484. package/dist/types/state/ops/merge-element.d.ts +4 -0
  485. package/dist/types/state/ops/merge-element.d.ts.map +1 -0
  486. package/dist/types/state/react-builder-preview.d.ts +26 -93
  487. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  488. package/dist/types/state/react-page.d.ts +20 -136
  489. package/dist/types/state/react-page.d.ts.map +1 -1
  490. package/dist/types/state/read-only-state.d.ts +122 -0
  491. package/dist/types/state/read-only-state.d.ts.map +1 -0
  492. package/dist/types/state/read-write-state.d.ts +56 -0
  493. package/dist/types/state/read-write-state.d.ts.map +1 -0
  494. package/dist/types/state/shared-api.d.ts.map +1 -1
  495. package/dist/types/state/translations/get.d.ts +1 -1
  496. package/dist/types/state/translations/get.d.ts.map +1 -1
  497. package/dist/types/state/translations/merge.d.ts +1 -1
  498. package/dist/types/state/translations/merge.d.ts.map +1 -1
  499. package/package.json +1 -1
  500. package/dist/cjs/api/react.js.map +0 -1
  501. package/dist/cjs/runtimes/react/hooks/use-is-preview.js.map +0 -1
  502. package/dist/cjs/state/actions/internal.js.map +0 -1
  503. package/dist/cjs/state/modules/box-models.js.map +0 -1
  504. package/dist/cjs/state/modules/element-imperative-handles.js.map +0 -1
  505. package/dist/cjs/state/modules/is-preview.js.map +0 -1
  506. package/dist/cjs/state/modules/pointer.js.map +0 -1
  507. package/dist/cjs/state/modules/read-write-documents.js.map +0 -1
  508. package/dist/esm/api/react.js.map +0 -1
  509. package/dist/esm/runtimes/react/hooks/use-is-preview.js +0 -9
  510. package/dist/esm/runtimes/react/hooks/use-is-preview.js.map +0 -1
  511. package/dist/esm/state/actions/internal.js.map +0 -1
  512. package/dist/esm/state/modules/box-models.js.map +0 -1
  513. package/dist/esm/state/modules/element-imperative-handles.js.map +0 -1
  514. package/dist/esm/state/modules/is-preview.js +0 -21
  515. package/dist/esm/state/modules/is-preview.js.map +0 -1
  516. package/dist/esm/state/modules/pointer.js.map +0 -1
  517. package/dist/esm/state/modules/read-write-documents.js.map +0 -1
  518. package/dist/types/api/react.d.ts.map +0 -1
  519. package/dist/types/runtimes/react/hooks/use-is-preview.d.ts +0 -2
  520. package/dist/types/runtimes/react/hooks/use-is-preview.d.ts.map +0 -1
  521. package/dist/types/state/__tests__/react-page.test.d.ts +0 -2
  522. package/dist/types/state/__tests__/react-page.test.d.ts.map +0 -1
  523. package/dist/types/state/actions/internal.d.ts.map +0 -1
  524. package/dist/types/state/modules/box-models.d.ts.map +0 -1
  525. package/dist/types/state/modules/element-imperative-handles.d.ts +0 -7
  526. package/dist/types/state/modules/element-imperative-handles.d.ts.map +0 -1
  527. package/dist/types/state/modules/is-preview.d.ts.map +0 -1
  528. package/dist/types/state/modules/pointer.d.ts.map +0 -1
  529. package/dist/types/state/modules/read-write-documents.d.ts.map +0 -1
@@ -0,0 +1,251 @@
1
+ import deepEqual from "../../../../utils/deepEqual";
2
+ import * as BoxModels from "../../../modules/read-write/box-models";
3
+ import * as BuilderEditMode from "../../../modules/builder-edit-mode";
4
+ import * as ReadOnly from "../../../actions/internal/read-only-actions";
5
+ import * as Builder from "../../../builder-api/actions";
6
+ import { serializeControls } from "../../../../builder";
7
+ import * as ReadOnlyState from "../../../read-only-state";
8
+ import {
9
+ getDocuments,
10
+ getMeasurables,
11
+ getBoxModels,
12
+ getBoxModel,
13
+ getElementImperativeHandlesContainingElement,
14
+ getPointer
15
+ } from "../../../read-write-state";
16
+ import { getElementSize } from "./element-size";
17
+ function measureElements() {
18
+ return (dispatch, getState) => {
19
+ const measurables = getMeasurables(getState());
20
+ const currentBoxModels = getBoxModels(getState());
21
+ const measuredBoxModels = /* @__PURE__ */ new Map();
22
+ measurables.forEach((documentMeasurables, documentKey) => {
23
+ const measuredDocumentBoxModels = /* @__PURE__ */ new Map();
24
+ documentMeasurables.forEach((measurable, elementKey) => {
25
+ const boxModel = BoxModels.measure(measurable);
26
+ if (boxModel != null)
27
+ measuredDocumentBoxModels.set(elementKey, boxModel);
28
+ });
29
+ if (measuredDocumentBoxModels.size > 0) {
30
+ measuredBoxModels.set(documentKey, measuredDocumentBoxModels);
31
+ }
32
+ });
33
+ const changedBoxModels = /* @__PURE__ */ new Map();
34
+ currentBoxModels.forEach((currentDocumentBoxModels, documentKey) => {
35
+ const changedDocumentBoxModels = /* @__PURE__ */ new Map();
36
+ currentDocumentBoxModels.forEach((_boxModel, elementKey) => {
37
+ if (!measuredBoxModels.get(documentKey)?.has(elementKey)) {
38
+ changedDocumentBoxModels.set(elementKey, null);
39
+ }
40
+ if (changedDocumentBoxModels.size > 0) {
41
+ changedBoxModels.set(documentKey, changedDocumentBoxModels);
42
+ }
43
+ });
44
+ });
45
+ measuredBoxModels.forEach((measuredDocumentBoxModels, documentKey) => {
46
+ const changedDocumentBoxModels = /* @__PURE__ */ new Map();
47
+ measuredDocumentBoxModels.forEach((measuredBoxModel, elementKey) => {
48
+ const currentBoxModel = getBoxModel(getState(), documentKey, elementKey);
49
+ if (currentBoxModel == null || !deepEqual(currentBoxModel, measuredBoxModel)) {
50
+ changedDocumentBoxModels.set(elementKey, measuredBoxModel);
51
+ }
52
+ });
53
+ if (changedDocumentBoxModels.size > 0) {
54
+ changedBoxModels.set(documentKey, changedDocumentBoxModels);
55
+ }
56
+ });
57
+ if (changedBoxModels.size > 0)
58
+ dispatch(Builder.changeElementBoxModels(changedBoxModels));
59
+ };
60
+ }
61
+ function startMeasuringElements() {
62
+ return (dispatch) => {
63
+ let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest);
64
+ return () => {
65
+ cancelAnimationFrame(animationFrameHandle);
66
+ };
67
+ function handleAnimationFrameRequest() {
68
+ dispatch(measureElements());
69
+ animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest);
70
+ }
71
+ };
72
+ }
73
+ function lockDocumentScroll() {
74
+ return (dispatch) => {
75
+ const lastDocumentOverflow = window.document.documentElement.style.overflow;
76
+ window.document.documentElement.style.overflow = "hidden";
77
+ window.document.documentElement.addEventListener("wheel", handleWheelEvent);
78
+ return () => {
79
+ window.document.documentElement.style.overflow = lastDocumentOverflow;
80
+ window.document.documentElement.removeEventListener("wheel", handleWheelEvent);
81
+ };
82
+ function handleWheelEvent({ deltaX, deltaY }) {
83
+ dispatch(Builder.handleWheel({ deltaX, deltaY }));
84
+ }
85
+ };
86
+ }
87
+ function startHandlingPointerMoveEvent() {
88
+ return (dispatch) => {
89
+ window.document.documentElement.addEventListener("pointermove", handlePointerMoveEvent);
90
+ return () => {
91
+ window.document.documentElement.removeEventListener("pointermove", handlePointerMoveEvent);
92
+ };
93
+ function handlePointerMoveEvent({ clientX, clientY }) {
94
+ dispatch(Builder.handlePointerMove({ clientX, clientY }));
95
+ }
96
+ };
97
+ }
98
+ function startHandlingFocusEvents() {
99
+ return (_dispatch, getState) => {
100
+ window.addEventListener("focusin", handleFocusIn);
101
+ window.addEventListener("focusout", handleFocusOut);
102
+ return () => {
103
+ window.removeEventListener("focusin", handleFocusIn);
104
+ window.removeEventListener("focusout", handleFocusOut);
105
+ };
106
+ function handleFocusIn(event) {
107
+ if (ReadOnlyState.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {
108
+ return;
109
+ }
110
+ if (!(event.target instanceof window.HTMLElement) || !event.target.isContentEditable) {
111
+ window.parent.focus();
112
+ }
113
+ }
114
+ function handleFocusOut(event) {
115
+ if (ReadOnlyState.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {
116
+ return;
117
+ }
118
+ if (!(event.relatedTarget instanceof window.HTMLElement) || !event.relatedTarget.isContentEditable) {
119
+ window.parent.focus();
120
+ }
121
+ }
122
+ };
123
+ }
124
+ function startMeasuringDocumentElement() {
125
+ return (dispatch) => {
126
+ let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest);
127
+ let lastSize;
128
+ return () => {
129
+ cancelAnimationFrame(animationFrameHandle);
130
+ };
131
+ function handleAnimationFrameRequest() {
132
+ const nextSize = getElementSize(window.document.documentElement);
133
+ if (!deepEqual(lastSize, nextSize)) {
134
+ lastSize = nextSize;
135
+ dispatch(Builder.changeDocumentElementSize(nextSize));
136
+ }
137
+ animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest);
138
+ }
139
+ };
140
+ }
141
+ function elementKeysFromElementFromPoint(elementFromPoint) {
142
+ return (_dispatch, getState) => {
143
+ if (elementFromPoint == null)
144
+ return null;
145
+ const elementImperativeHandles = getElementImperativeHandlesContainingElement(
146
+ getState(),
147
+ elementFromPoint
148
+ );
149
+ const ascendingDepthDocumentKeys = ReadOnlyState.getDocumentKeysSortedByDepth(getState());
150
+ const descendingDepthDocumentKeys = ascendingDepthDocumentKeys.slice().reverse();
151
+ let currentElement = elementFromPoint;
152
+ let keys = null;
153
+ while (currentElement != null) {
154
+ for (const documentKey of descendingDepthDocumentKeys) {
155
+ const byElementKey = elementImperativeHandles.get(documentKey);
156
+ if (byElementKey == null)
157
+ continue;
158
+ for (const [elementKey, elementImperativeHandle] of byElementKey) {
159
+ if (elementImperativeHandle.getDomNode() === currentElement) {
160
+ return { documentKey, elementKey };
161
+ }
162
+ }
163
+ }
164
+ currentElement = currentElement.parentElement;
165
+ }
166
+ return keys;
167
+ };
168
+ }
169
+ function startPollingElementFromPoint() {
170
+ return (dispatch, getState) => {
171
+ let lastElementFromPoint = null;
172
+ let animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest);
173
+ return () => {
174
+ cancelAnimationFrame(animationFrameRequestId);
175
+ };
176
+ function handleAnimationFrameRequest() {
177
+ const pointer = getPointer(getState());
178
+ const elementFromPoint = pointer == null ? null : document.elementFromPoint(pointer.x, pointer.y);
179
+ if (elementFromPoint !== lastElementFromPoint) {
180
+ lastElementFromPoint = elementFromPoint;
181
+ const keys = dispatch(elementKeysFromElementFromPoint(elementFromPoint));
182
+ dispatch(Builder.elementFromPointChange(keys));
183
+ }
184
+ animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest);
185
+ }
186
+ };
187
+ }
188
+ function registerBuilderComponents() {
189
+ return (dispatch, getState) => {
190
+ const state = getState();
191
+ const componentsMeta = ReadOnlyState.getComponentsMeta(state);
192
+ componentsMeta.forEach((meta, type) => {
193
+ const descriptors = ReadOnlyState.getComponentPropControllerDescriptors(state, type);
194
+ if (descriptors != null) {
195
+ const [serializedControls, transferables] = serializeControls(descriptors);
196
+ dispatch(
197
+ Builder.registerBuilderComponent({ type, meta, serializedControls }, transferables)
198
+ );
199
+ }
200
+ });
201
+ return () => {
202
+ componentsMeta.forEach((_, type) => {
203
+ dispatch(Builder.unregisterBuilderComponent({ type }));
204
+ });
205
+ };
206
+ };
207
+ }
208
+ function registerBuilderDocuments() {
209
+ return (dispatch, getState) => {
210
+ const documents = getDocuments(getState());
211
+ documents.forEach((document2) => {
212
+ dispatch(Builder.registerBuilderDocument(document2));
213
+ });
214
+ return () => {
215
+ documents.forEach((_document, documentKey) => {
216
+ dispatch(Builder.unregisterBuilderDocument(documentKey));
217
+ });
218
+ };
219
+ };
220
+ }
221
+ function initializeBuilderConnection(builderProxy) {
222
+ return (dispatch, getState) => {
223
+ const unregisterBuilderDocuments = dispatch(registerBuilderDocuments());
224
+ const stopMeasuringElements = dispatch(startMeasuringElements());
225
+ const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement());
226
+ const stopHandlingFocusEvent = dispatch(startHandlingFocusEvents());
227
+ const unlockDocumentScroll = dispatch(lockDocumentScroll());
228
+ const stopHandlingPointerMoveEvent = dispatch(startHandlingPointerMoveEvent());
229
+ const stopPollingElementFromPoint = dispatch(startPollingElementFromPoint());
230
+ const unregisterBuilderComponents = dispatch(registerBuilderComponents());
231
+ const breakpoints = ReadOnlyState.getBreakpoints(getState());
232
+ dispatch(Builder.setBreakpoints(breakpoints));
233
+ dispatch(ReadOnly.setIsInBuilder(true));
234
+ builderProxy.dispatchBuffered();
235
+ return () => {
236
+ unregisterBuilderDocuments();
237
+ stopMeasuringElements();
238
+ stopMeasuringDocumentElement();
239
+ stopHandlingFocusEvent();
240
+ unlockDocumentScroll();
241
+ stopHandlingPointerMoveEvent();
242
+ stopPollingElementFromPoint();
243
+ unregisterBuilderComponents();
244
+ dispatch(ReadOnly.setIsInBuilder(false));
245
+ };
246
+ };
247
+ }
248
+ export {
249
+ initializeBuilderConnection
250
+ };
251
+ //# sourceMappingURL=initialize-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/state/middleware/read-write/builder-api/initialize-connection.ts"],"sourcesContent":["import { type ThunkAction } from '@reduxjs/toolkit'\n\nimport deepEqual from '../../../../utils/deepEqual'\n\nimport * as BoxModels from '../../../modules/read-write/box-models'\nimport * as BuilderEditMode from '../../../modules/builder-edit-mode'\n\nimport { type Action } from '../../../actions'\n\nimport * as ReadOnly from '../../../actions/internal/read-only-actions'\nimport * as Builder from '../../../builder-api/actions'\n\nimport { serializeControls } from '../../../../builder'\nimport { type BuilderAPIProxy } from '../../../builder-api/proxy'\n\nimport * as ReadOnlyState from '../../../read-only-state'\nimport {\n type State,\n getDocuments,\n getMeasurables,\n getBoxModels,\n getBoxModel,\n getElementImperativeHandlesContainingElement,\n getPointer,\n} from '../../../read-write-state'\n\nimport { type ElementSize, getElementSize } from './element-size'\n\nfunction measureElements(): ThunkAction<void, State, unknown, Action> {\n return (dispatch, getState) => {\n const measurables = getMeasurables(getState())\n const currentBoxModels = getBoxModels(getState())\n const measuredBoxModels = new Map<string, Map<string, BoxModels.BoxModel>>()\n\n measurables.forEach((documentMeasurables, documentKey) => {\n const measuredDocumentBoxModels = new Map<string, BoxModels.BoxModel>()\n\n documentMeasurables.forEach((measurable, elementKey) => {\n const boxModel = BoxModels.measure(measurable)\n\n if (boxModel != null) measuredDocumentBoxModels.set(elementKey, boxModel)\n })\n\n if (measuredDocumentBoxModels.size > 0) {\n measuredBoxModels.set(documentKey, measuredDocumentBoxModels)\n }\n })\n\n const changedBoxModels = new Map<string, Map<string, BoxModels.BoxModel | null>>()\n\n currentBoxModels.forEach((currentDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n currentDocumentBoxModels.forEach((_boxModel, elementKey) => {\n if (!measuredBoxModels.get(documentKey)?.has(elementKey)) {\n changedDocumentBoxModels.set(elementKey, null)\n }\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n })\n\n measuredBoxModels.forEach((measuredDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n measuredDocumentBoxModels.forEach((measuredBoxModel, elementKey) => {\n const currentBoxModel = getBoxModel(getState(), documentKey, elementKey)\n\n if (currentBoxModel == null || !deepEqual(currentBoxModel, measuredBoxModel)) {\n changedDocumentBoxModels.set(elementKey, measuredBoxModel)\n }\n })\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n\n if (changedBoxModels.size > 0) dispatch(Builder.changeElementBoxModels(changedBoxModels))\n }\n}\n\nfunction startMeasuringElements(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n dispatch(measureElements())\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nfunction lockDocumentScroll(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const lastDocumentOverflow = window.document.documentElement.style.overflow\n window.document.documentElement.style.overflow = 'hidden'\n\n window.document.documentElement.addEventListener('wheel', handleWheelEvent)\n\n return () => {\n window.document.documentElement.style.overflow = lastDocumentOverflow\n window.document.documentElement.removeEventListener('wheel', handleWheelEvent)\n }\n\n function handleWheelEvent({ deltaX, deltaY }: WheelEvent) {\n dispatch(Builder.handleWheel({ deltaX, deltaY }))\n }\n }\n}\n\nfunction startHandlingPointerMoveEvent(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n window.document.documentElement.addEventListener('pointermove', handlePointerMoveEvent)\n\n return () => {\n window.document.documentElement.removeEventListener('pointermove', handlePointerMoveEvent)\n }\n\n function handlePointerMoveEvent({ clientX, clientY }: PointerEvent) {\n dispatch(Builder.handlePointerMove({ clientX, clientY }))\n }\n }\n}\n\nfunction startHandlingFocusEvents(): ThunkAction<() => void, State, unknown, Action> {\n return (_dispatch, getState) => {\n window.addEventListener('focusin', handleFocusIn)\n window.addEventListener('focusout', handleFocusOut)\n\n return () => {\n window.removeEventListener('focusin', handleFocusIn)\n window.removeEventListener('focusout', handleFocusOut)\n }\n\n function handleFocusIn(event: FocusEvent) {\n if (\n ReadOnlyState.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT\n ) {\n return\n }\n\n if (!(event.target instanceof window.HTMLElement) || !event.target.isContentEditable) {\n window.parent.focus()\n }\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (\n ReadOnlyState.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT\n ) {\n return\n }\n\n if (\n !(event.relatedTarget instanceof window.HTMLElement) ||\n !event.relatedTarget.isContentEditable\n ) {\n window.parent.focus()\n }\n }\n }\n}\n\nfunction startMeasuringDocumentElement(): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n let lastSize: ElementSize\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n const nextSize = getElementSize(window.document.documentElement)\n\n if (!deepEqual(lastSize, nextSize)) {\n lastSize = nextSize\n\n dispatch(Builder.changeDocumentElementSize(nextSize))\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nfunction elementKeysFromElementFromPoint(\n elementFromPoint: Element | null,\n): ThunkAction<{ documentKey: string; elementKey: string } | null, State, unknown, Action> {\n return (_dispatch, getState) => {\n if (elementFromPoint == null) return null\n\n const elementImperativeHandles = getElementImperativeHandlesContainingElement(\n getState(),\n elementFromPoint,\n )\n const ascendingDepthDocumentKeys = ReadOnlyState.getDocumentKeysSortedByDepth(getState())\n const descendingDepthDocumentKeys = ascendingDepthDocumentKeys.slice().reverse()\n\n let currentElement: Element | null = elementFromPoint\n let keys = null\n\n while (currentElement != null) {\n for (const documentKey of descendingDepthDocumentKeys) {\n const byElementKey = elementImperativeHandles.get(documentKey)\n\n if (byElementKey == null) continue\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n if (elementImperativeHandle.getDomNode() === currentElement) {\n return { documentKey, elementKey }\n }\n }\n }\n\n currentElement = currentElement.parentElement\n }\n\n return keys\n }\n}\n\nfunction startPollingElementFromPoint(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n let lastElementFromPoint: Element | null = null\n let animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameRequestId)\n }\n\n function handleAnimationFrameRequest() {\n const pointer = getPointer(getState())\n const elementFromPoint =\n pointer == null ? null : document.elementFromPoint(pointer.x, pointer.y)\n\n if (elementFromPoint !== lastElementFromPoint) {\n lastElementFromPoint = elementFromPoint\n\n const keys = dispatch(elementKeysFromElementFromPoint(elementFromPoint))\n\n dispatch(Builder.elementFromPointChange(keys))\n }\n\n animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nfunction registerBuilderComponents(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const state = getState()\n const componentsMeta = ReadOnlyState.getComponentsMeta(state)\n\n componentsMeta.forEach((meta, type) => {\n const descriptors = ReadOnlyState.getComponentPropControllerDescriptors(state, type)\n if (descriptors != null) {\n const [serializedControls, transferables] = serializeControls(descriptors)\n dispatch(\n Builder.registerBuilderComponent({ type, meta, serializedControls }, transferables),\n )\n }\n })\n\n return () => {\n componentsMeta.forEach((_, type) => {\n dispatch(Builder.unregisterBuilderComponent({ type }))\n })\n }\n }\n}\n\nfunction registerBuilderDocuments(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const documents = getDocuments(getState())\n\n documents.forEach(document => {\n dispatch(Builder.registerBuilderDocument(document))\n })\n\n return () => {\n documents.forEach((_document, documentKey) => {\n dispatch(Builder.unregisterBuilderDocument(documentKey))\n })\n }\n }\n}\n\nexport function initializeBuilderConnection(\n builderProxy: BuilderAPIProxy,\n): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const unregisterBuilderDocuments = dispatch(registerBuilderDocuments())\n const stopMeasuringElements = dispatch(startMeasuringElements())\n const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement())\n const stopHandlingFocusEvent = dispatch(startHandlingFocusEvents())\n const unlockDocumentScroll = dispatch(lockDocumentScroll())\n const stopHandlingPointerMoveEvent = dispatch(startHandlingPointerMoveEvent())\n const stopPollingElementFromPoint = dispatch(startPollingElementFromPoint())\n const unregisterBuilderComponents = dispatch(registerBuilderComponents())\n\n const breakpoints = ReadOnlyState.getBreakpoints(getState())\n dispatch(Builder.setBreakpoints(breakpoints))\n dispatch(ReadOnly.setIsInBuilder(true))\n builderProxy.dispatchBuffered()\n\n return () => {\n unregisterBuilderDocuments()\n stopMeasuringElements()\n stopMeasuringDocumentElement()\n stopHandlingFocusEvent()\n unlockDocumentScroll()\n stopHandlingPointerMoveEvent()\n stopPollingElementFromPoint()\n unregisterBuilderComponents()\n dispatch(ReadOnly.setIsInBuilder(false))\n }\n }\n}\n"],"mappings":"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","names":["document"]}
@@ -0,0 +1,13 @@
1
+ import { actionMiddleware } from "../../toolkit";
2
+ function makeswiftApiClientSyncMiddleware(client) {
3
+ return actionMiddleware(() => (next) => {
4
+ return (action) => {
5
+ client.makeswiftApiClient.dispatch(action);
6
+ return next(action);
7
+ };
8
+ });
9
+ }
10
+ export {
11
+ makeswiftApiClientSyncMiddleware
12
+ };
13
+ //# sourceMappingURL=makeswift-api-client-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/state/middleware/read-write/makeswift-api-client-sync.ts"],"sourcesContent":["import { type Middleware } from '@reduxjs/toolkit'\n\nimport { MakeswiftHostApiClient } from '../../../api/client'\n\nimport { type Action } from '../../actions'\nimport { actionMiddleware } from '../../toolkit'\nimport { type State, type Dispatch } from '../../read-write-state'\n\nexport function makeswiftApiClientSyncMiddleware(\n client: MakeswiftHostApiClient,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(() => next => {\n return (action: Action) => {\n client.makeswiftApiClient.dispatch(action)\n\n return next(action)\n }\n })\n}\n"],"mappings":"AAKA,SAAS,wBAAwB;AAG1B,SAAS,iCACd,QACuC;AACvC,SAAO,iBAAiB,MAAM,UAAQ;AACpC,WAAO,CAAC,WAAmB;AACzB,aAAO,mBAAmB,SAAS,MAAM;AAEzC,aAAO,KAAK,MAAM;AAAA,IACpB;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,37 @@
1
+ import * as BoxModels from "../../modules/read-write/box-models";
2
+ import { ReadOnlyActionTypes } from "../../actions/internal/read-only-actions";
3
+ import * as ReadWriteActions from "../../actions/internal/read-write-actions";
4
+ import { actionMiddleware } from "../../toolkit";
5
+ function measureBoxModelsMiddleware() {
6
+ return actionMiddleware(({ dispatch }) => (next) => {
7
+ return (action) => {
8
+ switch (action.type) {
9
+ case ReadOnlyActionTypes.REGISTER_COMPONENT_HANDLE: {
10
+ if (BoxModels.isMeasurable(action.payload.componentHandle)) {
11
+ dispatch(
12
+ ReadWriteActions.registerMeasurable(
13
+ action.payload.documentKey,
14
+ action.payload.elementKey,
15
+ action.payload.componentHandle
16
+ )
17
+ );
18
+ }
19
+ break;
20
+ }
21
+ case ReadOnlyActionTypes.UNREGISTER_COMPONENT_HANDLE:
22
+ dispatch(
23
+ ReadWriteActions.unregisterMeasurable(
24
+ action.payload.documentKey,
25
+ action.payload.elementKey
26
+ )
27
+ );
28
+ break;
29
+ }
30
+ return next(action);
31
+ };
32
+ });
33
+ }
34
+ export {
35
+ measureBoxModelsMiddleware
36
+ };
37
+ //# sourceMappingURL=measure-box-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/state/middleware/read-write/measure-box-models.ts"],"sourcesContent":["import { type Middleware } from '@reduxjs/toolkit'\n\nimport * as BoxModels from '../../modules/read-write/box-models'\nimport { type Action } from '../../actions'\n\nimport { ReadOnlyActionTypes } from '../../actions/internal/read-only-actions'\nimport * as ReadWriteActions from '../../actions/internal/read-write-actions'\n\nimport { actionMiddleware } from '../../toolkit'\n\nimport { type State, type Dispatch } from '../../read-write-state'\n\nexport function measureBoxModelsMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch }) => next => {\n return (action: Action) => {\n switch (action.type) {\n case ReadOnlyActionTypes.REGISTER_COMPONENT_HANDLE: {\n if (BoxModels.isMeasurable(action.payload.componentHandle)) {\n dispatch(\n ReadWriteActions.registerMeasurable(\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n }\n\n break\n }\n\n case ReadOnlyActionTypes.UNREGISTER_COMPONENT_HANDLE:\n dispatch(\n ReadWriteActions.unregisterMeasurable(\n action.payload.documentKey,\n action.payload.elementKey,\n ),\n )\n break\n }\n\n return next(action)\n }\n })\n}\n"],"mappings":"AAEA,YAAY,eAAe;AAG3B,SAAS,2BAA2B;AACpC,YAAY,sBAAsB;AAElC,SAAS,wBAAwB;AAI1B,SAAS,6BAAoE;AAClF,SAAO,iBAAiB,CAAC,EAAE,SAAS,MAAM,UAAQ;AAChD,WAAO,CAAC,WAAmB;AACzB,cAAQ,OAAO,MAAM;AAAA,QACnB,KAAK,oBAAoB,2BAA2B;AAClD,cAAI,UAAU,aAAa,OAAO,QAAQ,eAAe,GAAG;AAC1D;AAAA,cACE,iBAAiB;AAAA,gBACf,OAAO,QAAQ;AAAA,gBACf,OAAO,QAAQ;AAAA,gBACf,OAAO,QAAQ;AAAA,cACjB;AAAA,YACF;AAAA,UACF;AAEA;AAAA,QACF;AAAA,QAEA,KAAK,oBAAoB;AACvB;AAAA,YACE,iBAAiB;AAAA,cACf,OAAO,QAAQ;AAAA,cACf,OAAO,QAAQ;AAAA,YACjB;AAAA,UACF;AACA;AAAA,MACJ;AAEA,aAAO,KAAK,MAAM;AAAA,IACpB;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,35 @@
1
+ import { HostActionTypes } from "../../host-api";
2
+ import { changeElementTree } from "../../actions/internal/read-write-actions";
3
+ import { actionMiddleware } from "../../toolkit";
4
+ import { getDocument } from "../../read-write-state";
5
+ import { getPropControllerDescriptors } from "../../read-only-state";
6
+ function updateElementTreeMiddleware() {
7
+ return actionMiddleware(({ dispatch, getState }) => (next) => {
8
+ return (action) => {
9
+ switch (action.type) {
10
+ case HostActionTypes.CHANGE_DOCUMENT: {
11
+ const { documentKey, operation } = action.payload;
12
+ const oldDocument = getDocument(getState(), documentKey);
13
+ const result = next(action);
14
+ const newDocument = getDocument(getState(), documentKey);
15
+ if (oldDocument != null && newDocument != null && newDocument !== oldDocument) {
16
+ dispatch(
17
+ changeElementTree({
18
+ oldDocument,
19
+ newDocument,
20
+ descriptors: getPropControllerDescriptors(getState()),
21
+ operation
22
+ })
23
+ );
24
+ }
25
+ return result;
26
+ }
27
+ }
28
+ return next(action);
29
+ };
30
+ });
31
+ }
32
+ export {
33
+ updateElementTreeMiddleware
34
+ };
35
+ //# sourceMappingURL=update-element-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/state/middleware/read-write/update-element-tree.ts"],"sourcesContent":["import { type Middleware } from '@reduxjs/toolkit'\n\nimport { HostActionTypes } from '../../host-api'\nimport { changeElementTree } from '../../actions/internal/read-write-actions'\n\nimport { actionMiddleware } from '../../toolkit'\n\nimport { type Dispatch, type State, getDocument } from '../../read-write-state'\nimport { getPropControllerDescriptors } from '../../read-only-state'\n\nexport function updateElementTreeMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch, getState }) => next => {\n return action => {\n switch (action.type) {\n case HostActionTypes.CHANGE_DOCUMENT: {\n const { documentKey, operation } = action.payload\n\n const oldDocument = getDocument(getState(), documentKey)\n const result = next(action)\n const newDocument = getDocument(getState(), documentKey)\n\n if (oldDocument != null && newDocument != null && newDocument !== oldDocument) {\n dispatch(\n changeElementTree({\n oldDocument,\n newDocument,\n descriptors: getPropControllerDescriptors(getState()),\n operation,\n }),\n )\n }\n\n return result\n }\n }\n\n return next(action)\n }\n })\n}\n"],"mappings":"AAEA,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAElC,SAAS,wBAAwB;AAEjC,SAAoC,mBAAmB;AACvD,SAAS,oCAAoC;AAEtC,SAAS,8BAAqE;AACnF,SAAO,iBAAiB,CAAC,EAAE,UAAU,SAAS,MAAM,UAAQ;AAC1D,WAAO,YAAU;AACf,cAAQ,OAAO,MAAM;AAAA,QACnB,KAAK,gBAAgB,iBAAiB;AACpC,gBAAM,EAAE,aAAa,UAAU,IAAI,OAAO;AAE1C,gBAAM,cAAc,YAAY,SAAS,GAAG,WAAW;AACvD,gBAAM,SAAS,KAAK,MAAM;AAC1B,gBAAM,cAAc,YAAY,SAAS,GAAG,WAAW;AAEvD,cAAI,eAAe,QAAQ,eAAe,QAAQ,gBAAgB,aAAa;AAC7E;AAAA,cACE,kBAAkB;AAAA,gBAChB;AAAA,gBACA;AAAA,gBACA,aAAa,6BAA6B,SAAS,CAAC;AAAA,gBACpD;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO,KAAK,MAAM;AAAA,IACpB;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -3,7 +3,10 @@ import {
3
3
  LocalizableAPIResourceType
4
4
  } from "../../api";
5
5
  import deepEqual from "../../utils/deepEqual";
6
- import { ActionTypes, isKnownAction } from "../actions";
6
+ import { isKnownAction } from "../actions";
7
+ import { ReadOnlyActionTypes } from "../actions/internal/read-only-actions";
8
+ import { ReadWriteActionTypes } from "../actions/internal/read-write-actions";
9
+ import { HostActionTypes } from "../host-api";
7
10
  function isValidAPIResourceType(resourceType) {
8
11
  return resourceType in APIResourceType;
9
12
  }
@@ -82,7 +85,7 @@ function reducer(state = getInitialState(), action) {
82
85
  if (!isKnownAction(action))
83
86
  return state;
84
87
  switch (action.type) {
85
- case ActionTypes.UPDATE_API_CLIENT_CACHE: {
88
+ case ReadWriteActionTypes.UPDATE_API_CLIENT_CACHE: {
86
89
  const { apiResources } = action.payload;
87
90
  return Object.entries(apiResources).reduce((state2, [resourceType, cachedResources]) => {
88
91
  const resType = resourceType;
@@ -95,7 +98,7 @@ function reducer(state = getInitialState(), action) {
95
98
  return updated == null || updated === existing ? state2 : new Map(state2).set(resType, updated);
96
99
  }, state);
97
100
  }
98
- case ActionTypes.API_RESOURCE_FULFILLED: {
101
+ case ReadOnlyActionTypes.API_RESOURCE_FULFILLED: {
99
102
  const { resourceType, resourceId, resource, locale } = action.payload;
100
103
  return new Map(state).set(
101
104
  resourceType,
@@ -105,7 +108,7 @@ function reducer(state = getInitialState(), action) {
105
108
  )
106
109
  );
107
110
  }
108
- case ActionTypes.CHANGE_API_RESOURCE: {
111
+ case HostActionTypes.CHANGE_API_RESOURCE: {
109
112
  const { resource, locale } = action.payload;
110
113
  const existingApiResource = getAPIResource(state, resource.__typename, resource.id, locale);
111
114
  if (deepEqual(existingApiResource, resource))
@@ -118,7 +121,7 @@ function reducer(state = getInitialState(), action) {
118
121
  )
119
122
  );
120
123
  }
121
- case ActionTypes.EVICT_API_RESOURCE: {
124
+ case HostActionTypes.EVICT_API_RESOURCE: {
122
125
  const { id, locale } = action.payload;
123
126
  const [resourceType, resourceId] = id.split(":");
124
127
  if (!isValidAPIResourceType(resourceType))
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/state/modules/api-resources.ts"],"sourcesContent":["import {\n APIResourceType,\n APIResourceLocale,\n LocalizableAPIResourceType,\n type APIResource,\n} from '../../api'\n\nimport deepEqual from '../../utils/deepEqual'\nimport { Branded } from '../../utils/branded'\n\nimport { type Action, type UnknownAction, ActionTypes, isKnownAction } from '../actions'\n\ntype CompositeResourceId = Branded<string, 'CompositeResourceId'>\n\nfunction isValidAPIResourceType(resourceType: string): resourceType is APIResourceType {\n return resourceType in APIResourceType\n}\n\nfunction isLocalizableAPIResourceType(\n resourceType: APIResourceType,\n): resourceType is LocalizableAPIResourceType {\n return resourceType in LocalizableAPIResourceType\n}\n\nfunction compositeId(\n resourceId: string,\n resourceType: APIResourceType,\n locale?: string | null,\n): CompositeResourceId {\n return (\n locale != null && isLocalizableAPIResourceType(resourceType)\n ? `${resourceId}@${locale}`\n : resourceId\n ) as CompositeResourceId\n}\n\nfunction parseCompositeId(compositeId: CompositeResourceId): [string, string | null] {\n const [resourceId, locale] = compositeId.split('@')\n return [resourceId, locale ?? null]\n}\n\nexport type State = Map<APIResourceType, Map<CompositeResourceId, APIResource | null>>\n\nexport type SerializedState = {\n [key in APIResourceType]?: {\n id: string\n value: Extract<APIResource, { __typename: key }> | null\n locale?: APIResourceLocale<key>\n }[]\n}\n\nexport function getInitialState(\n serializedState: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n LocalizedGlobalElement: [],\n },\n): State {\n return new Map(\n Object.entries(serializedState).map(([resourceType, resources]) => [\n resourceType,\n new Map(\n resources.map(({ id, value, locale }) => [\n compositeId(id, resourceType as APIResourceType, locale),\n value,\n ]),\n ),\n ]),\n ) as State\n}\n\nexport function getSerializedState(state: State): SerializedState {\n const resourceMap: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n LocalizedGlobalElement: [],\n }\n\n Array.from(state.entries()).forEach(([resourceType, resources]) => {\n const particularResourceMap: { id: string; value: any; locale?: any }[] = []\n\n Array.from(resources.entries()).forEach(([compositeId, value]) => {\n if (value != null) {\n const [id, locale] = parseCompositeId(compositeId)\n console.assert(\n locale == null || isLocalizableAPIResourceType(resourceType),\n `Unexpected locale for non-localizable resource type ${resourceType}`,\n { id, locale },\n )\n\n particularResourceMap.push(locale != null ? { id, value, locale } : { id, value })\n }\n })\n\n resourceMap[resourceType] = particularResourceMap\n })\n\n return resourceMap\n}\n\nexport function getHasAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n locale?: APIResourceLocale<T>,\n): boolean {\n return state.get(resourceType)?.has(compositeId(resourceId, resourceType, locale)) ?? false\n}\n\nexport function getAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n locale?: APIResourceLocale<T>,\n): Extract<APIResource, { __typename: T }> | null {\n const resource = state.get(resourceType)?.get(compositeId(resourceId, resourceType, locale))\n\n return resource?.__typename === resourceType\n ? (resource as Extract<typeof resource, { __typename: T }>)\n : null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ActionTypes.UPDATE_API_CLIENT_CACHE: {\n const { apiResources } = action.payload\n\n return Object.entries(apiResources).reduce((state, [resourceType, cachedResources]) => {\n const resType = resourceType as APIResourceType\n const cached:\n | { id: string; value: APIResource | null; locale?: string | null }[]\n | undefined = cachedResources\n\n const existing = state.get(resType) ?? new Map<CompositeResourceId, APIResource | null>()\n const updated = cached?.reduce((r, { id, value, locale }) => {\n const cid = compositeId(id, resType, locale)\n return r.get(cid) != null ? r : new Map(r).set(cid, value)\n }, existing)\n\n return updated == null || updated === existing\n ? state\n : new Map(state).set(resType, updated)\n }, state)\n }\n\n case ActionTypes.API_RESOURCE_FULFILLED: {\n const { resourceType, resourceId, resource, locale } = action.payload\n return new Map(state).set(\n resourceType,\n new Map(state.get(resourceType)!).set(\n compositeId(resourceId, resourceType, locale),\n resource,\n ),\n )\n }\n\n case ActionTypes.CHANGE_API_RESOURCE: {\n const { resource, locale } = action.payload\n const existingApiResource = getAPIResource(state, resource.__typename, resource.id, locale)\n\n if (deepEqual(existingApiResource, resource)) return state\n\n return new Map(state).set(\n resource.__typename,\n new Map(state.get(resource.__typename)!).set(\n compositeId(resource.id, resource.__typename, locale),\n resource,\n ),\n )\n }\n\n case ActionTypes.EVICT_API_RESOURCE: {\n const { id, locale } = action.payload\n const [resourceType, resourceId] = id.split(':')\n\n if (!isValidAPIResourceType(resourceType)) return state\n\n const resources = new Map(state.get(resourceType as APIResourceType)!)\n\n const deleted = resources.delete(compositeId(resourceId, resourceType, locale))\n\n return deleted ? new Map(state).set(resourceType as APIResourceType, resources) : state\n }\n\n default:\n return state\n }\n}\n"],"mappings":"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","names":["compositeId","state"]}
1
+ {"version":3,"sources":["../../../../src/state/modules/api-resources.ts"],"sourcesContent":["import {\n APIResourceType,\n APIResourceLocale,\n LocalizableAPIResourceType,\n type APIResource,\n} from '../../api'\n\nimport deepEqual from '../../utils/deepEqual'\nimport { Branded } from '../../utils/branded'\n\nimport { type Action, type UnknownAction, isKnownAction } from '../actions'\nimport { ReadOnlyActionTypes } from '../actions/internal/read-only-actions'\nimport { ReadWriteActionTypes } from '../actions/internal/read-write-actions'\nimport { HostActionTypes } from '../host-api'\n\ntype CompositeResourceId = Branded<string, 'CompositeResourceId'>\n\nfunction isValidAPIResourceType(resourceType: string): resourceType is APIResourceType {\n return resourceType in APIResourceType\n}\n\nfunction isLocalizableAPIResourceType(\n resourceType: APIResourceType,\n): resourceType is LocalizableAPIResourceType {\n return resourceType in LocalizableAPIResourceType\n}\n\nfunction compositeId(\n resourceId: string,\n resourceType: APIResourceType,\n locale?: string | null,\n): CompositeResourceId {\n return (\n locale != null && isLocalizableAPIResourceType(resourceType)\n ? `${resourceId}@${locale}`\n : resourceId\n ) as CompositeResourceId\n}\n\nfunction parseCompositeId(compositeId: CompositeResourceId): [string, string | null] {\n const [resourceId, locale] = compositeId.split('@')\n return [resourceId, locale ?? null]\n}\n\nexport type State = Map<APIResourceType, Map<CompositeResourceId, APIResource | null>>\n\nexport type SerializedState = {\n [key in APIResourceType]?: {\n id: string\n value: Extract<APIResource, { __typename: key }> | null\n locale?: APIResourceLocale<key>\n }[]\n}\n\nexport function getInitialState(\n serializedState: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n LocalizedGlobalElement: [],\n },\n): State {\n return new Map(\n Object.entries(serializedState).map(([resourceType, resources]) => [\n resourceType,\n new Map(\n resources.map(({ id, value, locale }) => [\n compositeId(id, resourceType as APIResourceType, locale),\n value,\n ]),\n ),\n ]),\n ) as State\n}\n\nexport function getSerializedState(state: State): SerializedState {\n const resourceMap: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n LocalizedGlobalElement: [],\n }\n\n Array.from(state.entries()).forEach(([resourceType, resources]) => {\n const particularResourceMap: { id: string; value: any; locale?: any }[] = []\n\n Array.from(resources.entries()).forEach(([compositeId, value]) => {\n if (value != null) {\n const [id, locale] = parseCompositeId(compositeId)\n console.assert(\n locale == null || isLocalizableAPIResourceType(resourceType),\n `Unexpected locale for non-localizable resource type ${resourceType}`,\n { id, locale },\n )\n\n particularResourceMap.push(locale != null ? { id, value, locale } : { id, value })\n }\n })\n\n resourceMap[resourceType] = particularResourceMap\n })\n\n return resourceMap\n}\n\nexport function getHasAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n locale?: APIResourceLocale<T>,\n): boolean {\n return state.get(resourceType)?.has(compositeId(resourceId, resourceType, locale)) ?? false\n}\n\nexport function getAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n locale?: APIResourceLocale<T>,\n): Extract<APIResource, { __typename: T }> | null {\n const resource = state.get(resourceType)?.get(compositeId(resourceId, resourceType, locale))\n\n return resource?.__typename === resourceType\n ? (resource as Extract<typeof resource, { __typename: T }>)\n : null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ReadWriteActionTypes.UPDATE_API_CLIENT_CACHE: {\n const { apiResources } = action.payload\n\n return Object.entries(apiResources).reduce((state, [resourceType, cachedResources]) => {\n const resType = resourceType as APIResourceType\n const cached:\n | { id: string; value: APIResource | null; locale?: string | null }[]\n | undefined = cachedResources\n\n const existing = state.get(resType) ?? new Map<CompositeResourceId, APIResource | null>()\n const updated = cached?.reduce((r, { id, value, locale }) => {\n const cid = compositeId(id, resType, locale)\n return r.get(cid) != null ? r : new Map(r).set(cid, value)\n }, existing)\n\n return updated == null || updated === existing\n ? state\n : new Map(state).set(resType, updated)\n }, state)\n }\n\n case ReadOnlyActionTypes.API_RESOURCE_FULFILLED: {\n const { resourceType, resourceId, resource, locale } = action.payload\n return new Map(state).set(\n resourceType,\n new Map(state.get(resourceType)!).set(\n compositeId(resourceId, resourceType, locale),\n resource,\n ),\n )\n }\n\n case HostActionTypes.CHANGE_API_RESOURCE: {\n const { resource, locale } = action.payload\n const existingApiResource = getAPIResource(state, resource.__typename, resource.id, locale)\n\n if (deepEqual(existingApiResource, resource)) return state\n\n return new Map(state).set(\n resource.__typename,\n new Map(state.get(resource.__typename)!).set(\n compositeId(resource.id, resource.__typename, locale),\n resource,\n ),\n )\n }\n\n case HostActionTypes.EVICT_API_RESOURCE: {\n const { id, locale } = action.payload\n const [resourceType, resourceId] = id.split(':')\n\n if (!isValidAPIResourceType(resourceType)) return state\n\n const resources = new Map(state.get(resourceType as APIResourceType)!)\n\n const deleted = resources.delete(compositeId(resourceId, resourceType, locale))\n\n return deleted ? new Map(state).set(resourceType as APIResourceType, resources) : state\n }\n\n default:\n return state\n }\n}\n"],"mappings":"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","names":["compositeId","state"]}
@@ -1,4 +1,5 @@
1
- import { ActionTypes, isKnownAction } from "../actions";
1
+ import { isKnownAction } from "../actions";
2
+ import { BuilderActionTypes } from "../builder-api/actions";
2
3
  import {
3
4
  getBreakpoint
4
5
  } from "@makeswift/controls";
@@ -34,7 +35,7 @@ function reducer(state = getInitialState(), action) {
34
35
  if (!isKnownAction(action))
35
36
  return state;
36
37
  switch (action.type) {
37
- case ActionTypes.SET_BREAKPOINTS: {
38
+ case BuilderActionTypes.SET_BREAKPOINTS: {
38
39
  const breakpoints = action.payload.breakpoints;
39
40
  if (breakpoints.length === 0)
40
41
  throw new Error("Breakpoints cannot be empty.");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/state/modules/breakpoints.ts"],"sourcesContent":["import { type Breakpoint, type Breakpoints } from '@makeswift/controls'\n\nimport { type Action, type UnknownAction, ActionTypes, isKnownAction } from '../actions'\n\nexport {\n getBreakpoint,\n type Breakpoint,\n type BreakpointId,\n type Breakpoints,\n} from '@makeswift/controls'\n\nexport type State = Breakpoints\n\nexport const DefaultBreakpointID = {\n Desktop: 'desktop',\n Tablet: 'tablet',\n Mobile: 'mobile',\n} as const\n\ntype DefaultBreakpointID = (typeof DefaultBreakpointID)[keyof typeof DefaultBreakpointID]\n\nexport const DEFAULT_BREAKPOINTS: Breakpoints = [\n {\n id: DefaultBreakpointID.Desktop,\n label: 'Desktop',\n minWidth: 769,\n },\n {\n id: DefaultBreakpointID.Tablet,\n label: 'Tablet',\n minWidth: 576,\n maxWidth: 768,\n viewportWidth: 760,\n },\n {\n id: DefaultBreakpointID.Mobile,\n label: 'Mobile',\n maxWidth: 575,\n viewportWidth: 390,\n },\n]\n\nexport function getInitialState(breakpoints = DEFAULT_BREAKPOINTS): State {\n return breakpoints\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ActionTypes.SET_BREAKPOINTS: {\n const breakpoints = action.payload.breakpoints\n\n if (breakpoints.length === 0) throw new Error('Breakpoints cannot be empty.')\n\n return breakpoints\n }\n\n default:\n return state\n }\n}\n\nexport type BreakpointsInput = Record<string, { width: number; label?: string; viewport?: number }>\n\nexport function parseBreakpointsInput(input: BreakpointsInput): Breakpoints {\n validateBreakpointsInput(input)\n\n const sorted = Object.entries(input)\n .map(([id, value]) => ({ ...value, id }))\n .sort((a, b) => b.width - a.width) // Sort by width in descending order\n\n const transformed = sorted.reduce(\n (prev, curr, index, array) => {\n const { width, viewport, id, label } = curr\n const next = array[index + 1]\n\n const breakpoint: Breakpoint = {\n id,\n ...(label && { label }),\n ...(next && { minWidth: next.width + 1 }),\n maxWidth: width,\n viewportWidth: viewport ?? width,\n }\n\n return [...prev, breakpoint]\n },\n [\n { id: DefaultBreakpointID.Desktop, label: 'Desktop', minWidth: sorted[0].width + 1 },\n ] as Breakpoints,\n )\n\n return transformed\n}\n\nfunction validateBreakpointsInput(input: BreakpointsInput) {\n if (DefaultBreakpointID.Desktop in input) {\n throw new Error(\n `Cannot change the base breakpoint. \"${DefaultBreakpointID.Desktop}\" is reserved as the base breakpoint.`,\n )\n }\n\n if (Object.keys(input).length === 0) {\n throw new Error(`Breakpoints cannot be empty. You must provide at least one breakpoint.`)\n }\n\n const sorted = Object.entries(input)\n .map(([id, value]) => ({ ...value, id }))\n .sort((a, b) => b.width - a.width) // Sort by width in descending order\n\n sorted.forEach(({ id, width, viewport }, index, array) => {\n // This is only valid for desktop-first. We need to check the inverse for mobile-first.\n if (viewport && viewport > width) {\n throw new Error(\n `Error on breakpoint \"${id}\". Viewport cannot be greater than its width.\n \"${id}\" has a viewport of ${viewport}px and a width of ${width}px.`,\n )\n }\n\n const next = array[index + 1]\n\n if (viewport && next && viewport < next.width) {\n throw new Error(\n `Error on breakpoint \"${id}\". Viewport cannot be smaller than the next breakpoint's width.\n \"${id}\" has a viewport of ${viewport}px and the next breakpoint \"${next.id}\" has a width of ${next.width}px.`,\n )\n }\n\n if (next && width === next.width) {\n throw new Error(\n `Breakpoints cannot have the same width. \"${id}\" and \"${next.id}\" have the same width`,\n )\n }\n })\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/state/modules/breakpoints.ts"],"sourcesContent":["import { type Breakpoint, type Breakpoints } from '@makeswift/controls'\n\nimport { type Action, type UnknownAction, isKnownAction } from '../actions'\nimport { BuilderActionTypes } from '../builder-api/actions'\n\nexport {\n getBreakpoint,\n type Breakpoint,\n type BreakpointId,\n type Breakpoints,\n} from '@makeswift/controls'\n\nexport type State = Breakpoints\n\nexport const DefaultBreakpointID = {\n Desktop: 'desktop',\n Tablet: 'tablet',\n Mobile: 'mobile',\n} as const\n\ntype DefaultBreakpointID = (typeof DefaultBreakpointID)[keyof typeof DefaultBreakpointID]\n\nexport const DEFAULT_BREAKPOINTS: Breakpoints = [\n {\n id: DefaultBreakpointID.Desktop,\n label: 'Desktop',\n minWidth: 769,\n },\n {\n id: DefaultBreakpointID.Tablet,\n label: 'Tablet',\n minWidth: 576,\n maxWidth: 768,\n viewportWidth: 760,\n },\n {\n id: DefaultBreakpointID.Mobile,\n label: 'Mobile',\n maxWidth: 575,\n viewportWidth: 390,\n },\n]\n\nexport function getInitialState(breakpoints = DEFAULT_BREAKPOINTS): State {\n return breakpoints\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case BuilderActionTypes.SET_BREAKPOINTS: {\n const breakpoints = action.payload.breakpoints\n\n if (breakpoints.length === 0) throw new Error('Breakpoints cannot be empty.')\n\n return breakpoints\n }\n\n default:\n return state\n }\n}\n\nexport type BreakpointsInput = Record<string, { width: number; label?: string; viewport?: number }>\n\nexport function parseBreakpointsInput(input: BreakpointsInput): Breakpoints {\n validateBreakpointsInput(input)\n\n const sorted = Object.entries(input)\n .map(([id, value]) => ({ ...value, id }))\n .sort((a, b) => b.width - a.width) // Sort by width in descending order\n\n const transformed = sorted.reduce(\n (prev, curr, index, array) => {\n const { width, viewport, id, label } = curr\n const next = array[index + 1]\n\n const breakpoint: Breakpoint = {\n id,\n ...(label && { label }),\n ...(next && { minWidth: next.width + 1 }),\n maxWidth: width,\n viewportWidth: viewport ?? width,\n }\n\n return [...prev, breakpoint]\n },\n [\n { id: DefaultBreakpointID.Desktop, label: 'Desktop', minWidth: sorted[0].width + 1 },\n ] as Breakpoints,\n )\n\n return transformed\n}\n\nfunction validateBreakpointsInput(input: BreakpointsInput) {\n if (DefaultBreakpointID.Desktop in input) {\n throw new Error(\n `Cannot change the base breakpoint. \"${DefaultBreakpointID.Desktop}\" is reserved as the base breakpoint.`,\n )\n }\n\n if (Object.keys(input).length === 0) {\n throw new Error(`Breakpoints cannot be empty. You must provide at least one breakpoint.`)\n }\n\n const sorted = Object.entries(input)\n .map(([id, value]) => ({ ...value, id }))\n .sort((a, b) => b.width - a.width) // Sort by width in descending order\n\n sorted.forEach(({ id, width, viewport }, index, array) => {\n // This is only valid for desktop-first. We need to check the inverse for mobile-first.\n if (viewport && viewport > width) {\n throw new Error(\n `Error on breakpoint \"${id}\". Viewport cannot be greater than its width.\n \"${id}\" has a viewport of ${viewport}px and a width of ${width}px.`,\n )\n }\n\n const next = array[index + 1]\n\n if (viewport && next && viewport < next.width) {\n throw new Error(\n `Error on breakpoint \"${id}\". Viewport cannot be smaller than the next breakpoint's width.\n \"${id}\" has a viewport of ${viewport}px and the next breakpoint \"${next.id}\" has a width of ${next.width}px.`,\n )\n }\n\n if (next && width === next.width) {\n throw new Error(\n `Breakpoints cannot have the same width. \"${id}\" and \"${next.id}\" have the same width`,\n )\n }\n })\n}\n"],"mappings":"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","names":[]}
@@ -1,4 +1,5 @@
1
- import { ActionTypes, isKnownAction } from "../actions";
1
+ import { isKnownAction } from "../actions";
2
+ import { HostActionTypes } from "../host-api";
2
3
  const BuilderEditMode = {
3
4
  BUILD: "build",
4
5
  CONTENT: "content",
@@ -11,7 +12,7 @@ function reducer(state = getInitialState(), action) {
11
12
  if (!isKnownAction(action))
12
13
  return state;
13
14
  switch (action.type) {
14
- case ActionTypes.SET_BUILDER_EDIT_MODE:
15
+ case HostActionTypes.SET_BUILDER_EDIT_MODE:
15
16
  return action.payload.editMode;
16
17
  default:
17
18
  return state;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/state/modules/builder-edit-mode.ts"],"sourcesContent":["import { type Action, type UnknownAction, ActionTypes, isKnownAction } from '../actions'\n\nexport const BuilderEditMode = {\n BUILD: 'build',\n CONTENT: 'content',\n INTERACT: 'interact',\n} as const\n\nexport type BuilderEditMode = (typeof BuilderEditMode)[keyof typeof BuilderEditMode]\n\nexport type State = BuilderEditMode | null\n\nexport function getInitialState(): State {\n return null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ActionTypes.SET_BUILDER_EDIT_MODE:\n return action.payload.editMode\n\n default:\n return state\n }\n}\n"],"mappings":"AAAA,SAA0C,aAAa,qBAAqB;AAErE,MAAM,kBAAkB;AAAA,EAC7B,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AACZ;AAMO,SAAS,kBAAyB;AACvC,SAAO;AACT;AAEO,SAAS,QAAQ,QAAe,gBAAgB,GAAG,QAAuC;AAC/F,MAAI,CAAC,cAAc,MAAM;AAAG,WAAO;AAEnC,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,YAAY;AACf,aAAO,OAAO,QAAQ;AAAA,IAExB;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/state/modules/builder-edit-mode.ts"],"sourcesContent":["import { type Action, type UnknownAction, isKnownAction } from '../actions'\nimport { HostActionTypes } from '../host-api'\n\nexport const BuilderEditMode = {\n BUILD: 'build',\n CONTENT: 'content',\n INTERACT: 'interact',\n} as const\n\nexport type BuilderEditMode = (typeof BuilderEditMode)[keyof typeof BuilderEditMode]\n\nexport type State = BuilderEditMode | null\n\nexport function getInitialState(): State {\n return null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case HostActionTypes.SET_BUILDER_EDIT_MODE:\n return action.payload.editMode\n\n default:\n return state\n }\n}\n"],"mappings":"AAAA,SAA0C,qBAAqB;AAC/D,SAAS,uBAAuB;AAEzB,MAAM,kBAAkB;AAAA,EAC7B,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AACZ;AAMO,SAAS,kBAAyB;AACvC,SAAO;AACT;AAEO,SAAS,QAAQ,QAAe,gBAAgB,GAAG,QAAuC;AAC/F,MAAI,CAAC,cAAc,MAAM;AAAG,WAAO;AAEnC,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,gBAAgB;AACnB,aAAO,OAAO,QAAQ;AAAA,IAExB;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
@@ -1,4 +1,5 @@
1
- import { ActionTypes, isKnownAction } from "../actions";
1
+ import { isKnownAction } from "../actions";
2
+ import { ReadOnlyActionTypes } from "../actions/internal/read-only-actions";
2
3
  const ComponentIcon = {
3
4
  Billing: "billing",
4
5
  Bolt: "bolt",
@@ -38,9 +39,9 @@ function reducer(state = getInitialState(), action) {
38
39
  if (!isKnownAction(action))
39
40
  return state;
40
41
  switch (action.type) {
41
- case ActionTypes.REGISTER_COMPONENT:
42
+ case ReadOnlyActionTypes.REGISTER_COMPONENT:
42
43
  return new Map(state).set(action.payload.type, action.payload.meta);
43
- case ActionTypes.UNREGISTER_COMPONENT: {
44
+ case ReadOnlyActionTypes.UNREGISTER_COMPONENT: {
44
45
  const nextState = new Map(state);
45
46
  const deleted = nextState.delete(action.payload.type);
46
47
  return deleted ? nextState : state;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/state/modules/components-meta.ts"],"sourcesContent":["import { type Action, type UnknownAction, ActionTypes, isKnownAction } from '../actions'\n\nexport const ComponentIcon = {\n Billing: 'billing',\n Bolt: 'bolt',\n Button: 'button',\n Carousel: 'carousel',\n Chats: 'chats',\n Code: 'code',\n Countdown: 'countdown',\n Cube: 'cube',\n Database: 'database',\n Divider: 'divider',\n Form: 'form',\n Gallery: 'gallery',\n Help: 'help',\n Image: 'image',\n Layout: 'layout',\n Lock: 'lock',\n Navigation: 'navigation',\n SocialLinks: 'social-links',\n Star: 'star',\n Text: 'text',\n Users: 'users',\n Video: 'video',\n} as const\n\nexport type ComponentIcon = (typeof ComponentIcon)[keyof typeof ComponentIcon]\n\nexport type ComponentMeta = {\n label: string\n icon: ComponentIcon\n hidden: boolean\n description?: string\n builtinSuspense?: boolean\n}\n\nexport type State = Map<string, ComponentMeta>\n\nexport function getInitialState({\n componentsMeta = new Map(),\n}: { componentsMeta?: Map<string, ComponentMeta> } = {}): State {\n return componentsMeta\n}\n\nexport function getComponentsMeta(state: State): Map<string, ComponentMeta> {\n return state\n}\n\nexport function getComponentMeta(state: State, type: string): ComponentMeta | null {\n return getComponentsMeta(state).get(type) ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT:\n return new Map(state).set(action.payload.type, action.payload.meta)\n\n case ActionTypes.UNREGISTER_COMPONENT: {\n const nextState = new Map(state)\n\n const deleted = nextState.delete(action.payload.type)\n\n return deleted ? nextState : state\n }\n\n default:\n return state\n }\n}\n"],"mappings":"AAAA,SAA0C,aAAa,qBAAqB;AAErE,MAAM,gBAAgB;AAAA,EAC3B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AACT;AAcO,SAAS,gBAAgB;AAAA,EAC9B,iBAAiB,oBAAI,IAAI;AAC3B,IAAqD,CAAC,GAAU;AAC9D,SAAO;AACT;AAEO,SAAS,kBAAkB,OAA0C;AAC1E,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAc,MAAoC;AACjF,SAAO,kBAAkB,KAAK,EAAE,IAAI,IAAI,KAAK;AAC/C;AAEO,SAAS,QAAQ,QAAe,gBAAgB,GAAG,QAAuC;AAC/F,MAAI,CAAC,cAAc,MAAM;AAAG,WAAO;AAEnC,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,YAAY;AACf,aAAO,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,QAAQ,MAAM,OAAO,QAAQ,IAAI;AAAA,IAEpE,KAAK,YAAY,sBAAsB;AACrC,YAAM,YAAY,IAAI,IAAI,KAAK;AAE/B,YAAM,UAAU,UAAU,OAAO,OAAO,QAAQ,IAAI;AAEpD,aAAO,UAAU,YAAY;AAAA,IAC/B;AAAA,IAEA;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/state/modules/components-meta.ts"],"sourcesContent":["import { type Action, type UnknownAction, isKnownAction } from '../actions'\nimport { ReadOnlyActionTypes } from '../actions/internal/read-only-actions'\n\nexport const ComponentIcon = {\n Billing: 'billing',\n Bolt: 'bolt',\n Button: 'button',\n Carousel: 'carousel',\n Chats: 'chats',\n Code: 'code',\n Countdown: 'countdown',\n Cube: 'cube',\n Database: 'database',\n Divider: 'divider',\n Form: 'form',\n Gallery: 'gallery',\n Help: 'help',\n Image: 'image',\n Layout: 'layout',\n Lock: 'lock',\n Navigation: 'navigation',\n SocialLinks: 'social-links',\n Star: 'star',\n Text: 'text',\n Users: 'users',\n Video: 'video',\n} as const\n\nexport type ComponentIcon = (typeof ComponentIcon)[keyof typeof ComponentIcon]\n\nexport type ComponentMeta = {\n label: string\n icon: ComponentIcon\n hidden: boolean\n description?: string\n builtinSuspense?: boolean\n}\n\nexport type State = Map<string, ComponentMeta>\n\nexport function getInitialState({\n componentsMeta = new Map(),\n}: { componentsMeta?: Map<string, ComponentMeta> } = {}): State {\n return componentsMeta\n}\n\nexport function getComponentsMeta(state: State): Map<string, ComponentMeta> {\n return state\n}\n\nexport function getComponentMeta(state: State, type: string): ComponentMeta | null {\n return getComponentsMeta(state).get(type) ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ReadOnlyActionTypes.REGISTER_COMPONENT:\n return new Map(state).set(action.payload.type, action.payload.meta)\n\n case ReadOnlyActionTypes.UNREGISTER_COMPONENT: {\n const nextState = new Map(state)\n\n const deleted = nextState.delete(action.payload.type)\n\n return deleted ? nextState : state\n }\n\n default:\n return state\n }\n}\n"],"mappings":"AAAA,SAA0C,qBAAqB;AAC/D,SAAS,2BAA2B;AAE7B,MAAM,gBAAgB;AAAA,EAC3B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AACT;AAcO,SAAS,gBAAgB;AAAA,EAC9B,iBAAiB,oBAAI,IAAI;AAC3B,IAAqD,CAAC,GAAU;AAC9D,SAAO;AACT;AAEO,SAAS,kBAAkB,OAA0C;AAC1E,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAc,MAAoC;AACjF,SAAO,kBAAkB,KAAK,EAAE,IAAI,IAAI,KAAK;AAC/C;AAEO,SAAS,QAAQ,QAAe,gBAAgB,GAAG,QAAuC;AAC/F,MAAI,CAAC,cAAc,MAAM;AAAG,WAAO;AAEnC,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,oBAAoB;AACvB,aAAO,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,QAAQ,MAAM,OAAO,QAAQ,IAAI;AAAA,IAEpE,KAAK,oBAAoB,sBAAsB;AAC7C,YAAM,YAAY,IAAI,IAAI,KAAK;AAE/B,YAAM,UAAU,UAAU,OAAO,OAAO,QAAQ,IAAI;AAEpD,aAAO,UAAU,YAAY;AAAA,IAC/B;AAAA,IAEA;AACE,aAAO;AAAA,EACX;AACF;","names":[]}