@makeswift/runtime 0.27.2 → 0.27.3

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 (240) hide show
  1. package/dist/cjs/api/api-resources-client.js +160 -0
  2. package/dist/cjs/api/api-resources-client.js.map +1 -0
  3. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  4. package/dist/cjs/api-handler/handlers/webhook/diff-projection.js +62 -0
  5. package/dist/cjs/api-handler/handlers/webhook/diff-projection.js.map +1 -0
  6. package/dist/cjs/box-model.js +33 -0
  7. package/dist/cjs/box-model.js.map +1 -0
  8. package/dist/cjs/builder/serialization.js +78 -0
  9. package/dist/cjs/builder/serialization.js.map +1 -0
  10. package/dist/cjs/client/index.js +3 -3
  11. package/dist/cjs/components/builtin/index.js +84 -0
  12. package/dist/cjs/components/builtin/index.js.map +1 -0
  13. package/dist/cjs/components/index.js +25 -0
  14. package/dist/cjs/components/index.js.map +1 -0
  15. package/dist/cjs/controls/rich-text-v2/translation.js +187 -0
  16. package/dist/cjs/controls/rich-text-v2/translation.js.map +1 -0
  17. package/dist/cjs/controls/serialization/base/index.js +78 -0
  18. package/dist/cjs/controls/serialization/base/index.js.map +1 -0
  19. package/dist/cjs/controls/serialization/base/visitor.js +59 -0
  20. package/dist/cjs/controls/serialization/base/visitor.js.map +1 -0
  21. package/dist/cjs/controls/serialization/index.js +55 -0
  22. package/dist/cjs/controls/serialization/index.js.map +1 -0
  23. package/dist/cjs/controls/serialization/message-port/function-serialization.js +79 -0
  24. package/dist/cjs/controls/serialization/message-port/function-serialization.js.map +1 -0
  25. package/dist/cjs/controls/serialization/message-port/index.js +25 -0
  26. package/dist/cjs/controls/serialization/message-port/index.js.map +1 -0
  27. package/dist/cjs/controls/serialization/message-port/visitor.js +48 -0
  28. package/dist/cjs/controls/serialization/message-port/visitor.js.map +1 -0
  29. package/dist/cjs/core/index.js +57 -0
  30. package/dist/cjs/core/index.js.map +1 -0
  31. package/dist/cjs/next/api-handler/config/pages-router.js +1 -1
  32. package/dist/cjs/next/api-handler/config/pages-router.js.map +1 -1
  33. package/dist/cjs/next/fetch.js +30 -0
  34. package/dist/cjs/next/fetch.js.map +1 -0
  35. package/dist/cjs/prop-controllers/index.js +48 -0
  36. package/dist/cjs/prop-controllers/index.js.map +1 -0
  37. package/dist/cjs/prop-controllers/serialization.js +355 -0
  38. package/dist/cjs/prop-controllers/serialization.js.map +1 -0
  39. package/dist/cjs/react.js +40 -0
  40. package/dist/cjs/react.js.map +1 -0
  41. package/dist/cjs/runtimes/react/components/LiveProvider.js.map +1 -1
  42. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js +33 -0
  43. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js.map +1 -0
  44. package/dist/cjs/runtimes/react/components/PreviewProvider.js +3 -9
  45. package/dist/cjs/runtimes/react/components/PreviewProvider.js.map +1 -1
  46. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js +10 -5
  47. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -1
  48. package/dist/cjs/runtimes/react/hooks/use-current-breakpoint.js +39 -0
  49. package/dist/cjs/runtimes/react/hooks/use-current-breakpoint.js.map +1 -0
  50. package/dist/cjs/runtimes/react/lib/resolved-style-to-css.js +59 -0
  51. package/dist/cjs/runtimes/react/lib/resolved-style-to-css.js.map +1 -0
  52. package/dist/cjs/runtimes/react/resource-resolver.js +52 -0
  53. package/dist/cjs/runtimes/react/resource-resolver.js.map +1 -0
  54. package/dist/cjs/state/actions.js +423 -0
  55. package/dist/cjs/state/actions.js.map +1 -0
  56. package/dist/cjs/state/api-client/client-store.js +81 -0
  57. package/dist/cjs/state/api-client/client-store.js.map +1 -0
  58. package/dist/cjs/state/api-client/fetch-api-resource.js +125 -0
  59. package/dist/cjs/state/api-client/fetch-api-resource.js.map +1 -0
  60. package/dist/cjs/state/api-client/state.js +89 -0
  61. package/dist/cjs/state/api-client/state.js.map +1 -0
  62. package/dist/cjs/state/api-client/store.js +36 -0
  63. package/dist/cjs/state/api-client/store.js.map +1 -0
  64. package/dist/cjs/state/builder-api/api.js +17 -0
  65. package/dist/cjs/state/builder-api/api.js.map +1 -0
  66. package/dist/cjs/state/builder-api/navigation-listener.js +110 -0
  67. package/dist/cjs/state/builder-api/navigation-listener.js.map +1 -0
  68. package/dist/cjs/state/mixins/breakpoint-watch.js +72 -0
  69. package/dist/cjs/state/mixins/breakpoint-watch.js.map +1 -0
  70. package/dist/cjs/state/react-builder-preview.js +97 -73
  71. package/dist/cjs/state/react-builder-preview.js.map +1 -1
  72. package/dist/cjs/state/react-page.js +57 -15
  73. package/dist/cjs/state/react-page.js.map +1 -1
  74. package/dist/cjs/utils/ref-counted-map.js +120 -0
  75. package/dist/cjs/utils/ref-counted-map.js.map +1 -0
  76. package/dist/esm/api/api-resources-client.js +127 -0
  77. package/dist/esm/api/api-resources-client.js.map +1 -0
  78. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  79. package/dist/esm/api-handler/handlers/webhook/diff-projection.js +38 -0
  80. package/dist/esm/api-handler/handlers/webhook/diff-projection.js.map +1 -0
  81. package/dist/esm/box-model.js +7 -0
  82. package/dist/esm/box-model.js.map +1 -0
  83. package/dist/esm/builder/serialization.js +59 -0
  84. package/dist/esm/builder/serialization.js.map +1 -0
  85. package/dist/esm/client/index.js +3 -3
  86. package/dist/esm/components/builtin/index.js +34 -0
  87. package/dist/esm/components/builtin/index.js.map +1 -0
  88. package/dist/esm/components/index.js +3 -0
  89. package/dist/esm/components/index.js.map +1 -0
  90. package/dist/esm/controls/rich-text-v2/translation.js +152 -0
  91. package/dist/esm/controls/rich-text-v2/translation.js.map +1 -0
  92. package/dist/esm/controls/serialization/base/index.js +78 -0
  93. package/dist/esm/controls/serialization/base/index.js.map +1 -0
  94. package/dist/esm/controls/serialization/base/visitor.js +39 -0
  95. package/dist/esm/controls/serialization/base/visitor.js.map +1 -0
  96. package/dist/esm/controls/serialization/index.js +30 -0
  97. package/dist/esm/controls/serialization/index.js.map +1 -0
  98. package/dist/esm/controls/serialization/message-port/function-serialization.js +52 -0
  99. package/dist/esm/controls/serialization/message-port/function-serialization.js.map +1 -0
  100. package/dist/esm/controls/serialization/message-port/index.js +3 -0
  101. package/dist/esm/controls/serialization/message-port/index.js.map +1 -0
  102. package/dist/esm/controls/serialization/message-port/visitor.js +24 -0
  103. package/dist/esm/controls/serialization/message-port/visitor.js.map +1 -0
  104. package/dist/esm/core/index.js +35 -0
  105. package/dist/esm/core/index.js.map +1 -0
  106. package/dist/esm/next/api-handler/config/pages-router.js +1 -1
  107. package/dist/esm/next/api-handler/config/pages-router.js.map +1 -1
  108. package/dist/esm/next/fetch.js +6 -0
  109. package/dist/esm/next/fetch.js.map +1 -0
  110. package/dist/esm/prop-controllers/index.js +11 -0
  111. package/dist/esm/prop-controllers/index.js.map +1 -0
  112. package/dist/esm/prop-controllers/serialization.js +338 -0
  113. package/dist/esm/prop-controllers/serialization.js.map +1 -0
  114. package/dist/esm/react.js +11 -0
  115. package/dist/esm/react.js.map +1 -0
  116. package/dist/esm/runtimes/react/components/LiveProvider.js.map +1 -1
  117. package/dist/esm/runtimes/react/components/MakeswiftFonts.js +9 -0
  118. package/dist/esm/runtimes/react/components/MakeswiftFonts.js.map +1 -0
  119. package/dist/esm/runtimes/react/components/PreviewProvider.js +3 -9
  120. package/dist/esm/runtimes/react/components/PreviewProvider.js.map +1 -1
  121. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js +10 -5
  122. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -1
  123. package/dist/esm/runtimes/react/hooks/use-current-breakpoint.js +15 -0
  124. package/dist/esm/runtimes/react/hooks/use-current-breakpoint.js.map +1 -0
  125. package/dist/esm/runtimes/react/lib/resolved-style-to-css.js +38 -0
  126. package/dist/esm/runtimes/react/lib/resolved-style-to-css.js.map +1 -0
  127. package/dist/esm/runtimes/react/resource-resolver.js +28 -0
  128. package/dist/esm/runtimes/react/resource-resolver.js.map +1 -0
  129. package/dist/esm/state/actions.js +349 -0
  130. package/dist/esm/state/actions.js.map +1 -0
  131. package/dist/esm/state/api-client/client-store.js +49 -0
  132. package/dist/esm/state/api-client/client-store.js.map +1 -0
  133. package/dist/esm/state/api-client/fetch-api-resource.js +93 -0
  134. package/dist/esm/state/api-client/fetch-api-resource.js.map +1 -0
  135. package/dist/esm/state/api-client/state.js +52 -0
  136. package/dist/esm/state/api-client/state.js.map +1 -0
  137. package/dist/esm/state/api-client/store.js +12 -0
  138. package/dist/esm/state/api-client/store.js.map +1 -0
  139. package/dist/esm/state/builder-api/api.js +1 -0
  140. package/dist/esm/state/builder-api/api.js.map +1 -0
  141. package/dist/esm/state/builder-api/navigation-listener.js +86 -0
  142. package/dist/esm/state/builder-api/navigation-listener.js.map +1 -0
  143. package/dist/esm/state/mixins/breakpoint-watch.js +48 -0
  144. package/dist/esm/state/mixins/breakpoint-watch.js.map +1 -0
  145. package/dist/esm/state/react-builder-preview.js +115 -72
  146. package/dist/esm/state/react-builder-preview.js.map +1 -1
  147. package/dist/esm/state/react-page.js +62 -11
  148. package/dist/esm/state/react-page.js.map +1 -1
  149. package/dist/esm/utils/ref-counted-map.js +96 -0
  150. package/dist/esm/utils/ref-counted-map.js.map +1 -0
  151. package/dist/types/api/api-resources-client.d.ts +57 -0
  152. package/dist/types/api/api-resources-client.d.ts.map +1 -0
  153. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts +201 -0
  154. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts.map +1 -0
  155. package/dist/types/box-model.d.ts +3 -0
  156. package/dist/types/box-model.d.ts.map +1 -0
  157. package/dist/types/builder/serialization.d.ts +23 -0
  158. package/dist/types/builder/serialization.d.ts.map +1 -0
  159. package/dist/types/builder/serialization.test.d.ts +2 -0
  160. package/dist/types/builder/serialization.test.d.ts.map +1 -0
  161. package/dist/types/client/tests/client.get-component-snapshots.test.d.ts +2 -0
  162. package/dist/types/client/tests/client.get-component-snapshots.test.d.ts.map +1 -0
  163. package/dist/types/client/tests/client.introspect-many.test.d.ts +2 -0
  164. package/dist/types/client/tests/client.introspect-many.test.d.ts.map +1 -0
  165. package/dist/types/components/builtin/index.d.ts +17 -0
  166. package/dist/types/components/builtin/index.d.ts.map +1 -0
  167. package/dist/types/components/hooks/__tests__/useMediaQuery.test.d.ts +3 -0
  168. package/dist/types/components/hooks/__tests__/useMediaQuery.test.d.ts.map +1 -0
  169. package/dist/types/components/index.d.ts +3 -0
  170. package/dist/types/components/index.d.ts.map +1 -0
  171. package/dist/types/controls/rich-text-v2/translation.d.ts +6 -0
  172. package/dist/types/controls/rich-text-v2/translation.d.ts.map +1 -0
  173. package/dist/types/controls/serialization/base/index.d.ts +10 -0
  174. package/dist/types/controls/serialization/base/index.d.ts.map +1 -0
  175. package/dist/types/controls/serialization/base/visitor.d.ts +7 -0
  176. package/dist/types/controls/serialization/base/visitor.d.ts.map +1 -0
  177. package/dist/types/controls/serialization/index.d.ts +10 -0
  178. package/dist/types/controls/serialization/index.d.ts.map +1 -0
  179. package/dist/types/controls/serialization/message-port/function-serialization.d.ts +16 -0
  180. package/dist/types/controls/serialization/message-port/function-serialization.d.ts.map +1 -0
  181. package/dist/types/controls/serialization/message-port/function-serialization.test.d.ts +2 -0
  182. package/dist/types/controls/serialization/message-port/function-serialization.test.d.ts.map +1 -0
  183. package/dist/types/controls/serialization/message-port/index.d.ts +3 -0
  184. package/dist/types/controls/serialization/message-port/index.d.ts.map +1 -0
  185. package/dist/types/controls/serialization/message-port/visitor.d.ts +7 -0
  186. package/dist/types/controls/serialization/message-port/visitor.d.ts.map +1 -0
  187. package/dist/types/core/index.d.ts +2 -0
  188. package/dist/types/core/index.d.ts.map +1 -0
  189. package/dist/types/next/api-handler/config/pages-router.test.d.ts +2 -0
  190. package/dist/types/next/api-handler/config/pages-router.test.d.ts.map +1 -0
  191. package/dist/types/next/components/tests/controls/code-control.test.d.ts +2 -0
  192. package/dist/types/next/components/tests/controls/code-control.test.d.ts.map +1 -0
  193. package/dist/types/next/components/tests/makeswift-component-rendering.test.d.ts +3 -0
  194. package/dist/types/next/components/tests/makeswift-component-rendering.test.d.ts.map +1 -0
  195. package/dist/types/next/fetch.d.ts +3 -0
  196. package/dist/types/next/fetch.d.ts.map +1 -0
  197. package/dist/types/prop-controllers/index.d.ts +8 -0
  198. package/dist/types/prop-controllers/index.d.ts.map +1 -0
  199. package/dist/types/prop-controllers/serialization.d.ts +228 -0
  200. package/dist/types/prop-controllers/serialization.d.ts.map +1 -0
  201. package/dist/types/react.d.ts +4 -0
  202. package/dist/types/react.d.ts.map +1 -0
  203. package/dist/types/runtimes/react/components/LiveProvider.d.ts +2 -2
  204. package/dist/types/runtimes/react/components/LiveProvider.d.ts.map +1 -1
  205. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts +7 -0
  206. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts.map +1 -0
  207. package/dist/types/runtimes/react/components/PreviewProvider.d.ts +2 -4
  208. package/dist/types/runtimes/react/components/PreviewProvider.d.ts.map +1 -1
  209. package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts.map +1 -1
  210. package/dist/types/runtimes/react/hooks/use-current-breakpoint.d.ts +3 -0
  211. package/dist/types/runtimes/react/hooks/use-current-breakpoint.d.ts.map +1 -0
  212. package/dist/types/runtimes/react/lib/resolved-style-to-css.d.ts +4 -0
  213. package/dist/types/runtimes/react/lib/resolved-style-to-css.d.ts.map +1 -0
  214. package/dist/types/runtimes/react/resource-resolver.d.ts +10 -0
  215. package/dist/types/runtimes/react/resource-resolver.d.ts.map +1 -0
  216. package/dist/types/state/actions.d.ts +461 -0
  217. package/dist/types/state/actions.d.ts.map +1 -0
  218. package/dist/types/state/api-client/client-store.d.ts +6 -0
  219. package/dist/types/state/api-client/client-store.d.ts.map +1 -0
  220. package/dist/types/state/api-client/fetch-api-resource.d.ts +11 -0
  221. package/dist/types/state/api-client/fetch-api-resource.d.ts.map +1 -0
  222. package/dist/types/state/api-client/state.d.ts +30 -0
  223. package/dist/types/state/api-client/state.d.ts.map +1 -0
  224. package/dist/types/state/api-client/store.d.ts +18 -0
  225. package/dist/types/state/api-client/store.d.ts.map +1 -0
  226. package/dist/types/state/builder-api/api.d.ts +9 -0
  227. package/dist/types/state/builder-api/api.d.ts.map +1 -0
  228. package/dist/types/state/builder-api/navigation-listener.d.ts +3 -0
  229. package/dist/types/state/builder-api/navigation-listener.d.ts.map +1 -0
  230. package/dist/types/state/mixins/breakpoint-watch.d.ts +11 -0
  231. package/dist/types/state/mixins/breakpoint-watch.d.ts.map +1 -0
  232. package/dist/types/state/react-builder-preview.d.ts +7 -5
  233. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  234. package/dist/types/state/react-page.d.ts +3 -3
  235. package/dist/types/state/react-page.d.ts.map +1 -1
  236. package/dist/types/utils/__tests__/ref-counted-map.test.d.ts +2 -0
  237. package/dist/types/utils/__tests__/ref-counted-map.test.d.ts.map +1 -0
  238. package/dist/types/utils/ref-counted-map.d.ts +32 -0
  239. package/dist/types/utils/ref-counted-map.d.ts.map +1 -0
  240. package/package.json +3 -3
@@ -28,11 +28,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var react_builder_preview_exports = {};
30
30
  __export(react_builder_preview_exports, {
31
- builderAPIMiddleware: () => builderAPIMiddleware,
32
31
  configureStore: () => configureStore,
33
32
  createBox: () => import_box_models.createBox,
34
33
  getBox: () => import_box_models.getBox,
35
34
  initialize: () => initialize,
35
+ messageChannelMiddleware: () => messageChannelMiddleware,
36
36
  parse: () => import_box_models.parse,
37
37
  propControllerHandlesMiddleware: () => propControllerHandlesMiddleware,
38
38
  reducer: () => reducer,
@@ -56,15 +56,10 @@ var ElementImperativeHandles = __toESM(require("./modules/element-imperative-han
56
56
  var Breakpoints = __toESM(require("./modules/breakpoints"));
57
57
  var import_setup_teardown = require("./mixins/setup-teardown");
58
58
  var ReactPage = __toESM(require("./react-page"));
59
- var Shared = __toESM(require("./shared-api"));
60
- var import_actions2 = require("./builder-api/actions");
61
- var Builder = __toESM(require("./builder-api/actions"));
62
- var import_internal = require("./actions/internal");
63
- var Internal = __toESM(require("./actions/internal"));
59
+ var import_actions = require("./actions");
64
60
  var import_toolkit2 = require("./toolkit");
65
61
  var import_instances = require("../prop-controllers/instances");
66
62
  var import_builder = require("../builder");
67
- var import_host_api = require("./host-api");
68
63
  var import_box_models = require("./modules/box-models");
69
64
  const reducer = (0, import_toolkit.combineReducers)({
70
65
  documents: Documents.reducer,
@@ -178,7 +173,7 @@ function measureElements() {
178
173
  }
179
174
  });
180
175
  if (changedBoxModels.size > 0)
181
- dispatch(Builder.changeElementBoxModels(changedBoxModels));
176
+ dispatch((0, import_actions.changeElementBoxModels)(changedBoxModels));
182
177
  };
183
178
  }
184
179
  function startMeasuringElements() {
@@ -215,7 +210,7 @@ function lockDocumentScroll() {
215
210
  window.document.documentElement.removeEventListener("wheel", handleWheelEvent);
216
211
  };
217
212
  function handleWheelEvent({ deltaX, deltaY }) {
218
- dispatch(Builder.handleWheel({ deltaX, deltaY }));
213
+ dispatch((0, import_actions.handleWheel)({ deltaX, deltaY }));
219
214
  }
220
215
  };
221
216
  }
@@ -226,7 +221,7 @@ function startHandlingPointerMoveEvent() {
226
221
  window.document.documentElement.removeEventListener("pointermove", handlePointerMoveEvent);
227
222
  };
228
223
  function handlePointerMoveEvent({ clientX, clientY }) {
229
- dispatch(Builder.handlePointerMove({ clientX, clientY }));
224
+ dispatch((0, import_actions.handlePointerMove)({ clientX, clientY }));
230
225
  }
231
226
  };
232
227
  }
@@ -267,7 +262,7 @@ function startMeasuringDocumentElement() {
267
262
  const nextSize = getElementSize(window.document.documentElement);
268
263
  if (!(0, import_deepEqual.default)(lastSize, nextSize)) {
269
264
  lastSize = nextSize;
270
- dispatch(Builder.changeDocumentElementSize(nextSize));
265
+ dispatch((0, import_actions.changeDocumentElementSize)(nextSize));
271
266
  }
272
267
  animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest);
273
268
  }
@@ -314,7 +309,7 @@ function startPollingElementFromPoint() {
314
309
  if (elementFromPoint !== lastElementFromPoint) {
315
310
  lastElementFromPoint = elementFromPoint;
316
311
  const keys = dispatch(elementKeysFromElementFromPoint(elementFromPoint));
317
- dispatch(Builder.elementFromPointChange(keys));
312
+ dispatch((0, import_actions.elementFromPointChange)(keys));
318
313
  }
319
314
  animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest);
320
315
  }
@@ -328,14 +323,12 @@ function registerBuilderComponents() {
328
323
  const descriptors = getComponentPropControllerDescriptors(state, type);
329
324
  if (descriptors != null) {
330
325
  const [serializedControls, transferables] = (0, import_builder.serializeControls)(descriptors);
331
- dispatch(
332
- Builder.registerBuilderComponent({ type, meta, serializedControls }, transferables)
333
- );
326
+ dispatch((0, import_actions.registerBuilderComponent)({ type, meta, serializedControls }, transferables));
334
327
  }
335
328
  });
336
329
  return () => {
337
330
  componentsMeta.forEach((_, type) => {
338
- dispatch(Builder.unregisterBuilderComponent({ type }));
331
+ dispatch((0, import_actions.unregisterBuilderComponent)({ type }));
339
332
  });
340
333
  };
341
334
  };
@@ -344,16 +337,16 @@ function registerBuilderDocuments() {
344
337
  return (dispatch, getState) => {
345
338
  const documents = Documents.getDocuments(getDocumentsStateSlice(getState()));
346
339
  documents.forEach((document2) => {
347
- dispatch(Builder.registerBuilderDocument(document2));
340
+ dispatch((0, import_actions.registerBuilderDocument)(document2));
348
341
  });
349
342
  return () => {
350
343
  documents.forEach((_document, documentKey) => {
351
- dispatch(Builder.unregisterBuilderDocument(documentKey));
344
+ dispatch((0, import_actions.unregisterBuilderDocument)(documentKey));
352
345
  });
353
346
  };
354
347
  };
355
348
  }
356
- function initialize(builderProxy) {
349
+ function initialize(channel) {
357
350
  return (dispatch, getState) => {
358
351
  const unregisterBuilderDocuments = dispatch(registerBuilderDocuments());
359
352
  const stopMeasuringElements = dispatch(startMeasuringElements());
@@ -364,9 +357,9 @@ function initialize(builderProxy) {
364
357
  const stopPollingElementFromPoint = dispatch(startPollingElementFromPoint());
365
358
  const unregisterBuilderComponents = dispatch(registerBuilderComponents());
366
359
  const breakpoints = ReactPage.getBreakpoints(getState());
367
- dispatch(Shared.setBreakpoints(breakpoints));
368
- dispatch(Internal.setIsInBuilder(true));
369
- builderProxy.dispatchBuffered();
360
+ dispatch((0, import_actions.setBreakpoints)(breakpoints));
361
+ dispatch((0, import_actions.setIsInBuilder)(true));
362
+ channel.dispatchBuffered();
370
363
  return () => {
371
364
  unregisterBuilderDocuments();
372
365
  stopMeasuringElements();
@@ -376,7 +369,7 @@ function initialize(builderProxy) {
376
369
  stopHandlingPointerMoveEvent();
377
370
  stopPollingElementFromPoint();
378
371
  unregisterBuilderComponents();
379
- dispatch(Internal.setIsInBuilder(false));
372
+ dispatch((0, import_actions.setIsInBuilder)(false));
380
373
  };
381
374
  };
382
375
  }
@@ -384,10 +377,10 @@ function measureBoxModelsMiddleware() {
384
377
  return (0, import_toolkit2.actionMiddleware)(({ dispatch }) => (next) => {
385
378
  return (action) => {
386
379
  switch (action.type) {
387
- case import_internal.InternalActionTypes.REGISTER_COMPONENT_HANDLE: {
380
+ case import_actions.ActionTypes.REGISTER_COMPONENT_HANDLE: {
388
381
  if (BoxModels.isMeasurable(action.payload.componentHandle)) {
389
382
  dispatch(
390
- Internal.registerMeasurable(
383
+ (0, import_actions.registerMeasurable)(
391
384
  action.payload.documentKey,
392
385
  action.payload.elementKey,
393
386
  action.payload.componentHandle
@@ -396,17 +389,15 @@ function measureBoxModelsMiddleware() {
396
389
  }
397
390
  break;
398
391
  }
399
- case import_internal.InternalActionTypes.UNREGISTER_COMPONENT_HANDLE:
400
- dispatch(
401
- Internal.unregisterMeasurable(action.payload.documentKey, action.payload.elementKey)
402
- );
392
+ case import_actions.ActionTypes.UNREGISTER_COMPONENT_HANDLE:
393
+ dispatch((0, import_actions.unregisterMeasurable)(action.payload.documentKey, action.payload.elementKey));
403
394
  break;
404
395
  }
405
396
  return next(action);
406
397
  };
407
398
  });
408
399
  }
409
- function builderAPIMiddleware(builderProxy) {
400
+ function messageChannelMiddleware(channel) {
410
401
  return (0, import_toolkit2.actionMiddleware)(({ dispatch }) => (next) => {
411
402
  if (typeof window === "undefined")
412
403
  return (action) => next(action);
@@ -414,35 +405,42 @@ function builderAPIMiddleware(builderProxy) {
414
405
  };
415
406
  return (action) => {
416
407
  switch (action.type) {
417
- case import_actions2.BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS:
418
- case import_actions2.BuilderActionTypes.MOUNT_COMPONENT:
419
- case import_actions2.BuilderActionTypes.UNMOUNT_COMPONENT:
420
- case import_actions2.BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:
421
- case import_actions2.BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:
422
- case import_actions2.BuilderActionTypes.HANDLE_WHEEL:
423
- case import_actions2.BuilderActionTypes.HANDLE_POINTER_MOVE:
424
- case import_actions2.BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE:
425
- case import_actions2.BuilderActionTypes.SET_LOCALE:
426
- case import_actions2.BuilderActionTypes.SET_BREAKPOINTS:
427
- case import_actions2.BuilderActionTypes.REGISTER_BUILDER_DOCUMENT:
428
- case import_actions2.BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT:
429
- case import_actions2.BuilderActionTypes.REGISTER_BUILDER_COMPONENT:
430
- case import_actions2.BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT:
431
- builderProxy.execute(action);
408
+ case import_actions.ActionTypes.CHANGE_ELEMENT_BOX_MODELS:
409
+ case import_actions.ActionTypes.MOUNT_COMPONENT:
410
+ case import_actions.ActionTypes.UNMOUNT_COMPONENT:
411
+ case import_actions.ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:
412
+ case import_actions.ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:
413
+ case import_actions.ActionTypes.HANDLE_WHEEL:
414
+ case import_actions.ActionTypes.HANDLE_POINTER_MOVE:
415
+ case import_actions.ActionTypes.ELEMENT_FROM_POINT_CHANGE:
416
+ case import_actions.ActionTypes.SET_LOCALE:
417
+ case import_actions.ActionTypes.SET_BREAKPOINTS:
418
+ case import_actions.ActionTypes.REGISTER_BUILDER_DOCUMENT:
419
+ case import_actions.ActionTypes.UNREGISTER_BUILDER_DOCUMENT:
420
+ channel.postMessage(action);
421
+ break;
422
+ case import_actions.ActionTypes.REGISTER_BUILDER_COMPONENT: {
423
+ const { transferables, ...forwardedAction } = action;
424
+ channel.postMessage(forwardedAction, transferables);
425
+ break;
426
+ }
427
+ case import_actions.ActionTypes.UNREGISTER_BUILDER_COMPONENT:
428
+ channel.postMessage(action);
432
429
  break;
433
- case import_host_api.HostActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:
430
+ case import_actions.ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:
434
431
  window.document.documentElement.scrollTop = action.payload.scrollTop;
435
432
  break;
436
- case import_host_api.HostActionTypes.SCROLL_DOCUMENT_ELEMENT:
433
+ case import_actions.ActionTypes.SCROLL_DOCUMENT_ELEMENT:
437
434
  window.document.documentElement.scrollTop += action.payload.scrollTopDelta;
438
435
  break;
439
- case import_host_api.HostActionTypes.SET_BUILDER_EDIT_MODE:
436
+ case import_actions.ActionTypes.SET_BUILDER_EDIT_MODE:
437
+ channel.postMessage(action);
440
438
  window.getSelection()?.removeAllRanges();
441
439
  break;
442
- case import_host_api.HostActionTypes.INIT:
443
- cleanUp = dispatch(initialize(builderProxy));
440
+ case import_actions.ActionTypes.INIT:
441
+ cleanUp = dispatch(initialize(channel));
444
442
  break;
445
- case import_host_api.HostActionTypes.CLEAN_UP:
443
+ case import_actions.ActionTypes.CLEAN_UP:
446
444
  cleanUp();
447
445
  break;
448
446
  }
@@ -463,15 +461,13 @@ function createAndRegisterPropControllers(documentKey, elementKey) {
463
461
  (acc, [propName, descriptor]) => {
464
462
  const propController = (0, import_instances.createPropController)(
465
463
  descriptor,
466
- (message) => dispatch(
467
- Builder.messageBuilderPropController(documentKey, elementKey, propName, message)
468
- )
464
+ (message) => dispatch((0, import_actions.messageBuilderPropController)(documentKey, elementKey, propName, message))
469
465
  );
470
466
  return { ...acc, [propName]: propController };
471
467
  },
472
468
  {}
473
469
  );
474
- dispatch(Internal.registerPropControllers(documentKey, elementKey, propControllers));
470
+ dispatch((0, import_actions.registerPropControllers)(documentKey, elementKey, propControllers));
475
471
  return propControllers;
476
472
  };
477
473
  }
@@ -479,21 +475,19 @@ function propControllerHandlesMiddleware() {
479
475
  return (0, import_toolkit2.actionMiddleware)(({ dispatch, getState }) => (next) => {
480
476
  return (action) => {
481
477
  switch (action.type) {
482
- case import_internal.InternalActionTypes.REGISTER_COMPONENT_HANDLE: {
478
+ case import_actions.ActionTypes.REGISTER_COMPONENT_HANDLE: {
483
479
  const { documentKey, elementKey, componentHandle } = action.payload;
484
480
  const element = ReactPage.getElement(getState(), documentKey, elementKey);
485
481
  const propControllers = dispatch(
486
482
  createAndRegisterPropControllers(documentKey, elementKey)
487
483
  );
488
484
  if (element != null && !ReactPage.isElementReference(element) && PropControllerHandles.isPropControllersHandle(componentHandle)) {
489
- dispatch(
490
- Internal.registerPropControllersHandle(documentKey, elementKey, componentHandle)
491
- );
485
+ dispatch((0, import_actions.registerPropControllersHandle)(documentKey, elementKey, componentHandle));
492
486
  componentHandle.setPropControllers(propControllers);
493
487
  }
494
488
  break;
495
489
  }
496
- case import_internal.InternalActionTypes.UNREGISTER_COMPONENT_HANDLE: {
490
+ case import_actions.ActionTypes.UNREGISTER_COMPONENT_HANDLE: {
497
491
  const { documentKey, elementKey } = action.payload;
498
492
  const handle = PropControllerHandles.getPropControllersHandle(
499
493
  getPropControllerHandlesStateSlice(getState()),
@@ -501,10 +495,10 @@ function propControllerHandlesMiddleware() {
501
495
  elementKey
502
496
  );
503
497
  handle?.setPropControllers(null);
504
- dispatch(Internal.unregisterPropControllers(documentKey, elementKey));
498
+ dispatch((0, import_actions.unregisterPropControllers)(documentKey, elementKey));
505
499
  break;
506
500
  }
507
- case import_host_api.HostActionTypes.MESSAGE_HOST_PROP_CONTROLLER: {
501
+ case import_actions.ActionTypes.MESSAGE_HOST_PROP_CONTROLLER: {
508
502
  const propController = PropControllerHandles.getPropController(
509
503
  getPropControllerHandlesStateSlice(getState()),
510
504
  action.payload.documentKey,
@@ -527,27 +521,57 @@ function makeswiftApiClientSyncMiddleware(client) {
527
521
  };
528
522
  });
529
523
  }
530
- function setupBuilderProxy(builderProxy) {
524
+ class MessageChannel {
525
+ channel = null;
526
+ bufferedMessages = [];
527
+ postMessage(message, transferables) {
528
+ if (this.channel) {
529
+ this.channel.postMessage(message, transferables ?? []);
530
+ } else {
531
+ this.bufferedMessages.push([message, transferables]);
532
+ }
533
+ }
534
+ setup(onMessage) {
535
+ const channel = new window.MessageChannel();
536
+ channel.port1.onmessage = onMessage;
537
+ window.parent.postMessage(channel.port2, "*", [channel.port2]);
538
+ this.channel = channel.port1;
539
+ }
540
+ dispatchBuffered() {
541
+ console.assert(this.channel != null, "channel is not setup");
542
+ this.bufferedMessages.forEach(([message, transferables]) => {
543
+ this.channel?.postMessage(message, transferables ?? []);
544
+ });
545
+ this.bufferedMessages = [];
546
+ }
547
+ teardown() {
548
+ if (this.channel) {
549
+ this.channel.onmessage = null;
550
+ this.channel.close();
551
+ }
552
+ }
553
+ }
554
+ function setupMessageChannel(channel) {
531
555
  return (dispatch) => {
532
- builderProxy.setup({ onHostAction: (action) => dispatch(action) });
556
+ channel.setup((event) => dispatch(event.data));
533
557
  };
534
558
  }
535
559
  function configureStore({
536
560
  preloadedState,
537
- client,
538
- builderProxy
561
+ client
539
562
  }) {
540
563
  const initialState = {
541
564
  ...preloadedState,
542
565
  isPreview: IsPreview.getInitialState(true)
543
566
  };
567
+ const channel = new MessageChannel();
544
568
  const store = (0, import_toolkit.configureStore)({
545
569
  reducer,
546
570
  preloadedState: initialState,
547
571
  middleware: (getDefaultMiddleware) => getDefaultMiddleware(import_toolkit2.middlewareOptions).concat(
548
572
  ReactPage.elementTreeMiddleware(),
549
573
  measureBoxModelsMiddleware(),
550
- builderAPIMiddleware(builderProxy),
574
+ messageChannelMiddleware(channel),
551
575
  propControllerHandlesMiddleware(),
552
576
  makeswiftApiClientSyncMiddleware(client)
553
577
  ),
@@ -555,17 +579,17 @@ function configureStore({
555
579
  (0, import_setup_teardown.withSetupTeardown)(
556
580
  () => {
557
581
  const dispatch = store.dispatch;
558
- dispatch(setupBuilderProxy(builderProxy));
582
+ dispatch(setupMessageChannel(channel));
559
583
  },
560
- () => builderProxy.teardown()
584
+ () => channel.teardown()
561
585
  )
562
586
  ),
563
587
  devTools: (0, import_toolkit2.devToolsConfig)({
564
588
  name: `Host store (${(/* @__PURE__ */ new Date()).toISOString()})`,
565
589
  actionsDenylist: [
566
- import_host_api.HostActionTypes.BUILDER_POINTER_MOVE,
567
- import_actions2.BuilderActionTypes.HANDLE_POINTER_MOVE,
568
- import_actions2.BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE
590
+ import_actions.ActionTypes.BUILDER_POINTER_MOVE,
591
+ import_actions.ActionTypes.HANDLE_POINTER_MOVE,
592
+ import_actions.ActionTypes.ELEMENT_FROM_POINT_CHANGE
569
593
  ]
570
594
  })
571
595
  });
@@ -573,11 +597,11 @@ function configureStore({
573
597
  }
574
598
  // Annotate the CommonJS export names for ESM import in node:
575
599
  0 && (module.exports = {
576
- builderAPIMiddleware,
577
600
  configureStore,
578
601
  createBox,
579
602
  getBox,
580
603
  initialize,
604
+ messageChannelMiddleware,
581
605
  parse,
582
606
  propControllerHandlesMiddleware,
583
607
  reducer,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/state/react-builder-preview.ts"],"sourcesContent":["import {\n configureStore as configureReduxStore,\n combineReducers,\n type Middleware,\n type ThunkAction,\n type ThunkDispatch,\n} from '@reduxjs/toolkit'\n\nimport { ControlInstance } from '@makeswift/controls'\n\nimport deepEqual from '../utils/deepEqual'\n\nimport * as Documents from './modules/read-write-documents'\nimport * as ElementTrees from './modules/element-trees'\nimport * as ReactComponents from './modules/react-components'\nimport * as BoxModels from './modules/box-models'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Pointer from './modules/pointer'\nimport * as ElementImperativeHandles from './modules/element-imperative-handles'\nimport * as Breakpoints from './modules/breakpoints'\n\nimport { withSetupTeardown } from './mixins/setup-teardown'\n\nimport * as ReactPage from './react-page'\nimport { type Action } from './actions'\n\nimport * as Shared from './shared-api'\n\nimport { BuilderActionTypes } from './builder-api/actions'\nimport * as Builder from './builder-api/actions'\n\nimport { InternalActionTypes } from './actions/internal'\nimport * as Internal from './actions/internal'\n\nimport { actionMiddleware, middlewareOptions, devToolsConfig } from './toolkit'\n\nimport { createPropController } from '../prop-controllers/instances'\nimport { serializeControls } from '../builder'\nimport { MakeswiftHostApiClient } from '../api/react'\nimport { ElementImperativeHandle } from '../runtimes/react/element-imperative-handle'\nimport { type BuilderAPIProxy } from './builder-api/proxy'\nimport { HostActionTypes } from './host-api'\n\nexport type { Operation } from './modules/read-write-documents'\nexport type { BoxModelHandle } from './modules/box-models'\nexport { createBox, getBox, parse } from './modules/box-models'\n\nexport const reducer = combineReducers({\n documents: Documents.reducer,\n elementTrees: ElementTrees.reducer,\n reactComponents: ReactComponents.reducer,\n boxModels: BoxModels.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n pointer: Pointer.reducer,\n elementImperativeHandles: ElementImperativeHandles.reducer,\n breakpoints: Breakpoints.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nfunction getBoxModelsStateSlice(state: State): BoxModels.State {\n return state.boxModels\n}\n\nfunction getMeasurables(state: State): Map<string, Map<string, BoxModels.Measurable>> {\n return BoxModels.getMeasurables(getBoxModelsStateSlice(state))\n}\n\nfunction getBoxModels(state: State): Map<string, Map<string, BoxModels.BoxModel>> {\n return BoxModels.getBoxModels(getBoxModelsStateSlice(state))\n}\n\nfunction getBoxModel(\n state: State,\n documentKey: string,\n elementKey: string,\n): BoxModels.BoxModel | null {\n return BoxModels.getBoxModel(getBoxModelsStateSlice(state), documentKey, elementKey)\n}\n\nfunction getComponentsMetaStateSlice(state: State): ComponentsMeta.State {\n return state.componentsMeta\n}\n\nfunction getComponentsMeta(state: State): Map<string, ComponentsMeta.ComponentMeta> {\n return ComponentsMeta.getComponentsMeta(getComponentsMetaStateSlice(state))\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nfunction getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nfunction getPointer(state: State): Pointer.Point | null {\n return Pointer.getPointer(state.pointer)\n}\n\nfunction getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return ElementImperativeHandles.getElementImperativeHandles(state.elementImperativeHandles)\n}\n\nfunction getElementImperativeHandlesContainingElement(\n state: State,\n element: Element,\n): Map<string, Map<string, ElementImperativeHandle>> {\n const elementImperativeHandles = getElementImperativeHandles(state)\n const filteredElementImperativeHandles = new Map<string, Map<string, ElementImperativeHandle>>()\n\n for (const [documentKey, byElementKey] of elementImperativeHandles) {\n const filteredByElementKey = new Map<string, ElementImperativeHandle>()\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n const handleElement = elementImperativeHandle.getDomNode()\n\n if (handleElement?.contains(element)) {\n filteredByElementKey.set(elementKey, elementImperativeHandle)\n }\n }\n\n if (filteredByElementKey.size > 0) {\n filteredElementImperativeHandles.set(documentKey, filteredByElementKey)\n }\n }\n\n return filteredElementImperativeHandles\n}\n\nfunction measureElements(): ThunkAction<void, State, unknown, Action> {\n return (dispatch, getState) => {\n const measurables = getMeasurables(getState())\n const currentBoxModels = getBoxModels(getState())\n const measuredBoxModels = new Map<string, Map<string, BoxModels.BoxModel>>()\n\n measurables.forEach((documentMeasurables, documentKey) => {\n const measuredDocumentBoxModels = new Map<string, BoxModels.BoxModel>()\n\n documentMeasurables.forEach((measurable, elementKey) => {\n const boxModel = BoxModels.measure(measurable)\n\n if (boxModel != null) measuredDocumentBoxModels.set(elementKey, boxModel)\n })\n\n if (measuredDocumentBoxModels.size > 0) {\n measuredBoxModels.set(documentKey, measuredDocumentBoxModels)\n }\n })\n\n const changedBoxModels = new Map<string, Map<string, BoxModels.BoxModel | null>>()\n\n currentBoxModels.forEach((currentDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n currentDocumentBoxModels.forEach((_boxModel, elementKey) => {\n if (!measuredBoxModels.get(documentKey)?.has(elementKey)) {\n changedDocumentBoxModels.set(elementKey, null)\n }\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n })\n\n measuredBoxModels.forEach((measuredDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n measuredDocumentBoxModels.forEach((measuredBoxModel, elementKey) => {\n const currentBoxModel = getBoxModel(getState(), documentKey, elementKey)\n\n if (currentBoxModel == null || !deepEqual(currentBoxModel, measuredBoxModel)) {\n changedDocumentBoxModels.set(elementKey, measuredBoxModel)\n }\n })\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n\n if (changedBoxModels.size > 0) dispatch(Builder.changeElementBoxModels(changedBoxModels))\n }\n}\n\nexport function startMeasuringElements(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n dispatch(measureElements())\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nexport type Size = {\n offsetWidth: number\n offsetHeight: number\n clientWidth: number\n clientHeight: number\n scrollWidth: number\n scrollHeight: number\n scrollTop: number\n scrollLeft: number\n}\n\nfunction getElementSize(element: HTMLElement): Size {\n return {\n offsetWidth: element.offsetWidth,\n offsetHeight: element.offsetHeight,\n clientWidth: element.clientWidth,\n clientHeight: element.clientHeight,\n scrollWidth: element.scrollWidth,\n scrollHeight: element.scrollHeight,\n scrollTop: element.scrollTop,\n scrollLeft: element.scrollLeft,\n }\n}\n\nfunction lockDocumentScroll(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const lastDocumentOverflow = window.document.documentElement.style.overflow\n window.document.documentElement.style.overflow = 'hidden'\n\n window.document.documentElement.addEventListener('wheel', handleWheelEvent)\n\n return () => {\n window.document.documentElement.style.overflow = lastDocumentOverflow\n window.document.documentElement.removeEventListener('wheel', handleWheelEvent)\n }\n\n function handleWheelEvent({ deltaX, deltaY }: WheelEvent) {\n dispatch(Builder.handleWheel({ deltaX, deltaY }))\n }\n }\n}\n\nfunction startHandlingPointerMoveEvent(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n window.document.documentElement.addEventListener('pointermove', handlePointerMoveEvent)\n\n return () => {\n window.document.documentElement.removeEventListener('pointermove', handlePointerMoveEvent)\n }\n\n function handlePointerMoveEvent({ clientX, clientY }: PointerEvent) {\n dispatch(Builder.handlePointerMove({ clientX, clientY }))\n }\n }\n}\n\nfunction startHandlingFocusEvents(): ThunkAction<() => void, State, unknown, Action> {\n return (_dispatch, getState) => {\n window.addEventListener('focusin', handleFocusIn)\n window.addEventListener('focusout', handleFocusOut)\n\n return () => {\n window.removeEventListener('focusin', handleFocusIn)\n window.removeEventListener('focusout', handleFocusOut)\n }\n\n function handleFocusIn(event: FocusEvent) {\n if (ReactPage.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {\n return\n }\n\n if (!(event.target instanceof window.HTMLElement) || !event.target.isContentEditable) {\n window.parent.focus()\n }\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (ReactPage.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {\n return\n }\n\n if (\n !(event.relatedTarget instanceof window.HTMLElement) ||\n !event.relatedTarget.isContentEditable\n ) {\n window.parent.focus()\n }\n }\n }\n}\n\nfunction startMeasuringDocumentElement(): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n let lastSize: Size\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n const nextSize = getElementSize(window.document.documentElement)\n\n if (!deepEqual(lastSize, nextSize)) {\n lastSize = nextSize\n\n dispatch(Builder.changeDocumentElementSize(nextSize))\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nfunction elementKeysFromElementFromPoint(\n elementFromPoint: Element | null,\n): ThunkAction<{ documentKey: string; elementKey: string } | null, State, unknown, Action> {\n return (_dispatch, getState) => {\n if (elementFromPoint == null) return null\n\n const elementImperativeHandles = getElementImperativeHandlesContainingElement(\n getState(),\n elementFromPoint,\n )\n const ascendingDepthDocumentKeys = ReactPage.getDocumentKeysSortedByDepth(getState())\n const descendingDepthDocumentKeys = ascendingDepthDocumentKeys.slice().reverse()\n\n let currentElement: Element | null = elementFromPoint\n let keys = null\n\n while (currentElement != null) {\n for (const documentKey of descendingDepthDocumentKeys) {\n const byElementKey = elementImperativeHandles.get(documentKey)\n\n if (byElementKey == null) continue\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n if (elementImperativeHandle.getDomNode() === currentElement) {\n return { documentKey, elementKey }\n }\n }\n }\n\n currentElement = currentElement.parentElement\n }\n\n return keys\n }\n}\n\nfunction startPollingElementFromPoint(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n let lastElementFromPoint: Element | null = null\n let animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameRequestId)\n }\n\n function handleAnimationFrameRequest() {\n const pointer = getPointer(getState())\n const elementFromPoint =\n pointer == null ? null : document.elementFromPoint(pointer.x, pointer.y)\n\n if (elementFromPoint !== lastElementFromPoint) {\n lastElementFromPoint = elementFromPoint\n\n const keys = dispatch(elementKeysFromElementFromPoint(elementFromPoint))\n\n dispatch(Builder.elementFromPointChange(keys))\n }\n\n animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nfunction registerBuilderComponents(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const state = getState()\n const componentsMeta = getComponentsMeta(state)\n\n componentsMeta.forEach((meta, type) => {\n const descriptors = getComponentPropControllerDescriptors(state, type)\n if (descriptors != null) {\n const [serializedControls, transferables] = serializeControls(descriptors)\n dispatch(\n Builder.registerBuilderComponent({ type, meta, serializedControls }, transferables),\n )\n }\n })\n\n return () => {\n componentsMeta.forEach((_, type) => {\n dispatch(Builder.unregisterBuilderComponent({ type }))\n })\n }\n }\n}\n\nfunction registerBuilderDocuments(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const documents = Documents.getDocuments(getDocumentsStateSlice(getState()))\n\n documents.forEach(document => {\n dispatch(Builder.registerBuilderDocument(document))\n })\n\n return () => {\n documents.forEach((_document, documentKey) => {\n dispatch(Builder.unregisterBuilderDocument(documentKey))\n })\n }\n }\n}\n\nexport function initialize(\n builderProxy: BuilderAPIProxy,\n): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const unregisterBuilderDocuments = dispatch(registerBuilderDocuments())\n const stopMeasuringElements = dispatch(startMeasuringElements())\n const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement())\n const stopHandlingFocusEvent = dispatch(startHandlingFocusEvents())\n const unlockDocumentScroll = dispatch(lockDocumentScroll())\n const stopHandlingPointerMoveEvent = dispatch(startHandlingPointerMoveEvent())\n const stopPollingElementFromPoint = dispatch(startPollingElementFromPoint())\n const unregisterBuilderComponents = dispatch(registerBuilderComponents())\n\n const breakpoints = ReactPage.getBreakpoints(getState())\n dispatch(Shared.setBreakpoints(breakpoints))\n dispatch(Internal.setIsInBuilder(true))\n builderProxy.dispatchBuffered()\n\n return () => {\n unregisterBuilderDocuments()\n stopMeasuringElements()\n stopMeasuringDocumentElement()\n stopHandlingFocusEvent()\n unlockDocumentScroll()\n stopHandlingPointerMoveEvent()\n stopPollingElementFromPoint()\n unregisterBuilderComponents()\n dispatch(Internal.setIsInBuilder(false))\n }\n }\n}\n\nfunction measureBoxModelsMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch }) => next => {\n return (action: Action) => {\n switch (action.type) {\n case InternalActionTypes.REGISTER_COMPONENT_HANDLE: {\n if (BoxModels.isMeasurable(action.payload.componentHandle)) {\n dispatch(\n Internal.registerMeasurable(\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n }\n\n break\n }\n\n case InternalActionTypes.UNREGISTER_COMPONENT_HANDLE:\n dispatch(\n Internal.unregisterMeasurable(action.payload.documentKey, action.payload.elementKey),\n )\n break\n }\n\n return next(action)\n }\n })\n}\n\nexport function builderAPIMiddleware(\n builderProxy: BuilderAPIProxy,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch }) => next => {\n if (typeof window === 'undefined') return (action: Action) => next(action)\n\n let cleanUp = () => {}\n return (action: Action) => {\n switch (action.type) {\n case BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS:\n case BuilderActionTypes.MOUNT_COMPONENT:\n case BuilderActionTypes.UNMOUNT_COMPONENT:\n case BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:\n case BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:\n case BuilderActionTypes.HANDLE_WHEEL:\n case BuilderActionTypes.HANDLE_POINTER_MOVE:\n case BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE:\n case BuilderActionTypes.SET_LOCALE:\n case BuilderActionTypes.SET_BREAKPOINTS:\n case BuilderActionTypes.REGISTER_BUILDER_DOCUMENT:\n case BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT:\n case BuilderActionTypes.REGISTER_BUILDER_COMPONENT:\n case BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT:\n builderProxy.execute(action)\n break\n\n case HostActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:\n window.document.documentElement.scrollTop = action.payload.scrollTop\n break\n\n case HostActionTypes.SCROLL_DOCUMENT_ELEMENT:\n window.document.documentElement.scrollTop += action.payload.scrollTopDelta\n break\n\n case HostActionTypes.SET_BUILDER_EDIT_MODE:\n window.getSelection()?.removeAllRanges()\n break\n\n case HostActionTypes.INIT:\n // dispatched by the parent window after establishing the connection\n cleanUp = dispatch(initialize(builderProxy))\n break\n\n case HostActionTypes.CLEAN_UP:\n // dispatched by the parent window on disconnect\n cleanUp()\n break\n }\n\n return next(action)\n }\n })\n}\n\nfunction createAndRegisterPropControllers(\n documentKey: string,\n elementKey: string,\n): ThunkAction<Record<string, ControlInstance> | null, State, unknown, Action> {\n return (dispatch, getState) => {\n const descriptors = ReactPage.getElementPropControllerDescriptors(\n getState(),\n documentKey,\n elementKey,\n )\n\n if (descriptors == null) return null\n\n const propControllers = Object.entries(descriptors).reduce(\n (acc, [propName, descriptor]) => {\n const propController = createPropController(descriptor, message =>\n dispatch(\n Builder.messageBuilderPropController(documentKey, elementKey, propName, message),\n ),\n ) as ControlInstance\n\n return { ...acc, [propName]: propController }\n },\n {} as Record<string, ControlInstance>,\n )\n\n dispatch(Internal.registerPropControllers(documentKey, elementKey, propControllers))\n\n return propControllers\n }\n}\n\nexport function propControllerHandlesMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch, getState }) => next => {\n return (action: Action) => {\n switch (action.type) {\n case InternalActionTypes.REGISTER_COMPONENT_HANDLE: {\n const { documentKey, elementKey, componentHandle } = action.payload\n const element = ReactPage.getElement(getState(), documentKey, elementKey)\n const propControllers = dispatch(\n createAndRegisterPropControllers(documentKey, elementKey),\n )\n\n if (\n element != null &&\n !ReactPage.isElementReference(element) &&\n PropControllerHandles.isPropControllersHandle(componentHandle)\n ) {\n dispatch(\n Internal.registerPropControllersHandle(documentKey, elementKey, componentHandle),\n )\n componentHandle.setPropControllers(propControllers)\n }\n\n break\n }\n\n case InternalActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const { documentKey, elementKey } = action.payload\n const handle = PropControllerHandles.getPropControllersHandle(\n getPropControllerHandlesStateSlice(getState()),\n documentKey,\n elementKey,\n )\n\n handle?.setPropControllers(null)\n\n dispatch(Internal.unregisterPropControllers(documentKey, elementKey))\n\n break\n }\n\n case HostActionTypes.MESSAGE_HOST_PROP_CONTROLLER: {\n const propController = PropControllerHandles.getPropController(\n getPropControllerHandlesStateSlice(getState()),\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.propName,\n )\n\n if (propController) propController.recv(action.payload.message)\n }\n }\n\n return next(action)\n }\n })\n}\n\nfunction makeswiftApiClientSyncMiddleware(\n client: MakeswiftHostApiClient,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(() => next => {\n return (action: Action) => {\n client.makeswiftApiClient.dispatch(action)\n\n return next(action)\n }\n })\n}\n\nfunction setupBuilderProxy(\n builderProxy: BuilderAPIProxy,\n): ThunkAction<void, State, unknown, Action> {\n return dispatch => {\n builderProxy.setup({ onHostAction: action => dispatch(action) })\n }\n}\n\nexport function configureStore({\n preloadedState,\n client,\n builderProxy,\n}: {\n preloadedState: Partial<State>\n client: MakeswiftHostApiClient\n builderProxy: BuilderAPIProxy\n}) {\n const initialState: Partial<State> = {\n ...preloadedState,\n isPreview: IsPreview.getInitialState(true),\n }\n\n const store = configureReduxStore({\n reducer,\n preloadedState: initialState,\n\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware(middlewareOptions).concat(\n ReactPage.elementTreeMiddleware(),\n measureBoxModelsMiddleware(),\n builderAPIMiddleware(builderProxy),\n propControllerHandlesMiddleware(),\n makeswiftApiClientSyncMiddleware(client),\n ),\n\n enhancers: getDefaultEnhancers =>\n getDefaultEnhancers().concat(\n withSetupTeardown(\n () => {\n const dispatch = store.dispatch as Dispatch\n dispatch(setupBuilderProxy(builderProxy))\n },\n () => builderProxy.teardown(),\n ),\n ),\n\n devTools: devToolsConfig({\n name: `Host store (${new Date().toISOString()})`,\n actionsDenylist: [\n HostActionTypes.BUILDER_POINTER_MOVE,\n BuilderActionTypes.HANDLE_POINTER_MOVE,\n BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE,\n ],\n }),\n })\n\n return store\n}\n\nexport type Store = ReturnType<typeof configureStore>\n"],"mappings":"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","names":["import_actions","import_toolkit","deepEqual","document","configureReduxStore"]}
1
+ {"version":3,"sources":["../../../src/state/react-builder-preview.ts"],"sourcesContent":["import {\n configureStore as configureReduxStore,\n combineReducers,\n type Middleware,\n type ThunkAction,\n type ThunkDispatch,\n} from '@reduxjs/toolkit'\n\nimport { ControlInstance } from '@makeswift/controls'\n\nimport deepEqual from '../utils/deepEqual'\n\nimport * as Documents from './modules/read-write-documents'\nimport * as ElementTrees from './modules/element-trees'\nimport * as ReactComponents from './modules/react-components'\nimport * as BoxModels from './modules/box-models'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Pointer from './modules/pointer'\nimport * as ElementImperativeHandles from './modules/element-imperative-handles'\nimport * as Breakpoints from './modules/breakpoints'\n\nimport { withSetupTeardown } from './mixins/setup-teardown'\n\nimport * as ReactPage from './react-page'\nimport {\n type Action,\n ActionTypes,\n changeDocumentElementSize,\n changeElementBoxModels,\n elementFromPointChange,\n handleWheel,\n handlePointerMove,\n messageBuilderPropController,\n registerBuilderComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n setBreakpoints,\n setIsInBuilder,\n unregisterBuilderComponent,\n unregisterBuilderDocument,\n unregisterMeasurable,\n unregisterPropControllers,\n registerBuilderDocument,\n} from './actions'\n\nimport { actionMiddleware, middlewareOptions, devToolsConfig } from './toolkit'\n\nimport { createPropController } from '../prop-controllers/instances'\nimport { serializeControls } from '../builder'\nimport { MakeswiftHostApiClient } from '../api/react'\nimport { ElementImperativeHandle } from '../runtimes/react/element-imperative-handle'\n\nexport type { Operation } from './modules/read-write-documents'\nexport type { BoxModelHandle } from './modules/box-models'\nexport { createBox, getBox, parse } from './modules/box-models'\n\nexport const reducer = combineReducers({\n documents: Documents.reducer,\n elementTrees: ElementTrees.reducer,\n reactComponents: ReactComponents.reducer,\n boxModels: BoxModels.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n pointer: Pointer.reducer,\n elementImperativeHandles: ElementImperativeHandles.reducer,\n breakpoints: Breakpoints.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nfunction getBoxModelsStateSlice(state: State): BoxModels.State {\n return state.boxModels\n}\n\nfunction getMeasurables(state: State): Map<string, Map<string, BoxModels.Measurable>> {\n return BoxModels.getMeasurables(getBoxModelsStateSlice(state))\n}\n\nfunction getBoxModels(state: State): Map<string, Map<string, BoxModels.BoxModel>> {\n return BoxModels.getBoxModels(getBoxModelsStateSlice(state))\n}\n\nfunction getBoxModel(\n state: State,\n documentKey: string,\n elementKey: string,\n): BoxModels.BoxModel | null {\n return BoxModels.getBoxModel(getBoxModelsStateSlice(state), documentKey, elementKey)\n}\n\nfunction getComponentsMetaStateSlice(state: State): ComponentsMeta.State {\n return state.componentsMeta\n}\n\nfunction getComponentsMeta(state: State): Map<string, ComponentsMeta.ComponentMeta> {\n return ComponentsMeta.getComponentsMeta(getComponentsMetaStateSlice(state))\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nfunction getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nfunction getPointer(state: State): Pointer.Point | null {\n return Pointer.getPointer(state.pointer)\n}\n\nfunction getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return ElementImperativeHandles.getElementImperativeHandles(state.elementImperativeHandles)\n}\n\nfunction getElementImperativeHandlesContainingElement(\n state: State,\n element: Element,\n): Map<string, Map<string, ElementImperativeHandle>> {\n const elementImperativeHandles = getElementImperativeHandles(state)\n const filteredElementImperativeHandles = new Map<string, Map<string, ElementImperativeHandle>>()\n\n for (const [documentKey, byElementKey] of elementImperativeHandles) {\n const filteredByElementKey = new Map<string, ElementImperativeHandle>()\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n const handleElement = elementImperativeHandle.getDomNode()\n\n if (handleElement?.contains(element)) {\n filteredByElementKey.set(elementKey, elementImperativeHandle)\n }\n }\n\n if (filteredByElementKey.size > 0) {\n filteredElementImperativeHandles.set(documentKey, filteredByElementKey)\n }\n }\n\n return filteredElementImperativeHandles\n}\n\nfunction measureElements(): ThunkAction<void, State, unknown, Action> {\n return (dispatch, getState) => {\n const measurables = getMeasurables(getState())\n const currentBoxModels = getBoxModels(getState())\n const measuredBoxModels = new Map<string, Map<string, BoxModels.BoxModel>>()\n\n measurables.forEach((documentMeasurables, documentKey) => {\n const measuredDocumentBoxModels = new Map<string, BoxModels.BoxModel>()\n\n documentMeasurables.forEach((measurable, elementKey) => {\n const boxModel = BoxModels.measure(measurable)\n\n if (boxModel != null) measuredDocumentBoxModels.set(elementKey, boxModel)\n })\n\n if (measuredDocumentBoxModels.size > 0) {\n measuredBoxModels.set(documentKey, measuredDocumentBoxModels)\n }\n })\n\n const changedBoxModels = new Map<string, Map<string, BoxModels.BoxModel | null>>()\n\n currentBoxModels.forEach((currentDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n currentDocumentBoxModels.forEach((_boxModel, elementKey) => {\n if (!measuredBoxModels.get(documentKey)?.has(elementKey)) {\n changedDocumentBoxModels.set(elementKey, null)\n }\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n })\n\n measuredBoxModels.forEach((measuredDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n measuredDocumentBoxModels.forEach((measuredBoxModel, elementKey) => {\n const currentBoxModel = getBoxModel(getState(), documentKey, elementKey)\n\n if (currentBoxModel == null || !deepEqual(currentBoxModel, measuredBoxModel)) {\n changedDocumentBoxModels.set(elementKey, measuredBoxModel)\n }\n })\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n\n if (changedBoxModels.size > 0) dispatch(changeElementBoxModels(changedBoxModels))\n }\n}\n\nexport function startMeasuringElements(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n dispatch(measureElements())\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nexport type Size = {\n offsetWidth: number\n offsetHeight: number\n clientWidth: number\n clientHeight: number\n scrollWidth: number\n scrollHeight: number\n scrollTop: number\n scrollLeft: number\n}\n\nfunction getElementSize(element: HTMLElement): Size {\n return {\n offsetWidth: element.offsetWidth,\n offsetHeight: element.offsetHeight,\n clientWidth: element.clientWidth,\n clientHeight: element.clientHeight,\n scrollWidth: element.scrollWidth,\n scrollHeight: element.scrollHeight,\n scrollTop: element.scrollTop,\n scrollLeft: element.scrollLeft,\n }\n}\n\nfunction lockDocumentScroll(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const lastDocumentOverflow = window.document.documentElement.style.overflow\n window.document.documentElement.style.overflow = 'hidden'\n\n window.document.documentElement.addEventListener('wheel', handleWheelEvent)\n\n return () => {\n window.document.documentElement.style.overflow = lastDocumentOverflow\n window.document.documentElement.removeEventListener('wheel', handleWheelEvent)\n }\n\n function handleWheelEvent({ deltaX, deltaY }: WheelEvent) {\n dispatch(handleWheel({ deltaX, deltaY }))\n }\n }\n}\n\nfunction startHandlingPointerMoveEvent(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n window.document.documentElement.addEventListener('pointermove', handlePointerMoveEvent)\n\n return () => {\n window.document.documentElement.removeEventListener('pointermove', handlePointerMoveEvent)\n }\n\n function handlePointerMoveEvent({ clientX, clientY }: PointerEvent) {\n dispatch(handlePointerMove({ clientX, clientY }))\n }\n }\n}\n\nfunction startHandlingFocusEvents(): ThunkAction<() => void, State, unknown, Action> {\n return (_dispatch, getState) => {\n window.addEventListener('focusin', handleFocusIn)\n window.addEventListener('focusout', handleFocusOut)\n\n return () => {\n window.removeEventListener('focusin', handleFocusIn)\n window.removeEventListener('focusout', handleFocusOut)\n }\n\n function handleFocusIn(event: FocusEvent) {\n if (ReactPage.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {\n return\n }\n\n if (!(event.target instanceof window.HTMLElement) || !event.target.isContentEditable) {\n window.parent.focus()\n }\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (ReactPage.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {\n return\n }\n\n if (\n !(event.relatedTarget instanceof window.HTMLElement) ||\n !event.relatedTarget.isContentEditable\n ) {\n window.parent.focus()\n }\n }\n }\n}\n\nfunction startMeasuringDocumentElement(): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n let lastSize: Size\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n const nextSize = getElementSize(window.document.documentElement)\n\n if (!deepEqual(lastSize, nextSize)) {\n lastSize = nextSize\n\n dispatch(changeDocumentElementSize(nextSize))\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nfunction elementKeysFromElementFromPoint(\n elementFromPoint: Element | null,\n): ThunkAction<{ documentKey: string; elementKey: string } | null, State, unknown, Action> {\n return (_dispatch, getState) => {\n if (elementFromPoint == null) return null\n\n const elementImperativeHandles = getElementImperativeHandlesContainingElement(\n getState(),\n elementFromPoint,\n )\n const ascendingDepthDocumentKeys = ReactPage.getDocumentKeysSortedByDepth(getState())\n const descendingDepthDocumentKeys = ascendingDepthDocumentKeys.slice().reverse()\n\n let currentElement: Element | null = elementFromPoint\n let keys = null\n\n while (currentElement != null) {\n for (const documentKey of descendingDepthDocumentKeys) {\n const byElementKey = elementImperativeHandles.get(documentKey)\n\n if (byElementKey == null) continue\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n if (elementImperativeHandle.getDomNode() === currentElement) {\n return { documentKey, elementKey }\n }\n }\n }\n\n currentElement = currentElement.parentElement\n }\n\n return keys\n }\n}\n\nfunction startPollingElementFromPoint(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n let lastElementFromPoint: Element | null = null\n let animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameRequestId)\n }\n\n function handleAnimationFrameRequest() {\n const pointer = getPointer(getState())\n const elementFromPoint =\n pointer == null ? null : document.elementFromPoint(pointer.x, pointer.y)\n\n if (elementFromPoint !== lastElementFromPoint) {\n lastElementFromPoint = elementFromPoint\n\n const keys = dispatch(elementKeysFromElementFromPoint(elementFromPoint))\n\n dispatch(elementFromPointChange(keys))\n }\n\n animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nfunction registerBuilderComponents(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const state = getState()\n const componentsMeta = getComponentsMeta(state)\n\n componentsMeta.forEach((meta, type) => {\n const descriptors = getComponentPropControllerDescriptors(state, type)\n if (descriptors != null) {\n const [serializedControls, transferables] = serializeControls(descriptors)\n dispatch(registerBuilderComponent({ type, meta, serializedControls }, transferables))\n }\n })\n\n return () => {\n componentsMeta.forEach((_, type) => {\n dispatch(unregisterBuilderComponent({ type }))\n })\n }\n }\n}\n\nfunction registerBuilderDocuments(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const documents = Documents.getDocuments(getDocumentsStateSlice(getState()))\n\n documents.forEach(document => {\n dispatch(registerBuilderDocument(document))\n })\n\n return () => {\n documents.forEach((_document, documentKey) => {\n dispatch(unregisterBuilderDocument(documentKey))\n })\n }\n }\n}\n\nexport interface IMessageChannel {\n postMessage(message: any, transferables?: Transferable[]): void\n dispatchBuffered(): void\n}\n\nexport function initialize(\n channel: IMessageChannel,\n): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const unregisterBuilderDocuments = dispatch(registerBuilderDocuments())\n const stopMeasuringElements = dispatch(startMeasuringElements())\n const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement())\n const stopHandlingFocusEvent = dispatch(startHandlingFocusEvents())\n const unlockDocumentScroll = dispatch(lockDocumentScroll())\n const stopHandlingPointerMoveEvent = dispatch(startHandlingPointerMoveEvent())\n const stopPollingElementFromPoint = dispatch(startPollingElementFromPoint())\n const unregisterBuilderComponents = dispatch(registerBuilderComponents())\n\n const breakpoints = ReactPage.getBreakpoints(getState())\n dispatch(setBreakpoints(breakpoints))\n dispatch(setIsInBuilder(true))\n channel.dispatchBuffered()\n\n return () => {\n unregisterBuilderDocuments()\n stopMeasuringElements()\n stopMeasuringDocumentElement()\n stopHandlingFocusEvent()\n unlockDocumentScroll()\n stopHandlingPointerMoveEvent()\n stopPollingElementFromPoint()\n unregisterBuilderComponents()\n dispatch(setIsInBuilder(false))\n }\n }\n}\n\nfunction measureBoxModelsMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch }) => next => {\n return (action: Action) => {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE: {\n if (BoxModels.isMeasurable(action.payload.componentHandle)) {\n dispatch(\n registerMeasurable(\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n }\n\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE:\n dispatch(unregisterMeasurable(action.payload.documentKey, action.payload.elementKey))\n break\n }\n\n return next(action)\n }\n })\n}\n\nexport function messageChannelMiddleware(\n channel: IMessageChannel,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch }) => next => {\n if (typeof window === 'undefined') return (action: Action) => next(action)\n\n let cleanUp = () => {}\n return (action: Action) => {\n switch (action.type) {\n case ActionTypes.CHANGE_ELEMENT_BOX_MODELS:\n case ActionTypes.MOUNT_COMPONENT:\n case ActionTypes.UNMOUNT_COMPONENT:\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:\n case ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:\n case ActionTypes.HANDLE_WHEEL:\n case ActionTypes.HANDLE_POINTER_MOVE:\n case ActionTypes.ELEMENT_FROM_POINT_CHANGE:\n case ActionTypes.SET_LOCALE:\n case ActionTypes.SET_BREAKPOINTS:\n case ActionTypes.REGISTER_BUILDER_DOCUMENT:\n case ActionTypes.UNREGISTER_BUILDER_DOCUMENT:\n channel.postMessage(action)\n break\n\n case ActionTypes.REGISTER_BUILDER_COMPONENT: {\n const { transferables, ...forwardedAction } = action\n channel.postMessage(forwardedAction, transferables)\n break\n }\n\n case ActionTypes.UNREGISTER_BUILDER_COMPONENT:\n channel.postMessage(action)\n break\n\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:\n window.document.documentElement.scrollTop = action.payload.scrollTop\n break\n\n case ActionTypes.SCROLL_DOCUMENT_ELEMENT:\n window.document.documentElement.scrollTop += action.payload.scrollTopDelta\n break\n\n case ActionTypes.SET_BUILDER_EDIT_MODE:\n channel.postMessage(action)\n window.getSelection()?.removeAllRanges()\n break\n\n case ActionTypes.INIT:\n // dispatched by the parent window after establishing the connection\n cleanUp = dispatch(initialize(channel))\n break\n\n case ActionTypes.CLEAN_UP:\n // dispatched by the parent window on disconnect\n cleanUp()\n break\n }\n\n return next(action)\n }\n })\n}\n\nfunction createAndRegisterPropControllers(\n documentKey: string,\n elementKey: string,\n): ThunkAction<Record<string, ControlInstance> | null, State, unknown, Action> {\n return (dispatch, getState) => {\n const descriptors = ReactPage.getElementPropControllerDescriptors(\n getState(),\n documentKey,\n elementKey,\n )\n\n if (descriptors == null) return null\n\n const propControllers = Object.entries(descriptors).reduce(\n (acc, [propName, descriptor]) => {\n const propController = createPropController(descriptor, message =>\n dispatch(messageBuilderPropController(documentKey, elementKey, propName, message)),\n ) as ControlInstance\n\n return { ...acc, [propName]: propController }\n },\n {} as Record<string, ControlInstance>,\n )\n\n dispatch(registerPropControllers(documentKey, elementKey, propControllers))\n\n return propControllers\n }\n}\n\nexport function propControllerHandlesMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch, getState }) => next => {\n return (action: Action) => {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE: {\n const { documentKey, elementKey, componentHandle } = action.payload\n const element = ReactPage.getElement(getState(), documentKey, elementKey)\n const propControllers = dispatch(\n createAndRegisterPropControllers(documentKey, elementKey),\n )\n\n if (\n element != null &&\n !ReactPage.isElementReference(element) &&\n PropControllerHandles.isPropControllersHandle(componentHandle)\n ) {\n dispatch(registerPropControllersHandle(documentKey, elementKey, componentHandle))\n componentHandle.setPropControllers(propControllers)\n }\n\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const { documentKey, elementKey } = action.payload\n const handle = PropControllerHandles.getPropControllersHandle(\n getPropControllerHandlesStateSlice(getState()),\n documentKey,\n elementKey,\n )\n\n handle?.setPropControllers(null)\n\n dispatch(unregisterPropControllers(documentKey, elementKey))\n\n break\n }\n\n case ActionTypes.MESSAGE_HOST_PROP_CONTROLLER: {\n const propController = PropControllerHandles.getPropController(\n getPropControllerHandlesStateSlice(getState()),\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.propName,\n )\n\n if (propController) propController.recv(action.payload.message)\n }\n }\n\n return next(action)\n }\n })\n}\n\nfunction makeswiftApiClientSyncMiddleware(\n client: MakeswiftHostApiClient,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(() => next => {\n return (action: Action) => {\n client.makeswiftApiClient.dispatch(action)\n\n return next(action)\n }\n })\n}\n\nclass MessageChannel {\n private channel: MessagePort | null = null\n private bufferedMessages: [Action, Transferable[]?][] = []\n\n public postMessage(message: any, transferables?: Transferable[]) {\n if (this.channel) {\n this.channel.postMessage(message, transferables ?? [])\n } else {\n this.bufferedMessages.push([message, transferables])\n }\n }\n\n public setup(onMessage: (event: MessageEvent<Action>) => void) {\n const channel = new window.MessageChannel()\n channel.port1.onmessage = onMessage\n\n // connect channel to the parent window, see\n // https://developer.mozilla.org/en-US/docs/Web/API/Channel_Messaging_API\n window.parent.postMessage(channel.port2, '*', [channel.port2])\n\n this.channel = channel.port1\n }\n\n public dispatchBuffered() {\n console.assert(this.channel != null, 'channel is not setup')\n\n this.bufferedMessages.forEach(([message, transferables]) => {\n this.channel?.postMessage(message, transferables ?? [])\n })\n\n this.bufferedMessages = []\n }\n\n public teardown() {\n if (this.channel) {\n this.channel.onmessage = null\n this.channel.close()\n }\n }\n}\n\nfunction setupMessageChannel(channel: MessageChannel): ThunkAction<void, State, unknown, Action> {\n return dispatch => {\n channel.setup((event: MessageEvent<Action>) => dispatch(event.data))\n }\n}\n\nexport function configureStore({\n preloadedState,\n client,\n}: {\n preloadedState: Partial<State>\n client: MakeswiftHostApiClient\n}) {\n const initialState: Partial<State> = {\n ...preloadedState,\n isPreview: IsPreview.getInitialState(true),\n }\n\n const channel = new MessageChannel()\n const store = configureReduxStore({\n reducer,\n preloadedState: initialState,\n\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware(middlewareOptions).concat(\n ReactPage.elementTreeMiddleware(),\n measureBoxModelsMiddleware(),\n messageChannelMiddleware(channel),\n propControllerHandlesMiddleware(),\n makeswiftApiClientSyncMiddleware(client),\n ),\n\n enhancers: getDefaultEnhancers =>\n getDefaultEnhancers().concat(\n withSetupTeardown(\n () => {\n const dispatch = store.dispatch as Dispatch\n dispatch(setupMessageChannel(channel))\n },\n () => channel.teardown(),\n ),\n ),\n\n devTools: devToolsConfig({\n name: `Host store (${new Date().toISOString()})`,\n actionsDenylist: [\n ActionTypes.BUILDER_POINTER_MOVE,\n ActionTypes.HANDLE_POINTER_MOVE,\n ActionTypes.ELEMENT_FROM_POINT_CHANGE,\n ],\n }),\n })\n\n return store\n}\n\nexport type Store = ReturnType<typeof configureStore>\n"],"mappings":"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","names":["import_toolkit","deepEqual","document","configureReduxStore"]}