@makeswift/runtime 0.22.3 → 0.23.0-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 (499) hide show
  1. package/dist/cjs/api/{graphql/fragments.js → fragments.js} +1 -1
  2. package/dist/cjs/api/fragments.js.map +1 -0
  3. package/dist/cjs/api/index.js +4 -4
  4. package/dist/cjs/api/index.js.map +1 -1
  5. package/dist/cjs/api/react.js +46 -46
  6. package/dist/cjs/api/react.js.map +1 -1
  7. package/dist/cjs/api/{graphql/types.js → types.js} +9 -4
  8. package/dist/cjs/api/types.js.map +1 -0
  9. package/dist/cjs/builder/serialization/control-serialization.js +13 -9
  10. package/dist/cjs/builder/serialization/control-serialization.js.map +1 -1
  11. package/dist/cjs/components/builtin/Form/Form.js +2 -2
  12. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  13. package/dist/cjs/components/builtin/Slot/Slot.js +33 -0
  14. package/dist/cjs/components/builtin/Slot/Slot.js.map +1 -0
  15. package/dist/cjs/components/builtin/Slot/index.js +35 -0
  16. package/dist/cjs/components/builtin/Slot/index.js.map +1 -0
  17. package/dist/cjs/components/builtin/Slot/register.js +56 -0
  18. package/dist/cjs/components/builtin/Slot/register.js.map +1 -0
  19. package/dist/cjs/components/builtin/constants.js +1 -0
  20. package/dist/cjs/components/builtin/constants.js.map +1 -1
  21. package/dist/cjs/components/builtin/index.js +3 -0
  22. package/dist/cjs/components/builtin/index.js.map +1 -1
  23. package/dist/cjs/components/builtin/register.js +9 -6
  24. package/dist/cjs/components/builtin/register.js.map +1 -1
  25. package/dist/cjs/components/hooks/usePageSnippets.js +2 -2
  26. package/dist/cjs/components/hooks/usePageSnippets.js.map +1 -1
  27. package/dist/cjs/components/page/Page.js +2 -3
  28. package/dist/cjs/components/page/Page.js.map +1 -1
  29. package/dist/cjs/components/page/PageHead.js +2 -2
  30. package/dist/cjs/components/page/PageHead.js.map +1 -1
  31. package/dist/cjs/components/shared/BackgroundsContainer/index.js +5 -3
  32. package/dist/cjs/components/shared/BackgroundsContainer/index.js.map +1 -1
  33. package/dist/cjs/controls/index.js +10 -0
  34. package/dist/cjs/controls/index.js.map +1 -1
  35. package/dist/cjs/core/index.js +4 -2
  36. package/dist/cjs/core/index.js.map +1 -1
  37. package/dist/cjs/index.js +2 -2
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/jest-setup.js +2 -1
  40. package/dist/cjs/jest-setup.js.map +1 -1
  41. package/dist/cjs/next/api-handler/handlers/manifest.js +4 -2
  42. package/dist/cjs/next/api-handler/handlers/manifest.js.map +1 -1
  43. package/dist/cjs/next/api-handler/handlers/webhook/index.js +55 -0
  44. package/dist/cjs/next/api-handler/handlers/webhook/index.js.map +1 -0
  45. package/dist/cjs/next/api-handler/handlers/webhook/site-published.js +36 -0
  46. package/dist/cjs/next/api-handler/handlers/webhook/site-published.js.map +1 -0
  47. package/dist/cjs/next/api-handler/handlers/webhook/types.js +46 -0
  48. package/dist/cjs/next/api-handler/handlers/webhook/types.js.map +1 -0
  49. package/dist/cjs/next/api-handler/index.js +7 -7
  50. package/dist/cjs/next/api-handler/index.js.map +1 -1
  51. package/dist/cjs/next/client.js +136 -18
  52. package/dist/cjs/next/client.js.map +1 -1
  53. package/dist/cjs/next/components/MakeswiftComponent.js +50 -0
  54. package/dist/cjs/next/components/MakeswiftComponent.js.map +1 -0
  55. package/dist/cjs/next/components/Slot.js +50 -0
  56. package/dist/cjs/next/components/Slot.js.map +1 -0
  57. package/dist/cjs/next/components/SlotProvider.js +41 -0
  58. package/dist/cjs/next/components/SlotProvider.js.map +1 -0
  59. package/dist/cjs/next/components/page.js +20 -18
  60. package/dist/cjs/next/components/page.js.map +1 -1
  61. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js +6 -5
  62. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  63. package/dist/cjs/next/components/tests/prop-controllers/page-prop-controller.js +6 -6
  64. package/dist/cjs/next/components/tests/prop-controllers/page-prop-controller.js.map +1 -1
  65. package/dist/cjs/next/document.js +1 -1
  66. package/dist/cjs/next/document.js.map +1 -1
  67. package/dist/cjs/next/draft-mode/draft-mode-script.js +17 -3
  68. package/dist/cjs/next/draft-mode/draft-mode-script.js.map +1 -1
  69. package/dist/cjs/next/index.js +10 -4
  70. package/dist/cjs/next/index.js.map +1 -1
  71. package/dist/cjs/next/preview-mode.js +4 -1
  72. package/dist/cjs/next/preview-mode.js.map +1 -1
  73. package/dist/cjs/prop-controllers/introspection.js +1 -1
  74. package/dist/cjs/prop-controllers/introspection.js.map +1 -1
  75. package/dist/cjs/react.js +2 -4
  76. package/dist/cjs/react.js.map +1 -1
  77. package/dist/cjs/runtimes/react/components/Document.js +3 -2
  78. package/dist/cjs/runtimes/react/components/Document.js.map +1 -1
  79. package/dist/cjs/runtimes/react/components/{DocumentReference.js → DocumentRoot.js} +9 -9
  80. package/dist/cjs/runtimes/react/components/DocumentRoot.js.map +1 -0
  81. package/dist/cjs/runtimes/react/components/Element.js +10 -22
  82. package/dist/cjs/runtimes/react/components/Element.js.map +1 -1
  83. package/dist/cjs/runtimes/react/components/ElementReference.js +3 -1
  84. package/dist/cjs/runtimes/react/components/ElementReference.js.map +1 -1
  85. package/dist/cjs/runtimes/react/components/ElementRegistration.js +55 -0
  86. package/dist/cjs/runtimes/react/components/ElementRegistration.js.map +1 -0
  87. package/dist/cjs/runtimes/react/components/LiveProvider.js +10 -8
  88. package/dist/cjs/runtimes/react/components/LiveProvider.js.map +1 -1
  89. package/dist/cjs/runtimes/react/components/PreviewProvider.js +9 -22
  90. package/dist/cjs/runtimes/react/components/PreviewProvider.js.map +1 -1
  91. package/dist/cjs/runtimes/react/components/RuntimeProvider.js +23 -5
  92. package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
  93. package/dist/cjs/runtimes/react/controls/group.js +45 -0
  94. package/dist/cjs/runtimes/react/controls/group.js.map +1 -0
  95. package/dist/cjs/runtimes/react/hooks/makeswift-api.js +20 -18
  96. package/dist/cjs/runtimes/react/hooks/makeswift-api.js.map +1 -1
  97. package/dist/cjs/runtimes/react/hooks/use-cache-data.js +35 -0
  98. package/dist/cjs/runtimes/react/hooks/use-cache-data.js.map +1 -0
  99. package/dist/cjs/runtimes/react/hooks/use-dispatch.js +1 -2
  100. package/dist/cjs/runtimes/react/hooks/use-dispatch.js.map +1 -1
  101. package/dist/cjs/runtimes/react/hooks/use-document-context.js +49 -0
  102. package/dist/cjs/runtimes/react/hooks/use-document-context.js.map +1 -0
  103. package/dist/cjs/runtimes/react/hooks/use-element-id.js +2 -2
  104. package/dist/cjs/runtimes/react/hooks/use-element-id.js.map +1 -1
  105. package/dist/cjs/{next/context/react-runtime.js → runtimes/react/hooks/use-react-runtime.js} +12 -16
  106. package/dist/cjs/runtimes/react/hooks/use-react-runtime.js.map +1 -0
  107. package/dist/cjs/runtimes/react/hooks/use-register-document.js +42 -0
  108. package/dist/cjs/runtimes/react/hooks/use-register-document.js.map +1 -0
  109. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js +2 -2
  110. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  111. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js +6 -6
  112. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  113. package/dist/cjs/runtimes/react/hooks/use-store.js +6 -3
  114. package/dist/cjs/runtimes/react/hooks/use-store.js.map +1 -1
  115. package/dist/cjs/runtimes/react/hooks/use-universal-dispatch.js +38 -0
  116. package/dist/cjs/runtimes/react/hooks/use-universal-dispatch.js.map +1 -0
  117. package/dist/cjs/{next/context/makeswift-host-api-client.js → runtimes/react/host-api-client.js} +4 -4
  118. package/dist/cjs/runtimes/react/host-api-client.js.map +1 -0
  119. package/dist/cjs/runtimes/react/index.js +8 -8
  120. package/dist/cjs/runtimes/react/index.js.map +1 -1
  121. package/dist/cjs/runtimes/react/react-runtime.js +0 -24
  122. package/dist/cjs/runtimes/react/react-runtime.js.map +1 -1
  123. package/dist/cjs/runtimes/react/runtime-core.js +2 -17
  124. package/dist/cjs/runtimes/react/runtime-core.js.map +1 -1
  125. package/dist/cjs/state/actions.js +33 -16
  126. package/dist/cjs/state/actions.js.map +1 -1
  127. package/dist/cjs/state/makeswift-api-client.js +98 -18
  128. package/dist/cjs/state/makeswift-api-client.js.map +1 -1
  129. package/dist/cjs/{runtimes/react/hooks/use-document-key.js → state/mixins/setup-teardown.js} +12 -13
  130. package/dist/cjs/state/mixins/setup-teardown.js.map +1 -0
  131. package/dist/cjs/state/modules/api-resources.js +62 -24
  132. package/dist/cjs/state/modules/api-resources.js.map +1 -1
  133. package/dist/cjs/state/modules/element-trees.js +14 -7
  134. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  135. package/dist/cjs/state/modules/localized-resources-map.js +80 -0
  136. package/dist/cjs/state/modules/localized-resources-map.js.map +1 -0
  137. package/dist/cjs/state/modules/read-only-documents.js +16 -13
  138. package/dist/cjs/state/modules/read-only-documents.js.map +1 -1
  139. package/dist/cjs/state/modules/read-write-documents.js +9 -8
  140. package/dist/cjs/state/modules/read-write-documents.js.map +1 -1
  141. package/dist/cjs/state/react-builder-preview.js +18 -61
  142. package/dist/cjs/state/react-builder-preview.js.map +1 -1
  143. package/dist/cjs/state/react-page.js +64 -8
  144. package/dist/cjs/state/react-page.js.map +1 -1
  145. package/dist/cjs/{api/resource-types.js → utils/branded.js} +3 -10
  146. package/dist/cjs/utils/branded.js.map +1 -0
  147. package/dist/cjs/utils/canonicalize.js +39 -0
  148. package/dist/cjs/utils/canonicalize.js.map +1 -0
  149. package/dist/cjs/utils/deterministic-uuid.js +35 -0
  150. package/dist/cjs/utils/deterministic-uuid.js.map +1 -0
  151. package/dist/cjs/utils/is-server.js +31 -0
  152. package/dist/cjs/utils/is-server.js.map +1 -0
  153. package/dist/cjs/utils/serializeState.js +42 -0
  154. package/dist/cjs/utils/serializeState.js.map +1 -0
  155. package/dist/cjs/utils/tests/element-data-test-test.js +10 -9
  156. package/dist/cjs/utils/tests/element-data-test-test.js.map +1 -1
  157. package/dist/esm/api/fragments.js +6 -0
  158. package/dist/esm/api/fragments.js.map +1 -0
  159. package/dist/esm/api/index.js +2 -2
  160. package/dist/esm/api/index.js.map +1 -1
  161. package/dist/esm/api/react.js +45 -46
  162. package/dist/esm/api/react.js.map +1 -1
  163. package/dist/esm/api/{graphql/types.js → types.js} +7 -3
  164. package/dist/esm/api/types.js.map +1 -0
  165. package/dist/esm/builder/serialization/control-serialization.js +19 -11
  166. package/dist/esm/builder/serialization/control-serialization.js.map +1 -1
  167. package/dist/esm/components/builtin/Form/Form.js +1 -1
  168. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  169. package/dist/esm/components/builtin/Slot/Slot.js +13 -0
  170. package/dist/esm/components/builtin/Slot/Slot.js.map +1 -0
  171. package/dist/esm/components/builtin/Slot/index.js +5 -0
  172. package/dist/esm/components/builtin/Slot/index.js.map +1 -0
  173. package/dist/esm/components/builtin/Slot/register.js +22 -0
  174. package/dist/esm/components/builtin/Slot/register.js.map +1 -0
  175. package/dist/esm/components/builtin/constants.js +1 -0
  176. package/dist/esm/components/builtin/constants.js.map +1 -1
  177. package/dist/esm/components/builtin/index.js +8 -6
  178. package/dist/esm/components/builtin/index.js.map +1 -1
  179. package/dist/esm/components/builtin/register.js +3 -0
  180. package/dist/esm/components/builtin/register.js.map +1 -1
  181. package/dist/esm/components/hooks/usePageSnippets.js +1 -1
  182. package/dist/esm/components/hooks/usePageSnippets.js.map +1 -1
  183. package/dist/esm/components/page/Page.js +3 -4
  184. package/dist/esm/components/page/Page.js.map +1 -1
  185. package/dist/esm/components/page/PageHead.js +1 -1
  186. package/dist/esm/components/page/PageHead.js.map +1 -1
  187. package/dist/esm/components/shared/BackgroundsContainer/index.js +5 -3
  188. package/dist/esm/components/shared/BackgroundsContainer/index.js.map +1 -1
  189. package/dist/esm/controls/index.js +17 -7
  190. package/dist/esm/controls/index.js.map +1 -1
  191. package/dist/esm/core/index.js +4 -2
  192. package/dist/esm/core/index.js.map +1 -1
  193. package/dist/esm/index.js +2 -2
  194. package/dist/esm/index.js.map +1 -1
  195. package/dist/esm/jest-setup.js +2 -1
  196. package/dist/esm/jest-setup.js.map +1 -1
  197. package/dist/esm/next/api-handler/handlers/manifest.js +4 -2
  198. package/dist/esm/next/api-handler/handlers/manifest.js.map +1 -1
  199. package/dist/esm/next/api-handler/handlers/webhook/index.js +38 -0
  200. package/dist/esm/next/api-handler/handlers/webhook/index.js.map +1 -0
  201. package/dist/esm/next/api-handler/handlers/webhook/site-published.js +11 -0
  202. package/dist/esm/next/api-handler/handlers/webhook/site-published.js.map +1 -0
  203. package/dist/esm/next/api-handler/handlers/webhook/types.js +21 -0
  204. package/dist/esm/next/api-handler/handlers/webhook/types.js.map +1 -0
  205. package/dist/esm/next/api-handler/index.js +7 -7
  206. package/dist/esm/next/api-handler/index.js.map +1 -1
  207. package/dist/esm/next/client.js +133 -17
  208. package/dist/esm/next/client.js.map +1 -1
  209. package/dist/esm/next/components/MakeswiftComponent.js +26 -0
  210. package/dist/esm/next/components/MakeswiftComponent.js.map +1 -0
  211. package/dist/esm/next/components/Slot.js +16 -0
  212. package/dist/esm/next/components/Slot.js.map +1 -0
  213. package/dist/esm/next/components/SlotProvider.js +17 -0
  214. package/dist/esm/next/components/SlotProvider.js.map +1 -0
  215. package/dist/esm/next/components/page.js +24 -20
  216. package/dist/esm/next/components/page.js.map +1 -1
  217. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js +4 -3
  218. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  219. package/dist/esm/next/components/tests/prop-controllers/page-prop-controller.js +3 -3
  220. package/dist/esm/next/components/tests/prop-controllers/page-prop-controller.js.map +1 -1
  221. package/dist/esm/next/document.js +1 -1
  222. package/dist/esm/next/document.js.map +1 -1
  223. package/dist/esm/next/draft-mode/draft-mode-script.js +7 -3
  224. package/dist/esm/next/draft-mode/draft-mode-script.js.map +1 -1
  225. package/dist/esm/next/index.js +6 -2
  226. package/dist/esm/next/index.js.map +1 -1
  227. package/dist/esm/next/preview-mode.js +4 -1
  228. package/dist/esm/next/preview-mode.js.map +1 -1
  229. package/dist/esm/prop-controllers/introspection.js +2 -2
  230. package/dist/esm/prop-controllers/introspection.js.map +1 -1
  231. package/dist/esm/react.js +2 -4
  232. package/dist/esm/react.js.map +1 -1
  233. package/dist/esm/runtimes/react/components/Document.js +3 -2
  234. package/dist/esm/runtimes/react/components/Document.js.map +1 -1
  235. package/dist/esm/runtimes/react/components/{DocumentReference.js → DocumentRoot.js} +7 -7
  236. package/dist/esm/runtimes/react/components/DocumentRoot.js.map +1 -0
  237. package/dist/esm/runtimes/react/components/Element.js +11 -23
  238. package/dist/esm/runtimes/react/components/Element.js.map +1 -1
  239. package/dist/esm/runtimes/react/components/ElementReference.js +3 -1
  240. package/dist/esm/runtimes/react/components/ElementReference.js.map +1 -1
  241. package/dist/esm/runtimes/react/components/ElementRegistration.js +31 -0
  242. package/dist/esm/runtimes/react/components/ElementRegistration.js.map +1 -0
  243. package/dist/esm/runtimes/react/components/LiveProvider.js +9 -7
  244. package/dist/esm/runtimes/react/components/LiveProvider.js.map +1 -1
  245. package/dist/esm/runtimes/react/components/PreviewProvider.js +8 -21
  246. package/dist/esm/runtimes/react/components/PreviewProvider.js.map +1 -1
  247. package/dist/esm/runtimes/react/components/RuntimeProvider.js +23 -5
  248. package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
  249. package/dist/esm/runtimes/react/controls/group.js +23 -0
  250. package/dist/esm/runtimes/react/controls/group.js.map +1 -0
  251. package/dist/esm/runtimes/react/hooks/makeswift-api.js +11 -9
  252. package/dist/esm/runtimes/react/hooks/makeswift-api.js.map +1 -1
  253. package/dist/esm/runtimes/react/hooks/use-cache-data.js +11 -0
  254. package/dist/esm/runtimes/react/hooks/use-cache-data.js.map +1 -0
  255. package/dist/esm/runtimes/react/hooks/use-dispatch.js +2 -3
  256. package/dist/esm/runtimes/react/hooks/use-dispatch.js.map +1 -1
  257. package/dist/esm/runtimes/react/hooks/use-document-context.js +22 -0
  258. package/dist/esm/runtimes/react/hooks/use-document-context.js.map +1 -0
  259. package/dist/esm/runtimes/react/hooks/use-element-id.js +1 -1
  260. package/dist/esm/runtimes/react/hooks/use-element-id.js.map +1 -1
  261. package/dist/esm/runtimes/react/hooks/use-react-runtime.js +15 -0
  262. package/dist/esm/runtimes/react/hooks/use-react-runtime.js.map +1 -0
  263. package/dist/esm/runtimes/react/hooks/use-register-document.js +18 -0
  264. package/dist/esm/runtimes/react/hooks/use-register-document.js.map +1 -0
  265. package/dist/esm/runtimes/react/hooks/use-resolved-props.js +1 -1
  266. package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  267. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js +5 -5
  268. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  269. package/dist/esm/runtimes/react/hooks/use-store.js +6 -3
  270. package/dist/esm/runtimes/react/hooks/use-store.js.map +1 -1
  271. package/dist/esm/runtimes/react/hooks/use-universal-dispatch.js +14 -0
  272. package/dist/esm/runtimes/react/hooks/use-universal-dispatch.js.map +1 -0
  273. package/dist/esm/{next/context/makeswift-host-api-client.js → runtimes/react/host-api-client.js} +1 -1
  274. package/dist/esm/runtimes/react/host-api-client.js.map +1 -0
  275. package/dist/esm/runtimes/react/index.js +5 -5
  276. package/dist/esm/runtimes/react/index.js.map +1 -1
  277. package/dist/esm/runtimes/react/react-runtime.js +0 -24
  278. package/dist/esm/runtimes/react/react-runtime.js.map +1 -1
  279. package/dist/esm/runtimes/react/runtime-core.js +2 -17
  280. package/dist/esm/runtimes/react/runtime-core.js.map +1 -1
  281. package/dist/esm/state/actions.js +29 -14
  282. package/dist/esm/state/actions.js.map +1 -1
  283. package/dist/esm/state/makeswift-api-client.js +103 -18
  284. package/dist/esm/state/makeswift-api-client.js.map +1 -1
  285. package/dist/esm/state/mixins/setup-teardown.js +11 -0
  286. package/dist/esm/state/mixins/setup-teardown.js.map +1 -0
  287. package/dist/esm/state/modules/api-resources.js +66 -25
  288. package/dist/esm/state/modules/api-resources.js.map +1 -1
  289. package/dist/esm/state/modules/element-trees.js +14 -7
  290. package/dist/esm/state/modules/element-trees.js.map +1 -1
  291. package/dist/esm/state/modules/localized-resources-map.js +53 -0
  292. package/dist/esm/state/modules/localized-resources-map.js.map +1 -0
  293. package/dist/esm/state/modules/read-only-documents.js +13 -12
  294. package/dist/esm/state/modules/read-only-documents.js.map +1 -1
  295. package/dist/esm/state/modules/read-write-documents.js +9 -8
  296. package/dist/esm/state/modules/read-write-documents.js.map +1 -1
  297. package/dist/esm/state/react-builder-preview.js +18 -64
  298. package/dist/esm/state/react-builder-preview.js.map +1 -1
  299. package/dist/esm/state/react-page.js +73 -9
  300. package/dist/esm/state/react-page.js.map +1 -1
  301. package/dist/esm/utils/branded.js +1 -0
  302. package/dist/esm/utils/branded.js.map +1 -0
  303. package/dist/esm/utils/canonicalize.js +15 -0
  304. package/dist/esm/utils/canonicalize.js.map +1 -0
  305. package/dist/esm/utils/deterministic-uuid.js +11 -0
  306. package/dist/esm/utils/deterministic-uuid.js.map +1 -0
  307. package/dist/esm/utils/is-server.js +7 -0
  308. package/dist/esm/utils/is-server.js.map +1 -0
  309. package/dist/esm/utils/serializeState.js +18 -0
  310. package/dist/esm/utils/serializeState.js.map +1 -0
  311. package/dist/esm/utils/tests/element-data-test-test.js +10 -9
  312. package/dist/esm/utils/tests/element-data-test-test.js.map +1 -1
  313. package/dist/types/api/{graphql/fragments.d.ts → fragments.d.ts} +1 -1
  314. package/dist/types/api/fragments.d.ts.map +1 -0
  315. package/dist/types/api/index.d.ts +2 -2
  316. package/dist/types/api/index.d.ts.map +1 -1
  317. package/dist/types/api/react.d.ts +28 -22
  318. package/dist/types/api/react.d.ts.map +1 -1
  319. package/dist/types/api/types.d.ts +18 -0
  320. package/dist/types/api/types.d.ts.map +1 -0
  321. package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -1
  322. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  323. package/dist/types/components/builtin/Slot/Slot.d.ts +8 -0
  324. package/dist/types/components/builtin/Slot/Slot.d.ts.map +1 -0
  325. package/dist/types/components/builtin/Slot/index.d.ts +2 -0
  326. package/dist/types/components/builtin/Slot/index.d.ts.map +1 -0
  327. package/dist/types/components/builtin/Slot/register.d.ts +3 -0
  328. package/dist/types/components/builtin/Slot/register.d.ts.map +1 -0
  329. package/dist/types/components/builtin/constants.d.ts +1 -0
  330. package/dist/types/components/builtin/constants.d.ts.map +1 -1
  331. package/dist/types/components/builtin/index.d.ts +1 -0
  332. package/dist/types/components/builtin/index.d.ts.map +1 -1
  333. package/dist/types/components/builtin/register.d.ts.map +1 -1
  334. package/dist/types/components/hooks/usePageSnippets.d.ts +1 -1
  335. package/dist/types/components/hooks/usePageSnippets.d.ts.map +1 -1
  336. package/dist/types/components/page/Page.d.ts +4 -3
  337. package/dist/types/components/page/Page.d.ts.map +1 -1
  338. package/dist/types/components/shared/BackgroundsContainer/index.d.ts.map +1 -1
  339. package/dist/types/controls/index.d.ts +1 -1
  340. package/dist/types/controls/index.d.ts.map +1 -1
  341. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +4 -4
  342. package/dist/types/core/index.d.ts +1 -1
  343. package/dist/types/core/index.d.ts.map +1 -1
  344. package/dist/types/index.d.ts +1 -1
  345. package/dist/types/index.d.ts.map +1 -1
  346. package/dist/types/locale.d.ts +1 -1
  347. package/dist/types/next/api-handler/handlers/manifest.d.ts +1 -0
  348. package/dist/types/next/api-handler/handlers/manifest.d.ts.map +1 -1
  349. package/dist/types/next/api-handler/handlers/webhook/index.d.ts +21 -0
  350. package/dist/types/next/api-handler/handlers/webhook/index.d.ts.map +1 -0
  351. package/dist/types/next/api-handler/handlers/webhook/site-published.d.ts +4 -0
  352. package/dist/types/next/api-handler/handlers/webhook/site-published.d.ts.map +1 -0
  353. package/dist/types/next/api-handler/handlers/webhook/types.d.ts +121 -0
  354. package/dist/types/next/api-handler/handlers/webhook/types.d.ts.map +1 -0
  355. package/dist/types/next/api-handler/index.d.ts +4 -3
  356. package/dist/types/next/api-handler/index.d.ts.map +1 -1
  357. package/dist/types/next/client.d.ts +356 -50
  358. package/dist/types/next/client.d.ts.map +1 -1
  359. package/dist/types/next/components/MakeswiftComponent.d.ts +10 -0
  360. package/dist/types/next/components/MakeswiftComponent.d.ts.map +1 -0
  361. package/dist/types/next/components/Slot.d.ts +10 -0
  362. package/dist/types/next/components/Slot.d.ts.map +1 -0
  363. package/dist/types/next/components/SlotProvider.d.ts +12 -0
  364. package/dist/types/next/components/SlotProvider.d.ts.map +1 -0
  365. package/dist/types/next/components/page.d.ts +1 -1
  366. package/dist/types/next/components/page.d.ts.map +1 -1
  367. package/dist/types/next/components/tests/controls/font-control.test.d.ts +2 -0
  368. package/dist/types/next/components/tests/controls/font-control.test.d.ts.map +1 -0
  369. package/dist/types/next/components/tests/controls/group-control.test.d.ts +2 -0
  370. package/dist/types/next/components/tests/controls/group-control.test.d.ts.map +1 -0
  371. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts +3 -2
  372. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts.map +1 -1
  373. package/dist/types/next/components/tests/global-element-rendering.test.d.ts +3 -0
  374. package/dist/types/next/components/tests/global-element-rendering.test.d.ts.map +1 -0
  375. package/dist/types/next/components/tests/makeswift-component-rendering.test.d.ts +3 -0
  376. package/dist/types/next/components/tests/makeswift-component-rendering.test.d.ts.map +1 -0
  377. package/dist/types/next/document.d.ts +5 -1
  378. package/dist/types/next/document.d.ts.map +1 -1
  379. package/dist/types/next/draft-mode/draft-mode-script.d.ts.map +1 -1
  380. package/dist/types/next/index.d.ts +3 -1
  381. package/dist/types/next/index.d.ts.map +1 -1
  382. package/dist/types/next/preview-mode.d.ts.map +1 -1
  383. package/dist/types/next/tests/client.get-component-snapshot.test.d.ts +2 -0
  384. package/dist/types/next/tests/client.get-component-snapshot.test.d.ts.map +1 -0
  385. package/dist/types/react.d.ts +1 -1
  386. package/dist/types/react.d.ts.map +1 -1
  387. package/dist/types/runtimes/react/components/Document.d.ts +1 -1
  388. package/dist/types/runtimes/react/components/Document.d.ts.map +1 -1
  389. package/dist/types/runtimes/react/components/DocumentRoot.d.ts +9 -0
  390. package/dist/types/runtimes/react/components/DocumentRoot.d.ts.map +1 -0
  391. package/dist/types/runtimes/react/components/Element.d.ts +3 -3
  392. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  393. package/dist/types/runtimes/react/components/ElementReference.d.ts.map +1 -1
  394. package/dist/types/runtimes/react/components/ElementRegistration.d.ts +10 -0
  395. package/dist/types/runtimes/react/components/ElementRegistration.d.ts.map +1 -0
  396. package/dist/types/runtimes/react/components/LiveProvider.d.ts +2 -10
  397. package/dist/types/runtimes/react/components/LiveProvider.d.ts.map +1 -1
  398. package/dist/types/runtimes/react/components/PreviewProvider.d.ts +2 -10
  399. package/dist/types/runtimes/react/components/PreviewProvider.d.ts.map +1 -1
  400. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts +7 -11
  401. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts.map +1 -1
  402. package/dist/types/runtimes/react/controls/group.d.ts +11 -0
  403. package/dist/types/runtimes/react/controls/group.d.ts.map +1 -0
  404. package/dist/types/runtimes/react/hooks/makeswift-api.d.ts +2 -3
  405. package/dist/types/runtimes/react/hooks/makeswift-api.d.ts.map +1 -1
  406. package/dist/types/runtimes/react/hooks/use-cache-data.d.ts +3 -0
  407. package/dist/types/runtimes/react/hooks/use-cache-data.d.ts.map +1 -0
  408. package/dist/types/runtimes/react/hooks/use-dispatch.d.ts.map +1 -1
  409. package/dist/types/runtimes/react/hooks/use-document-context.d.ts +11 -0
  410. package/dist/types/runtimes/react/hooks/use-document-context.d.ts.map +1 -0
  411. package/dist/types/runtimes/react/hooks/use-react-runtime.d.ts +5 -0
  412. package/dist/types/runtimes/react/hooks/use-react-runtime.d.ts.map +1 -0
  413. package/dist/types/runtimes/react/hooks/use-register-document.d.ts +6 -0
  414. package/dist/types/runtimes/react/hooks/use-register-document.d.ts.map +1 -0
  415. package/dist/types/runtimes/react/hooks/use-store.d.ts +1 -1
  416. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  417. package/dist/types/runtimes/react/hooks/use-universal-dispatch.d.ts +6 -0
  418. package/dist/types/runtimes/react/hooks/use-universal-dispatch.d.ts.map +1 -0
  419. package/dist/types/{next/context/makeswift-host-api-client.d.ts → runtimes/react/host-api-client.d.ts} +1 -1
  420. package/dist/types/runtimes/react/host-api-client.d.ts.map +1 -0
  421. package/dist/types/runtimes/react/index.d.ts +3 -3
  422. package/dist/types/runtimes/react/index.d.ts.map +1 -1
  423. package/dist/types/runtimes/react/react-runtime.d.ts +0 -9
  424. package/dist/types/runtimes/react/react-runtime.d.ts.map +1 -1
  425. package/dist/types/runtimes/react/runtime-core.d.ts +0 -5
  426. package/dist/types/runtimes/react/runtime-core.d.ts.map +1 -1
  427. package/dist/types/slate/test-helpers/slate-test-helper.d.ts +4 -4
  428. package/dist/types/state/actions.d.ts +45 -13
  429. package/dist/types/state/actions.d.ts.map +1 -1
  430. package/dist/types/state/makeswift-api-client.d.ts +18 -11
  431. package/dist/types/state/makeswift-api-client.d.ts.map +1 -1
  432. package/dist/types/state/mixins/setup-teardown.d.ts +7 -0
  433. package/dist/types/state/mixins/setup-teardown.d.ts.map +1 -0
  434. package/dist/types/state/modules/__tests__/api-resources.test.d.ts +2 -0
  435. package/dist/types/state/modules/__tests__/api-resources.test.d.ts.map +1 -0
  436. package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts +1 -1
  437. package/dist/types/state/modules/__tests__/localized-resources-map.test.d.ts +2 -0
  438. package/dist/types/state/modules/__tests__/localized-resources-map.test.d.ts.map +1 -0
  439. package/dist/types/state/modules/api-resources.d.ts +8 -5
  440. package/dist/types/state/modules/api-resources.d.ts.map +1 -1
  441. package/dist/types/state/modules/element-trees.d.ts +2 -1
  442. package/dist/types/state/modules/element-trees.d.ts.map +1 -1
  443. package/dist/types/state/modules/localized-resources-map.d.ts +13 -0
  444. package/dist/types/state/modules/localized-resources-map.d.ts.map +1 -0
  445. package/dist/types/state/modules/read-only-documents.d.ts +22 -5
  446. package/dist/types/state/modules/read-only-documents.d.ts.map +1 -1
  447. package/dist/types/state/modules/read-write-documents.d.ts +2 -2
  448. package/dist/types/state/modules/read-write-documents.d.ts.map +1 -1
  449. package/dist/types/state/react-builder-preview.d.ts +5 -11
  450. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  451. package/dist/types/state/react-page.d.ts +8 -6
  452. package/dist/types/state/react-page.d.ts.map +1 -1
  453. package/dist/types/utils/__tests__/serializeState.test.d.ts +2 -0
  454. package/dist/types/utils/__tests__/serializeState.test.d.ts.map +1 -0
  455. package/dist/types/utils/branded.d.ts +7 -0
  456. package/dist/types/utils/branded.d.ts.map +1 -0
  457. package/dist/types/utils/canonicalize.d.ts +7 -0
  458. package/dist/types/utils/canonicalize.d.ts.map +1 -0
  459. package/dist/types/utils/canonicalize.test.d.ts +2 -0
  460. package/dist/types/utils/canonicalize.test.d.ts.map +1 -0
  461. package/dist/types/utils/deterministic-uuid.d.ts +2 -0
  462. package/dist/types/utils/deterministic-uuid.d.ts.map +1 -0
  463. package/dist/types/utils/is-server.d.ts +2 -0
  464. package/dist/types/utils/is-server.d.ts.map +1 -0
  465. package/dist/types/utils/serializeState.d.ts +3 -0
  466. package/dist/types/utils/serializeState.d.ts.map +1 -0
  467. package/dist/types/utils/tests/element-data-test-test.d.ts +6 -3
  468. package/dist/types/utils/tests/element-data-test-test.d.ts.map +1 -1
  469. package/package.json +5 -4
  470. package/dist/cjs/api/graphql/fragments.js.map +0 -1
  471. package/dist/cjs/api/graphql/types.js.map +0 -1
  472. package/dist/cjs/api/resource-types.js.map +0 -1
  473. package/dist/cjs/next/context/makeswift-host-api-client.js.map +0 -1
  474. package/dist/cjs/next/context/react-runtime.js.map +0 -1
  475. package/dist/cjs/runtimes/react/components/DocumentReference.js.map +0 -1
  476. package/dist/cjs/runtimes/react/hooks/use-document-key.js.map +0 -1
  477. package/dist/esm/api/graphql/fragments.js +0 -6
  478. package/dist/esm/api/graphql/fragments.js.map +0 -1
  479. package/dist/esm/api/graphql/types.js.map +0 -1
  480. package/dist/esm/api/resource-types.js +0 -8
  481. package/dist/esm/api/resource-types.js.map +0 -1
  482. package/dist/esm/next/context/makeswift-host-api-client.js.map +0 -1
  483. package/dist/esm/next/context/react-runtime.js +0 -19
  484. package/dist/esm/next/context/react-runtime.js.map +0 -1
  485. package/dist/esm/runtimes/react/components/DocumentReference.js.map +0 -1
  486. package/dist/esm/runtimes/react/hooks/use-document-key.js +0 -11
  487. package/dist/esm/runtimes/react/hooks/use-document-key.js.map +0 -1
  488. package/dist/types/api/graphql/fragments.d.ts.map +0 -1
  489. package/dist/types/api/graphql/types.d.ts +0 -8
  490. package/dist/types/api/graphql/types.d.ts.map +0 -1
  491. package/dist/types/api/resource-types.d.ts +0 -20
  492. package/dist/types/api/resource-types.d.ts.map +0 -1
  493. package/dist/types/next/context/makeswift-host-api-client.d.ts.map +0 -1
  494. package/dist/types/next/context/react-runtime.d.ts +0 -8
  495. package/dist/types/next/context/react-runtime.d.ts.map +0 -1
  496. package/dist/types/runtimes/react/components/DocumentReference.d.ts +0 -9
  497. package/dist/types/runtimes/react/components/DocumentReference.d.ts.map +0 -1
  498. package/dist/types/runtimes/react/hooks/use-document-key.d.ts +0 -4
  499. package/dist/types/runtimes/react/hooks/use-document-key.d.ts.map +0 -1
@@ -18,4 +18,4 @@ export {
18
18
  MakeswiftHostApiClientProvider,
19
19
  useMakeswiftHostApiClient
20
20
  };
21
- //# sourceMappingURL=makeswift-host-api-client.js.map
21
+ //# sourceMappingURL=host-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/runtimes/react/host-api-client.tsx"],"sourcesContent":["'use client'\n\nimport { ReactNode, createContext, useContext } from 'react'\nimport { MakeswiftHostApiClient } from '../../api/react'\n\nconst Context = createContext(\n new MakeswiftHostApiClient({ uri: 'https://api.makeswift.com/graphql' }),\n)\n\nexport function useMakeswiftHostApiClient(): MakeswiftHostApiClient {\n return useContext(Context)\n}\n\nexport function MakeswiftHostApiClientProvider({\n client,\n children,\n}: {\n client: MakeswiftHostApiClient\n children: ReactNode\n}) {\n return <Context.Provider value={client}>{children}</Context.Provider>\n}\n"],"mappings":";AAoBS;AAlBT,SAAoB,eAAe,kBAAkB;AACrD,SAAS,8BAA8B;AAEvC,MAAM,UAAU;AAAA,EACd,IAAI,uBAAuB,EAAE,KAAK,oCAAoC,CAAC;AACzE;AAEO,SAAS,4BAAoD;AAClE,SAAO,WAAW,OAAO;AAC3B;AAEO,SAAS,+BAA+B;AAAA,EAC7C;AAAA,EACA;AACF,GAGG;AACD,SAAO,oBAAC,QAAQ,UAAR,EAAiB,OAAO,QAAS,UAAS;AACpD;","names":[]}
@@ -1,11 +1,11 @@
1
1
  import { ReactRuntime } from "./react-runtime";
2
2
  import { Element } from "./components/Element";
3
- import { DocumentReference } from "./components/DocumentReference";
4
- import { RuntimeProvider } from "./components/RuntimeProvider";
3
+ import { DocumentRoot } from "./components/DocumentRoot";
5
4
  import { PageProvider } from "./components/PageProvider";
5
+ import { ReactRuntimeProvider } from "./components/RuntimeProvider";
6
6
  import { useBreakpoints } from "./hooks/use-breakpoints";
7
7
  import { useBuilderEditMode } from "./hooks/use-builder-edit-mode";
8
- import { useDocumentKey } from "./hooks/use-document-key";
8
+ import { useDocumentKey } from "./hooks/use-document-context";
9
9
  import { useElementId } from "./hooks/use-element-id";
10
10
  import { useIsInBuilder } from "./hooks/use-is-in-builder";
11
11
  import { useIsPreview } from "./hooks/use-is-preview";
@@ -13,11 +13,11 @@ import { usePageId } from "./hooks/use-page-id";
13
13
  import { useSelector } from "./hooks/use-selector";
14
14
  import { StoreContext, useStore } from "./hooks/use-store";
15
15
  export {
16
- DocumentReference,
16
+ DocumentRoot,
17
17
  Element,
18
18
  PageProvider,
19
19
  ReactRuntime,
20
- RuntimeProvider,
20
+ ReactRuntimeProvider,
21
21
  StoreContext,
22
22
  useBreakpoints,
23
23
  useBuilderEditMode,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/runtimes/react/index.ts"],"sourcesContent":["export { ReactRuntime } from './react-runtime'\n\nexport { Element } from './components/Element'\nexport { DocumentReference } from './components/DocumentReference'\nexport { RuntimeProvider } from './components/RuntimeProvider'\nexport { PageProvider } from './components/PageProvider'\n\nexport { useBreakpoints } from './hooks/use-breakpoints'\nexport { useBuilderEditMode } from './hooks/use-builder-edit-mode'\nexport { useDocumentKey } from './hooks/use-document-key'\nexport { useElementId } from './hooks/use-element-id'\nexport { useIsInBuilder } from './hooks/use-is-in-builder'\nexport { useIsPreview } from './hooks/use-is-preview'\nexport { usePageId } from './hooks/use-page-id'\nexport { useSelector } from './hooks/use-selector'\nexport { StoreContext, useStore } from './hooks/use-store'\n"],"mappings":"AAAA,SAAS,oBAAoB;AAE7B,SAAS,eAAe;AACxB,SAAS,yBAAyB;AAClC,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAE7B,SAAS,sBAAsB;AAC/B,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,cAAc,gBAAgB;","names":[]}
1
+ {"version":3,"sources":["../../../../src/runtimes/react/index.ts"],"sourcesContent":["export { ReactRuntime } from './react-runtime'\n\nexport { Element } from './components/Element'\nexport { DocumentRoot } from './components/DocumentRoot'\nexport { PageProvider } from './components/PageProvider'\nexport { ReactRuntimeProvider } from './components/RuntimeProvider'\n\nexport { useBreakpoints } from './hooks/use-breakpoints'\nexport { useBuilderEditMode } from './hooks/use-builder-edit-mode'\nexport { useDocumentKey } from './hooks/use-document-context'\nexport { useElementId } from './hooks/use-element-id'\nexport { useIsInBuilder } from './hooks/use-is-in-builder'\nexport { useIsPreview } from './hooks/use-is-preview'\nexport { usePageId } from './hooks/use-page-id'\nexport { useSelector } from './hooks/use-selector'\nexport { StoreContext, useStore } from './hooks/use-store'\n"],"mappings":"AAAA,SAAS,oBAAoB;AAE7B,SAAS,eAAe;AACxB,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,4BAA4B;AAErC,SAAS,sBAAsB;AAC/B,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,cAAc,gBAAgB;","names":[]}
@@ -11,29 +11,6 @@ function validateComponentType(type, component) {
11
11
  }
12
12
  }
13
13
  class ReactRuntime extends RuntimeCore {
14
- // TODO: the static methods here are deprecated and only keep here for backward-compatibility purpose.
15
- // We will remove them when we release a new breaking change.
16
- // ------------------ Deprecated API ------------------ //
17
- static registerComponent(component, {
18
- type,
19
- label,
20
- icon = ComponentIcon.Code,
21
- hidden = false,
22
- props
23
- }) {
24
- validateComponentType(type, component);
25
- const unregisterComponent = this.store.dispatch(
26
- registerComponentEffect(type, { label, icon, hidden }, props ?? {})
27
- );
28
- const unregisterReactComponent = this.store.dispatch(
29
- registerReactComponentEffect(type, component)
30
- );
31
- return () => {
32
- unregisterComponent();
33
- unregisterReactComponent();
34
- };
35
- }
36
- // ------------------ Deprecated API ends here ------------------ //
37
14
  registerComponent(component, {
38
15
  type,
39
16
  label,
@@ -58,7 +35,6 @@ class ReactRuntime extends RuntimeCore {
58
35
  registerBuiltinComponents(this);
59
36
  }
60
37
  }
61
- registerBuiltinComponents(ReactRuntime);
62
38
  export {
63
39
  ReactRuntime
64
40
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/runtimes/react/react-runtime.ts"],"sourcesContent":["import { registerBuiltinComponents } from '../../components/builtin/register'\nimport { ControlDefinition as UnifiedControlDefinition } from '@makeswift/controls'\n\nimport { type LegacyDescriptor, type DescriptorValueType } from '../../prop-controllers/descriptors'\n\nimport { registerComponentEffect, registerReactComponentEffect } from '../../state/actions'\nimport { BreakpointsInput } from '../../state/modules/breakpoints'\nimport { ComponentIcon } from '../../state/modules/components-meta'\nimport type { ComponentType } from '../../state/react-page'\n\nimport { RuntimeCore } from './runtime-core'\n\nfunction validateComponentType(type: string, component?: ComponentType): void {\n const componentName = component?.name ?? 'Component'\n if (typeof type !== 'string' || type === '') {\n throw new Error(\n `${componentName}: A non-empty string \\`type\\` is required for component registration, got ${type}`,\n )\n }\n}\n\nexport class ReactRuntime extends RuntimeCore {\n // TODO: the static methods here are deprecated and only keep here for backward-compatibility purpose.\n // We will remove them when we release a new breaking change.\n // ------------------ Deprecated API ------------------ //\n static registerComponent<\n ControlDef extends UnifiedControlDefinition,\n P extends Record<string, LegacyDescriptor | ControlDef>,\n C extends ComponentType<{ [K in keyof P]: DescriptorValueType<P[K]> }>,\n >(\n component: C,\n {\n type,\n label,\n icon = ComponentIcon.Code,\n hidden = false,\n props,\n }: { type: string; label: string; icon?: ComponentIcon; hidden?: boolean; props?: P },\n ): () => void {\n validateComponentType(type, component as unknown as ComponentType)\n\n const unregisterComponent = this.store.dispatch(\n registerComponentEffect(type, { label, icon, hidden }, props ?? {}),\n )\n\n const unregisterReactComponent = this.store.dispatch(\n registerReactComponentEffect(type, component as unknown as ComponentType),\n )\n\n return () => {\n unregisterComponent()\n unregisterReactComponent()\n }\n }\n\n // ------------------ Deprecated API ends here ------------------ //\n\n registerComponent<\n ControlDef extends UnifiedControlDefinition,\n P extends Record<string, LegacyDescriptor | ControlDef>,\n C extends ComponentType<{ [K in keyof P]: DescriptorValueType<P[K]> }>,\n >(\n component: C,\n {\n type,\n label,\n icon = ComponentIcon.Cube,\n hidden = false,\n props,\n }: { type: string; label: string; icon?: ComponentIcon; hidden?: boolean; props?: P },\n ): () => void {\n validateComponentType(type, component as unknown as ComponentType)\n\n const unregisterComponent = this.store.dispatch(\n registerComponentEffect(type, { label, icon, hidden }, props ?? {}),\n )\n\n const unregisterReactComponent = this.store.dispatch(\n registerReactComponentEffect(type, component as unknown as ComponentType),\n )\n\n return () => {\n unregisterComponent()\n unregisterReactComponent()\n }\n }\n\n constructor({ breakpoints }: { breakpoints?: BreakpointsInput } = {}) {\n super({ breakpoints })\n\n registerBuiltinComponents(this)\n }\n}\n\n// TODO: We should delete this once we remove the static methods in ReactRuntime.\nregisterBuiltinComponents(ReactRuntime)\n"],"mappings":"AAAA,SAAS,iCAAiC;AAK1C,SAAS,yBAAyB,oCAAoC;AAEtE,SAAS,qBAAqB;AAG9B,SAAS,mBAAmB;AAE5B,SAAS,sBAAsB,MAAc,WAAiC;AAC5E,QAAM,gBAAgB,WAAW,QAAQ;AACzC,MAAI,OAAO,SAAS,YAAY,SAAS,IAAI;AAC3C,UAAM,IAAI;AAAA,MACR,GAAG,aAAa,6EAA6E,IAAI;AAAA,IACnG;AAAA,EACF;AACF;AAEO,MAAM,qBAAqB,YAAY;AAAA;AAAA;AAAA;AAAA,EAI5C,OAAO,kBAKL,WACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO,cAAc;AAAA,IACrB,SAAS;AAAA,IACT;AAAA,EACF,GACY;AACZ,0BAAsB,MAAM,SAAqC;AAEjE,UAAM,sBAAsB,KAAK,MAAM;AAAA,MACrC,wBAAwB,MAAM,EAAE,OAAO,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC;AAAA,IACpE;AAEA,UAAM,2BAA2B,KAAK,MAAM;AAAA,MAC1C,6BAA6B,MAAM,SAAqC;AAAA,IAC1E;AAEA,WAAO,MAAM;AACX,0BAAoB;AACpB,+BAAyB;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA,EAIA,kBAKE,WACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO,cAAc;AAAA,IACrB,SAAS;AAAA,IACT;AAAA,EACF,GACY;AACZ,0BAAsB,MAAM,SAAqC;AAEjE,UAAM,sBAAsB,KAAK,MAAM;AAAA,MACrC,wBAAwB,MAAM,EAAE,OAAO,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC;AAAA,IACpE;AAEA,UAAM,2BAA2B,KAAK,MAAM;AAAA,MAC1C,6BAA6B,MAAM,SAAqC;AAAA,IAC1E;AAEA,WAAO,MAAM;AACX,0BAAoB;AACpB,+BAAyB;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,YAAY,EAAE,YAAY,IAAwC,CAAC,GAAG;AACpE,UAAM,EAAE,YAAY,CAAC;AAErB,8BAA0B,IAAI;AAAA,EAChC;AACF;AAGA,0BAA0B,YAAY;","names":[]}
1
+ {"version":3,"sources":["../../../../src/runtimes/react/react-runtime.ts"],"sourcesContent":["import { registerBuiltinComponents } from '../../components/builtin/register'\nimport { ControlDefinition as UnifiedControlDefinition } from '@makeswift/controls'\n\nimport { type LegacyDescriptor, type DescriptorValueType } from '../../prop-controllers/descriptors'\n\nimport { registerComponentEffect, registerReactComponentEffect } from '../../state/actions'\nimport { BreakpointsInput } from '../../state/modules/breakpoints'\nimport { ComponentIcon } from '../../state/modules/components-meta'\nimport type { ComponentType } from '../../state/react-page'\n\nimport { RuntimeCore } from './runtime-core'\n\nfunction validateComponentType(type: string, component?: ComponentType): void {\n const componentName = component?.name ?? 'Component'\n if (typeof type !== 'string' || type === '') {\n throw new Error(\n `${componentName}: A non-empty string \\`type\\` is required for component registration, got ${type}`,\n )\n }\n}\n\nexport class ReactRuntime extends RuntimeCore {\n registerComponent<\n ControlDef extends UnifiedControlDefinition,\n P extends Record<string, LegacyDescriptor | ControlDef>,\n C extends ComponentType<{ [K in keyof P]: DescriptorValueType<P[K]> }>,\n >(\n component: C,\n {\n type,\n label,\n icon = ComponentIcon.Cube,\n hidden = false,\n props,\n }: { type: string; label: string; icon?: ComponentIcon; hidden?: boolean; props?: P },\n ): () => void {\n validateComponentType(type, component as unknown as ComponentType)\n\n const unregisterComponent = this.store.dispatch(\n registerComponentEffect(type, { label, icon, hidden }, props ?? {}),\n )\n\n const unregisterReactComponent = this.store.dispatch(\n registerReactComponentEffect(type, component as unknown as ComponentType),\n )\n\n return () => {\n unregisterComponent()\n unregisterReactComponent()\n }\n }\n\n constructor({ breakpoints }: { breakpoints?: BreakpointsInput } = {}) {\n super({ breakpoints })\n\n registerBuiltinComponents(this)\n }\n}\n"],"mappings":"AAAA,SAAS,iCAAiC;AAK1C,SAAS,yBAAyB,oCAAoC;AAEtE,SAAS,qBAAqB;AAG9B,SAAS,mBAAmB;AAE5B,SAAS,sBAAsB,MAAc,WAAiC;AAC5E,QAAM,gBAAgB,WAAW,QAAQ;AACzC,MAAI,OAAO,SAAS,YAAY,SAAS,IAAI;AAC3C,UAAM,IAAI;AAAA,MACR,GAAG,aAAa,6EAA6E,IAAI;AAAA,IACnG;AAAA,EACF;AACF;AAEO,MAAM,qBAAqB,YAAY;AAAA,EAC5C,kBAKE,WACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO,cAAc;AAAA,IACrB,SAAS;AAAA,IACT;AAAA,EACF,GACY;AACZ,0BAAsB,MAAM,SAAqC;AAEjE,UAAM,sBAAsB,KAAK,MAAM;AAAA,MACrC,wBAAwB,MAAM,EAAE,OAAO,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC;AAAA,IACpE;AAEA,UAAM,2BAA2B,KAAK,MAAM;AAAA,MAC1C,6BAA6B,MAAM,SAAqC;AAAA,IAC1E;AAEA,WAAO,MAAM;AACX,0BAAoB;AACpB,+BAAyB;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,YAAY,EAAE,YAAY,IAAwC,CAAC,GAAG;AACpE,UAAM,EAAE,YAAY,CAAC;AAErB,8BAA0B,IAAI;AAAA,EAChC;AACF;","names":[]}
@@ -9,26 +9,11 @@ import {
9
9
  mergeElementTreeTranslatedData
10
10
  } from "../../state/react-page";
11
11
  class RuntimeCore {
12
- // TODO: the static methods here are deprecated and only keep here for backward-compatibility purpose.
13
- // We will remove them when we release a new breaking change.
14
- // ------------------ Deprecated API ------------------ //
15
- static store = configureStore();
16
- static copyElementTree(elementTree, replacementContext) {
17
- return copyElementTree(this.store.getState(), elementTree, replacementContext);
18
- }
19
- static getBreakpoints() {
20
- return getBreakpoints(this.store.getState());
21
- }
22
- static getTranslatableData(elementTree) {
23
- return getElementTreeTranslatableData(this.store.getState(), elementTree);
24
- }
25
- static mergeTranslatedData(elementTree, translatedData) {
26
- return mergeElementTreeTranslatedData(this.store.getState(), elementTree, translatedData);
27
- }
28
- // ------------------ Deprecated API ends here ------------------ //
29
12
  store;
30
13
  constructor({ breakpoints }) {
31
14
  this.store = configureStore({
15
+ name: "Runtime store",
16
+ preloadedState: null,
32
17
  breakpoints: breakpoints ? parseBreakpointsInput(breakpoints) : void 0
33
18
  });
34
19
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/runtimes/react/runtime-core.ts"],"sourcesContent":["import { type SerializableReplacementContext } from '@makeswift/controls'\n\nimport {\n Breakpoints,\n BreakpointsInput,\n parseBreakpointsInput,\n} from '../../state/modules/breakpoints'\n\nimport {\n configureStore,\n copyElementTree,\n getBreakpoints,\n getElementTreeTranslatableData,\n mergeElementTreeTranslatedData,\n type Store,\n type Data,\n type Element,\n type ElementData,\n} from '../../state/react-page'\n\nexport class RuntimeCore {\n // TODO: the static methods here are deprecated and only keep here for backward-compatibility purpose.\n // We will remove them when we release a new breaking change.\n // ------------------ Deprecated API ------------------ //\n static store = configureStore()\n\n static copyElementTree(\n elementTree: ElementData,\n replacementContext: SerializableReplacementContext,\n ): Element {\n return copyElementTree(this.store.getState(), elementTree, replacementContext)\n }\n\n static getBreakpoints(): Breakpoints {\n return getBreakpoints(this.store.getState())\n }\n\n static getTranslatableData(elementTree: ElementData): Record<string, Data> {\n return getElementTreeTranslatableData(this.store.getState(), elementTree)\n }\n\n static mergeTranslatedData(\n elementTree: ElementData,\n translatedData: Record<string, Data>,\n ): Element {\n return mergeElementTreeTranslatedData(this.store.getState(), elementTree, translatedData)\n }\n\n // ------------------ Deprecated API ends here ------------------ //\n\n store: Store\n\n constructor({ breakpoints }: { breakpoints?: BreakpointsInput }) {\n this.store = configureStore({\n breakpoints: breakpoints ? parseBreakpointsInput(breakpoints) : undefined,\n })\n }\n\n copyElementTree(\n elementTree: ElementData,\n replacementContext: SerializableReplacementContext,\n ): Element {\n return copyElementTree(this.store.getState(), elementTree, replacementContext)\n }\n\n getBreakpoints(): Breakpoints {\n return getBreakpoints(this.store.getState())\n }\n\n getTranslatableData(elementTree: ElementData): Record<string, Data> {\n return getElementTreeTranslatableData(this.store.getState(), elementTree)\n }\n\n mergeTranslatedData(elementTree: ElementData, translatedData: Record<string, Data>): Element {\n return mergeElementTreeTranslatedData(this.store.getState(), elementTree, translatedData)\n }\n}\n"],"mappings":"AAEA;AAAA,EAGE;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AAEA,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA,EAIvB,OAAO,QAAQ,eAAe;AAAA,EAE9B,OAAO,gBACL,aACA,oBACS;AACT,WAAO,gBAAgB,KAAK,MAAM,SAAS,GAAG,aAAa,kBAAkB;AAAA,EAC/E;AAAA,EAEA,OAAO,iBAA8B;AACnC,WAAO,eAAe,KAAK,MAAM,SAAS,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,oBAAoB,aAAgD;AACzE,WAAO,+BAA+B,KAAK,MAAM,SAAS,GAAG,WAAW;AAAA,EAC1E;AAAA,EAEA,OAAO,oBACL,aACA,gBACS;AACT,WAAO,+BAA+B,KAAK,MAAM,SAAS,GAAG,aAAa,cAAc;AAAA,EAC1F;AAAA;AAAA,EAIA;AAAA,EAEA,YAAY,EAAE,YAAY,GAAuC;AAC/D,SAAK,QAAQ,eAAe;AAAA,MAC1B,aAAa,cAAc,sBAAsB,WAAW,IAAI;AAAA,IAClE,CAAC;AAAA,EACH;AAAA,EAEA,gBACE,aACA,oBACS;AACT,WAAO,gBAAgB,KAAK,MAAM,SAAS,GAAG,aAAa,kBAAkB;AAAA,EAC/E;AAAA,EAEA,iBAA8B;AAC5B,WAAO,eAAe,KAAK,MAAM,SAAS,CAAC;AAAA,EAC7C;AAAA,EAEA,oBAAoB,aAAgD;AAClE,WAAO,+BAA+B,KAAK,MAAM,SAAS,GAAG,WAAW;AAAA,EAC1E;AAAA,EAEA,oBAAoB,aAA0B,gBAA+C;AAC3F,WAAO,+BAA+B,KAAK,MAAM,SAAS,GAAG,aAAa,cAAc;AAAA,EAC1F;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/runtimes/react/runtime-core.ts"],"sourcesContent":["import { type SerializableReplacementContext } from '@makeswift/controls'\n\nimport {\n Breakpoints,\n BreakpointsInput,\n parseBreakpointsInput,\n} from '../../state/modules/breakpoints'\n\nimport {\n configureStore,\n copyElementTree,\n getBreakpoints,\n getElementTreeTranslatableData,\n mergeElementTreeTranslatedData,\n type Store,\n type Data,\n type Element,\n type ElementData,\n} from '../../state/react-page'\n\nexport class RuntimeCore {\n store: Store\n\n constructor({ breakpoints }: { breakpoints?: BreakpointsInput }) {\n this.store = configureStore({\n name: 'Runtime store',\n preloadedState: null,\n breakpoints: breakpoints ? parseBreakpointsInput(breakpoints) : undefined,\n })\n }\n\n copyElementTree(\n elementTree: ElementData,\n replacementContext: SerializableReplacementContext,\n ): Element {\n return copyElementTree(this.store.getState(), elementTree, replacementContext)\n }\n\n getBreakpoints(): Breakpoints {\n return getBreakpoints(this.store.getState())\n }\n\n getTranslatableData(elementTree: ElementData): Record<string, Data> {\n return getElementTreeTranslatableData(this.store.getState(), elementTree)\n }\n\n mergeTranslatedData(elementTree: ElementData, translatedData: Record<string, Data>): Element {\n return mergeElementTreeTranslatedData(this.store.getState(), elementTree, translatedData)\n }\n}\n"],"mappings":"AAEA;AAAA,EAGE;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AAEA,MAAM,YAAY;AAAA,EACvB;AAAA,EAEA,YAAY,EAAE,YAAY,GAAuC;AAC/D,SAAK,QAAQ,eAAe;AAAA,MAC1B,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aAAa,cAAc,sBAAsB,WAAW,IAAI;AAAA,IAClE,CAAC;AAAA,EACH;AAAA,EAEA,gBACE,aACA,oBACS;AACT,WAAO,gBAAgB,KAAK,MAAM,SAAS,GAAG,aAAa,kBAAkB;AAAA,EAC/E;AAAA,EAEA,iBAA8B;AAC5B,WAAO,eAAe,KAAK,MAAM,SAAS,CAAC;AAAA,EAC7C;AAAA,EAEA,oBAAoB,aAAgD;AAClE,WAAO,+BAA+B,KAAK,MAAM,SAAS,GAAG,WAAW;AAAA,EAC1E;AAAA,EAEA,oBAAoB,aAA0B,gBAA+C;AAC3F,WAAO,+BAA+B,KAAK,MAAM,SAAS,GAAG,aAAa,cAAc;AAAA,EAC1F;AACF;","names":[]}
@@ -45,7 +45,8 @@ const ActionTypes = {
45
45
  ELEMENT_FROM_POINT_CHANGE: "ELEMENT_FROM_POINT_CHANGE",
46
46
  SET_BREAKPOINTS: "SET_BREAKPOINTS",
47
47
  SET_LOCALE: "SET_LOCALE",
48
- SET_LOCALIZED_RESOURCE_ID: "SET_LOCALIZED_RESOURCE_ID"
48
+ SET_LOCALIZED_RESOURCE_ID: "SET_LOCALIZED_RESOURCE_ID",
49
+ UPDATE_API_CLIENT_CACHE: "UPDATE_API_CLIENT_CACHE"
49
50
  };
50
51
  function init() {
51
52
  return { type: ActionTypes.INIT };
@@ -83,11 +84,19 @@ function registerBuilderDocument(document) {
83
84
  function unregisterBuilderDocument(documentKey) {
84
85
  return { type: ActionTypes.UNREGISTER_BUILDER_DOCUMENT, payload: { documentKey } };
85
86
  }
86
- function registerDocumentEffect(document) {
87
+ function registerDocumentsEffect(documents) {
87
88
  return (dispatch) => {
88
- dispatch(registerDocument(document));
89
+ documents.forEach((document) => dispatch(registerDocument(document)));
89
90
  return () => {
90
- dispatch(unregisterDocument(document.key));
91
+ documents.forEach((document) => dispatch(unregisterDocument(document.key)));
92
+ };
93
+ };
94
+ }
95
+ function registerBuilderDocumentsEffect(documents) {
96
+ return (dispatch) => {
97
+ documents.forEach((document) => dispatch(registerBuilderDocument(document)));
98
+ return () => {
99
+ documents.forEach((document) => dispatch(unregisterBuilderDocument(document.key)));
91
100
  };
92
101
  };
93
102
  }
@@ -225,11 +234,11 @@ function messageBuilderPropController(documentKey, elementKey, propName, message
225
234
  payload: { documentKey, elementKey, propName, message }
226
235
  };
227
236
  }
228
- function changeApiResource(resource) {
229
- return { type: ActionTypes.CHANGE_API_RESOURCE, payload: { resource } };
237
+ function changeApiResource(resource, locale) {
238
+ return { type: ActionTypes.CHANGE_API_RESOURCE, payload: { resource, locale } };
230
239
  }
231
- function evictApiResource(id) {
232
- return { type: ActionTypes.EVICT_API_RESOURCE, payload: { id } };
240
+ function evictApiResource(id, locale) {
241
+ return { type: ActionTypes.EVICT_API_RESOURCE, payload: { id, locale } };
233
242
  }
234
243
  function setIsInBuilder(isInBuilder) {
235
244
  return { type: ActionTypes.SET_IS_IN_BUILDER, payload: isInBuilder };
@@ -240,10 +249,10 @@ function handleWheel(payload) {
240
249
  function handlePointerMove(payload) {
241
250
  return { type: ActionTypes.HANDLE_POINTER_MOVE, payload };
242
251
  }
243
- function apiResourceFulfilled(resourceType, resourceId, resource) {
252
+ function apiResourceFulfilled(resourceType, resourceId, resource, locale) {
244
253
  return {
245
254
  type: ActionTypes.API_RESOURCE_FULFILLED,
246
- payload: { resourceType, resourceId, resource }
255
+ payload: { resourceType, resourceId, resource, locale }
247
256
  };
248
257
  }
249
258
  function setBuilderEditMode(editMode) {
@@ -269,13 +278,17 @@ function setLocale(locale, pathname) {
269
278
  }
270
279
  function setLocalizedResourceId({
271
280
  resourceId,
272
- localizedResourceId
281
+ localizedResourceId,
282
+ locale
273
283
  }) {
274
284
  return {
275
285
  type: ActionTypes.SET_LOCALIZED_RESOURCE_ID,
276
- payload: { resourceId, localizedResourceId }
286
+ payload: { resourceId, localizedResourceId, locale }
277
287
  };
278
288
  }
289
+ function updateAPIClientCache(payload) {
290
+ return { type: ActionTypes.UPDATE_API_CLIENT_CACHE, payload };
291
+ }
279
292
  export {
280
293
  ActionTypes,
281
294
  apiResourceFulfilled,
@@ -300,12 +313,13 @@ export {
300
313
  mountComponentEffect,
301
314
  registerBuilderComponent,
302
315
  registerBuilderDocument,
316
+ registerBuilderDocumentsEffect,
303
317
  registerComponent,
304
318
  registerComponentEffect,
305
319
  registerComponentHandle,
306
320
  registerComponentHandleEffect,
307
321
  registerDocument,
308
- registerDocumentEffect,
322
+ registerDocumentsEffect,
309
323
  registerMeasurable,
310
324
  registerMeasurableEffect,
311
325
  registerPropControllers,
@@ -324,6 +338,7 @@ export {
324
338
  unregisterDocument,
325
339
  unregisterMeasurable,
326
340
  unregisterPropControllers,
327
- unregisterPropControllersHandle
341
+ unregisterPropControllersHandle,
342
+ updateAPIClientCache
328
343
  };
329
344
  //# sourceMappingURL=actions.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/state/actions.ts"],"sourcesContent":["import type { Operation } from 'ot-json0'\n\nimport { ControlInstance } from '@makeswift/controls'\n\nimport type { Document } from './modules/read-only-documents'\nimport type { DescriptorsByComponentType } from './modules/prop-controllers'\n\nimport type { ComponentType } from './modules/react-components'\nimport type { Measurable, BoxModel } from './modules/box-models'\nimport type { ThunkAction } from 'redux-thunk'\nimport { ComponentMeta } from './modules/components-meta'\nimport { PropControllerDescriptor } from '../prop-controllers'\nimport type { Size } from './react-builder-preview'\nimport type { PropControllersHandle } from './modules/prop-controller-handles'\nimport type { PropControllerMessage } from '../prop-controllers/instances'\nimport type { APIResource, APIResourceType } from '../api/graphql/types'\nimport type { SerializedControl } from '../builder'\nimport { ElementImperativeHandle } from '../runtimes/react/element-imperative-handle'\nimport { BuilderEditMode } from './modules/builder-edit-mode'\nimport type { Point } from './modules/pointer'\nimport { Breakpoints } from './modules/breakpoints'\nimport { LocaleString, localeStringSchema } from '../locale'\n\nexport const ActionTypes = {\n INIT: 'INIT',\n CLEAN_UP: 'CLEAN_UP',\n\n REGISTER_DOCUMENT: 'REGISTER_DOCUMENT',\n UNREGISTER_DOCUMENT: 'UNREGISTER_DOCUMENT',\n CHANGE_DOCUMENT: 'CHANGE_DOCUMENT',\n\n CREATE_ELEMENT_TREE: 'CREATE_ELEMENT_TREE',\n DELETE_ELEMENT_TREE: 'DELETE_ELEMENT_TREE',\n CHANGE_ELEMENT_TREE: 'CHANGE_ELEMENT_TREE',\n\n REGISTER_BUILDER_DOCUMENT: 'REGISTER_BUILDER_DOCUMENT',\n UNREGISTER_BUILDER_DOCUMENT: 'UNREGISTER_BUILDER_DOCUMENT',\n\n REGISTER_COMPONENT: 'REGISTER_COMPONENT',\n UNREGISTER_COMPONENT: 'UNREGISTER_COMPONENT',\n\n REGISTER_BUILDER_COMPONENT: 'REGISTER_BUILDER_COMPONENT',\n UNREGISTER_BUILDER_COMPONENT: 'UNREGISTER_BUILDER_COMPONENT',\n\n REGISTER_REACT_COMPONENT: 'REGISTER_REACT_COMPONENT',\n UNREGISTER_REACT_COMPONENT: 'UNREGISTER_REACT_COMPONENT',\n\n MOUNT_COMPONENT: 'MOUNT_COMPONENT',\n UNMOUNT_COMPONENT: 'UNMOUNT_COMPONENT',\n\n REGISTER_COMPONENT_HANDLE: 'REGISTER_COMPONENT_HANDLE',\n UNREGISTER_COMPONENT_HANDLE: 'UNREGISTER_COMPONENT_HANDLE',\n\n REGISTER_MEASURABLE: 'REGISTER_MEASURABLE',\n UNREGISTER_MEASURABLE: 'UNREGISTER_MEASURABLE',\n\n CHANGE_ELEMENT_BOX_MODELS: 'CHANGE_ELEMENT_BOX_MODELS',\n\n CHANGE_DOCUMENT_ELEMENT_SIZE: 'CHANGE_DOCUMENT_ELEMENT_SIZE',\n CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP: 'CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP',\n SCROLL_DOCUMENT_ELEMENT: 'SCROLL_DOCUMENT_ELEMENT',\n\n REGISTER_PROP_CONTROLLERS_HANDLE: 'REGISTER_PROP_CONTROLLERS_HANDLE',\n UNREGISTER_PROP_CONTROLLERS_HANDLE: 'UNREGISTER_PROP_CONTROLLERS_HANDLE',\n REGISTER_PROP_CONTROLLERS: 'REGISTER_PROP_CONTROLLERS',\n UNREGISTER_PROP_CONTROLLERS: 'UNREGISTER_PROP_CONTROLLERS',\n MESSAGE_HOST_PROP_CONTROLLER: 'MESSAGE_HOST_PROP_CONTROLLER',\n MESSAGE_BUILDER_PROP_CONTROLLER: 'MESSAGE_BUILDER_PROP_CONTROLLER',\n\n CHANGE_API_RESOURCE: 'CHANGE_API_RESOURCE',\n EVICT_API_RESOURCE: 'EVICT_API_RESOURCE',\n\n SET_IS_IN_BUILDER: 'SET_IS_IN_BUILDER',\n\n HANDLE_WHEEL: 'HANDLE_WHEEL',\n HANDLE_POINTER_MOVE: 'HANDLE_POINTER_MOVE',\n\n API_RESOURCE_FULFILLED: 'API_RESOURCE_FULFILLED',\n\n SET_BUILDER_EDIT_MODE: 'SET_BUILDER_EDIT_MODE',\n MAKESWIFT_CONNECTION_INIT: 'MAKESWIFT_CONNECTION_INIT',\n MAKESWIFT_CONNECTION_CHECK: 'MAKESWIFT_CONNECTION_CHECK',\n\n BUILDER_POINTER_MOVE: 'BUILDER_POINTER_MOVE',\n ELEMENT_FROM_POINT_CHANGE: 'ELEMENT_FROM_POINT_CHANGE',\n\n SET_BREAKPOINTS: 'SET_BREAKPOINTS',\n\n SET_LOCALE: 'SET_LOCALE',\n\n SET_LOCALIZED_RESOURCE_ID: 'SET_LOCALIZED_RESOURCE_ID',\n} as const\n\ntype InitAction = { type: typeof ActionTypes.INIT }\n\ntype CleanUpAction = { type: typeof ActionTypes.CLEAN_UP }\n\ntype RegisterDocumentAction = {\n type: typeof ActionTypes.REGISTER_DOCUMENT\n payload: { documentKey: string; document: Document }\n}\n\ntype UnregisterDocumentAction = {\n type: typeof ActionTypes.UNREGISTER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype ChangeDocumentAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT\n payload: { documentKey: string; operation: Operation }\n}\n\ntype CreateElementTreeAction = {\n type: typeof ActionTypes.CREATE_ELEMENT_TREE\n payload: { document: Document; descriptors: DescriptorsByComponentType }\n}\n\ntype DeleteElementTreeAction = {\n type: typeof ActionTypes.DELETE_ELEMENT_TREE\n payload: { documentKey: string }\n}\n\ntype ChangeElementTreeAction = {\n type: typeof ActionTypes.CHANGE_ELEMENT_TREE\n payload: {\n oldDocument: Document\n newDocument: Document\n descriptors: DescriptorsByComponentType\n operation: Operation\n }\n}\n\ntype RegisterBuilderDocumentAction = {\n type: typeof ActionTypes.REGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string; document: Document }\n}\n\ntype UnregisterBuilderDocumentAction = {\n type: typeof ActionTypes.UNREGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype RegisterComponentAction = {\n type: typeof ActionTypes.REGISTER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n propControllerDescriptors: Record<string, PropControllerDescriptor>\n }\n}\n\ntype UnregisterComponentAction = {\n type: typeof ActionTypes.UNREGISTER_COMPONENT\n payload: { type: string }\n}\n\ntype RegisterBuilderComponentAction = {\n type: typeof ActionTypes.REGISTER_BUILDER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n serializedControls: Record<string, SerializedControl>\n }\n transferables?: Transferable[]\n}\n\ntype UnregisterBuilderComponentAction = {\n type: typeof ActionTypes.UNREGISTER_BUILDER_COMPONENT\n payload: { type: string }\n}\n\ntype RegisterReactComponentAction = {\n type: typeof ActionTypes.REGISTER_REACT_COMPONENT\n payload: { type: string; component: ComponentType }\n}\n\ntype UnregisterReactComponentAction = {\n type: typeof ActionTypes.UNREGISTER_REACT_COMPONENT\n payload: { type: string }\n}\n\ntype MountComponentAction = {\n type: typeof ActionTypes.MOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype UnmountComponentAction = {\n type: typeof ActionTypes.UNMOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterComponentHandleAction = {\n type: typeof ActionTypes.REGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string; componentHandle: ElementImperativeHandle }\n}\n\ntype UnregisterComponentHandleAction = {\n type: typeof ActionTypes.UNREGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterMeasurableAction = {\n type: typeof ActionTypes.REGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string; measurable: Measurable }\n}\n\ntype UnregisterMeasurableAction = {\n type: typeof ActionTypes.UNREGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype ChangeElementBoxModelsAction = {\n type: typeof ActionTypes.CHANGE_ELEMENT_BOX_MODELS\n payload: { changedElementBoxModels: Map<string, Map<string, BoxModel | null>> }\n}\n\ntype ChangeDocumentElementSizeAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE\n payload: { size: Size }\n}\n\ntype ChangeDocumentElementScrollTopAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP\n payload: { scrollTop: number }\n}\n\ntype ScrollDocumentElementAction = {\n type: typeof ActionTypes.SCROLL_DOCUMENT_ELEMENT\n payload: { scrollTopDelta: number }\n}\n\ntype RegisterPropControllersHandleAction = {\n type: typeof ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string; handle: PropControllersHandle }\n}\n\ntype UnregisterPropControllersHandleAction = {\n type: typeof ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterPropControllersAction = {\n type: typeof ActionTypes.REGISTER_PROP_CONTROLLERS\n payload: {\n documentKey: string\n elementKey: string\n propControllers: Record<string, ControlInstance>\n }\n}\n\ntype UnregisterPropControllersAction = {\n type: typeof ActionTypes.UNREGISTER_PROP_CONTROLLERS\n payload: { documentKey: string; elementKey: string }\n}\n\ntype MessageHostPropControllerAction<T = PropControllerMessage> = {\n type: typeof ActionTypes.MESSAGE_HOST_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype MessageBuilderPropControllerAction<T = PropControllerMessage> = {\n type: typeof ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype ChangeAPIResourceAction = {\n type: typeof ActionTypes.CHANGE_API_RESOURCE\n payload: { resource: APIResource }\n}\n\ntype EvictAPIResourceAction = {\n type: typeof ActionTypes.EVICT_API_RESOURCE\n payload: { id: string }\n}\n\ntype SetIsInBuilderAction = {\n type: typeof ActionTypes.SET_IS_IN_BUILDER\n payload: boolean\n}\n\ntype HandleWheelAction = {\n type: typeof ActionTypes.HANDLE_WHEEL\n payload: { deltaX: number; deltaY: number }\n}\n\ntype HandlePointerMoveAction = {\n type: typeof ActionTypes.HANDLE_POINTER_MOVE\n payload: { clientX: number; clientY: number }\n}\n\ntype APIResourceFulfilledAction = {\n type: typeof ActionTypes.API_RESOURCE_FULFILLED\n payload: { resourceType: APIResourceType; resourceId: string; resource: APIResource | null }\n}\n\ntype SetBuilderEditModeAction = {\n type: typeof ActionTypes.SET_BUILDER_EDIT_MODE\n payload: { editMode: BuilderEditMode }\n}\n\ntype BuilderPointerMoveAction = {\n type: typeof ActionTypes.BUILDER_POINTER_MOVE\n payload: { pointer: Point | null }\n}\n\ntype ElementFromPointChangeAction = {\n type: typeof ActionTypes.ELEMENT_FROM_POINT_CHANGE\n payload: { keys: { documentKey: string; elementKey: string } | null }\n}\n\nexport type SetBreakpointsAction = {\n type: typeof ActionTypes.SET_BREAKPOINTS\n payload: { breakpoints: Breakpoints }\n}\n\ntype SetLocaleAction = {\n type: typeof ActionTypes.SET_LOCALE\n payload: { locale: LocaleString; pathname?: string }\n}\n\ntype SetLocalizedResourceIdAction = {\n type: typeof ActionTypes.SET_LOCALIZED_RESOURCE_ID\n payload: { resourceId: string; localizedResourceId: string | null }\n}\n\nexport type Action =\n | InitAction\n | CleanUpAction\n | RegisterDocumentAction\n | UnregisterDocumentAction\n | ChangeDocumentAction\n | CreateElementTreeAction\n | DeleteElementTreeAction\n | ChangeElementTreeAction\n | RegisterBuilderDocumentAction\n | UnregisterBuilderDocumentAction\n | RegisterComponentAction\n | UnregisterComponentAction\n | RegisterBuilderComponentAction\n | UnregisterBuilderComponentAction\n | RegisterReactComponentAction\n | UnregisterReactComponentAction\n | MountComponentAction\n | UnmountComponentAction\n | RegisterComponentHandleAction\n | UnregisterComponentHandleAction\n | RegisterMeasurableAction\n | UnregisterMeasurableAction\n | ChangeElementBoxModelsAction\n | ChangeDocumentElementSizeAction\n | ChangeDocumentElementScrollTopAction\n | ScrollDocumentElementAction\n | RegisterPropControllersHandleAction\n | UnregisterPropControllersHandleAction\n | RegisterPropControllersAction\n | UnregisterPropControllersAction\n | MessageHostPropControllerAction\n | MessageBuilderPropControllerAction\n | ChangeAPIResourceAction\n | EvictAPIResourceAction\n | SetIsInBuilderAction\n | HandleWheelAction\n | HandlePointerMoveAction\n | APIResourceFulfilledAction\n | SetBuilderEditModeAction\n | BuilderPointerMoveAction\n | ElementFromPointChangeAction\n | SetBreakpointsAction\n | SetLocaleAction\n | SetLocalizedResourceIdAction\n\nexport function init(): InitAction {\n return { type: ActionTypes.INIT }\n}\n\nexport function cleanUp(): CleanUpAction {\n return { type: ActionTypes.CLEAN_UP }\n}\n\nexport function registerDocument(document: Document): RegisterDocumentAction {\n return { type: ActionTypes.REGISTER_DOCUMENT, payload: { documentKey: document.key, document } }\n}\n\nexport function unregisterDocument(documentKey: string): UnregisterDocumentAction {\n return { type: ActionTypes.UNREGISTER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function createElementTree(\n payload: CreateElementTreeAction['payload'],\n): CreateElementTreeAction {\n return {\n type: ActionTypes.CREATE_ELEMENT_TREE,\n payload,\n }\n}\n\nexport function deleteElementTree(\n payload: DeleteElementTreeAction['payload'],\n): DeleteElementTreeAction {\n return { type: ActionTypes.DELETE_ELEMENT_TREE, payload }\n}\n\nexport function changeElementTree(\n payload: ChangeElementTreeAction['payload'],\n): ChangeElementTreeAction {\n return {\n type: ActionTypes.CHANGE_ELEMENT_TREE,\n payload,\n }\n}\n\nexport function registerBuilderDocument(document: Document): RegisterBuilderDocumentAction {\n return {\n type: ActionTypes.REGISTER_BUILDER_DOCUMENT,\n payload: { documentKey: document.key, document },\n }\n}\n\nexport function unregisterBuilderDocument(documentKey: string): UnregisterBuilderDocumentAction {\n return { type: ActionTypes.UNREGISTER_BUILDER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function registerDocumentEffect(\n document: Document,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerDocument(document))\n\n return () => {\n dispatch(unregisterDocument(document.key))\n }\n }\n}\n\nexport function changeDocument(documentKey: string, operation: Operation): ChangeDocumentAction {\n return { type: ActionTypes.CHANGE_DOCUMENT, payload: { documentKey, operation } }\n}\n\nexport function registerComponent(\n type: string,\n meta: ComponentMeta,\n propControllerDescriptors: Record<string, PropControllerDescriptor>,\n): RegisterComponentAction {\n return {\n type: ActionTypes.REGISTER_COMPONENT,\n payload: { type, meta, propControllerDescriptors },\n }\n}\n\nexport function unregisterComponent(type: string): UnregisterComponentAction {\n return { type: ActionTypes.UNREGISTER_COMPONENT, payload: { type } }\n}\n\nexport function registerComponentEffect(\n type: string,\n meta: ComponentMeta,\n propControllerDescriptors: Record<string, PropControllerDescriptor>,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerComponent(type, meta, propControllerDescriptors))\n\n return () => {\n dispatch(unregisterComponent(type))\n }\n }\n}\n\nexport function registerBuilderComponent(\n payload: RegisterBuilderComponentAction['payload'],\n transferables?: Transferable[],\n): RegisterBuilderComponentAction {\n return {\n type: ActionTypes.REGISTER_BUILDER_COMPONENT,\n payload,\n transferables,\n }\n}\n\nexport function unregisterBuilderComponent(\n payload: UnregisterBuilderComponentAction['payload'],\n): UnregisterBuilderComponentAction {\n return { type: ActionTypes.UNREGISTER_BUILDER_COMPONENT, payload }\n}\n\nfunction registerReactComponent(\n type: string,\n component: ComponentType,\n): RegisterReactComponentAction {\n return { type: ActionTypes.REGISTER_REACT_COMPONENT, payload: { type, component } }\n}\n\nfunction unregisterReactComponent(type: string): UnregisterReactComponentAction {\n return { type: ActionTypes.UNREGISTER_REACT_COMPONENT, payload: { type } }\n}\n\nexport function registerReactComponentEffect(\n type: string,\n component: ComponentType,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerReactComponent(type, component))\n\n return () => {\n dispatch(unregisterReactComponent(type))\n }\n }\n}\n\nexport function mountComponent(documentKey: string, elementKey: string): MountComponentAction {\n return { type: ActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function unmountComponent(documentKey: string, elementKey: string): UnmountComponentAction {\n return { type: ActionTypes.UNMOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function mountComponentEffect(\n documentKey: string,\n elementKey: string,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(mountComponent(documentKey, elementKey))\n\n return () => {\n dispatch(unmountComponent(documentKey, elementKey))\n }\n }\n}\n\nexport function registerComponentHandle(\n documentKey: string,\n elementKey: string,\n componentHandle: ElementImperativeHandle,\n): RegisterComponentHandleAction {\n return {\n type: ActionTypes.REGISTER_COMPONENT_HANDLE,\n payload: { documentKey, elementKey, componentHandle },\n }\n}\n\nfunction unregisterComponentHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterComponentHandleAction {\n return { type: ActionTypes.UNREGISTER_COMPONENT_HANDLE, payload: { documentKey, elementKey } }\n}\n\nexport function registerComponentHandleEffect(\n documentKey: string,\n elementKey: string,\n componentHandle: ElementImperativeHandle,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerComponentHandle(documentKey, elementKey, componentHandle))\n\n return () => {\n dispatch(unregisterComponentHandle(documentKey, elementKey))\n }\n }\n}\n\nexport function registerMeasurable(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): RegisterMeasurableAction {\n return { type: ActionTypes.REGISTER_MEASURABLE, payload: { documentKey, elementKey, measurable } }\n}\n\nexport function unregisterMeasurable(\n documentKey: string,\n elementKey: string,\n): UnregisterMeasurableAction {\n return { type: ActionTypes.UNREGISTER_MEASURABLE, payload: { documentKey, elementKey } }\n}\n\nexport function registerMeasurableEffect(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerMeasurable(documentKey, elementKey, measurable))\n\n return () => {\n dispatch(unregisterMeasurable(documentKey, elementKey))\n }\n }\n}\n\nexport function changeElementBoxModels(\n changedElementBoxModels: Map<string, Map<string, BoxModel | null>>,\n): ChangeElementBoxModelsAction {\n return { type: ActionTypes.CHANGE_ELEMENT_BOX_MODELS, payload: { changedElementBoxModels } }\n}\n\nexport function changeDocumentElementSize(size: Size): ChangeDocumentElementSizeAction {\n return { type: ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE, payload: { size } }\n}\n\nexport function changeDocumentElementScrollTop(\n scrollTop: number,\n): ChangeDocumentElementScrollTopAction {\n return { type: ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP, payload: { scrollTop } }\n}\n\nexport function scrollDocumentElement(scrollTopDelta: number): ScrollDocumentElementAction {\n return { type: ActionTypes.SCROLL_DOCUMENT_ELEMENT, payload: { scrollTopDelta } }\n}\n\nexport function registerPropControllersHandle(\n documentKey: string,\n elementKey: string,\n handle: PropControllersHandle,\n): RegisterPropControllersHandleAction {\n return {\n type: ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE,\n payload: { documentKey, elementKey, handle },\n }\n}\n\nexport function unregisterPropControllersHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterPropControllersHandleAction {\n return {\n type: ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE,\n payload: { documentKey, elementKey },\n }\n}\n\nexport function registerPropControllers(\n documentKey: string,\n elementKey: string,\n propControllers: Record<string, ControlInstance>,\n): RegisterPropControllersAction {\n return {\n type: ActionTypes.REGISTER_PROP_CONTROLLERS,\n payload: { documentKey, elementKey, propControllers },\n }\n}\n\nexport function unregisterPropControllers(\n documentKey: string,\n elementKey: string,\n): UnregisterPropControllersAction {\n return { type: ActionTypes.UNREGISTER_PROP_CONTROLLERS, payload: { documentKey, elementKey } }\n}\n\nexport function messageHostPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageHostPropControllerAction<T> {\n return {\n type: ActionTypes.MESSAGE_HOST_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function messageBuilderPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageBuilderPropControllerAction<T> {\n return {\n type: ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function changeApiResource(resource: APIResource): ChangeAPIResourceAction {\n return { type: ActionTypes.CHANGE_API_RESOURCE, payload: { resource } }\n}\n\nexport function evictApiResource(id: string): EvictAPIResourceAction {\n return { type: ActionTypes.EVICT_API_RESOURCE, payload: { id } }\n}\n\nexport function setIsInBuilder(isInBuilder: boolean): SetIsInBuilderAction {\n return { type: ActionTypes.SET_IS_IN_BUILDER, payload: isInBuilder }\n}\n\nexport function handleWheel(payload: { deltaX: number; deltaY: number }): HandleWheelAction {\n return { type: ActionTypes.HANDLE_WHEEL, payload }\n}\n\nexport function handlePointerMove(payload: {\n clientX: number\n clientY: number\n}): HandlePointerMoveAction {\n return { type: ActionTypes.HANDLE_POINTER_MOVE, payload }\n}\n\nexport function apiResourceFulfilled(\n resourceType: APIResourceType,\n resourceId: string,\n resource: APIResource | null,\n): APIResourceFulfilledAction {\n return {\n type: ActionTypes.API_RESOURCE_FULFILLED,\n payload: { resourceType, resourceId, resource },\n }\n}\n\nexport function setBuilderEditMode(editMode: BuilderEditMode): SetBuilderEditModeAction {\n return {\n type: ActionTypes.SET_BUILDER_EDIT_MODE,\n payload: { editMode },\n }\n}\n\nexport function builderPointerMove(pointer: Point | null): BuilderPointerMoveAction {\n return { type: ActionTypes.BUILDER_POINTER_MOVE, payload: { pointer } }\n}\n\nexport function elementFromPointChange(\n keys: {\n documentKey: string\n elementKey: string\n } | null,\n): ElementFromPointChangeAction {\n return { type: ActionTypes.ELEMENT_FROM_POINT_CHANGE, payload: { keys } }\n}\n\nexport function setBreakpoints(breakpoints: Breakpoints): SetBreakpointsAction {\n return { type: ActionTypes.SET_BREAKPOINTS, payload: { breakpoints } }\n}\n\nexport function setLocale(locale: Intl.Locale, pathname?: string): SetLocaleAction {\n return {\n type: ActionTypes.SET_LOCALE,\n payload: { locale: localeStringSchema.parse(locale.toString()), pathname },\n }\n}\n\nexport function setLocalizedResourceId({\n resourceId,\n localizedResourceId,\n}: {\n resourceId: string\n localizedResourceId: string | null\n}): SetLocalizedResourceIdAction {\n return {\n type: ActionTypes.SET_LOCALIZED_RESOURCE_ID,\n payload: { resourceId, localizedResourceId },\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/state/actions.ts"],"sourcesContent":["import type { Operation } from 'ot-json0'\n\nimport { ControlInstance } from '@makeswift/controls'\n\nimport { type Element, type Document, EMBEDDED_DOCUMENT_TYPE } from './modules/read-only-documents'\nimport type { DescriptorsByComponentType } from './modules/prop-controllers'\nimport type { ComponentType } from './modules/react-components'\nimport type { Measurable, BoxModel } from './modules/box-models'\nimport type { ThunkAction } from 'redux-thunk'\nimport { ComponentMeta } from './modules/components-meta'\nimport { PropControllerDescriptor } from '../prop-controllers'\nimport type { Size } from './react-builder-preview'\nimport type { PropControllersHandle } from './modules/prop-controller-handles'\nimport type { PropControllerMessage } from '../prop-controllers/instances'\nimport type { APIResource, APIResourceType, APIResourceLocale } from '../api/types'\nimport type { SerializedControl } from '../builder'\nimport { ElementImperativeHandle } from '../runtimes/react/element-imperative-handle'\nimport { BuilderEditMode } from './modules/builder-edit-mode'\nimport type { Point } from './modules/pointer'\nimport { Breakpoints } from './modules/breakpoints'\nimport { type SerializedState as APIClientCache } from './makeswift-api-client'\nimport { LocaleString, localeStringSchema } from '../locale'\n\nexport const ActionTypes = {\n INIT: 'INIT',\n CLEAN_UP: 'CLEAN_UP',\n\n REGISTER_DOCUMENT: 'REGISTER_DOCUMENT',\n UNREGISTER_DOCUMENT: 'UNREGISTER_DOCUMENT',\n CHANGE_DOCUMENT: 'CHANGE_DOCUMENT',\n\n CREATE_ELEMENT_TREE: 'CREATE_ELEMENT_TREE',\n DELETE_ELEMENT_TREE: 'DELETE_ELEMENT_TREE',\n CHANGE_ELEMENT_TREE: 'CHANGE_ELEMENT_TREE',\n\n REGISTER_BUILDER_DOCUMENT: 'REGISTER_BUILDER_DOCUMENT',\n UNREGISTER_BUILDER_DOCUMENT: 'UNREGISTER_BUILDER_DOCUMENT',\n\n REGISTER_COMPONENT: 'REGISTER_COMPONENT',\n UNREGISTER_COMPONENT: 'UNREGISTER_COMPONENT',\n\n REGISTER_BUILDER_COMPONENT: 'REGISTER_BUILDER_COMPONENT',\n UNREGISTER_BUILDER_COMPONENT: 'UNREGISTER_BUILDER_COMPONENT',\n\n REGISTER_REACT_COMPONENT: 'REGISTER_REACT_COMPONENT',\n UNREGISTER_REACT_COMPONENT: 'UNREGISTER_REACT_COMPONENT',\n\n MOUNT_COMPONENT: 'MOUNT_COMPONENT',\n UNMOUNT_COMPONENT: 'UNMOUNT_COMPONENT',\n\n REGISTER_COMPONENT_HANDLE: 'REGISTER_COMPONENT_HANDLE',\n UNREGISTER_COMPONENT_HANDLE: 'UNREGISTER_COMPONENT_HANDLE',\n\n REGISTER_MEASURABLE: 'REGISTER_MEASURABLE',\n UNREGISTER_MEASURABLE: 'UNREGISTER_MEASURABLE',\n\n CHANGE_ELEMENT_BOX_MODELS: 'CHANGE_ELEMENT_BOX_MODELS',\n\n CHANGE_DOCUMENT_ELEMENT_SIZE: 'CHANGE_DOCUMENT_ELEMENT_SIZE',\n CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP: 'CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP',\n SCROLL_DOCUMENT_ELEMENT: 'SCROLL_DOCUMENT_ELEMENT',\n\n REGISTER_PROP_CONTROLLERS_HANDLE: 'REGISTER_PROP_CONTROLLERS_HANDLE',\n UNREGISTER_PROP_CONTROLLERS_HANDLE: 'UNREGISTER_PROP_CONTROLLERS_HANDLE',\n REGISTER_PROP_CONTROLLERS: 'REGISTER_PROP_CONTROLLERS',\n UNREGISTER_PROP_CONTROLLERS: 'UNREGISTER_PROP_CONTROLLERS',\n MESSAGE_HOST_PROP_CONTROLLER: 'MESSAGE_HOST_PROP_CONTROLLER',\n MESSAGE_BUILDER_PROP_CONTROLLER: 'MESSAGE_BUILDER_PROP_CONTROLLER',\n\n CHANGE_API_RESOURCE: 'CHANGE_API_RESOURCE',\n EVICT_API_RESOURCE: 'EVICT_API_RESOURCE',\n\n SET_IS_IN_BUILDER: 'SET_IS_IN_BUILDER',\n\n HANDLE_WHEEL: 'HANDLE_WHEEL',\n HANDLE_POINTER_MOVE: 'HANDLE_POINTER_MOVE',\n\n API_RESOURCE_FULFILLED: 'API_RESOURCE_FULFILLED',\n\n SET_BUILDER_EDIT_MODE: 'SET_BUILDER_EDIT_MODE',\n MAKESWIFT_CONNECTION_INIT: 'MAKESWIFT_CONNECTION_INIT',\n MAKESWIFT_CONNECTION_CHECK: 'MAKESWIFT_CONNECTION_CHECK',\n\n BUILDER_POINTER_MOVE: 'BUILDER_POINTER_MOVE',\n ELEMENT_FROM_POINT_CHANGE: 'ELEMENT_FROM_POINT_CHANGE',\n\n SET_BREAKPOINTS: 'SET_BREAKPOINTS',\n\n SET_LOCALE: 'SET_LOCALE',\n\n SET_LOCALIZED_RESOURCE_ID: 'SET_LOCALIZED_RESOURCE_ID',\n\n UPDATE_API_CLIENT_CACHE: 'UPDATE_API_CLIENT_CACHE',\n} as const\n\ntype InitAction = { type: typeof ActionTypes.INIT }\n\ntype CleanUpAction = { type: typeof ActionTypes.CLEAN_UP }\n\ntype DocumentPayloadBaseDocument = {\n key: string\n rootElement: Element\n locale?: string | null // older versions of the runtime may not provide this field\n}\n\ntype DocumentPayloadEmbeddedDocument = {\n key: string\n locale: string | null\n id: string\n type: string\n name: string\n rootElement: Element\n meta: { allowLocaleFallback: boolean; requestedLocale: string | null }\n __type: typeof EMBEDDED_DOCUMENT_TYPE\n}\n\nexport type DocumentPayload = DocumentPayloadBaseDocument | DocumentPayloadEmbeddedDocument\n\ntype RegisterDocumentAction = {\n type: typeof ActionTypes.REGISTER_DOCUMENT\n payload: { documentKey: string; document: DocumentPayload }\n}\n\ntype UnregisterDocumentAction = {\n type: typeof ActionTypes.UNREGISTER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype ChangeDocumentAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT\n payload: { documentKey: string; operation: Operation }\n}\n\ntype CreateElementTreeAction = {\n type: typeof ActionTypes.CREATE_ELEMENT_TREE\n payload: { document: DocumentPayload; descriptors: DescriptorsByComponentType }\n}\n\ntype DeleteElementTreeAction = {\n type: typeof ActionTypes.DELETE_ELEMENT_TREE\n payload: { documentKey: string }\n}\n\ntype ChangeElementTreeAction = {\n type: typeof ActionTypes.CHANGE_ELEMENT_TREE\n payload: {\n oldDocument: DocumentPayload\n newDocument: DocumentPayload\n descriptors: DescriptorsByComponentType\n operation: Operation\n }\n}\n\ntype RegisterBuilderDocumentAction = {\n type: typeof ActionTypes.REGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string; document: DocumentPayload }\n}\n\ntype UnregisterBuilderDocumentAction = {\n type: typeof ActionTypes.UNREGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype RegisterComponentAction = {\n type: typeof ActionTypes.REGISTER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n propControllerDescriptors: Record<string, PropControllerDescriptor>\n }\n}\n\ntype UnregisterComponentAction = {\n type: typeof ActionTypes.UNREGISTER_COMPONENT\n payload: { type: string }\n}\n\ntype RegisterBuilderComponentAction = {\n type: typeof ActionTypes.REGISTER_BUILDER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n serializedControls: Record<string, SerializedControl>\n }\n transferables?: Transferable[]\n}\n\ntype UnregisterBuilderComponentAction = {\n type: typeof ActionTypes.UNREGISTER_BUILDER_COMPONENT\n payload: { type: string }\n}\n\ntype RegisterReactComponentAction = {\n type: typeof ActionTypes.REGISTER_REACT_COMPONENT\n payload: { type: string; component: ComponentType }\n}\n\ntype UnregisterReactComponentAction = {\n type: typeof ActionTypes.UNREGISTER_REACT_COMPONENT\n payload: { type: string }\n}\n\ntype MountComponentAction = {\n type: typeof ActionTypes.MOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype UnmountComponentAction = {\n type: typeof ActionTypes.UNMOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterComponentHandleAction = {\n type: typeof ActionTypes.REGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string; componentHandle: ElementImperativeHandle }\n}\n\ntype UnregisterComponentHandleAction = {\n type: typeof ActionTypes.UNREGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterMeasurableAction = {\n type: typeof ActionTypes.REGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string; measurable: Measurable }\n}\n\ntype UnregisterMeasurableAction = {\n type: typeof ActionTypes.UNREGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype ChangeElementBoxModelsAction = {\n type: typeof ActionTypes.CHANGE_ELEMENT_BOX_MODELS\n payload: { changedElementBoxModels: Map<string, Map<string, BoxModel | null>> }\n}\n\ntype ChangeDocumentElementSizeAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE\n payload: { size: Size }\n}\n\ntype ChangeDocumentElementScrollTopAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP\n payload: { scrollTop: number }\n}\n\ntype ScrollDocumentElementAction = {\n type: typeof ActionTypes.SCROLL_DOCUMENT_ELEMENT\n payload: { scrollTopDelta: number }\n}\n\ntype RegisterPropControllersHandleAction = {\n type: typeof ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string; handle: PropControllersHandle }\n}\n\ntype UnregisterPropControllersHandleAction = {\n type: typeof ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterPropControllersAction = {\n type: typeof ActionTypes.REGISTER_PROP_CONTROLLERS\n payload: {\n documentKey: string\n elementKey: string\n propControllers: Record<string, ControlInstance>\n }\n}\n\ntype UnregisterPropControllersAction = {\n type: typeof ActionTypes.UNREGISTER_PROP_CONTROLLERS\n payload: { documentKey: string; elementKey: string }\n}\n\ntype MessageHostPropControllerAction<T = PropControllerMessage> = {\n type: typeof ActionTypes.MESSAGE_HOST_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype MessageBuilderPropControllerAction<T = PropControllerMessage> = {\n type: typeof ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype ChangeAPIResourceAction = {\n type: typeof ActionTypes.CHANGE_API_RESOURCE\n payload: { resource: APIResource; locale?: string | null }\n}\n\ntype EvictAPIResourceAction = {\n type: typeof ActionTypes.EVICT_API_RESOURCE\n payload: { id: string; locale?: string | null }\n}\n\ntype SetIsInBuilderAction = {\n type: typeof ActionTypes.SET_IS_IN_BUILDER\n payload: boolean\n}\n\ntype HandleWheelAction = {\n type: typeof ActionTypes.HANDLE_WHEEL\n payload: { deltaX: number; deltaY: number }\n}\n\ntype HandlePointerMoveAction = {\n type: typeof ActionTypes.HANDLE_POINTER_MOVE\n payload: { clientX: number; clientY: number }\n}\n\ntype APIResourceFulfilledAction = {\n type: typeof ActionTypes.API_RESOURCE_FULFILLED\n payload: {\n resourceType: APIResourceType\n resourceId: string\n resource: APIResource | null\n locale?: string | null\n }\n}\n\ntype SetBuilderEditModeAction = {\n type: typeof ActionTypes.SET_BUILDER_EDIT_MODE\n payload: { editMode: BuilderEditMode }\n}\n\ntype BuilderPointerMoveAction = {\n type: typeof ActionTypes.BUILDER_POINTER_MOVE\n payload: { pointer: Point | null }\n}\n\ntype ElementFromPointChangeAction = {\n type: typeof ActionTypes.ELEMENT_FROM_POINT_CHANGE\n payload: { keys: { documentKey: string; elementKey: string } | null }\n}\n\nexport type SetBreakpointsAction = {\n type: typeof ActionTypes.SET_BREAKPOINTS\n payload: { breakpoints: Breakpoints }\n}\n\ntype SetLocaleAction = {\n type: typeof ActionTypes.SET_LOCALE\n payload: { locale: LocaleString; pathname?: string }\n}\n\ntype SetLocalizedResourceIdAction = {\n type: typeof ActionTypes.SET_LOCALIZED_RESOURCE_ID\n // TODO: make `locale` required once we've upgraded the builder to always provide it\n payload: { locale?: string; resourceId: string; localizedResourceId: string | null }\n}\n\ntype UpdateAPIClientCache = {\n type: typeof ActionTypes.UPDATE_API_CLIENT_CACHE\n payload: APIClientCache\n}\n\nexport type Action =\n | InitAction\n | CleanUpAction\n | RegisterDocumentAction\n | UnregisterDocumentAction\n | ChangeDocumentAction\n | CreateElementTreeAction\n | DeleteElementTreeAction\n | ChangeElementTreeAction\n | RegisterBuilderDocumentAction\n | UnregisterBuilderDocumentAction\n | RegisterComponentAction\n | UnregisterComponentAction\n | RegisterBuilderComponentAction\n | UnregisterBuilderComponentAction\n | RegisterReactComponentAction\n | UnregisterReactComponentAction\n | MountComponentAction\n | UnmountComponentAction\n | RegisterComponentHandleAction\n | UnregisterComponentHandleAction\n | RegisterMeasurableAction\n | UnregisterMeasurableAction\n | ChangeElementBoxModelsAction\n | ChangeDocumentElementSizeAction\n | ChangeDocumentElementScrollTopAction\n | ScrollDocumentElementAction\n | RegisterPropControllersHandleAction\n | UnregisterPropControllersHandleAction\n | RegisterPropControllersAction\n | UnregisterPropControllersAction\n | MessageHostPropControllerAction\n | MessageBuilderPropControllerAction\n | ChangeAPIResourceAction\n | EvictAPIResourceAction\n | SetIsInBuilderAction\n | HandleWheelAction\n | HandlePointerMoveAction\n | APIResourceFulfilledAction\n | SetBuilderEditModeAction\n | BuilderPointerMoveAction\n | ElementFromPointChangeAction\n | SetBreakpointsAction\n | SetLocaleAction\n | SetLocalizedResourceIdAction\n | UpdateAPIClientCache\n\nexport function init(): InitAction {\n return { type: ActionTypes.INIT }\n}\n\nexport function cleanUp(): CleanUpAction {\n return { type: ActionTypes.CLEAN_UP }\n}\n\nexport function registerDocument(document: Document): RegisterDocumentAction {\n return { type: ActionTypes.REGISTER_DOCUMENT, payload: { documentKey: document.key, document } }\n}\n\nexport function unregisterDocument(documentKey: string): UnregisterDocumentAction {\n return { type: ActionTypes.UNREGISTER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function createElementTree(\n payload: CreateElementTreeAction['payload'],\n): CreateElementTreeAction {\n return {\n type: ActionTypes.CREATE_ELEMENT_TREE,\n payload,\n }\n}\n\nexport function deleteElementTree(\n payload: DeleteElementTreeAction['payload'],\n): DeleteElementTreeAction {\n return { type: ActionTypes.DELETE_ELEMENT_TREE, payload }\n}\n\nexport function changeElementTree(\n payload: ChangeElementTreeAction['payload'],\n): ChangeElementTreeAction {\n return {\n type: ActionTypes.CHANGE_ELEMENT_TREE,\n payload,\n }\n}\n\nexport function registerBuilderDocument(document: Document): RegisterBuilderDocumentAction {\n return {\n type: ActionTypes.REGISTER_BUILDER_DOCUMENT,\n payload: { documentKey: document.key, document },\n }\n}\n\nexport function unregisterBuilderDocument(documentKey: string): UnregisterBuilderDocumentAction {\n return { type: ActionTypes.UNREGISTER_BUILDER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function registerDocumentsEffect(\n documents: Document[],\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n documents.forEach(document => dispatch(registerDocument(document)))\n\n return () => {\n documents.forEach(document => dispatch(unregisterDocument(document.key)))\n }\n }\n}\n\nexport function registerBuilderDocumentsEffect(\n documents: Document[],\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n documents.forEach(document => dispatch(registerBuilderDocument(document)))\n\n return () => {\n documents.forEach(document => dispatch(unregisterBuilderDocument(document.key)))\n }\n }\n}\n\nexport function changeDocument(documentKey: string, operation: Operation): ChangeDocumentAction {\n return { type: ActionTypes.CHANGE_DOCUMENT, payload: { documentKey, operation } }\n}\n\nexport function registerComponent(\n type: string,\n meta: ComponentMeta,\n propControllerDescriptors: Record<string, PropControllerDescriptor>,\n): RegisterComponentAction {\n return {\n type: ActionTypes.REGISTER_COMPONENT,\n payload: { type, meta, propControllerDescriptors },\n }\n}\n\nexport function unregisterComponent(type: string): UnregisterComponentAction {\n return { type: ActionTypes.UNREGISTER_COMPONENT, payload: { type } }\n}\n\nexport function registerComponentEffect(\n type: string,\n meta: ComponentMeta,\n propControllerDescriptors: Record<string, PropControllerDescriptor>,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerComponent(type, meta, propControllerDescriptors))\n\n return () => {\n dispatch(unregisterComponent(type))\n }\n }\n}\n\nexport function registerBuilderComponent(\n payload: RegisterBuilderComponentAction['payload'],\n transferables?: Transferable[],\n): RegisterBuilderComponentAction {\n return {\n type: ActionTypes.REGISTER_BUILDER_COMPONENT,\n payload,\n transferables,\n }\n}\n\nexport function unregisterBuilderComponent(\n payload: UnregisterBuilderComponentAction['payload'],\n): UnregisterBuilderComponentAction {\n return { type: ActionTypes.UNREGISTER_BUILDER_COMPONENT, payload }\n}\n\nfunction registerReactComponent(\n type: string,\n component: ComponentType,\n): RegisterReactComponentAction {\n return { type: ActionTypes.REGISTER_REACT_COMPONENT, payload: { type, component } }\n}\n\nfunction unregisterReactComponent(type: string): UnregisterReactComponentAction {\n return { type: ActionTypes.UNREGISTER_REACT_COMPONENT, payload: { type } }\n}\n\nexport function registerReactComponentEffect(\n type: string,\n component: ComponentType,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerReactComponent(type, component))\n\n return () => {\n dispatch(unregisterReactComponent(type))\n }\n }\n}\n\nexport function mountComponent(documentKey: string, elementKey: string): MountComponentAction {\n return { type: ActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function unmountComponent(documentKey: string, elementKey: string): UnmountComponentAction {\n return { type: ActionTypes.UNMOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function mountComponentEffect(\n documentKey: string,\n elementKey: string,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(mountComponent(documentKey, elementKey))\n\n return () => {\n dispatch(unmountComponent(documentKey, elementKey))\n }\n }\n}\n\nexport function registerComponentHandle(\n documentKey: string,\n elementKey: string,\n componentHandle: ElementImperativeHandle,\n): RegisterComponentHandleAction {\n return {\n type: ActionTypes.REGISTER_COMPONENT_HANDLE,\n payload: { documentKey, elementKey, componentHandle },\n }\n}\n\nfunction unregisterComponentHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterComponentHandleAction {\n return { type: ActionTypes.UNREGISTER_COMPONENT_HANDLE, payload: { documentKey, elementKey } }\n}\n\nexport function registerComponentHandleEffect(\n documentKey: string,\n elementKey: string,\n componentHandle: ElementImperativeHandle,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerComponentHandle(documentKey, elementKey, componentHandle))\n\n return () => {\n dispatch(unregisterComponentHandle(documentKey, elementKey))\n }\n }\n}\n\nexport function registerMeasurable(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): RegisterMeasurableAction {\n return { type: ActionTypes.REGISTER_MEASURABLE, payload: { documentKey, elementKey, measurable } }\n}\n\nexport function unregisterMeasurable(\n documentKey: string,\n elementKey: string,\n): UnregisterMeasurableAction {\n return { type: ActionTypes.UNREGISTER_MEASURABLE, payload: { documentKey, elementKey } }\n}\n\nexport function registerMeasurableEffect(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerMeasurable(documentKey, elementKey, measurable))\n\n return () => {\n dispatch(unregisterMeasurable(documentKey, elementKey))\n }\n }\n}\n\nexport function changeElementBoxModels(\n changedElementBoxModels: Map<string, Map<string, BoxModel | null>>,\n): ChangeElementBoxModelsAction {\n return { type: ActionTypes.CHANGE_ELEMENT_BOX_MODELS, payload: { changedElementBoxModels } }\n}\n\nexport function changeDocumentElementSize(size: Size): ChangeDocumentElementSizeAction {\n return { type: ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE, payload: { size } }\n}\n\nexport function changeDocumentElementScrollTop(\n scrollTop: number,\n): ChangeDocumentElementScrollTopAction {\n return { type: ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP, payload: { scrollTop } }\n}\n\nexport function scrollDocumentElement(scrollTopDelta: number): ScrollDocumentElementAction {\n return { type: ActionTypes.SCROLL_DOCUMENT_ELEMENT, payload: { scrollTopDelta } }\n}\n\nexport function registerPropControllersHandle(\n documentKey: string,\n elementKey: string,\n handle: PropControllersHandle,\n): RegisterPropControllersHandleAction {\n return {\n type: ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE,\n payload: { documentKey, elementKey, handle },\n }\n}\n\nexport function unregisterPropControllersHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterPropControllersHandleAction {\n return {\n type: ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE,\n payload: { documentKey, elementKey },\n }\n}\n\nexport function registerPropControllers(\n documentKey: string,\n elementKey: string,\n propControllers: Record<string, ControlInstance>,\n): RegisterPropControllersAction {\n return {\n type: ActionTypes.REGISTER_PROP_CONTROLLERS,\n payload: { documentKey, elementKey, propControllers },\n }\n}\n\nexport function unregisterPropControllers(\n documentKey: string,\n elementKey: string,\n): UnregisterPropControllersAction {\n return { type: ActionTypes.UNREGISTER_PROP_CONTROLLERS, payload: { documentKey, elementKey } }\n}\n\nexport function messageHostPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageHostPropControllerAction<T> {\n return {\n type: ActionTypes.MESSAGE_HOST_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function messageBuilderPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageBuilderPropControllerAction<T> {\n return {\n type: ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function changeApiResource<R extends APIResource>(\n resource: R,\n locale?: APIResourceLocale<R>,\n): ChangeAPIResourceAction {\n return { type: ActionTypes.CHANGE_API_RESOURCE, payload: { resource, locale } }\n}\n\nexport function evictApiResource(id: string, locale?: string | null): EvictAPIResourceAction {\n return { type: ActionTypes.EVICT_API_RESOURCE, payload: { id, locale } }\n}\n\nexport function setIsInBuilder(isInBuilder: boolean): SetIsInBuilderAction {\n return { type: ActionTypes.SET_IS_IN_BUILDER, payload: isInBuilder }\n}\n\nexport function handleWheel(payload: { deltaX: number; deltaY: number }): HandleWheelAction {\n return { type: ActionTypes.HANDLE_WHEEL, payload }\n}\n\nexport function handlePointerMove(payload: {\n clientX: number\n clientY: number\n}): HandlePointerMoveAction {\n return { type: ActionTypes.HANDLE_POINTER_MOVE, payload }\n}\n\nexport function apiResourceFulfilled<T extends APIResourceType>(\n resourceType: T,\n resourceId: string,\n resource: APIResource | null,\n locale?: APIResourceLocale<T>,\n): APIResourceFulfilledAction {\n return {\n type: ActionTypes.API_RESOURCE_FULFILLED,\n payload: { resourceType, resourceId, resource, locale },\n }\n}\n\nexport function setBuilderEditMode(editMode: BuilderEditMode): SetBuilderEditModeAction {\n return {\n type: ActionTypes.SET_BUILDER_EDIT_MODE,\n payload: { editMode },\n }\n}\n\nexport function builderPointerMove(pointer: Point | null): BuilderPointerMoveAction {\n return { type: ActionTypes.BUILDER_POINTER_MOVE, payload: { pointer } }\n}\n\nexport function elementFromPointChange(\n keys: {\n documentKey: string\n elementKey: string\n } | null,\n): ElementFromPointChangeAction {\n return { type: ActionTypes.ELEMENT_FROM_POINT_CHANGE, payload: { keys } }\n}\n\nexport function setBreakpoints(breakpoints: Breakpoints): SetBreakpointsAction {\n return { type: ActionTypes.SET_BREAKPOINTS, payload: { breakpoints } }\n}\n\nexport function setLocale(locale: Intl.Locale, pathname?: string): SetLocaleAction {\n return {\n type: ActionTypes.SET_LOCALE,\n payload: { locale: localeStringSchema.parse(locale.toString()), pathname },\n }\n}\n\nexport function setLocalizedResourceId({\n resourceId,\n localizedResourceId,\n locale,\n}: {\n resourceId: string\n localizedResourceId: string | null\n locale?: string\n}): SetLocalizedResourceIdAction {\n return {\n type: ActionTypes.SET_LOCALIZED_RESOURCE_ID,\n payload: { resourceId, localizedResourceId, locale },\n }\n}\n\nexport function updateAPIClientCache(payload: APIClientCache): UpdateAPIClientCache {\n return { type: ActionTypes.UPDATE_API_CLIENT_CACHE, payload }\n}\n"],"mappings":"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","names":[]}
@@ -1,23 +1,59 @@
1
- import { applyMiddleware, createStore } from "redux";
1
+ import {
2
+ applyMiddleware,
3
+ createStore,
4
+ combineReducers
5
+ } from "redux";
2
6
  import thunk from "redux-thunk";
7
+ import { composeWithDevToolsDevelopmentOnly } from "@redux-devtools/extension";
8
+ import { serializeState } from "../utils/serializeState";
3
9
  import * as APIResources from "./modules/api-resources";
4
- import { apiResourceFulfilled } from "./actions";
10
+ import * as LocalizedResourcesMap from "./modules/localized-resources-map";
11
+ import { ActionTypes, apiResourceFulfilled, setLocalizedResourceId } from "./actions";
5
12
  import {
6
13
  APIResourceType
7
14
  } from "../api";
8
- const reducer = APIResources.reducer;
9
- function getSerializedState(state) {
10
- return APIResources.getSerializedState(state);
15
+ import { MAKESWIFT_CACHE_TAG } from "../next/api-handler/handlers/webhook/site-published";
16
+ const reducer = combineReducers({
17
+ apiResources: APIResources.reducer,
18
+ localizedResourcesMap: LocalizedResourcesMap.reducer
19
+ });
20
+ function getLocalizedResourceId(state, locale, resourceId) {
21
+ return LocalizedResourcesMap.getLocalizedResourceId(
22
+ state.localizedResourcesMap,
23
+ locale,
24
+ resourceId
25
+ );
11
26
  }
12
- function getHasAPIResource(state, resourceType, resourceId) {
13
- return APIResources.getHasAPIResource(state, resourceType, resourceId);
27
+ function getHasAPIResource(state, resourceType, resourceId, locale) {
28
+ switch (resourceType) {
29
+ case APIResourceType.LocalizedGlobalElement:
30
+ if (locale == null) {
31
+ console.error(`Attempt to access ${resourceType} ${resourceId} without a locale`);
32
+ return false;
33
+ }
34
+ const localizedId = getLocalizedResourceId(state, locale, resourceId);
35
+ return localizedId != null && APIResources.getHasAPIResource(state.apiResources, resourceType, localizedId, locale);
36
+ default:
37
+ return APIResources.getHasAPIResource(state.apiResources, resourceType, resourceId, locale);
38
+ }
14
39
  }
15
- function getAPIResource(state, resourceType, resourceId) {
16
- return APIResources.getAPIResource(state, resourceType, resourceId);
40
+ function getAPIResource(state, resourceType, resourceId, locale) {
41
+ switch (resourceType) {
42
+ case APIResourceType.LocalizedGlobalElement:
43
+ if (locale == null) {
44
+ console.error(`Attempt to access ${resourceType} ${resourceId} without a locale`);
45
+ return null;
46
+ }
47
+ const localizedId = getLocalizedResourceId(state, locale, resourceId);
48
+ return localizedId != null ? APIResources.getAPIResource(state.apiResources, resourceType, localizedId, locale) : null;
49
+ default:
50
+ return APIResources.getAPIResource(state.apiResources, resourceType, resourceId, locale);
51
+ }
17
52
  }
18
53
  async function fetchJson(url) {
19
54
  const response = await fetch(url, {
20
- headers: { "Content-Type": "application/json" }
55
+ headers: { "Content-Type": "application/json" },
56
+ next: { tags: [MAKESWIFT_CACHE_TAG] }
21
57
  });
22
58
  if (response.status === 404)
23
59
  return null;
@@ -33,8 +69,8 @@ async function fetchJson(url) {
33
69
  function fetchAPIResource(resourceType, resourceId, locale) {
34
70
  return async (dispatch, getState) => {
35
71
  const state = getState();
36
- if (getHasAPIResource(state, resourceType, resourceId)) {
37
- return getAPIResource(state, resourceType, resourceId);
72
+ if (getHasAPIResource(state, resourceType, resourceId, locale)) {
73
+ return getAPIResource(state, resourceType, resourceId, locale);
38
74
  }
39
75
  let resource;
40
76
  switch (resourceType) {
@@ -53,15 +89,25 @@ function fetchAPIResource(resourceType, resourceId, locale) {
53
89
  case APIResourceType.LocalizedGlobalElement: {
54
90
  if (locale == null)
55
91
  throw new Error("Locale is required to fetch LocalizedGlobalElement");
92
+ if (getLocalizedResourceId(state, locale, resourceId) === null) {
93
+ return null;
94
+ }
56
95
  resource = await fetchJson(
57
96
  `/api/makeswift/localized-global-elements/${resourceId}/${locale}`
58
97
  );
98
+ dispatch(
99
+ setLocalizedResourceId({
100
+ locale,
101
+ resourceId,
102
+ localizedResourceId: resource?.id ?? null
103
+ })
104
+ );
59
105
  break;
60
106
  }
61
107
  case APIResourceType.PagePathnameSlice: {
62
108
  const url = new URL(`/api/makeswift/page-pathname-slices/${resourceId}`, "http://n");
63
109
  if (locale != null)
64
- url.searchParams.set("locale", locale.toString());
110
+ url.searchParams.set("locale", locale);
65
111
  resource = await fetchJson(url.pathname + url.search);
66
112
  break;
67
113
  }
@@ -71,18 +117,57 @@ function fetchAPIResource(resourceType, resourceId, locale) {
71
117
  default:
72
118
  resource = null;
73
119
  }
74
- dispatch(apiResourceFulfilled(resourceType, resourceId, resource));
120
+ dispatch(apiResourceFulfilled(resourceType, resourceId, resource, locale));
75
121
  return resource;
76
122
  };
77
123
  }
78
- function configureStore({ serializedState }) {
79
- return createStore(reducer, APIResources.getInitialState(serializedState), applyMiddleware(thunk));
124
+ function defaultLocaleMiddleware(defaultLocale) {
125
+ return () => (next) => {
126
+ return (action) => {
127
+ switch (action.type) {
128
+ case ActionTypes.CHANGE_API_RESOURCE:
129
+ case ActionTypes.EVICT_API_RESOURCE:
130
+ case ActionTypes.SET_LOCALIZED_RESOURCE_ID: {
131
+ const { locale } = action.payload;
132
+ return next({
133
+ ...action,
134
+ payload: { ...action.payload, locale: locale ?? defaultLocale }
135
+ });
136
+ }
137
+ }
138
+ return next(action);
139
+ };
140
+ };
141
+ }
142
+ function configureStore({
143
+ defaultLocale,
144
+ serializedState
145
+ }) {
146
+ const composeEnhancers = composeWithDevToolsDevelopmentOnly({
147
+ name: `API client store (${(/* @__PURE__ */ new Date()).toISOString()})`,
148
+ serialize: true,
149
+ stateSanitizer: (state) => serializeState(state),
150
+ actionsDenylist: [
151
+ ActionTypes.BUILDER_POINTER_MOVE,
152
+ ActionTypes.HANDLE_POINTER_MOVE,
153
+ ActionTypes.ELEMENT_FROM_POINT_CHANGE
154
+ ]
155
+ });
156
+ return createStore(
157
+ reducer,
158
+ {
159
+ apiResources: APIResources.getInitialState(serializedState?.apiResources),
160
+ localizedResourcesMap: LocalizedResourcesMap.getInitialState(
161
+ serializedState?.localizedResourcesMap
162
+ )
163
+ },
164
+ composeEnhancers(applyMiddleware(thunk, defaultLocaleMiddleware(defaultLocale)))
165
+ );
80
166
  }
81
167
  export {
82
168
  configureStore,
83
169
  fetchAPIResource,
84
170
  getAPIResource,
85
- getHasAPIResource,
86
- getSerializedState
171
+ getHasAPIResource
87
172
  };
88
173
  //# sourceMappingURL=makeswift-api-client.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/state/makeswift-api-client.ts"],"sourcesContent":["import { applyMiddleware, createStore, Store as ReduxStore } from 'redux'\nimport thunk, { ThunkAction, ThunkDispatch } from 'redux-thunk'\n\nimport * as APIResources from './modules/api-resources'\nimport { Action, apiResourceFulfilled } from './actions'\nimport {\n APIResource,\n APIResourceType,\n Swatch,\n File,\n Typography,\n GlobalElement,\n PagePathnameSlice,\n Table,\n LocalizedGlobalElement,\n} from '../api'\n\nconst reducer = APIResources.reducer\n\nexport type State = ReturnType<typeof reducer>\n\nexport type SerializedState = APIResources.SerializedState\n\nexport function getSerializedState(state: State): SerializedState {\n return APIResources.getSerializedState(state)\n}\n\nexport function getHasAPIResource(\n state: State,\n resourceType: APIResourceType,\n resourceId: string,\n): boolean {\n return APIResources.getHasAPIResource(state, resourceType, resourceId)\n}\n\nexport function getAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n): Extract<APIResource, { __typename: T }> | null {\n return APIResources.getAPIResource(state, resourceType, resourceId)\n}\n\ntype Thunk<ReturnType> = ThunkAction<ReturnType, State, unknown, Action>\n\nasync function fetchJson<T>(url: string): Promise<T | null> {\n const response = await fetch(url, {\n headers: { 'Content-Type': 'application/json' },\n })\n\n if (response.status === 404) return null\n\n if (!response.ok) throw new Error(response.statusText)\n\n if (response.headers.get('content-type')?.includes('application/json') !== true) {\n throw new Error(\n `Expected JSON response from \"${url}\" but got \"${response.headers.get('content-type')}\"`,\n )\n }\n\n return response.json()\n}\n\nexport function fetchAPIResource<T extends APIResourceType>(\n resourceType: T,\n resourceId: string,\n locale?: Intl.Locale,\n): Thunk<Promise<Extract<APIResource, { __typename: T }> | null>> {\n return async (dispatch, getState) => {\n const state = getState()\n\n if (getHasAPIResource(state, resourceType, resourceId)) {\n return getAPIResource(state, resourceType, resourceId)\n }\n\n let resource: APIResource | null\n\n switch (resourceType) {\n case APIResourceType.Swatch:\n resource = await fetchJson<Swatch>(`/api/makeswift/swatches/${resourceId}`)\n break\n\n case APIResourceType.File:\n resource = await fetchJson<File>(`/api/makeswift/files/${resourceId}`)\n break\n\n case APIResourceType.Typography:\n resource = await fetchJson<Typography>(`/api/makeswift/typographies/${resourceId}`)\n break\n\n case APIResourceType.GlobalElement:\n resource = await fetchJson<GlobalElement>(`/api/makeswift/global-elements/${resourceId}`)\n break\n\n case APIResourceType.LocalizedGlobalElement: {\n if (locale == null) throw new Error('Locale is required to fetch LocalizedGlobalElement')\n\n resource = await fetchJson<LocalizedGlobalElement>(\n `/api/makeswift/localized-global-elements/${resourceId}/${locale}`,\n )\n break\n }\n\n case APIResourceType.PagePathnameSlice: {\n const url = new URL(`/api/makeswift/page-pathname-slices/${resourceId}`, 'http://n')\n\n if (locale != null) url.searchParams.set('locale', locale.toString())\n\n resource = await fetchJson<PagePathnameSlice>(url.pathname + url.search)\n break\n }\n\n case APIResourceType.Table:\n resource = await fetchJson<Table>(`/api/makeswift/tables/${resourceId}`)\n break\n\n default:\n resource = null\n }\n\n dispatch(apiResourceFulfilled(resourceType, resourceId, resource))\n\n return resource as Extract<APIResource, { __typename: T }> | null\n }\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({ serializedState }: { serializedState?: SerializedState }): Store {\n return createStore(reducer, APIResources.getInitialState(serializedState), applyMiddleware(thunk))\n}\n"],"mappings":"AAAA,SAAS,iBAAiB,mBAAwC;AAClE,OAAO,WAA2C;AAElD,YAAY,kBAAkB;AAC9B,SAAiB,4BAA4B;AAC7C;AAAA,EAEE;AAAA,OAQK;AAEP,MAAM,UAAU,aAAa;AAMtB,SAAS,mBAAmB,OAA+B;AAChE,SAAO,aAAa,mBAAmB,KAAK;AAC9C;AAEO,SAAS,kBACd,OACA,cACA,YACS;AACT,SAAO,aAAa,kBAAkB,OAAO,cAAc,UAAU;AACvE;AAEO,SAAS,eACd,OACA,cACA,YACgD;AAChD,SAAO,aAAa,eAAe,OAAO,cAAc,UAAU;AACpE;AAIA,eAAe,UAAa,KAAgC;AAC1D,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,EAChD,CAAC;AAED,MAAI,SAAS,WAAW;AAAK,WAAO;AAEpC,MAAI,CAAC,SAAS;AAAI,UAAM,IAAI,MAAM,SAAS,UAAU;AAErD,MAAI,SAAS,QAAQ,IAAI,cAAc,GAAG,SAAS,kBAAkB,MAAM,MAAM;AAC/E,UAAM,IAAI;AAAA,MACR,gCAAgC,GAAG,cAAc,SAAS,QAAQ,IAAI,cAAc,CAAC;AAAA,IACvF;AAAA,EACF;AAEA,SAAO,SAAS,KAAK;AACvB;AAEO,SAAS,iBACd,cACA,YACA,QACgE;AAChE,SAAO,OAAO,UAAU,aAAa;AACnC,UAAM,QAAQ,SAAS;AAEvB,QAAI,kBAAkB,OAAO,cAAc,UAAU,GAAG;AACtD,aAAO,eAAe,OAAO,cAAc,UAAU;AAAA,IACvD;AAEA,QAAI;AAEJ,YAAQ,cAAc;AAAA,MACpB,KAAK,gBAAgB;AACnB,mBAAW,MAAM,UAAkB,2BAA2B,UAAU,EAAE;AAC1E;AAAA,MAEF,KAAK,gBAAgB;AACnB,mBAAW,MAAM,UAAgB,wBAAwB,UAAU,EAAE;AACrE;AAAA,MAEF,KAAK,gBAAgB;AACnB,mBAAW,MAAM,UAAsB,+BAA+B,UAAU,EAAE;AAClF;AAAA,MAEF,KAAK,gBAAgB;AACnB,mBAAW,MAAM,UAAyB,kCAAkC,UAAU,EAAE;AACxF;AAAA,MAEF,KAAK,gBAAgB,wBAAwB;AAC3C,YAAI,UAAU;AAAM,gBAAM,IAAI,MAAM,oDAAoD;AAExF,mBAAW,MAAM;AAAA,UACf,4CAA4C,UAAU,IAAI,MAAM;AAAA,QAClE;AACA;AAAA,MACF;AAAA,MAEA,KAAK,gBAAgB,mBAAmB;AACtC,cAAM,MAAM,IAAI,IAAI,uCAAuC,UAAU,IAAI,UAAU;AAEnF,YAAI,UAAU;AAAM,cAAI,aAAa,IAAI,UAAU,OAAO,SAAS,CAAC;AAEpE,mBAAW,MAAM,UAA6B,IAAI,WAAW,IAAI,MAAM;AACvE;AAAA,MACF;AAAA,MAEA,KAAK,gBAAgB;AACnB,mBAAW,MAAM,UAAiB,yBAAyB,UAAU,EAAE;AACvE;AAAA,MAEF;AACE,mBAAW;AAAA,IACf;AAEA,aAAS,qBAAqB,cAAc,YAAY,QAAQ,CAAC;AAEjE,WAAO;AAAA,EACT;AACF;AAMO,SAAS,eAAe,EAAE,gBAAgB,GAAiD;AAChG,SAAO,YAAY,SAAS,aAAa,gBAAgB,eAAe,GAAG,gBAAgB,KAAK,CAAC;AACnG;","names":[]}
1
+ {"version":3,"sources":["../../../src/state/makeswift-api-client.ts"],"sourcesContent":["import {\n applyMiddleware,\n createStore,\n combineReducers,\n type Dispatch as ReduxDispatch,\n type Store as ReduxStore,\n type Middleware,\n} from 'redux'\nimport thunk, { type ThunkAction, type ThunkDispatch } from 'redux-thunk'\n\nimport { composeWithDevToolsDevelopmentOnly } from '@redux-devtools/extension'\n\nimport { serializeState } from '../utils/serializeState'\n\nimport * as APIResources from './modules/api-resources'\nimport * as LocalizedResourcesMap from './modules/localized-resources-map'\nimport { type Action, ActionTypes, apiResourceFulfilled, setLocalizedResourceId } from './actions'\nimport {\n APIResourceType,\n type APIResource,\n type Swatch,\n type File,\n type Typography,\n type GlobalElement,\n type PagePathnameSlice,\n type Table,\n type LocalizedGlobalElement,\n type APIResourceLocale,\n} from '../api'\nimport { MAKESWIFT_CACHE_TAG } from '../next/api-handler/handlers/webhook/site-published'\n\nconst reducer = combineReducers({\n apiResources: APIResources.reducer,\n localizedResourcesMap: LocalizedResourcesMap.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\n\nexport type SerializedState = {\n apiResources: APIResources.SerializedState\n localizedResourcesMap: LocalizedResourcesMap.SerializedState\n}\n\nfunction getLocalizedResourceId(\n state: State,\n locale: string,\n resourceId: string,\n): string | undefined | null {\n return LocalizedResourcesMap.getLocalizedResourceId(\n state.localizedResourcesMap,\n locale,\n resourceId,\n )\n}\n\nexport function getHasAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: APIResourceType,\n resourceId: string,\n locale?: APIResourceLocale<T>,\n): boolean {\n switch (resourceType) {\n case APIResourceType.LocalizedGlobalElement:\n if (locale == null) {\n console.error(`Attempt to access ${resourceType} ${resourceId} without a locale`)\n return false\n }\n\n const localizedId = getLocalizedResourceId(state, locale, resourceId)\n return (\n localizedId != null &&\n APIResources.getHasAPIResource(state.apiResources, resourceType, localizedId, locale)\n )\n\n default:\n return APIResources.getHasAPIResource(state.apiResources, resourceType, resourceId, locale)\n }\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 switch (resourceType) {\n case APIResourceType.LocalizedGlobalElement:\n if (locale == null) {\n console.error(`Attempt to access ${resourceType} ${resourceId} without a locale`)\n return null\n }\n\n const localizedId = getLocalizedResourceId(state, locale, resourceId)\n return localizedId != null\n ? APIResources.getAPIResource(state.apiResources, resourceType, localizedId, locale)\n : null\n\n default:\n return APIResources.getAPIResource(state.apiResources, resourceType, resourceId, locale)\n }\n}\n\ntype Thunk<ReturnType> = ThunkAction<ReturnType, State, unknown, Action>\n\nasync function fetchJson<T>(url: string): Promise<T | null> {\n const response = await fetch(url, {\n headers: { 'Content-Type': 'application/json' },\n next: { tags: [MAKESWIFT_CACHE_TAG] },\n })\n\n if (response.status === 404) return null\n\n if (!response.ok) throw new Error(response.statusText)\n\n if (response.headers.get('content-type')?.includes('application/json') !== true) {\n throw new Error(\n `Expected JSON response from \"${url}\" but got \"${response.headers.get('content-type')}\"`,\n )\n }\n\n return response.json()\n}\n\nexport function fetchAPIResource<T extends APIResourceType>(\n resourceType: T,\n resourceId: string,\n locale?: APIResourceLocale<T>,\n): Thunk<Promise<Extract<APIResource, { __typename: T }> | null>> {\n return async (dispatch, getState) => {\n const state = getState()\n\n if (getHasAPIResource(state, resourceType, resourceId, locale)) {\n return getAPIResource(state, resourceType, resourceId, locale)\n }\n\n let resource: APIResource | null\n\n switch (resourceType) {\n case APIResourceType.Swatch:\n resource = await fetchJson<Swatch>(`/api/makeswift/swatches/${resourceId}`)\n break\n\n case APIResourceType.File:\n resource = await fetchJson<File>(`/api/makeswift/files/${resourceId}`)\n break\n\n case APIResourceType.Typography:\n resource = await fetchJson<Typography>(`/api/makeswift/typographies/${resourceId}`)\n break\n\n case APIResourceType.GlobalElement:\n resource = await fetchJson<GlobalElement>(`/api/makeswift/global-elements/${resourceId}`)\n break\n\n case APIResourceType.LocalizedGlobalElement: {\n if (locale == null) throw new Error('Locale is required to fetch LocalizedGlobalElement')\n\n // If `getLocalizedResourceId` returns null, it means we have tried to fetch the resource,\n // but the resource is not available. If we haven't fetched it yet, it'll return undefined.\n if (getLocalizedResourceId(state, locale, resourceId) === null) {\n return null\n }\n\n resource = await fetchJson<LocalizedGlobalElement>(\n `/api/makeswift/localized-global-elements/${resourceId}/${locale}`,\n )\n\n dispatch(\n setLocalizedResourceId({\n locale,\n resourceId,\n localizedResourceId: resource?.id ?? null,\n }),\n )\n\n break\n }\n\n case APIResourceType.PagePathnameSlice: {\n const url = new URL(`/api/makeswift/page-pathname-slices/${resourceId}`, 'http://n')\n\n if (locale != null) url.searchParams.set('locale', locale)\n\n resource = await fetchJson<PagePathnameSlice>(url.pathname + url.search)\n break\n }\n\n case APIResourceType.Table:\n resource = await fetchJson<Table>(`/api/makeswift/tables/${resourceId}`)\n break\n\n default:\n resource = null\n }\n\n dispatch(apiResourceFulfilled(resourceType, resourceId, resource, locale))\n\n return resource as Extract<APIResource, { __typename: T }> | null\n }\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\n// FIXME: this middleware can be removed once we've upgraded the builder\n// to always provide the locale when dispatching resource actions\nfunction defaultLocaleMiddleware(\n defaultLocale: string | undefined,\n): Middleware<Dispatch, State, Dispatch> {\n return () => (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.CHANGE_API_RESOURCE:\n case ActionTypes.EVICT_API_RESOURCE:\n case ActionTypes.SET_LOCALIZED_RESOURCE_ID: {\n const { locale } = action.payload\n return next({\n ...action,\n payload: { ...action.payload, locale: locale ?? defaultLocale },\n } as Action)\n }\n }\n\n return next(action)\n }\n }\n}\n\nexport function configureStore({\n defaultLocale,\n serializedState,\n}: {\n defaultLocale: string | undefined\n serializedState?: SerializedState\n}): Store {\n const composeEnhancers = composeWithDevToolsDevelopmentOnly({\n name: `API client store (${new Date().toISOString()})`,\n serialize: true,\n stateSanitizer: (state: any) => serializeState(state),\n actionsDenylist: [\n ActionTypes.BUILDER_POINTER_MOVE,\n ActionTypes.HANDLE_POINTER_MOVE,\n ActionTypes.ELEMENT_FROM_POINT_CHANGE,\n ],\n })\n\n return createStore(\n reducer,\n {\n apiResources: APIResources.getInitialState(serializedState?.apiResources),\n localizedResourcesMap: LocalizedResourcesMap.getInitialState(\n serializedState?.localizedResourcesMap,\n ),\n },\n composeEnhancers(applyMiddleware(thunk, defaultLocaleMiddleware(defaultLocale))),\n )\n}\n"],"mappings":"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","names":[]}