@makeswift/runtime 0.8.11 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/dist/Box.cjs.js +1 -1
  2. package/dist/Box.es.js +1 -1
  3. package/dist/Button.cjs.js +1 -1
  4. package/dist/Button.es.js +1 -1
  5. package/dist/Carousel.cjs.js +2 -2
  6. package/dist/Carousel.es.js +2 -2
  7. package/dist/Countdown.cjs.js +1 -1
  8. package/dist/Countdown.es.js +1 -1
  9. package/dist/Divider.cjs.js +1 -1
  10. package/dist/Divider.es.js +1 -1
  11. package/dist/Embed.cjs.js +1 -1
  12. package/dist/Embed.es.js +1 -1
  13. package/dist/Form.cjs.js +1 -1
  14. package/dist/Form.es.js +1 -1
  15. package/dist/Image.cjs.js +1 -1
  16. package/dist/Image.es.js +1 -1
  17. package/dist/LiveProvider.cjs.js +2 -2
  18. package/dist/LiveProvider.es.js +3 -3
  19. package/dist/Navigation.cjs.js +2 -2
  20. package/dist/Navigation.es.js +2 -2
  21. package/dist/PreviewProvider.cjs.js +17 -2
  22. package/dist/PreviewProvider.cjs.js.map +1 -1
  23. package/dist/PreviewProvider.es.js +19 -4
  24. package/dist/PreviewProvider.es.js.map +1 -1
  25. package/dist/ReadOnlyText.cjs.js +10 -9
  26. package/dist/ReadOnlyText.cjs.js.map +1 -1
  27. package/dist/ReadOnlyText.es.js +10 -9
  28. package/dist/ReadOnlyText.es.js.map +1 -1
  29. package/dist/ReadOnlyTextV2.cjs.js +10 -9
  30. package/dist/ReadOnlyTextV2.cjs.js.map +1 -1
  31. package/dist/ReadOnlyTextV2.es.js +10 -9
  32. package/dist/ReadOnlyTextV2.es.js.map +1 -1
  33. package/dist/Root.cjs.js +1 -1
  34. package/dist/Root.es.js +1 -1
  35. package/dist/SocialLinks.cjs.js +1 -1
  36. package/dist/SocialLinks.es.js +1 -1
  37. package/dist/Text.cjs.js +1 -1
  38. package/dist/Text.es.js +1 -1
  39. package/dist/Video.cjs.js +1 -1
  40. package/dist/Video.es.js +1 -1
  41. package/dist/actions.cjs.js +16 -1
  42. package/dist/actions.cjs.js.map +1 -1
  43. package/dist/actions.es.js +14 -2
  44. package/dist/actions.es.js.map +1 -1
  45. package/dist/components.cjs.js +1 -1
  46. package/dist/components.es.js +1 -1
  47. package/dist/control-serialization.cjs.js +1 -1
  48. package/dist/control-serialization.es.js +2 -2
  49. package/dist/controls.cjs.js +2 -3
  50. package/dist/controls.cjs.js.map +1 -1
  51. package/dist/controls.es.js +1 -2
  52. package/dist/controls.es.js.map +1 -1
  53. package/dist/index.cjs.js +253 -218
  54. package/dist/index.cjs.js.map +1 -1
  55. package/dist/index.cjs10.js +11 -10
  56. package/dist/index.cjs10.js.map +1 -1
  57. package/dist/index.cjs2.js +1 -1
  58. package/dist/index.cjs5.js +0 -522
  59. package/dist/index.cjs5.js.map +1 -1
  60. package/dist/index.cjs6.js +1 -2
  61. package/dist/index.cjs6.js.map +1 -1
  62. package/dist/index.cjs7.js +0 -52
  63. package/dist/index.cjs7.js.map +1 -1
  64. package/dist/index.cjs8.js +1 -1
  65. package/dist/index.cjs9.js +42 -3
  66. package/dist/index.cjs9.js.map +1 -1
  67. package/dist/index.es.js +253 -218
  68. package/dist/index.es.js.map +1 -1
  69. package/dist/index.es10.js +12 -11
  70. package/dist/index.es10.js.map +1 -1
  71. package/dist/index.es2.js +2 -2
  72. package/dist/index.es5.js +2 -514
  73. package/dist/index.es5.js.map +1 -1
  74. package/dist/index.es6.js +1 -2
  75. package/dist/index.es6.js.map +1 -1
  76. package/dist/index.es7.js +2 -53
  77. package/dist/index.es7.js.map +1 -1
  78. package/dist/index.es8.js +1 -1
  79. package/dist/index.es9.js +43 -4
  80. package/dist/index.es9.js.map +1 -1
  81. package/dist/leaf.es.js +1 -1
  82. package/dist/main.cjs.js +3 -0
  83. package/dist/main.cjs.js.map +1 -1
  84. package/dist/main.es.js +2 -2
  85. package/dist/next.cjs.js +1 -1
  86. package/dist/next.es.js +1 -1
  87. package/dist/react-page.cjs.js +711 -61
  88. package/dist/react-page.cjs.js.map +1 -1
  89. package/dist/react-page.es.js +694 -56
  90. package/dist/react-page.es.js.map +1 -1
  91. package/dist/react.cjs.js +1 -1
  92. package/dist/react.es.js +1 -1
  93. package/dist/slate.cjs.js +11 -13
  94. package/dist/slate.cjs.js.map +1 -1
  95. package/dist/slate.es.js +4 -5
  96. package/dist/slate.es.js.map +1 -1
  97. package/dist/types/src/api/graphql/documents/queries.d.ts.map +1 -1
  98. package/dist/types/src/api/graphql/generated/types.d.ts +0 -8
  99. package/dist/types/src/api/graphql/generated/types.d.ts.map +1 -1
  100. package/dist/types/src/components/builtin/Button/Button.d.ts +1 -1
  101. package/dist/types/src/components/builtin/Carousel/register.d.ts.map +1 -1
  102. package/dist/types/src/components/builtin/Countdown/register.d.ts.map +1 -1
  103. package/dist/types/src/components/builtin/Divider/register.d.ts.map +1 -1
  104. package/dist/types/src/components/builtin/Embed/register.d.ts.map +1 -1
  105. package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  106. package/dist/types/src/components/builtin/Form/register.d.ts.map +1 -1
  107. package/dist/types/src/components/builtin/Navigation/register.d.ts.map +1 -1
  108. package/dist/types/src/components/builtin/SocialLinks/register.d.ts.map +1 -1
  109. package/dist/types/src/components/builtin/Text/EditableText/editable-text.d.ts.map +1 -1
  110. package/dist/types/src/components/builtin/Text/ReadOnlyText.d.ts.map +1 -1
  111. package/dist/types/src/components/builtin/Text/components/Element/block.d.ts.map +1 -1
  112. package/dist/types/src/components/builtin/Video/register.d.ts.map +1 -1
  113. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts +3 -3
  114. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  115. package/dist/types/src/index.d.ts +2 -1
  116. package/dist/types/src/index.d.ts.map +1 -1
  117. package/dist/types/src/next/api-handler/handlers/manifest.d.ts +3 -1
  118. package/dist/types/src/next/api-handler/handlers/manifest.d.ts.map +1 -1
  119. package/dist/types/src/next/api-handler/handlers/proxy-preview-mode.d.ts.map +1 -1
  120. package/dist/types/src/next/api-handler/index.d.ts +2 -1
  121. package/dist/types/src/next/api-handler/index.d.ts.map +1 -1
  122. package/dist/types/src/next/client.d.ts +7 -7
  123. package/dist/types/src/next/client.d.ts.map +1 -1
  124. package/dist/types/src/next/index.d.ts +8 -5
  125. package/dist/types/src/next/index.d.ts.map +1 -1
  126. package/dist/types/src/next/preview-mode.d.ts +17 -3
  127. package/dist/types/src/next/preview-mode.d.ts.map +1 -1
  128. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts.map +1 -1
  129. package/dist/types/src/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts.map +1 -1
  130. package/dist/types/src/runtimes/react/index.d.ts +3 -1
  131. package/dist/types/src/runtimes/react/index.d.ts.map +1 -1
  132. package/dist/types/src/slate/BlockPlugin/constants.d.ts.map +1 -0
  133. package/dist/types/src/slate/BlockPlugin/dedent.d.ts.map +1 -0
  134. package/dist/types/src/slate/BlockPlugin/indent.d.ts.map +1 -0
  135. package/dist/types/src/slate/BlockPlugin/index.d.ts +26 -3
  136. package/dist/types/src/slate/BlockPlugin/index.d.ts.map +1 -1
  137. package/dist/types/src/slate/BlockPlugin/toggleList.d.ts.map +1 -0
  138. package/dist/types/src/slate/BlockPlugin/unwrapList.d.ts.map +1 -0
  139. package/dist/types/src/slate/BlockPlugin/utils/filterForSubtreeRoots.d.ts.map +1 -0
  140. package/dist/types/src/slate/BlockPlugin/utils/getSelectedListItems.d.ts.map +1 -0
  141. package/dist/types/src/slate/BlockPlugin/utils/location.d.ts.map +1 -0
  142. package/dist/types/src/slate/BlockPlugin/wrapList.d.ts.map +1 -0
  143. package/dist/types/src/slate/InlineModePlugin/index.d.ts +1 -1
  144. package/dist/types/src/slate/index.d.ts +0 -1
  145. package/dist/types/src/slate/index.d.ts.map +1 -1
  146. package/dist/types/src/slate/utils/element.d.ts +1 -2
  147. package/dist/types/src/slate/utils/element.d.ts.map +1 -1
  148. package/dist/types/src/state/actions.d.ts +26 -1
  149. package/dist/types/src/state/actions.d.ts.map +1 -1
  150. package/dist/types/src/state/modules/components-meta.d.ts +25 -1
  151. package/dist/types/src/state/modules/components-meta.d.ts.map +1 -1
  152. package/dist/types/src/state/modules/locales.d.ts +16 -0
  153. package/dist/types/src/state/modules/locales.d.ts.map +1 -0
  154. package/dist/types/src/state/react-builder-preview.d.ts +2 -0
  155. package/dist/types/src/state/react-builder-preview.d.ts.map +1 -1
  156. package/dist/types/src/state/react-page.d.ts +5 -1
  157. package/dist/types/src/state/react-page.d.ts.map +1 -1
  158. package/package.json +6 -3
  159. package/dist/select.cjs.js +0 -8
  160. package/dist/select.cjs.js.map +0 -1
  161. package/dist/select.es.js +0 -6
  162. package/dist/select.es.js.map +0 -1
  163. package/dist/types/src/slate/ListPlugin/constants.d.ts.map +0 -1
  164. package/dist/types/src/slate/ListPlugin/dedent.d.ts.map +0 -1
  165. package/dist/types/src/slate/ListPlugin/indent.d.ts.map +0 -1
  166. package/dist/types/src/slate/ListPlugin/index.d.ts +0 -17
  167. package/dist/types/src/slate/ListPlugin/index.d.ts.map +0 -1
  168. package/dist/types/src/slate/ListPlugin/toggleList.d.ts.map +0 -1
  169. package/dist/types/src/slate/ListPlugin/unwrapList.d.ts.map +0 -1
  170. package/dist/types/src/slate/ListPlugin/utils/filterForSubtreeRoots.d.ts.map +0 -1
  171. package/dist/types/src/slate/ListPlugin/utils/getSelectedListItems.d.ts.map +0 -1
  172. package/dist/types/src/slate/ListPlugin/utils/location.d.ts.map +0 -1
  173. package/dist/types/src/slate/ListPlugin/wrapList.d.ts.map +0 -1
  174. /package/dist/types/src/slate/{ListPlugin → BlockPlugin}/constants.d.ts +0 -0
  175. /package/dist/types/src/slate/{ListPlugin → BlockPlugin}/dedent.d.ts +0 -0
  176. /package/dist/types/src/slate/{ListPlugin → BlockPlugin}/indent.d.ts +0 -0
  177. /package/dist/types/src/slate/{ListPlugin → BlockPlugin}/toggleList.d.ts +0 -0
  178. /package/dist/types/src/slate/{ListPlugin → BlockPlugin}/unwrapList.d.ts +0 -0
  179. /package/dist/types/src/slate/{ListPlugin → BlockPlugin}/utils/filterForSubtreeRoots.d.ts +0 -0
  180. /package/dist/types/src/slate/{ListPlugin → BlockPlugin}/utils/getSelectedListItems.d.ts +0 -0
  181. /package/dist/types/src/slate/{ListPlugin → BlockPlugin}/utils/location.d.ts +0 -0
  182. /package/dist/types/src/slate/{ListPlugin → BlockPlugin}/wrapList.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewProvider.cjs.js","sources":["../src/state/modules/read-write-documents.ts","../src/state/modules/pointer.ts","../src/state/modules/element-imperative-handles.ts","../src/state/react-builder-preview.ts","../src/runtimes/react/components/PreviewProvider.tsx"],"sourcesContent":["import { Operation } from 'ot-json0'\nimport { removeIn, setIn } from 'immutable'\n\nimport * as ReadOnlyDocuments from './read-only-documents'\nimport { Action, ActionTypes } from '../actions'\n\nexport type { Document, Element, ElementData, ElementReference } from './read-only-documents'\nexport { isElementReference } from './read-only-documents'\nexport type { Operation }\n\nfunction apply(data: ReadOnlyDocuments.Element, operation: Operation): ReadOnlyDocuments.Element {\n let applied = data\n\n operation.forEach(component => {\n // @ts-expect-error: `ld` isn't in all possible values of `component`\n if (component.ld != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `od` isn't in all possible values of `component`\n if (component.od != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `li` isn't in all possible values of `component`\n if (component.li != null) applied = setIn(applied, component.p, component.li)\n\n // @ts-expect-error: `oi` isn't in all possible values of `component`\n if (component.oi != null) applied = setIn(applied, component.p, component.oi)\n })\n\n return applied\n}\n\nexport type State = ReadOnlyDocuments.State\n\nexport function getInitialState({\n rootElements,\n}: {\n rootElements?: Map<string, ReadOnlyDocuments.Element>\n} = {}): State {\n return ReadOnlyDocuments.getInitialState({ rootElements })\n}\n\nfunction getReadOnlyDocumentsStateSlice(state: State): ReadOnlyDocuments.State {\n return state\n}\n\nexport function getDocument(state: State, documentKey: string): ReadOnlyDocuments.Document | null {\n return ReadOnlyDocuments.getDocument(getReadOnlyDocumentsStateSlice(state), documentKey)\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n const nextState = ReadOnlyDocuments.reducer(state, action)\n\n switch (action.type) {\n case ActionTypes.CHANGE_DOCUMENT: {\n const currentRootElement = getDocument(nextState, action.payload.documentKey)?.rootElement\n\n if (currentRootElement == null) return nextState\n\n const nextRootElement = apply(currentRootElement, action.payload.operation)\n\n return currentRootElement === nextRootElement\n ? nextState\n : new Map(nextState).set(\n action.payload.documentKey,\n ReadOnlyDocuments.createDocument(action.payload.documentKey, nextRootElement),\n )\n }\n\n default:\n return nextState\n }\n}\n","import { Action, ActionTypes } from '../actions'\n\nexport type Point = { x: number; y: number }\n\ntype State = {\n pointer: Point | null\n}\n\nfunction getInitialState(): State {\n return { pointer: null }\n}\n\nexport function getPointer(state: State): Point | null {\n return state.pointer\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.BUILDER_POINTER_MOVE:\n return { ...state, pointer: action.payload.pointer }\n\n default:\n return state\n }\n}\n","import { ElementImperativeHandle } from '../../runtimes/react/element-imperative-handle'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<string, Map<string, ElementImperativeHandle>>\n\nexport function getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return state\n}\n\nfunction getInitialState(): State {\n return new Map()\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE:\n return new Map(state).set(\n action.payload.documentKey,\n new Map(new Map(state.get(action.payload.documentKey) ?? [])).set(\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const byElementKey = new Map(state.get(action.payload.documentKey) ?? [])\n\n const deleted = byElementKey.delete(action.payload.elementKey)\n\n if (!deleted) return state\n\n return new Map(state).set(action.payload.documentKey, byElementKey)\n }\n\n default:\n return state\n }\n}\n","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'\nimport Router from 'next/router'\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 registerDocument,\n registerComponentHandle,\n unregisterBuilderComponent,\n unregisterMeasurable,\n unregisterPropControllers,\n setIsInBuilder,\n handleWheel,\n handlePointerMove,\n changePathnameStart,\n changePathnameComplete,\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 { MakeswiftClient } 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\nconst 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(): 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 Router.events.on('routeChangeStart', () => {\n messageChannel.port1.postMessage(changePathnameStart())\n })\n\n Router.events.on('routeChangeComplete', () => {\n messageChannel.port1.postMessage(changePathnameComplete())\n })\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 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.CHANGE_PATHNAME: {\n const pathname = action.payload.pathname.replace(/^\\//, '/')\n const currentPathname = Router.asPath.replace(/^\\//, '/')\n\n if (pathname !== currentPathname) Router.push(pathname)\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\nfunction 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\nif (import.meta.vitest) {\n const { describe, it, fn, expect } = import.meta.vitest\n\n describe('propControllerHandlesMiddleware', () => {\n it('registers prop controllers for element data', () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { key: 'elementKey', type: 'type', props: {} }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).toHaveBeenCalled()\n })\n\n it(\"doesn't register prop controllers for element references\", () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { type: 'reference', key: 'elementKey', value: 'value' }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).not.toHaveBeenCalled()\n })\n })\n}\n\nfunction makeswiftApiClientSyncMiddleware(\n client: MakeswiftClient,\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: MakeswiftClient\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(),\n propControllerHandlesMiddleware(),\n makeswiftApiClientSyncMiddleware(client),\n ),\n )\n}\n","import { ReactNode, useEffect, useMemo } from 'react'\n\nimport { StoreContext, ReactRuntime } from '..'\nimport * as ReactBuilderPreview from '../../../state/react-builder-preview'\nimport * as ReactPage from '../../../state/react-page'\nimport { MakeswiftProvider, MakeswiftClient } from '../../../api/react'\nimport { registerDocumentEffect } from '../../../state/actions'\n\ntype Props = {\n client: MakeswiftClient\n rootElements?: Map<string, ReactPage.Element>\n children?: ReactNode\n runtime?: ReactRuntime\n}\n\nexport default function PreviewProvider({\n client,\n children,\n rootElements,\n runtime,\n}: Props): JSX.Element {\n const store = useMemo(\n () =>\n ReactBuilderPreview.configureStore({\n preloadedState: runtime ? runtime.store.getState() : ReactRuntime.store.getState(),\n rootElements,\n client,\n }),\n [client, rootElements, runtime],\n )\n\n useEffect(() => {\n const unregisterDocuments = Array.from(rootElements?.entries() ?? []).map(\n ([documentKey, rootElement]) =>\n store.dispatch(registerDocumentEffect(ReactPage.createDocument(documentKey, rootElement))),\n )\n\n return () => {\n unregisterDocuments.forEach(unregisterDocument => {\n unregisterDocument()\n })\n }\n }, [store, rootElements])\n\n return (\n <StoreContext.Provider value={store}>\n <MakeswiftProvider client={client}>{children}</MakeswiftProvider>\n </StoreContext.Provider>\n )\n}\n"],"names":["removeIn","setIn","ReadOnlyDocuments.getInitialState","ReadOnlyDocuments.getDocument","getInitialState","ReadOnlyDocuments.reducer","ActionTypes","ReadOnlyDocuments.createDocument","combineReducers","Documents.reducer","ReactComponents.reducer","BoxModels.reducer","ComponentsMeta.reducer","PropControllers.reducer","PropControllerHandles.reducer","IsInBuilder.reducer","IsPreview.reducer","BuilderEditMode.reducer","Pointer.reducer","ElementImperativeHandles.reducer","Breakpoints.reducer","BoxModels.getMeasurables","BoxModels.getBoxModels","BoxModels.getBoxModel","ComponentsMeta.getComponentsMeta","PropControllers.getComponentPropControllerDescriptors","Pointer.getPointer","ElementImperativeHandles.getElementImperativeHandles","BoxModels.measure","deepEqual","changeElementBoxModels","handleWheel","handlePointerMove","ReactPage.getBuilderEditMode","BuilderEditMode.BuilderEditMode","changeDocumentElementSize","ReactPage.getDocumentKeysSortedByDepth","elementFromPointChange","setIsInBuilder","BoxModels.isMeasurable","registerMeasurable","unregisterMeasurable","serializeControls","registerBuilderComponent","ReactPage.getBreakpoints","setBreakpoints","Router","changePathnameStart","changePathnameComplete","unregisterBuilderComponent","ReactPage.getElementPropControllerDescriptors","createPropController","messageBuilderPropController","registerPropControllers","ReactPage.getElement","ReactPage.isElementReference","PropControllerHandles.isPropControllersHandle","registerPropControllersHandle","PropControllerHandles.getPropControllersHandle","unregisterPropControllers","PropControllerHandles.getPropController","createStore","applyMiddleware","thunk","ElementImperativeHandle","registerDocument","ReactPage.createDocument","registerComponentHandle","Documents.getInitialState","IsPreview.getInitialState","client","children","rootElements","runtime","store","useMemo","ReactBuilderPreview","preloadedState","getState","ReactRuntime","useEffect","unregisterDocuments","Array","from","entries","map","documentKey","rootElement","dispatch","registerDocumentEffect","ReactPage","forEach","unregisterDocument","_jsx","StoreContext","MakeswiftProvider"],"mappings":"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"}
1
+ {"version":3,"file":"PreviewProvider.cjs.js","sources":["../src/state/modules/read-write-documents.ts","../src/state/modules/pointer.ts","../src/state/modules/element-imperative-handles.ts","../src/state/react-builder-preview.ts","../src/runtimes/react/components/PreviewProvider.tsx"],"sourcesContent":["import { Operation } from 'ot-json0'\nimport { removeIn, setIn } from 'immutable'\n\nimport * as ReadOnlyDocuments from './read-only-documents'\nimport { Action, ActionTypes } from '../actions'\n\nexport type { Document, Element, ElementData, ElementReference } from './read-only-documents'\nexport { isElementReference } from './read-only-documents'\nexport type { Operation }\n\nfunction apply(data: ReadOnlyDocuments.Element, operation: Operation): ReadOnlyDocuments.Element {\n let applied = data\n\n operation.forEach(component => {\n // @ts-expect-error: `ld` isn't in all possible values of `component`\n if (component.ld != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `od` isn't in all possible values of `component`\n if (component.od != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `li` isn't in all possible values of `component`\n if (component.li != null) applied = setIn(applied, component.p, component.li)\n\n // @ts-expect-error: `oi` isn't in all possible values of `component`\n if (component.oi != null) applied = setIn(applied, component.p, component.oi)\n })\n\n return applied\n}\n\nexport type State = ReadOnlyDocuments.State\n\nexport function getInitialState({\n rootElements,\n}: {\n rootElements?: Map<string, ReadOnlyDocuments.Element>\n} = {}): State {\n return ReadOnlyDocuments.getInitialState({ rootElements })\n}\n\nfunction getReadOnlyDocumentsStateSlice(state: State): ReadOnlyDocuments.State {\n return state\n}\n\nexport function getDocument(state: State, documentKey: string): ReadOnlyDocuments.Document | null {\n return ReadOnlyDocuments.getDocument(getReadOnlyDocumentsStateSlice(state), documentKey)\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n const nextState = ReadOnlyDocuments.reducer(state, action)\n\n switch (action.type) {\n case ActionTypes.CHANGE_DOCUMENT: {\n const currentRootElement = getDocument(nextState, action.payload.documentKey)?.rootElement\n\n if (currentRootElement == null) return nextState\n\n const nextRootElement = apply(currentRootElement, action.payload.operation)\n\n return currentRootElement === nextRootElement\n ? nextState\n : new Map(nextState).set(\n action.payload.documentKey,\n ReadOnlyDocuments.createDocument(action.payload.documentKey, nextRootElement),\n )\n }\n\n default:\n return nextState\n }\n}\n","import { Action, ActionTypes } from '../actions'\n\nexport type Point = { x: number; y: number }\n\ntype State = {\n pointer: Point | null\n}\n\nfunction getInitialState(): State {\n return { pointer: null }\n}\n\nexport function getPointer(state: State): Point | null {\n return state.pointer\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.BUILDER_POINTER_MOVE:\n return { ...state, pointer: action.payload.pointer }\n\n default:\n return state\n }\n}\n","import { ElementImperativeHandle } from '../../runtimes/react/element-imperative-handle'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<string, Map<string, ElementImperativeHandle>>\n\nexport function getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return state\n}\n\nfunction getInitialState(): State {\n return new Map()\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE:\n return new Map(state).set(\n action.payload.documentKey,\n new Map(new Map(state.get(action.payload.documentKey) ?? [])).set(\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const byElementKey = new Map(state.get(action.payload.documentKey) ?? [])\n\n const deleted = byElementKey.delete(action.payload.elementKey)\n\n if (!deleted) return state\n\n return new Map(state).set(action.payload.documentKey, byElementKey)\n }\n\n default:\n return state\n }\n}\n","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'\nimport Router from 'next/router'\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 Locales from './modules/locales'\nimport * as ReactPage from './react-page'\nimport {\n Action,\n changeDocumentElementSize,\n changeElementBoxModels,\n messageBuilderPropController,\n registerBuilderComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n registerDocument,\n registerComponentHandle,\n unregisterBuilderComponent,\n unregisterMeasurable,\n unregisterPropControllers,\n setIsInBuilder,\n handleWheel,\n handlePointerMove,\n changePathnameStart,\n changePathnameComplete,\n elementFromPointChange,\n setBreakpoints,\n setLocales,\n setLocale,\n setDefaultLocale,\n} from './actions'\nimport { ActionTypes } from './actions'\nimport { createPropController } from '../prop-controllers/instances'\nimport { PropController } from '../prop-controllers/base'\nimport { serializeControls } from '../builder'\nimport { MakeswiftClient } 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\nconst 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 locales: Locales.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(): 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 const locales = ReactPage.getLocales(state).locales\n const defaultLocale = ReactPage.getLocales(state).defaultLocale\n const routerLocale = Router.locale\n if (locales.length > 0) messageChannel.port1.postMessage(setLocales(locales))\n if (defaultLocale != null) messageChannel.port1.postMessage(setDefaultLocale(defaultLocale))\n if (routerLocale != null) messageChannel.port1.postMessage(setLocale(routerLocale))\n\n Router.events.on('routeChangeStart', () => {\n messageChannel.port1.postMessage(changePathnameStart())\n })\n\n Router.events.on('routeChangeComplete', () => {\n messageChannel.port1.postMessage(changePathnameComplete())\n })\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 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_LOCALE: {\n const { pathname, asPath, query } = Router\n\n Router.replace({ pathname, query }, asPath, { locale: action.payload.locale })\n break\n }\n\n case ActionTypes.CHANGE_PATHNAME: {\n const pathname = action.payload.pathname.replace(/^\\//, '/')\n const currentPathname = Router.asPath.replace(/^\\//, '/')\n\n if (pathname !== currentPathname) Router.push(pathname)\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\nfunction 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\nif (import.meta.vitest) {\n const { describe, it, fn, expect } = import.meta.vitest\n\n describe('propControllerHandlesMiddleware', () => {\n it('registers prop controllers for element data', () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { key: 'elementKey', type: 'type', props: {} }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).toHaveBeenCalled()\n })\n\n it(\"doesn't register prop controllers for element references\", () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { type: 'reference', key: 'elementKey', value: 'value' }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).not.toHaveBeenCalled()\n })\n })\n}\n\nfunction makeswiftApiClientSyncMiddleware(\n client: MakeswiftClient,\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: MakeswiftClient\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(),\n propControllerHandlesMiddleware(),\n makeswiftApiClientSyncMiddleware(client),\n ),\n )\n}\n","import { ReactNode, useEffect, useMemo } from 'react'\n\nimport { StoreContext, ReactRuntime } from '..'\nimport * as ReactBuilderPreview from '../../../state/react-builder-preview'\nimport * as ReactPage from '../../../state/react-page'\nimport { MakeswiftProvider, MakeswiftClient } from '../../../api/react'\nimport { registerDocumentEffect } from '../../../state/actions'\n\ntype Props = {\n client: MakeswiftClient\n rootElements?: Map<string, ReactPage.Element>\n children?: ReactNode\n runtime?: ReactRuntime\n}\n\nexport default function PreviewProvider({\n client,\n children,\n rootElements,\n runtime,\n}: Props): JSX.Element {\n const store = useMemo(\n () =>\n ReactBuilderPreview.configureStore({\n preloadedState: runtime ? runtime.store.getState() : ReactRuntime.store.getState(),\n rootElements,\n client,\n }),\n [client, rootElements, runtime],\n )\n\n useEffect(() => {\n const unregisterDocuments = Array.from(rootElements?.entries() ?? []).map(\n ([documentKey, rootElement]) =>\n store.dispatch(registerDocumentEffect(ReactPage.createDocument(documentKey, rootElement))),\n )\n\n return () => {\n unregisterDocuments.forEach(unregisterDocument => {\n unregisterDocument()\n })\n }\n }, [store, rootElements])\n\n return (\n <StoreContext.Provider value={store}>\n <MakeswiftProvider client={client}>{children}</MakeswiftProvider>\n </StoreContext.Provider>\n )\n}\n"],"names":["removeIn","setIn","ReadOnlyDocuments.getInitialState","ReadOnlyDocuments.getDocument","getInitialState","ReadOnlyDocuments.reducer","ActionTypes","ReadOnlyDocuments.createDocument","combineReducers","Documents.reducer","ReactComponents.reducer","BoxModels.reducer","ComponentsMeta.reducer","PropControllers.reducer","PropControllerHandles.reducer","IsInBuilder.reducer","IsPreview.reducer","BuilderEditMode.reducer","Pointer.reducer","ElementImperativeHandles.reducer","Breakpoints.reducer","Locales.reducer","BoxModels.getMeasurables","BoxModels.getBoxModels","BoxModels.getBoxModel","ComponentsMeta.getComponentsMeta","PropControllers.getComponentPropControllerDescriptors","Pointer.getPointer","ElementImperativeHandles.getElementImperativeHandles","BoxModels.measure","deepEqual","changeElementBoxModels","handleWheel","handlePointerMove","ReactPage.getBuilderEditMode","BuilderEditMode.BuilderEditMode","changeDocumentElementSize","ReactPage.getDocumentKeysSortedByDepth","elementFromPointChange","setIsInBuilder","BoxModels.isMeasurable","registerMeasurable","unregisterMeasurable","serializeControls","registerBuilderComponent","ReactPage.getBreakpoints","setBreakpoints","ReactPage.getLocales","Router","setLocales","setDefaultLocale","setLocale","changePathnameStart","changePathnameComplete","unregisterBuilderComponent","ReactPage.getElementPropControllerDescriptors","createPropController","messageBuilderPropController","registerPropControllers","ReactPage.getElement","ReactPage.isElementReference","PropControllerHandles.isPropControllersHandle","registerPropControllersHandle","PropControllerHandles.getPropControllersHandle","unregisterPropControllers","PropControllerHandles.getPropController","createStore","applyMiddleware","thunk","ElementImperativeHandle","registerDocument","ReactPage.createDocument","registerComponentHandle","Documents.getInitialState","IsPreview.getInitialState","client","children","rootElements","runtime","store","useMemo","ReactBuilderPreview","preloadedState","getState","ReactRuntime","useEffect","unregisterDocuments","Array","from","entries","map","documentKey","rootElement","dispatch","registerDocumentEffect","ReactPage","forEach","unregisterDocument","_jsx","StoreContext","MakeswiftProvider"],"mappings":"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"}
@@ -24,8 +24,8 @@ import { createStore, applyMiddleware, combineReducers } from "redux";
24
24
  import thunk from "redux-thunk";
25
25
  import Router from "next/router";
26
26
  import { removeIn, setIn } from "immutable";
27
- import { b7 as getInitialState$3, b8 as reducer$4, b9 as getDocument$1, c as createDocument, ba as getComponentsMeta$1, bb as getComponentPropControllerDescriptors$1, ak as getBreakpoints, aq as getBuilderEditMode, bc as BuilderEditMode, bd as getDocumentKeysSortedByDepth, be as getPropController, bf as getPropControllersHandle, bg as getElement, bh as getElementPropControllerDescriptors, bi as createPropController, b as isElementReference, a2 as isPropControllersHandle, bj as reducer$5, bk as reducer$7, bl as reducer$8, bm as reducer$9, bn as reducer$a, bo as reducer$b, bp as reducer$c, bq as getInitialState$4 } from "./react-page.es.js";
28
- import { A as ActionTypes, q as unregisterMeasurable, t as registerMeasurable, v as registerBuilderComponent, j as setBreakpoints, w as changePathnameStart, x as changePathnameComplete, y as changeElementBoxModels, z as changeDocumentElementSize, B as handleWheel, C as handlePointerMove, D as elementFromPointChange, E as setIsInBuilder, F as unregisterBuilderComponent, G as unregisterPropControllers, H as registerPropControllers, I as registerPropControllersHandle, r as registerDocument, J as registerComponentHandle, K as messageBuilderPropController, L as registerDocumentEffect } from "./actions.es.js";
27
+ import { bg as getInitialState$3, bh as reducer$4, bi as getDocument$1, c as createDocument, bj as getComponentsMeta$1, bk as getComponentPropControllerDescriptors$1, am as getBreakpoints, bl as getLocales, as as getBuilderEditMode, bm as BuilderEditMode, bn as getDocumentKeysSortedByDepth, bo as getPropController, bp as getPropControllersHandle, bq as getElement, br as getElementPropControllerDescriptors, bs as createPropController, b as isElementReference, a3 as isPropControllersHandle, bt as reducer$5, bu as reducer$7, bv as reducer$8, bw as reducer$9, bx as reducer$a, by as reducer$b, bz as reducer$c, bA as reducer$e, bB as getInitialState$4 } from "./react-page.es.js";
28
+ import { A as ActionTypes, v as unregisterMeasurable, w as registerMeasurable, x as registerBuilderComponent, j as setBreakpoints, l as setLocales, y as setDefaultLocale, k as setLocale, z as changePathnameStart, B as changePathnameComplete, C as changeElementBoxModels, D as changeDocumentElementSize, E as handleWheel, F as handlePointerMove, G as elementFromPointChange, H as setIsInBuilder, I as unregisterBuilderComponent, J as unregisterPropControllers, K as registerPropControllers, L as registerPropControllersHandle, r as registerDocument, M as registerComponentHandle, N as messageBuilderPropController, O as registerDocumentEffect } from "./actions.es.js";
29
29
  import { i as isMeasurable, a as getMeasurables$1, b as getBoxModels$1, m as measure, d as getBoxModel$1, r as reducer$6 } from "./box-models.es.js";
30
30
  import { reducer as reducer$d } from "./state/breakpoints.es.js";
31
31
  import { a as serializeControls } from "./control-serialization.es.js";
@@ -37,7 +37,6 @@ import "@emotion/serialize";
37
37
  import "@emotion/utils";
38
38
  import "./text-input.es.js";
39
39
  import "./combobox.es.js";
40
- import "./select.es.js";
41
40
  import "slate";
42
41
  import "is-hotkey";
43
42
  import "slate-react";
@@ -48,6 +47,7 @@ import "scroll-into-view-if-needed";
48
47
  import "react-dom";
49
48
  import "html-react-parser";
50
49
  import "next/head";
50
+ import "zod";
51
51
  import "@emotion/server/create-instance";
52
52
  import "next/document";
53
53
  import "cors";
@@ -147,7 +147,8 @@ const reducer = combineReducers({
147
147
  builderEditMode: reducer$c,
148
148
  pointer: reducer$2,
149
149
  elementImperativeHandles: reducer$1,
150
- breakpoints: reducer$d
150
+ breakpoints: reducer$d,
151
+ locales: reducer$e
151
152
  });
152
153
  function getBoxModelsStateSlice(state) {
153
154
  return state.boxModels;
@@ -438,6 +439,15 @@ function messageChannelMiddleware() {
438
439
  });
439
440
  const breakpoints = getBreakpoints(state);
440
441
  messageChannel.port1.postMessage(setBreakpoints(breakpoints));
442
+ const locales = getLocales(state).locales;
443
+ const defaultLocale = getLocales(state).defaultLocale;
444
+ const routerLocale = Router.locale;
445
+ if (locales.length > 0)
446
+ messageChannel.port1.postMessage(setLocales(locales));
447
+ if (defaultLocale != null)
448
+ messageChannel.port1.postMessage(setDefaultLocale(defaultLocale));
449
+ if (routerLocale != null)
450
+ messageChannel.port1.postMessage(setLocale(routerLocale));
441
451
  Router.events.on("routeChangeStart", () => {
442
452
  messageChannel.port1.postMessage(changePathnameStart());
443
453
  });
@@ -476,6 +486,11 @@ function messageChannelMiddleware() {
476
486
  messageChannel.port1.postMessage(action);
477
487
  (_a = window.getSelection()) == null ? void 0 : _a.removeAllRanges();
478
488
  break;
489
+ case ActionTypes.SET_LOCALE: {
490
+ const { pathname, asPath, query } = Router;
491
+ Router.replace({ pathname, query }, asPath, { locale: action.payload.locale });
492
+ break;
493
+ }
479
494
  case ActionTypes.CHANGE_PATHNAME: {
480
495
  const pathname = action.payload.pathname.replace(/^\//, "/");
481
496
  const currentPathname = Router.asPath.replace(/^\//, "/");
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewProvider.es.js","sources":["../src/state/modules/read-write-documents.ts","../src/state/modules/pointer.ts","../src/state/modules/element-imperative-handles.ts","../src/state/react-builder-preview.ts","../src/runtimes/react/components/PreviewProvider.tsx"],"sourcesContent":["import { Operation } from 'ot-json0'\nimport { removeIn, setIn } from 'immutable'\n\nimport * as ReadOnlyDocuments from './read-only-documents'\nimport { Action, ActionTypes } from '../actions'\n\nexport type { Document, Element, ElementData, ElementReference } from './read-only-documents'\nexport { isElementReference } from './read-only-documents'\nexport type { Operation }\n\nfunction apply(data: ReadOnlyDocuments.Element, operation: Operation): ReadOnlyDocuments.Element {\n let applied = data\n\n operation.forEach(component => {\n // @ts-expect-error: `ld` isn't in all possible values of `component`\n if (component.ld != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `od` isn't in all possible values of `component`\n if (component.od != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `li` isn't in all possible values of `component`\n if (component.li != null) applied = setIn(applied, component.p, component.li)\n\n // @ts-expect-error: `oi` isn't in all possible values of `component`\n if (component.oi != null) applied = setIn(applied, component.p, component.oi)\n })\n\n return applied\n}\n\nexport type State = ReadOnlyDocuments.State\n\nexport function getInitialState({\n rootElements,\n}: {\n rootElements?: Map<string, ReadOnlyDocuments.Element>\n} = {}): State {\n return ReadOnlyDocuments.getInitialState({ rootElements })\n}\n\nfunction getReadOnlyDocumentsStateSlice(state: State): ReadOnlyDocuments.State {\n return state\n}\n\nexport function getDocument(state: State, documentKey: string): ReadOnlyDocuments.Document | null {\n return ReadOnlyDocuments.getDocument(getReadOnlyDocumentsStateSlice(state), documentKey)\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n const nextState = ReadOnlyDocuments.reducer(state, action)\n\n switch (action.type) {\n case ActionTypes.CHANGE_DOCUMENT: {\n const currentRootElement = getDocument(nextState, action.payload.documentKey)?.rootElement\n\n if (currentRootElement == null) return nextState\n\n const nextRootElement = apply(currentRootElement, action.payload.operation)\n\n return currentRootElement === nextRootElement\n ? nextState\n : new Map(nextState).set(\n action.payload.documentKey,\n ReadOnlyDocuments.createDocument(action.payload.documentKey, nextRootElement),\n )\n }\n\n default:\n return nextState\n }\n}\n","import { Action, ActionTypes } from '../actions'\n\nexport type Point = { x: number; y: number }\n\ntype State = {\n pointer: Point | null\n}\n\nfunction getInitialState(): State {\n return { pointer: null }\n}\n\nexport function getPointer(state: State): Point | null {\n return state.pointer\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.BUILDER_POINTER_MOVE:\n return { ...state, pointer: action.payload.pointer }\n\n default:\n return state\n }\n}\n","import { ElementImperativeHandle } from '../../runtimes/react/element-imperative-handle'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<string, Map<string, ElementImperativeHandle>>\n\nexport function getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return state\n}\n\nfunction getInitialState(): State {\n return new Map()\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE:\n return new Map(state).set(\n action.payload.documentKey,\n new Map(new Map(state.get(action.payload.documentKey) ?? [])).set(\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const byElementKey = new Map(state.get(action.payload.documentKey) ?? [])\n\n const deleted = byElementKey.delete(action.payload.elementKey)\n\n if (!deleted) return state\n\n return new Map(state).set(action.payload.documentKey, byElementKey)\n }\n\n default:\n return state\n }\n}\n","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'\nimport Router from 'next/router'\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 registerDocument,\n registerComponentHandle,\n unregisterBuilderComponent,\n unregisterMeasurable,\n unregisterPropControllers,\n setIsInBuilder,\n handleWheel,\n handlePointerMove,\n changePathnameStart,\n changePathnameComplete,\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 { MakeswiftClient } 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\nconst 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(): 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 Router.events.on('routeChangeStart', () => {\n messageChannel.port1.postMessage(changePathnameStart())\n })\n\n Router.events.on('routeChangeComplete', () => {\n messageChannel.port1.postMessage(changePathnameComplete())\n })\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 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.CHANGE_PATHNAME: {\n const pathname = action.payload.pathname.replace(/^\\//, '/')\n const currentPathname = Router.asPath.replace(/^\\//, '/')\n\n if (pathname !== currentPathname) Router.push(pathname)\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\nfunction 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\nif (import.meta.vitest) {\n const { describe, it, fn, expect } = import.meta.vitest\n\n describe('propControllerHandlesMiddleware', () => {\n it('registers prop controllers for element data', () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { key: 'elementKey', type: 'type', props: {} }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).toHaveBeenCalled()\n })\n\n it(\"doesn't register prop controllers for element references\", () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { type: 'reference', key: 'elementKey', value: 'value' }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).not.toHaveBeenCalled()\n })\n })\n}\n\nfunction makeswiftApiClientSyncMiddleware(\n client: MakeswiftClient,\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: MakeswiftClient\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(),\n propControllerHandlesMiddleware(),\n makeswiftApiClientSyncMiddleware(client),\n ),\n )\n}\n","import { ReactNode, useEffect, useMemo } from 'react'\n\nimport { StoreContext, ReactRuntime } from '..'\nimport * as ReactBuilderPreview from '../../../state/react-builder-preview'\nimport * as ReactPage from '../../../state/react-page'\nimport { MakeswiftProvider, MakeswiftClient } from '../../../api/react'\nimport { registerDocumentEffect } from '../../../state/actions'\n\ntype Props = {\n client: MakeswiftClient\n rootElements?: Map<string, ReactPage.Element>\n children?: ReactNode\n runtime?: ReactRuntime\n}\n\nexport default function PreviewProvider({\n client,\n children,\n rootElements,\n runtime,\n}: Props): JSX.Element {\n const store = useMemo(\n () =>\n ReactBuilderPreview.configureStore({\n preloadedState: runtime ? runtime.store.getState() : ReactRuntime.store.getState(),\n rootElements,\n client,\n }),\n [client, rootElements, runtime],\n )\n\n useEffect(() => {\n const unregisterDocuments = Array.from(rootElements?.entries() ?? []).map(\n ([documentKey, rootElement]) =>\n store.dispatch(registerDocumentEffect(ReactPage.createDocument(documentKey, rootElement))),\n )\n\n return () => {\n unregisterDocuments.forEach(unregisterDocument => {\n unregisterDocument()\n })\n }\n }, [store, rootElements])\n\n return (\n <StoreContext.Provider value={store}>\n <MakeswiftProvider client={client}>{children}</MakeswiftProvider>\n </StoreContext.Provider>\n )\n}\n"],"names":["ReadOnlyDocuments.getInitialState","ReadOnlyDocuments.getDocument","getInitialState","ReadOnlyDocuments.reducer","ReadOnlyDocuments.createDocument","Documents.reducer","ReactComponents.reducer","BoxModels.reducer","ComponentsMeta.reducer","PropControllers.reducer","PropControllerHandles.reducer","IsInBuilder.reducer","IsPreview.reducer","BuilderEditMode.reducer","Pointer.reducer","ElementImperativeHandles.reducer","Breakpoints.reducer","BoxModels.getMeasurables","BoxModels.getBoxModels","BoxModels.getBoxModel","ComponentsMeta.getComponentsMeta","PropControllers.getComponentPropControllerDescriptors","Pointer.getPointer","ElementImperativeHandles.getElementImperativeHandles","BoxModels.measure","ReactPage.getBuilderEditMode","BuilderEditMode.BuilderEditMode","ReactPage.getDocumentKeysSortedByDepth","BoxModels.isMeasurable","ReactPage.getBreakpoints","ReactPage.getElementPropControllerDescriptors","ReactPage.getElement","ReactPage.isElementReference","PropControllerHandles.isPropControllersHandle","PropControllerHandles.getPropControllersHandle","PropControllerHandles.getPropController","ReactPage.createDocument","Documents.getInitialState","IsPreview.getInitialState","client","children","rootElements","runtime","store","useMemo","ReactBuilderPreview","preloadedState","getState","ReactRuntime","useEffect","unregisterDocuments","Array","from","entries","map","documentKey","rootElement","dispatch","registerDocumentEffect","ReactPage","forEach","unregisterDocument","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"PreviewProvider.es.js","sources":["../src/state/modules/read-write-documents.ts","../src/state/modules/pointer.ts","../src/state/modules/element-imperative-handles.ts","../src/state/react-builder-preview.ts","../src/runtimes/react/components/PreviewProvider.tsx"],"sourcesContent":["import { Operation } from 'ot-json0'\nimport { removeIn, setIn } from 'immutable'\n\nimport * as ReadOnlyDocuments from './read-only-documents'\nimport { Action, ActionTypes } from '../actions'\n\nexport type { Document, Element, ElementData, ElementReference } from './read-only-documents'\nexport { isElementReference } from './read-only-documents'\nexport type { Operation }\n\nfunction apply(data: ReadOnlyDocuments.Element, operation: Operation): ReadOnlyDocuments.Element {\n let applied = data\n\n operation.forEach(component => {\n // @ts-expect-error: `ld` isn't in all possible values of `component`\n if (component.ld != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `od` isn't in all possible values of `component`\n if (component.od != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `li` isn't in all possible values of `component`\n if (component.li != null) applied = setIn(applied, component.p, component.li)\n\n // @ts-expect-error: `oi` isn't in all possible values of `component`\n if (component.oi != null) applied = setIn(applied, component.p, component.oi)\n })\n\n return applied\n}\n\nexport type State = ReadOnlyDocuments.State\n\nexport function getInitialState({\n rootElements,\n}: {\n rootElements?: Map<string, ReadOnlyDocuments.Element>\n} = {}): State {\n return ReadOnlyDocuments.getInitialState({ rootElements })\n}\n\nfunction getReadOnlyDocumentsStateSlice(state: State): ReadOnlyDocuments.State {\n return state\n}\n\nexport function getDocument(state: State, documentKey: string): ReadOnlyDocuments.Document | null {\n return ReadOnlyDocuments.getDocument(getReadOnlyDocumentsStateSlice(state), documentKey)\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n const nextState = ReadOnlyDocuments.reducer(state, action)\n\n switch (action.type) {\n case ActionTypes.CHANGE_DOCUMENT: {\n const currentRootElement = getDocument(nextState, action.payload.documentKey)?.rootElement\n\n if (currentRootElement == null) return nextState\n\n const nextRootElement = apply(currentRootElement, action.payload.operation)\n\n return currentRootElement === nextRootElement\n ? nextState\n : new Map(nextState).set(\n action.payload.documentKey,\n ReadOnlyDocuments.createDocument(action.payload.documentKey, nextRootElement),\n )\n }\n\n default:\n return nextState\n }\n}\n","import { Action, ActionTypes } from '../actions'\n\nexport type Point = { x: number; y: number }\n\ntype State = {\n pointer: Point | null\n}\n\nfunction getInitialState(): State {\n return { pointer: null }\n}\n\nexport function getPointer(state: State): Point | null {\n return state.pointer\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.BUILDER_POINTER_MOVE:\n return { ...state, pointer: action.payload.pointer }\n\n default:\n return state\n }\n}\n","import { ElementImperativeHandle } from '../../runtimes/react/element-imperative-handle'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<string, Map<string, ElementImperativeHandle>>\n\nexport function getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return state\n}\n\nfunction getInitialState(): State {\n return new Map()\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE:\n return new Map(state).set(\n action.payload.documentKey,\n new Map(new Map(state.get(action.payload.documentKey) ?? [])).set(\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const byElementKey = new Map(state.get(action.payload.documentKey) ?? [])\n\n const deleted = byElementKey.delete(action.payload.elementKey)\n\n if (!deleted) return state\n\n return new Map(state).set(action.payload.documentKey, byElementKey)\n }\n\n default:\n return state\n }\n}\n","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'\nimport Router from 'next/router'\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 Locales from './modules/locales'\nimport * as ReactPage from './react-page'\nimport {\n Action,\n changeDocumentElementSize,\n changeElementBoxModels,\n messageBuilderPropController,\n registerBuilderComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n registerDocument,\n registerComponentHandle,\n unregisterBuilderComponent,\n unregisterMeasurable,\n unregisterPropControllers,\n setIsInBuilder,\n handleWheel,\n handlePointerMove,\n changePathnameStart,\n changePathnameComplete,\n elementFromPointChange,\n setBreakpoints,\n setLocales,\n setLocale,\n setDefaultLocale,\n} from './actions'\nimport { ActionTypes } from './actions'\nimport { createPropController } from '../prop-controllers/instances'\nimport { PropController } from '../prop-controllers/base'\nimport { serializeControls } from '../builder'\nimport { MakeswiftClient } 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\nconst 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 locales: Locales.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(): 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 const locales = ReactPage.getLocales(state).locales\n const defaultLocale = ReactPage.getLocales(state).defaultLocale\n const routerLocale = Router.locale\n if (locales.length > 0) messageChannel.port1.postMessage(setLocales(locales))\n if (defaultLocale != null) messageChannel.port1.postMessage(setDefaultLocale(defaultLocale))\n if (routerLocale != null) messageChannel.port1.postMessage(setLocale(routerLocale))\n\n Router.events.on('routeChangeStart', () => {\n messageChannel.port1.postMessage(changePathnameStart())\n })\n\n Router.events.on('routeChangeComplete', () => {\n messageChannel.port1.postMessage(changePathnameComplete())\n })\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 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_LOCALE: {\n const { pathname, asPath, query } = Router\n\n Router.replace({ pathname, query }, asPath, { locale: action.payload.locale })\n break\n }\n\n case ActionTypes.CHANGE_PATHNAME: {\n const pathname = action.payload.pathname.replace(/^\\//, '/')\n const currentPathname = Router.asPath.replace(/^\\//, '/')\n\n if (pathname !== currentPathname) Router.push(pathname)\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\nfunction 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\nif (import.meta.vitest) {\n const { describe, it, fn, expect } = import.meta.vitest\n\n describe('propControllerHandlesMiddleware', () => {\n it('registers prop controllers for element data', () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { key: 'elementKey', type: 'type', props: {} }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).toHaveBeenCalled()\n })\n\n it(\"doesn't register prop controllers for element references\", () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { type: 'reference', key: 'elementKey', value: 'value' }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).not.toHaveBeenCalled()\n })\n })\n}\n\nfunction makeswiftApiClientSyncMiddleware(\n client: MakeswiftClient,\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: MakeswiftClient\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(),\n propControllerHandlesMiddleware(),\n makeswiftApiClientSyncMiddleware(client),\n ),\n )\n}\n","import { ReactNode, useEffect, useMemo } from 'react'\n\nimport { StoreContext, ReactRuntime } from '..'\nimport * as ReactBuilderPreview from '../../../state/react-builder-preview'\nimport * as ReactPage from '../../../state/react-page'\nimport { MakeswiftProvider, MakeswiftClient } from '../../../api/react'\nimport { registerDocumentEffect } from '../../../state/actions'\n\ntype Props = {\n client: MakeswiftClient\n rootElements?: Map<string, ReactPage.Element>\n children?: ReactNode\n runtime?: ReactRuntime\n}\n\nexport default function PreviewProvider({\n client,\n children,\n rootElements,\n runtime,\n}: Props): JSX.Element {\n const store = useMemo(\n () =>\n ReactBuilderPreview.configureStore({\n preloadedState: runtime ? runtime.store.getState() : ReactRuntime.store.getState(),\n rootElements,\n client,\n }),\n [client, rootElements, runtime],\n )\n\n useEffect(() => {\n const unregisterDocuments = Array.from(rootElements?.entries() ?? []).map(\n ([documentKey, rootElement]) =>\n store.dispatch(registerDocumentEffect(ReactPage.createDocument(documentKey, rootElement))),\n )\n\n return () => {\n unregisterDocuments.forEach(unregisterDocument => {\n unregisterDocument()\n })\n }\n }, [store, rootElements])\n\n return (\n <StoreContext.Provider value={store}>\n <MakeswiftProvider client={client}>{children}</MakeswiftProvider>\n </StoreContext.Provider>\n )\n}\n"],"names":["ReadOnlyDocuments.getInitialState","ReadOnlyDocuments.getDocument","getInitialState","ReadOnlyDocuments.reducer","ReadOnlyDocuments.createDocument","Documents.reducer","ReactComponents.reducer","BoxModels.reducer","ComponentsMeta.reducer","PropControllers.reducer","PropControllerHandles.reducer","IsInBuilder.reducer","IsPreview.reducer","BuilderEditMode.reducer","Pointer.reducer","ElementImperativeHandles.reducer","Breakpoints.reducer","Locales.reducer","BoxModels.getMeasurables","BoxModels.getBoxModels","BoxModels.getBoxModel","ComponentsMeta.getComponentsMeta","PropControllers.getComponentPropControllerDescriptors","Pointer.getPointer","ElementImperativeHandles.getElementImperativeHandles","BoxModels.measure","ReactPage.getBuilderEditMode","BuilderEditMode.BuilderEditMode","ReactPage.getDocumentKeysSortedByDepth","BoxModels.isMeasurable","ReactPage.getBreakpoints","ReactPage.getLocales","ReactPage.getElementPropControllerDescriptors","ReactPage.getElement","ReactPage.isElementReference","PropControllerHandles.isPropControllersHandle","PropControllerHandles.getPropControllersHandle","PropControllerHandles.getPropController","ReactPage.createDocument","Documents.getInitialState","IsPreview.getInitialState","client","children","rootElements","runtime","store","useMemo","ReactBuilderPreview","preloadedState","getState","ReactRuntime","useEffect","unregisterDocuments","Array","from","entries","map","documentKey","rootElement","dispatch","registerDocumentEffect","ReactPage","forEach","unregisterDocument","_jsx"],"mappings":"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"}
@@ -5,9 +5,9 @@ var React = require("react");
5
5
  var next = require("./index.cjs.js");
6
6
  var index = require("./index.cjs3.js");
7
7
  require("slate");
8
- require("is-hotkey");
9
- var reactPage = require("./react-page.cjs.js");
10
8
  require("./state/breakpoints.cjs.js");
9
+ var reactPage = require("./react-page.cjs.js");
10
+ require("is-hotkey");
11
11
  require("slate-react");
12
12
  var jsxRuntime = require("react/jsx-runtime");
13
13
  var leaf = require("./leaf.cjs.js");
@@ -18,7 +18,6 @@ require("@emotion/serialize");
18
18
  require("@emotion/utils");
19
19
  require("./text-input.cjs.js");
20
20
  require("./combobox.cjs.js");
21
- require("./select.cjs.js");
22
21
  require("use-sync-external-store/shim");
23
22
  require("redux");
24
23
  require("redux-thunk");
@@ -30,6 +29,7 @@ require("scroll-into-view-if-needed");
30
29
  require("react-dom");
31
30
  require("html-react-parser");
32
31
  require("next/head");
32
+ require("zod");
33
33
  require("@emotion/server/create-instance");
34
34
  require("next/document");
35
35
  require("cors");
@@ -126,6 +126,12 @@ function BlockElement({
126
126
  }), next.useStyle(next.useResponsiveStyle([descendant.textAlign], ([textAlign = "left"]) => ({
127
127
  textAlign
128
128
  })))];
129
+ const quoteStyle = next.useStyle({
130
+ padding: "0.5em 10px",
131
+ fontSize: "1.25em",
132
+ fontWeight: "300",
133
+ borderLeft: "5px solid rgba(0, 0, 0, 0.1)"
134
+ });
129
135
  switch (descendant.type) {
130
136
  case reactPage.BlockType.Text:
131
137
  return /* @__PURE__ */ jsxRuntime.jsx("span", {
@@ -185,12 +191,7 @@ function BlockElement({
185
191
  });
186
192
  case reactPage.BlockType.BlockQuote:
187
193
  return /* @__PURE__ */ jsxRuntime.jsx("blockquote", {
188
- className: css.cx(...blockStyles, next.useStyle({
189
- padding: "0.5em 10px",
190
- fontSize: "1.25em",
191
- fontWeight: "300",
192
- borderLeft: "5px solid rgba(0, 0, 0, 0.1)"
193
- })),
194
+ className: css.cx(...blockStyles, quoteStyle),
194
195
  children: /* @__PURE__ */ jsxRuntime.jsx(Descendants, {
195
196
  descendants: descendant.children
196
197
  })