@makeswift/runtime 0.16.0-canary.4 → 0.16.0-canary.6

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 (152) hide show
  1. package/dist/cjs/builder/serialization/control-serialization.js +11 -10
  2. package/dist/cjs/builder/serialization/control-serialization.js.map +1 -1
  3. package/dist/cjs/components/builtin/Box/Box.js.map +1 -1
  4. package/dist/cjs/components/builtin/Box/register.js +2 -2
  5. package/dist/cjs/components/builtin/Box/register.js.map +1 -1
  6. package/dist/cjs/components/builtin/Carousel/Carousel.js.map +1 -1
  7. package/dist/cjs/components/builtin/Carousel/register.js +1 -1
  8. package/dist/cjs/components/builtin/Carousel/register.js.map +1 -1
  9. package/dist/cjs/components/builtin/Countdown/Countdown.js.map +1 -1
  10. package/dist/cjs/components/builtin/Countdown/register.js +1 -1
  11. package/dist/cjs/components/builtin/Countdown/register.js.map +1 -1
  12. package/dist/cjs/components/builtin/Embed/Embed.js.map +1 -1
  13. package/dist/cjs/components/builtin/Embed/register.js +1 -1
  14. package/dist/cjs/components/builtin/Embed/register.js.map +1 -1
  15. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  16. package/dist/cjs/components/builtin/Form/register.js +1 -1
  17. package/dist/cjs/components/builtin/Form/register.js.map +1 -1
  18. package/dist/cjs/components/builtin/Navigation/Navigation.js.map +1 -1
  19. package/dist/cjs/components/builtin/Navigation/register.js +1 -1
  20. package/dist/cjs/components/builtin/Navigation/register.js.map +1 -1
  21. package/dist/cjs/components/builtin/Root/Root.js.map +1 -1
  22. package/dist/cjs/components/builtin/Root/register.js +6 -5
  23. package/dist/cjs/components/builtin/Root/register.js.map +1 -1
  24. package/dist/cjs/components/builtin/SocialLinks/SocialLinks.js.map +1 -1
  25. package/dist/cjs/components/builtin/SocialLinks/register.js +1 -1
  26. package/dist/cjs/components/builtin/SocialLinks/register.js.map +1 -1
  27. package/dist/cjs/components/hooks/useGapXPropControllerData.js +34 -0
  28. package/dist/cjs/components/hooks/useGapXPropControllerData.js.map +1 -0
  29. package/dist/cjs/components/hooks/useGapYPropControllerData.js +34 -0
  30. package/dist/cjs/components/hooks/useGapYPropControllerData.js.map +1 -0
  31. package/dist/cjs/components/hooks/useTextAreaPropControllerData.js +34 -0
  32. package/dist/cjs/components/hooks/useTextAreaPropControllerData.js.map +1 -0
  33. package/dist/cjs/controls/control.js +2 -2
  34. package/dist/cjs/controls/control.js.map +1 -1
  35. package/dist/cjs/next/api-handler/handlers/manifest.js +1 -1
  36. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js +1 -1
  37. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js.map +1 -1
  38. package/dist/cjs/prop-controllers/deleted.js +33 -0
  39. package/dist/cjs/prop-controllers/deleted.js.map +1 -0
  40. package/dist/cjs/prop-controllers/descriptors.js +0 -103
  41. package/dist/cjs/prop-controllers/descriptors.js.map +1 -1
  42. package/dist/cjs/prop-controllers/index.js +3 -0
  43. package/dist/cjs/prop-controllers/index.js.map +1 -1
  44. package/dist/cjs/prop-controllers/introspection.js +0 -30
  45. package/dist/cjs/prop-controllers/introspection.js.map +1 -1
  46. package/dist/cjs/runtimes/react/components/PreviewProvider.js +4 -0
  47. package/dist/cjs/runtimes/react/components/PreviewProvider.js.map +1 -1
  48. package/dist/cjs/runtimes/react/controls.js +33 -0
  49. package/dist/cjs/runtimes/react/controls.js.map +1 -1
  50. package/dist/cjs/state/react-builder-preview.js +95 -38
  51. package/dist/cjs/state/react-builder-preview.js.map +1 -1
  52. package/dist/esm/builder/serialization/control-serialization.js +13 -10
  53. package/dist/esm/builder/serialization/control-serialization.js.map +1 -1
  54. package/dist/esm/components/builtin/Box/Box.js.map +1 -1
  55. package/dist/esm/components/builtin/Box/register.js +4 -2
  56. package/dist/esm/components/builtin/Box/register.js.map +1 -1
  57. package/dist/esm/components/builtin/Carousel/Carousel.js.map +1 -1
  58. package/dist/esm/components/builtin/Carousel/register.js +9 -2
  59. package/dist/esm/components/builtin/Carousel/register.js.map +1 -1
  60. package/dist/esm/components/builtin/Countdown/Countdown.js.map +1 -1
  61. package/dist/esm/components/builtin/Countdown/register.js +2 -1
  62. package/dist/esm/components/builtin/Countdown/register.js.map +1 -1
  63. package/dist/esm/components/builtin/Embed/Embed.js.map +1 -1
  64. package/dist/esm/components/builtin/Embed/register.js +2 -2
  65. package/dist/esm/components/builtin/Embed/register.js.map +1 -1
  66. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  67. package/dist/esm/components/builtin/Form/register.js +2 -1
  68. package/dist/esm/components/builtin/Form/register.js.map +1 -1
  69. package/dist/esm/components/builtin/Navigation/Navigation.js.map +1 -1
  70. package/dist/esm/components/builtin/Navigation/register.js +3 -2
  71. package/dist/esm/components/builtin/Navigation/register.js.map +1 -1
  72. package/dist/esm/components/builtin/Root/Root.js.map +1 -1
  73. package/dist/esm/components/builtin/Root/register.js +3 -2
  74. package/dist/esm/components/builtin/Root/register.js.map +1 -1
  75. package/dist/esm/components/builtin/SocialLinks/SocialLinks.js.map +1 -1
  76. package/dist/esm/components/builtin/SocialLinks/register.js +2 -2
  77. package/dist/esm/components/builtin/SocialLinks/register.js.map +1 -1
  78. package/dist/esm/components/hooks/useGapXPropControllerData.js +12 -0
  79. package/dist/esm/components/hooks/useGapXPropControllerData.js.map +1 -0
  80. package/dist/esm/components/hooks/useGapYPropControllerData.js +12 -0
  81. package/dist/esm/components/hooks/useGapYPropControllerData.js.map +1 -0
  82. package/dist/esm/components/hooks/useTextAreaPropControllerData.js +12 -0
  83. package/dist/esm/components/hooks/useTextAreaPropControllerData.js.map +1 -0
  84. package/dist/esm/controls/control.js +2 -2
  85. package/dist/esm/controls/control.js.map +1 -1
  86. package/dist/esm/next/api-handler/handlers/manifest.js +1 -1
  87. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js +1 -1
  88. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js.map +1 -1
  89. package/dist/esm/prop-controllers/deleted.js +9 -0
  90. package/dist/esm/prop-controllers/deleted.js.map +1 -0
  91. package/dist/esm/prop-controllers/descriptors.js +0 -91
  92. package/dist/esm/prop-controllers/descriptors.js.map +1 -1
  93. package/dist/esm/prop-controllers/index.js +2 -0
  94. package/dist/esm/prop-controllers/index.js.map +1 -1
  95. package/dist/esm/prop-controllers/introspection.js +0 -40
  96. package/dist/esm/prop-controllers/introspection.js.map +1 -1
  97. package/dist/esm/runtimes/react/components/PreviewProvider.js +4 -0
  98. package/dist/esm/runtimes/react/components/PreviewProvider.js.map +1 -1
  99. package/dist/esm/runtimes/react/controls.js +33 -0
  100. package/dist/esm/runtimes/react/controls.js.map +1 -1
  101. package/dist/esm/state/react-builder-preview.js +105 -45
  102. package/dist/esm/state/react-builder-preview.js.map +1 -1
  103. package/dist/types/api/graphql/documents/queries.d.ts +7 -7
  104. package/dist/types/api/graphql/documents/queries.d.ts.map +1 -1
  105. package/dist/types/builder/serialization/control-serialization.d.ts +24 -23
  106. package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -1
  107. package/dist/types/components/builtin/Box/Box.d.ts +15 -3
  108. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  109. package/dist/types/components/builtin/Box/register.d.ts.map +1 -1
  110. package/dist/types/components/builtin/Carousel/Carousel.d.ts +3 -2
  111. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  112. package/dist/types/components/builtin/Carousel/register.d.ts.map +1 -1
  113. package/dist/types/components/builtin/Countdown/Countdown.d.ts +3 -3
  114. package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -1
  115. package/dist/types/components/builtin/Countdown/register.d.ts.map +1 -1
  116. package/dist/types/components/builtin/Embed/Embed.d.ts +2 -2
  117. package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
  118. package/dist/types/components/builtin/Form/Form.d.ts +3 -3
  119. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  120. package/dist/types/components/builtin/Form/register.d.ts.map +1 -1
  121. package/dist/types/components/builtin/Navigation/Navigation.d.ts +3 -3
  122. package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
  123. package/dist/types/components/builtin/Navigation/register.d.ts.map +1 -1
  124. package/dist/types/components/builtin/Root/Root.d.ts +4 -3
  125. package/dist/types/components/builtin/Root/Root.d.ts.map +1 -1
  126. package/dist/types/components/builtin/Root/register.d.ts.map +1 -1
  127. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts +3 -2
  128. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts.map +1 -1
  129. package/dist/types/components/hooks/useGapXPropControllerData.d.ts +3 -0
  130. package/dist/types/components/hooks/useGapXPropControllerData.d.ts.map +1 -0
  131. package/dist/types/components/hooks/useGapYPropControllerData.d.ts +3 -0
  132. package/dist/types/components/hooks/useGapYPropControllerData.d.ts.map +1 -0
  133. package/dist/types/components/hooks/useTextAreaPropControllerData.d.ts +3 -0
  134. package/dist/types/components/hooks/useTextAreaPropControllerData.d.ts.map +1 -0
  135. package/dist/types/next/components/tests/page-gap-x-prop-controller.test.d.ts +3 -0
  136. package/dist/types/next/components/tests/page-gap-x-prop-controller.test.d.ts.map +1 -0
  137. package/dist/types/next/components/tests/page-gap-y-prop-controller.test.d.ts +3 -0
  138. package/dist/types/next/components/tests/page-gap-y-prop-controller.test.d.ts.map +1 -0
  139. package/dist/types/next/components/tests/page-text-area-prop-controller.test.d.ts +3 -0
  140. package/dist/types/next/components/tests/page-text-area-prop-controller.test.d.ts.map +1 -0
  141. package/dist/types/prop-controllers/deleted.d.ts +51 -0
  142. package/dist/types/prop-controllers/deleted.d.ts.map +1 -0
  143. package/dist/types/prop-controllers/descriptors.d.ts +9 -133
  144. package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
  145. package/dist/types/prop-controllers/index.d.ts +2 -1
  146. package/dist/types/prop-controllers/index.d.ts.map +1 -1
  147. package/dist/types/prop-controllers/introspection.d.ts.map +1 -1
  148. package/dist/types/runtimes/react/components/PreviewProvider.d.ts.map +1 -1
  149. package/dist/types/runtimes/react/controls.d.ts.map +1 -1
  150. package/dist/types/state/react-builder-preview.d.ts +11 -3
  151. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  152. package/package.json +2 -2
@@ -310,15 +310,36 @@ function startPollingElementFromPoint() {
310
310
  }
311
311
  };
312
312
  }
313
- function initialize() {
314
- return (dispatch) => {
313
+ function registerBuilderComponents() {
314
+ return (dispatch, getState) => {
315
+ const state = getState();
316
+ const componentsMeta = getComponentsMeta(state);
317
+ componentsMeta.forEach((meta, type) => {
318
+ const propControllerDescriptors = getComponentPropControllerDescriptors(state, type);
319
+ if (propControllerDescriptors != null) {
320
+ dispatch((0, import_actions.registerComponent)(type, meta, propControllerDescriptors));
321
+ }
322
+ });
323
+ return () => {
324
+ componentsMeta.forEach((_, componentType) => {
325
+ dispatch((0, import_actions.unregisterComponent)(componentType));
326
+ });
327
+ };
328
+ };
329
+ }
330
+ function initialize(channel) {
331
+ return (dispatch, getState) => {
315
332
  const stopMeasuringElements = dispatch(startMeasuringElements());
316
333
  const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement());
317
334
  const stopHandlingFocusEvent = dispatch(startHandlingFocusEvents());
318
335
  const unlockDocumentScroll = dispatch(lockDocumentScroll());
319
336
  const stopHandlingPointerMoveEvent = dispatch(startHandlingPointerMoveEvent());
320
337
  const stopPollingElementFromPoint = dispatch(startPollingElementFromPoint());
338
+ const unregisterBuilderComponents = dispatch(registerBuilderComponents());
339
+ const breakpoints = ReactPage.getBreakpoints(getState());
340
+ dispatch((0, import_actions.setBreakpoints)(breakpoints));
321
341
  dispatch((0, import_actions.setIsInBuilder)(true));
342
+ channel.dispatchBuffered();
322
343
  return () => {
323
344
  stopMeasuringElements();
324
345
  stopMeasuringDocumentElement();
@@ -326,6 +347,7 @@ function initialize() {
326
347
  unlockDocumentScroll();
327
348
  stopHandlingPointerMoveEvent();
328
349
  stopPollingElementFromPoint();
350
+ unregisterBuilderComponents();
329
351
  dispatch((0, import_actions.setIsInBuilder)(false));
330
352
  };
331
353
  };
@@ -354,32 +376,13 @@ function measureBoxModelsMiddleware() {
354
376
  };
355
377
  };
356
378
  }
357
- function messageChannelMiddleware(client) {
358
- return ({ dispatch, getState }) => (next) => {
379
+ function messageChannelMiddleware(client, channel) {
380
+ return ({ dispatch }) => (next) => {
381
+ if (typeof window === "undefined")
382
+ return () => {
383
+ };
359
384
  let cleanUp = () => {
360
385
  };
361
- if (typeof window === "undefined")
362
- return cleanUp;
363
- const messageChannel = new window.MessageChannel();
364
- window.parent.postMessage(messageChannel.port2, "*", [messageChannel.port2]);
365
- messageChannel.port1.onmessage = (event) => dispatch(event.data);
366
- const state = getState();
367
- const registeredComponentsMeta = getComponentsMeta(state);
368
- registeredComponentsMeta.forEach((componentMeta, componentType) => {
369
- const propControllerDescriptors = getComponentPropControllerDescriptors(
370
- state,
371
- componentType
372
- );
373
- if (propControllerDescriptors != null) {
374
- const [serializedControls, transferables] = (0, import_builder.serializeControls)(propControllerDescriptors);
375
- messageChannel.port1.postMessage(
376
- (0, import_actions.registerBuilderComponent)(componentType, componentMeta, serializedControls),
377
- transferables
378
- );
379
- }
380
- });
381
- const breakpoints = ReactPage.getBreakpoints(state);
382
- messageChannel.port1.postMessage((0, import_actions.setBreakpoints)(breakpoints));
383
386
  return (action) => {
384
387
  switch (action.type) {
385
388
  case import_actions2.ActionTypes.CHANGE_ELEMENT_BOX_MODELS:
@@ -391,19 +394,20 @@ function messageChannelMiddleware(client) {
391
394
  case import_actions2.ActionTypes.HANDLE_POINTER_MOVE:
392
395
  case import_actions2.ActionTypes.ELEMENT_FROM_POINT_CHANGE:
393
396
  case import_actions2.ActionTypes.SET_LOCALE:
394
- messageChannel.port1.postMessage(action);
397
+ case import_actions2.ActionTypes.SET_BREAKPOINTS:
398
+ channel.postMessage(action);
395
399
  break;
396
400
  case import_actions2.ActionTypes.REGISTER_COMPONENT: {
397
401
  const { type, meta, propControllerDescriptors } = action.payload;
398
402
  const [serializedControls, transferables] = (0, import_builder.serializeControls)(propControllerDescriptors);
399
- messageChannel.port1.postMessage(
403
+ channel.postMessage(
400
404
  (0, import_actions.registerBuilderComponent)(type, meta, serializedControls),
401
405
  transferables
402
406
  );
403
407
  break;
404
408
  }
405
409
  case import_actions2.ActionTypes.UNREGISTER_COMPONENT:
406
- messageChannel.port1.postMessage((0, import_actions.unregisterBuilderComponent)(action.payload.type));
410
+ channel.postMessage((0, import_actions.unregisterBuilderComponent)(action.payload.type));
407
411
  break;
408
412
  case import_actions2.ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:
409
413
  window.document.documentElement.scrollTop = action.payload.scrollTop;
@@ -412,7 +416,7 @@ function messageChannelMiddleware(client) {
412
416
  window.document.documentElement.scrollTop += action.payload.scrollTopDelta;
413
417
  break;
414
418
  case import_actions2.ActionTypes.SET_BUILDER_EDIT_MODE:
415
- messageChannel.port1.postMessage(action);
419
+ channel.postMessage(action);
416
420
  window.getSelection()?.removeAllRanges();
417
421
  break;
418
422
  case import_actions2.ActionTypes.SET_LOCALIZED_RESOURCE_ID: {
@@ -420,7 +424,7 @@ function messageChannelMiddleware(client) {
420
424
  break;
421
425
  }
422
426
  case import_actions2.ActionTypes.INIT:
423
- cleanUp = dispatch(initialize());
427
+ cleanUp = dispatch(initialize(channel));
424
428
  break;
425
429
  case import_actions2.ActionTypes.CLEAN_UP:
426
430
  cleanUp();
@@ -500,6 +504,48 @@ function makeswiftApiClientSyncMiddleware(client) {
500
504
  };
501
505
  };
502
506
  }
507
+ class MessageChannel {
508
+ channel = null;
509
+ bufferedMessages = [];
510
+ postMessage(message, transferables) {
511
+ if (this.channel) {
512
+ this.channel.postMessage(message, transferables ?? []);
513
+ } else {
514
+ this.bufferedMessages.push([message, transferables]);
515
+ }
516
+ }
517
+ setup(onMessage) {
518
+ const channel = new window.MessageChannel();
519
+ channel.port1.onmessage = onMessage;
520
+ window.parent.postMessage(channel.port2, "*", [channel.port2]);
521
+ this.channel = channel.port1;
522
+ }
523
+ dispatchBuffered() {
524
+ console.assert(this.channel != null, "channel is not setup");
525
+ this.bufferedMessages.forEach(([message, transferables]) => {
526
+ this.channel?.postMessage(message, transferables ?? []);
527
+ });
528
+ this.bufferedMessages = [];
529
+ }
530
+ teardown() {
531
+ if (this.channel) {
532
+ this.channel.onmessage = null;
533
+ this.channel.close();
534
+ }
535
+ }
536
+ }
537
+ function setupMessageChannel(channel) {
538
+ return (dispatch) => {
539
+ channel.setup((event) => dispatch(event.data));
540
+ };
541
+ }
542
+ function withSetupTeardown(setup, teardown) {
543
+ return (next) => (reducer2, preloadedState) => ({
544
+ ...next(reducer2, preloadedState),
545
+ setup,
546
+ teardown
547
+ });
548
+ }
503
549
  function configureStore({
504
550
  rootElements,
505
551
  preloadedState,
@@ -510,17 +556,28 @@ function configureStore({
510
556
  documents: Documents.getInitialState({ rootElements }),
511
557
  isPreview: IsPreview.getInitialState(true)
512
558
  };
513
- return (0, import_redux.createStore)(
559
+ const channel = new MessageChannel();
560
+ const store = (0, import_redux.createStore)(
514
561
  reducer,
515
562
  initialState,
516
- (0, import_redux.applyMiddleware)(
517
- import_redux_thunk.default,
518
- measureBoxModelsMiddleware(),
519
- messageChannelMiddleware(client),
520
- propControllerHandlesMiddleware(),
521
- makeswiftApiClientSyncMiddleware(client)
563
+ (0, import_redux.compose)(
564
+ withSetupTeardown(
565
+ () => {
566
+ const dispatch = store.dispatch;
567
+ dispatch(setupMessageChannel(channel));
568
+ },
569
+ () => channel.teardown()
570
+ ),
571
+ (0, import_redux.applyMiddleware)(
572
+ import_redux_thunk.default,
573
+ measureBoxModelsMiddleware(),
574
+ messageChannelMiddleware(client, channel),
575
+ propControllerHandlesMiddleware(),
576
+ makeswiftApiClientSyncMiddleware(client)
577
+ )
522
578
  )
523
579
  );
580
+ return store;
524
581
  }
525
582
  // Annotate the CommonJS export names for ESM import in node:
526
583
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/state/react-builder-preview.ts"],"sourcesContent":["import {\n applyMiddleware,\n combineReducers,\n createStore,\n Dispatch as ReduxDispatch,\n Middleware,\n MiddlewareAPI,\n PreloadedState,\n Store as ReduxStore,\n} from 'redux'\nimport thunk, { ThunkAction, ThunkDispatch } from 'redux-thunk'\n\nimport deepEqual from '../utils/deepEqual'\n\nimport * as Documents from './modules/read-write-documents'\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'\nimport * as ReactPage from './react-page'\nimport {\n Action,\n changeDocumentElementSize,\n changeElementBoxModels,\n messageBuilderPropController,\n registerBuilderComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n unregisterBuilderComponent,\n unregisterMeasurable,\n unregisterPropControllers,\n setIsInBuilder,\n handleWheel,\n handlePointerMove,\n elementFromPointChange,\n setBreakpoints,\n} from './actions'\nimport { ActionTypes } from './actions'\nimport { createPropController } from '../prop-controllers/instances'\nimport { PropController } from '../prop-controllers/base'\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 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>\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 acendingDepthDocumentKeys = ReactPage.getDocumentKeysSortedByDepth(getState())\n const descendingDepthDocumentKeys = acendingDepthDocumentKeys.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\nexport function initialize(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\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 dispatch(setIsInBuilder(true))\n\n return () => {\n stopMeasuringElements()\n stopMeasuringDocumentElement()\n stopHandlingFocusEvent()\n unlockDocumentScroll()\n stopHandlingPointerMoveEvent()\n stopPollingElementFromPoint()\n dispatch(setIsInBuilder(false))\n }\n }\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nfunction measureBoxModelsMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch }: MiddlewareAPI<Dispatch>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: 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 client: MakeswiftHostApiClient,\n): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch, getState }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n let cleanUp = () => {}\n\n if (typeof window === 'undefined') return cleanUp\n\n const messageChannel = new window.MessageChannel()\n\n window.parent.postMessage(messageChannel.port2, '*', [messageChannel.port2])\n\n messageChannel.port1.onmessage = (event: MessageEvent<Action>) => dispatch(event.data)\n\n const state = getState()\n const registeredComponentsMeta = getComponentsMeta(state)\n\n registeredComponentsMeta.forEach((componentMeta, componentType) => {\n const propControllerDescriptors = getComponentPropControllerDescriptors(\n state,\n componentType,\n )\n\n if (propControllerDescriptors != null) {\n const [serializedControls, transferables] = serializeControls(propControllerDescriptors)\n\n messageChannel.port1.postMessage(\n registerBuilderComponent(componentType, componentMeta, serializedControls),\n transferables,\n )\n }\n })\n\n const breakpoints = ReactPage.getBreakpoints(state)\n messageChannel.port1.postMessage(setBreakpoints(breakpoints))\n\n return (action: 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 messageChannel.port1.postMessage(action)\n break\n\n case ActionTypes.REGISTER_COMPONENT: {\n const { type, meta, propControllerDescriptors } = action.payload\n const [serializedControls, transferables] = serializeControls(propControllerDescriptors)\n\n messageChannel.port1.postMessage(\n registerBuilderComponent(type, meta, serializedControls),\n transferables,\n )\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT:\n messageChannel.port1.postMessage(unregisterBuilderComponent(action.payload.type))\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 messageChannel.port1.postMessage(action)\n window.getSelection()?.removeAllRanges()\n break\n\n case ActionTypes.SET_LOCALIZED_RESOURCE_ID: {\n client.setLocalizedResourceId(action.payload)\n break\n }\n\n case ActionTypes.INIT:\n cleanUp = dispatch(initialize())\n break\n\n case ActionTypes.CLEAN_UP:\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, PropController> | 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((acc, [propName, descriptor]) => {\n const propController = createPropController(descriptor, message =>\n dispatch(messageBuilderPropController(documentKey, elementKey, propName, message)),\n ) as PropController\n\n return { ...acc, [propName]: propController }\n }, {} as Record<string, PropController>)\n\n dispatch(registerPropControllers(documentKey, elementKey, propControllers))\n\n return propControllers\n }\n}\n\nexport function propControllerHandlesMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch, getState }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: 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 () => (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n client.makeswiftApiClient.dispatch(action)\n\n return next(action)\n }\n }\n}\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({\n rootElements,\n preloadedState,\n client,\n}: {\n rootElements?: Map<string, Documents.Element>\n preloadedState?: PreloadedState<State>\n client: MakeswiftHostApiClient\n}): Store {\n const initialState: PreloadedState<State> = {\n ...preloadedState,\n documents: Documents.getInitialState({ rootElements }),\n isPreview: IsPreview.getInitialState(true),\n }\n\n return createStore(\n reducer,\n initialState,\n applyMiddleware(\n thunk,\n measureBoxModelsMiddleware(),\n messageChannelMiddleware(client),\n propControllerHandlesMiddleware(),\n makeswiftApiClientSyncMiddleware(client),\n ),\n )\n}\n"],"mappings":"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","names":["import_actions","deepEqual","thunk"]}
1
+ {"version":3,"sources":["../../../src/state/react-builder-preview.ts"],"sourcesContent":["import {\n applyMiddleware,\n combineReducers,\n createStore,\n compose,\n Dispatch as ReduxDispatch,\n Middleware,\n MiddlewareAPI,\n PreloadedState,\n Store as ReduxStore,\n StoreEnhancer,\n} from 'redux'\nimport thunk, { ThunkAction, ThunkDispatch } from 'redux-thunk'\n\nimport deepEqual from '../utils/deepEqual'\n\nimport * as Documents from './modules/read-write-documents'\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'\nimport * as ReactPage from './react-page'\nimport {\n Action,\n changeDocumentElementSize,\n changeElementBoxModels,\n elementFromPointChange,\n handleWheel,\n handlePointerMove,\n messageBuilderPropController,\n registerBuilderComponent,\n registerComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n setBreakpoints,\n setIsInBuilder,\n unregisterBuilderComponent,\n unregisterComponent,\n unregisterMeasurable,\n unregisterPropControllers,\n} from './actions'\nimport { ActionTypes } from './actions'\nimport { createPropController } from '../prop-controllers/instances'\nimport { PropController } from '../prop-controllers/base'\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 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>\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 acendingDepthDocumentKeys = ReactPage.getDocumentKeysSortedByDepth(getState())\n const descendingDepthDocumentKeys = acendingDepthDocumentKeys.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 propControllerDescriptors = getComponentPropControllerDescriptors(state, type)\n if (propControllerDescriptors != null) {\n dispatch(registerComponent(type, meta, propControllerDescriptors))\n }\n })\n\n return () => {\n componentsMeta.forEach((_, componentType) => {\n dispatch(unregisterComponent(componentType))\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 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 stopMeasuringElements()\n stopMeasuringDocumentElement()\n stopHandlingFocusEvent()\n unlockDocumentScroll()\n stopHandlingPointerMoveEvent()\n stopPollingElementFromPoint()\n unregisterBuilderComponents()\n dispatch(setIsInBuilder(false))\n }\n }\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nfunction measureBoxModelsMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch }: MiddlewareAPI<Dispatch>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: 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 client: MakeswiftHostApiClient,\n channel: IMessageChannel,\n): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n if (typeof window === 'undefined') return () => {}\n\n let cleanUp = () => {}\n return (action: 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 channel.postMessage(action)\n break\n\n case ActionTypes.REGISTER_COMPONENT: {\n const { type, meta, propControllerDescriptors } = action.payload\n const [serializedControls, transferables] = serializeControls(propControllerDescriptors)\n\n channel.postMessage(\n registerBuilderComponent(type, meta, serializedControls),\n transferables,\n )\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT:\n channel.postMessage(unregisterBuilderComponent(action.payload.type))\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.SET_LOCALIZED_RESOURCE_ID: {\n client.setLocalizedResourceId(action.payload)\n break\n }\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, PropController> | 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((acc, [propName, descriptor]) => {\n const propController = createPropController(descriptor, message =>\n dispatch(messageBuilderPropController(documentKey, elementKey, propName, message)),\n ) as PropController\n\n return { ...acc, [propName]: propController }\n }, {} as Record<string, PropController>)\n\n dispatch(registerPropControllers(documentKey, elementKey, propControllers))\n\n return propControllers\n }\n}\n\nexport function propControllerHandlesMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch, getState }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: 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 () => (next: ReduxDispatch<Action>) => {\n return (action: 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\ninterface SetupTeardownMixin {\n setup: () => void\n teardown: () => void\n}\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch } & SetupTeardownMixin\n\nfunction withSetupTeardown(\n setup: () => void,\n teardown: () => void,\n): StoreEnhancer<SetupTeardownMixin> {\n return next => (reducer, preloadedState?) => ({\n ...next(reducer, preloadedState),\n setup,\n teardown,\n })\n}\n\nexport function configureStore({\n rootElements,\n preloadedState,\n client,\n}: {\n rootElements?: Map<string, Documents.Element>\n preloadedState?: PreloadedState<State>\n client: MakeswiftHostApiClient\n}): Store {\n const initialState: PreloadedState<State> = {\n ...preloadedState,\n documents: Documents.getInitialState({ rootElements }),\n isPreview: IsPreview.getInitialState(true),\n }\n\n const channel = new MessageChannel()\n const store = createStore(\n reducer,\n initialState,\n compose(\n withSetupTeardown(\n () => {\n const dispatch = store.dispatch as Dispatch\n dispatch(setupMessageChannel(channel))\n },\n () => channel.teardown(),\n ),\n applyMiddleware(\n thunk,\n measureBoxModelsMiddleware(),\n messageChannelMiddleware(client, channel),\n propControllerHandlesMiddleware(),\n makeswiftApiClientSyncMiddleware(client),\n ),\n ),\n )\n\n return store\n}\n"],"mappings":"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","names":["import_actions","deepEqual","reducer","thunk"]}
@@ -8,6 +8,9 @@ import {
8
8
  import {
9
9
  Props as Controls
10
10
  } from "../../prop-controllers";
11
+ import {
12
+ DELETED_PROP_CONTROLLER_TYPES
13
+ } from "../../prop-controllers/deleted";
11
14
  import {
12
15
  deserializeComboboxControlDefinition,
13
16
  serializeComboboxControlDefinition
@@ -311,15 +314,15 @@ function serializeControl(control) {
311
314
  switch (control.type) {
312
315
  case PropControllerTypes.Checkbox:
313
316
  return serializeCheckboxControl(control);
314
- case Controls.Types.List:
317
+ case DELETED_PROP_CONTROLLER_TYPES.List:
315
318
  return serializeListControl(control);
316
- case Controls.Types.Shape:
319
+ case DELETED_PROP_CONTROLLER_TYPES.Shape:
317
320
  return serializeShapeControl(control);
318
- case Controls.Types.Typeahead:
321
+ case DELETED_PROP_CONTROLLER_TYPES.Typeahead:
319
322
  return serializeTypeaheadControl(control);
320
- case Controls.Types.GapX:
323
+ case PropControllerTypes.GapX:
321
324
  return serializeGapXControl(control);
322
- case Controls.Types.GapY:
325
+ case PropControllerTypes.GapY:
323
326
  return serializeGapYControl(control);
324
327
  case PropControllerTypes.ResponsiveColor:
325
328
  return serializeResponsiveColorControl(control);
@@ -363,15 +366,15 @@ function deserializeControl(serializedControl) {
363
366
  switch (serializedControl.type) {
364
367
  case PropControllerTypes.Checkbox:
365
368
  return deserializeCheckboxControl(serializedControl);
366
- case Controls.Types.List:
369
+ case DELETED_PROP_CONTROLLER_TYPES.List:
367
370
  return deserializeListControl(serializedControl);
368
- case Controls.Types.Shape:
371
+ case DELETED_PROP_CONTROLLER_TYPES.Shape:
369
372
  return deserializeShapeControl(serializedControl);
370
- case Controls.Types.Typeahead:
373
+ case DELETED_PROP_CONTROLLER_TYPES.Typeahead:
371
374
  return deserializeTypeaheadControl(serializedControl);
372
- case Controls.Types.GapX:
375
+ case PropControllerTypes.GapX:
373
376
  return deserializeGapXControl(serializedControl);
374
- case Controls.Types.GapY:
377
+ case PropControllerTypes.GapY:
375
378
  return deserializeGapYControl(serializedControl);
376
379
  case PropControllerTypes.ResponsiveColor:
377
380
  return deserializeResponsiveColorControl(serializedControl);