@makeswift/runtime 0.0.0-6baa2a2 → 0.0.0-76a2297
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.
- package/builder.js +1 -0
- package/dist/Page.cjs.js +215 -0
- package/dist/Page.cjs.js.map +1 -0
- package/dist/Page.es.js +209 -0
- package/dist/Page.es.js.map +1 -0
- package/dist/actions.cjs.js +34 -2
- package/dist/actions.cjs.js.map +1 -1
- package/dist/actions.es.js +29 -2
- package/dist/actions.es.js.map +1 -1
- package/dist/api.cjs.js +1 -2
- package/dist/api.cjs.js.map +1 -1
- package/dist/box-model.cjs.js +1 -2
- package/dist/box-model.cjs.js.map +1 -1
- package/dist/box-models.cjs.js +2 -0
- package/dist/box-models.cjs.js.map +1 -1
- package/dist/box-models.es.js +2 -0
- package/dist/box-models.es.js.map +1 -1
- package/dist/builder.cjs.js +9 -0
- package/dist/builder.cjs.js.map +1 -0
- package/dist/builder.es.js +3 -0
- package/dist/builder.es.js.map +1 -0
- package/dist/components.cjs.js +18 -3
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +8 -2
- package/dist/components.es.js.map +1 -1
- package/dist/constants.cjs.js +96 -1
- package/dist/constants.cjs.js.map +1 -1
- package/dist/constants.es.js +96 -1
- package/dist/constants.es.js.map +1 -1
- package/dist/control-serialization.cjs.js +147 -0
- package/dist/control-serialization.cjs.js.map +1 -0
- package/dist/control-serialization.es.js +143 -0
- package/dist/control-serialization.es.js.map +1 -0
- package/dist/descriptors.cjs.js +10 -3
- package/dist/descriptors.cjs.js.map +1 -1
- package/dist/descriptors.es.js +8 -4
- package/dist/descriptors.es.js.map +1 -1
- package/dist/instances.cjs.js +17 -0
- package/dist/instances.cjs.js.map +1 -1
- package/dist/instances.es.js +17 -1
- package/dist/instances.es.js.map +1 -1
- package/dist/main.cjs.js +10 -2
- package/dist/main.cjs.js.map +1 -1
- package/dist/main.es.js +5 -1
- package/dist/main.es.js.map +1 -1
- package/dist/next.cjs.js +40 -18
- package/dist/next.cjs.js.map +1 -1
- package/dist/next.es.js +40 -17
- package/dist/next.es.js.map +1 -1
- package/dist/prop-controllers.cjs.js +2 -2
- package/dist/prop-controllers.es.js +1 -1
- package/dist/react-builder-preview.cjs.js +36 -39
- package/dist/react-builder-preview.cjs.js.map +1 -1
- package/dist/react-builder-preview.es.js +34 -37
- package/dist/react-builder-preview.es.js.map +1 -1
- package/dist/react-page.cjs.js +262 -0
- package/dist/react-page.cjs.js.map +1 -0
- package/dist/react-page.es.js +241 -0
- package/dist/react-page.es.js.map +1 -0
- package/dist/react.cjs.js +10 -4
- package/dist/react.cjs.js.map +1 -1
- package/dist/react.cjs2.js +2292 -428
- package/dist/react.cjs2.js.map +1 -1
- package/dist/react.es.js +7 -2
- package/dist/react.es.js.map +1 -1
- package/dist/react.es2.js +2281 -419
- package/dist/react.es2.js.map +1 -1
- package/dist/types/api/constants.d.ts.map +1 -1
- package/dist/types/api/generated/graphql.d.ts +59 -0
- package/dist/types/api/generated/graphql.d.ts.map +1 -1
- package/dist/types/api/react.d.ts +24 -4
- package/dist/types/api/react.d.ts.map +1 -1
- package/dist/types/api/types.d.ts +2 -2
- package/dist/types/api/types.d.ts.map +1 -1
- package/dist/types/builder/index.d.ts +2 -0
- package/dist/types/builder/index.d.ts.map +1 -0
- package/dist/types/builder/serialization/control-serialization.d.ts +78 -0
- package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -0
- package/dist/types/builder/serialization/function-serialization.d.ts +11 -0
- package/dist/types/builder/serialization/function-serialization.d.ts.map +1 -0
- package/dist/types/builder/serialization/index.d.ts +3 -0
- package/dist/types/builder/serialization/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/Form.d.ts +41 -0
- package/dist/types/components/builtin/Form/Form.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +15 -0
- package/dist/types/components/builtin/Form/components/Field/components/Checkbox/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/CheckboxTableField/index.d.ts +15 -0
- package/dist/types/components/builtin/Form/components/Field/components/CheckboxTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/EmailTableField/index.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/components/EmailTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/Input/index.d.ts +14 -0
- package/dist/types/components/builtin/Form/components/Field/components/Input/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/Label/index.d.ts +16 -0
- package/dist/types/components/builtin/Form/components/Field/components/Label/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/LongTextTableField/index.d.ts +10 -0
- package/dist/types/components/builtin/Form/components/Field/components/LongTextTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/MultipleSelectTableField/index.d.ts +23 -0
- package/dist/types/components/builtin/Form/components/Field/components/MultipleSelectTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/NumberTableField/index.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/components/NumberTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/PhoneNumberTableField/index.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/components/PhoneNumberTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts +3 -0
- package/dist/types/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/RadioButton/index.d.ts +17 -0
- package/dist/types/components/builtin/Form/components/Field/components/RadioButton/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleLineTextTableField/index.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleLineTextTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/components/TableColumnRadioButtonGroup/index.d.ts +23 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/components/TableColumnRadioButtonGroup/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/components/TableColumnSingleSelect/index.d.ts +19 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/components/TableColumnSingleSelect/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/index.d.ts +24 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/TextArea/index.d.ts +13 -0
- package/dist/types/components/builtin/Form/components/Field/components/TextArea/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/URLTableField/index.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/components/URLTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/index.d.ts +19 -0
- package/dist/types/components/builtin/Form/components/Field/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/services/cssField.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/services/cssField.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Placeholder/index.d.ts +9 -0
- package/dist/types/components/builtin/Form/components/Placeholder/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Spinner/index.d.ts +3 -0
- package/dist/types/components/builtin/Form/components/Spinner/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/context/FormContext.d.ts +32 -0
- package/dist/types/components/builtin/Form/context/FormContext.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/index.d.ts +2 -0
- package/dist/types/components/builtin/Form/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/prop-controllers.d.ts +1 -0
- package/dist/types/components/builtin/Form/prop-controllers.d.ts.map +1 -0
- package/dist/types/components/builtin/Video/Video.d.ts +15 -0
- package/dist/types/components/builtin/Video/Video.d.ts.map +1 -0
- package/dist/types/components/builtin/Video/index.d.ts +2 -0
- package/dist/types/components/builtin/Video/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Video/prop-controllers.d.ts +50 -0
- package/dist/types/components/builtin/Video/prop-controllers.d.ts.map +1 -0
- package/dist/types/components/builtin/index.d.ts +1 -0
- package/dist/types/components/builtin/index.d.ts.map +1 -1
- package/dist/types/components/hooks/index.d.ts +1 -0
- package/dist/types/components/hooks/index.d.ts.map +1 -1
- package/dist/types/components/hooks/useTable.d.ts +66 -0
- package/dist/types/components/hooks/useTable.d.ts.map +1 -0
- package/dist/types/components/hooks/useTableFormFieldRefs.d.ts +8 -0
- package/dist/types/components/hooks/useTableFormFieldRefs.d.ts.map +1 -0
- package/dist/types/components/hooks/useTableWorkspace.d.ts +14 -0
- package/dist/types/components/hooks/useTableWorkspace.d.ts.map +1 -0
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/components/page/BodySnippet.d.ts +7 -0
- package/dist/types/components/page/BodySnippet.d.ts.map +1 -0
- package/dist/types/components/page/Page.d.ts +45 -0
- package/dist/types/components/page/Page.d.ts.map +1 -0
- package/dist/types/components/page/index.d.ts +2 -0
- package/dist/types/components/page/index.d.ts.map +1 -0
- package/dist/types/components/utils/layout.d.ts +16 -0
- package/dist/types/components/utils/layout.d.ts.map +1 -0
- package/dist/types/components/utils/placeholders.d.ts +7 -0
- package/dist/types/components/utils/placeholders.d.ts.map +1 -1
- package/dist/types/components/utils/pollAnimationFrame.d.ts +2 -0
- package/dist/types/components/utils/pollAnimationFrame.d.ts.map +1 -0
- package/dist/types/components/utils/pollElementLayout.d.ts +8 -0
- package/dist/types/components/utils/pollElementLayout.d.ts.map +1 -0
- package/dist/types/components/utils/queries.d.ts +1 -0
- package/dist/types/components/utils/queries.d.ts.map +1 -1
- package/dist/types/components/utils/requestBatchedAnimationFrame.d.ts +4 -0
- package/dist/types/components/utils/requestBatchedAnimationFrame.d.ts.map +1 -0
- package/dist/types/components/utils/types.d.ts +1 -2
- package/dist/types/components/utils/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/next.d.ts +6 -4
- package/dist/types/next.d.ts.map +1 -1
- package/dist/types/prop-controllers/descriptors.d.ts +31 -12
- package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
- package/dist/types/prop-controllers/index.d.ts +3 -3
- package/dist/types/prop-controllers/index.d.ts.map +1 -1
- package/dist/types/prop-controllers/instances.d.ts +36 -4
- package/dist/types/prop-controllers/instances.d.ts.map +1 -1
- package/dist/types/react.d.ts +1 -1
- package/dist/types/react.d.ts.map +1 -1
- package/dist/types/runtimes/page.d.ts +9 -0
- package/dist/types/runtimes/page.d.ts.map +1 -0
- package/dist/types/runtimes/react.d.ts +15 -8
- package/dist/types/runtimes/react.d.ts.map +1 -1
- package/dist/types/state/actions.d.ts +55 -1
- package/dist/types/state/actions.d.ts.map +1 -1
- package/dist/types/state/modules/box-models.d.ts.map +1 -1
- package/dist/types/state/modules/read-only-documents.d.ts +8 -4
- package/dist/types/state/modules/read-only-documents.d.ts.map +1 -1
- package/dist/types/state/modules/read-write-documents.d.ts +1 -1
- package/dist/types/state/modules/read-write-documents.d.ts.map +1 -1
- package/dist/types/state/react-builder-preview.d.ts.map +1 -1
- package/dist/types/state/react-page.d.ts +3 -3
- package/dist/types/state/react-page.d.ts.map +1 -1
- package/dist/types/utils/get-redirect-match.d.ts +10 -0
- package/dist/types/utils/get-redirect-match.d.ts.map +1 -0
- package/dist/types/utils/get-redirect-match.test.d.ts +1 -0
- package/dist/types/utils/get-redirect-match.test.d.ts.map +1 -0
- package/package.json +19 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-builder-preview.cjs.js","sources":["../src/utils/is.ts","../src/utils/shallowEqual.ts","../src/utils/deepEqual.ts","../src/state/modules/read-write-documents.ts","../src/state/modules/prop-controller-handles.ts","../src/state/react-builder-preview.ts"],"sourcesContent":["export default function is(x: unknown, y: unknown): boolean {\n if (x === y) return x !== 0 || y !== 0 || 1 / x === 1 / y\n\n return x !== x && y !== y\n}\n","import is from './is'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst shallowEqual = (a: unknown, b: unknown): boolean => {\n if (is(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n // @ts-expect-error: {}[string] is OK.\n if (!hasOwnProperty.call(b, keysA[i]) || !is(a[keysA[i]], b[keysA[i]])) return false\n }\n\n return true\n}\n\nexport default shallowEqual\n","import shallowEqual from './shallowEqual'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst deepEqual = (a: unknown, b: unknown): boolean => {\n if (shallowEqual(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n if (\n !hasOwnProperty.call(b, keysA[i]) ||\n // @ts-expect-error: {}[string] is OK.\n !deepEqual(a[keysA[i]], b[keysA[i]])\n )\n return false\n }\n\n return true\n}\n\nexport default deepEqual\n","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 getDocumentRootElement(\n state: State,\n documentKey: string,\n): ReadOnlyDocuments.Element | null {\n return ReadOnlyDocuments.getDocumentRootElement(\n getReadOnlyDocumentsStateSlice(state),\n documentKey,\n )\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.CHANGE_DOCUMENT: {\n const currentRootElement = getDocumentRootElement(state, action.payload.documentKey)\n\n if (currentRootElement == null) return state\n\n const nextRootElement = apply(currentRootElement, action.payload.operation)\n\n return currentRootElement === nextRootElement\n ? state\n : new Map(state).set(\n action.payload.documentKey,\n ReadOnlyDocuments.createDocument(nextRootElement),\n )\n }\n\n default:\n return state\n }\n}\n","import { Action, ActionTypes } from '../actions'\nimport type { DescriptorsPropControllers, PropController } from '../../prop-controllers/instances'\nimport type { Descriptor } from '../../prop-controllers/descriptors'\n\nexport interface PropControllersHandle<\n T extends Record<string, Descriptor> = Record<string, Descriptor>,\n> {\n setPropControllers(propControllers: DescriptorsPropControllers<T> | null): void\n}\n\nexport function isPropControllersHandle(value: unknown): value is PropControllersHandle {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'setPropControllers' in value &&\n typeof (value as { setPropControllers: unknown }).setPropControllers === 'function'\n ) {\n return true\n }\n\n return false\n}\n\nexport type State = {\n handles: Map<string, Map<string, PropControllersHandle>>\n instances: Map<string, Map<string, Record<string, PropController>>>\n}\n\nexport function getInitialState(): State {\n return { handles: new Map(), instances: new Map() }\n}\n\nexport function getPropControllersHandle(\n state: State,\n documentKey: string,\n elementKey: string,\n): PropControllersHandle | null {\n return state.handles.get(documentKey)?.get(elementKey) ?? null\n}\n\nexport function getPropController(\n state: State,\n documentKey: string,\n elementKey: string,\n propName: string,\n): PropController | null {\n return state.instances.get(documentKey)?.get(elementKey)?.[propName] ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey, handle } = action.payload\n\n return {\n ...state,\n handles: new Map(state.handles).set(\n documentKey,\n new Map(state.handles.get(documentKey) ?? []).set(elementKey, handle),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey } = action.payload\n const nextHandles = new Map(state.handles.get(documentKey) ?? [])\n\n const deleted = nextHandles.delete(elementKey)\n\n return deleted\n ? { ...state, handles: new Map(state.handles).set(documentKey, nextHandles) }\n : state\n }\n\n case ActionTypes.REGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey, propControllers } = action.payload\n\n return {\n ...state,\n instances: new Map(state.instances).set(\n documentKey,\n new Map(state.instances.get(documentKey) ?? []).set(elementKey, propControllers),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey } = action.payload\n const nextInstances = new Map(state.instances.get(documentKey) ?? [])\n\n const deleted = nextInstances.delete(elementKey)\n\n return deleted\n ? { ...state, instances: new Map(state.instances).set(documentKey, nextInstances) }\n : state\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 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 ReactPage from './react-page'\nimport {\n Action,\n changeDocumentElementSize,\n changeElementBoxModels,\n messageBuilderPropController,\n registerComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n unregisterMeasurable,\n unregisterPropControllers,\n} from './actions'\nimport { ActionTypes } from './actions'\nimport { createPropController, PropController } from '../prop-controllers/instances'\nimport { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport { Fragments } from '../api'\n\nexport type { Operation } from './modules/read-write-documents'\nexport type { BoxModelHandle } from './modules/box-models'\nexport { createBox, getBox, parse } from './modules/box-models'\n\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: (_state: boolean = true, _action: Action): boolean => true,\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 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 currentDocumentBoxModels.forEach((_boxModel, elementKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\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 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\nexport function initialize(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const stopMeasuringElements = dispatch(startMeasuringElements())\n const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement())\n\n return () => {\n stopMeasuringElements()\n stopMeasuringDocumentElement()\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 const messageChannel = new MessageChannel()\n let cleanUp = () => {}\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 messageChannel.port1.postMessage(\n registerComponent(componentType, componentMeta, propControllerDescriptors),\n )\n }\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.REGISTER_COMPONENT:\n case ActionTypes.UNREGISTER_COMPONENT:\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:\n case ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:\n messageChannel.port1.postMessage(action)\n break\n\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:\n window.document.documentElement.scrollTop = action.payload.scrollTop\n break\n\n case ActionTypes.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 registerAndSetPropControllersHandle(\n documentKey: string,\n elementKey: string,\n handle: PropControllerHandles.PropControllersHandle,\n): ThunkAction<void, State, unknown, Action> {\n return dispatch => {\n dispatch(registerPropControllersHandle(documentKey, elementKey, handle))\n\n const propControllers = dispatch(createAndRegisterPropControllers(documentKey, elementKey))\n\n handle.setPropControllers(propControllers)\n }\n}\n\nfunction unregisterAndUnsetPropControllersHandle(\n documentKey: string,\n elementKey: string,\n): ThunkAction<void, State, unknown, Action> {\n return (dispatch, getState) => {\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}\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 if (PropControllerHandles.isPropControllersHandle(action.payload.componentHandle)) {\n dispatch(\n registerAndSetPropControllersHandle(\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(\n unregisterAndUnsetPropControllersHandle(\n action.payload.documentKey,\n action.payload.elementKey,\n ),\n )\n break\n\n case ActionTypes.MESSAGE_HOST_PROP_CONTROLLER: {\n const propController = PropControllerHandles.getPropController(\n getPropControllerHandlesStateSlice(getState()),\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.propName,\n )\n\n if (propController) propController.recv(action.payload.message)\n }\n }\n\n return next(action)\n }\n }\n}\n\nfunction apolloClientCacheSyncMiddleware(\n client: ApolloClient<NormalizedCacheObject>,\n): Middleware<Dispatch, State, Dispatch> {\n return () => (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.CHANGE_API_RESOURCE: {\n const { resource } = action.payload\n\n client.cache.writeFragment({\n id: client.cache.identify(resource),\n fragment: Fragments[resource.__typename],\n data: resource,\n })\n\n break\n }\n }\n\n return next(action)\n }\n }\n}\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({\n preloadedState,\n client,\n}: {\n preloadedState?: PreloadedState<State>\n client: ApolloClient<NormalizedCacheObject>\n}): Store {\n return createStore(\n reducer,\n preloadedState,\n applyMiddleware(\n thunk,\n measureBoxModelsMiddleware(),\n messageChannelMiddleware(),\n propControllerHandlesMiddleware(),\n apolloClientCacheSyncMiddleware(client),\n ),\n )\n}\n"],"names":["hasOwnProperty","removeIn","setIn","ReadOnlyDocuments.getInitialState","ReadOnlyDocuments.getDocumentRootElement","getInitialState","ActionTypes","ReadOnlyDocuments.createDocument","combineReducers","Documents.reducer","ReactComponents.reducer","BoxModels.reducer","ComponentsMeta.reducer","PropControllers.reducer","PropControllerHandles.reducer","BoxModels.getMeasurables","BoxModels.getBoxModels","BoxModels.getBoxModel","ComponentsMeta.getComponentsMeta","PropControllers.getComponentPropControllerDescriptors","BoxModels.measure","changeElementBoxModels","changeDocumentElementSize","BoxModels.isMeasurable","registerMeasurable","unregisterMeasurable","registerComponent","ReactPage.getElementPropControllerDescriptors","createPropController","messageBuilderPropController","registerPropControllers","registerPropControllersHandle","PropControllerHandles.getPropControllersHandle","unregisterPropControllers","PropControllerHandles.isPropControllersHandle","PropControllerHandles.getPropController","Fragments","createStore","applyMiddleware","thunk"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-builder-preview.cjs.js","sources":["../src/utils/is.ts","../src/utils/shallowEqual.ts","../src/utils/deepEqual.ts","../src/state/modules/read-write-documents.ts","../src/state/modules/prop-controller-handles.ts","../src/state/react-builder-preview.ts"],"sourcesContent":["export default function is(x: unknown, y: unknown): boolean {\n if (x === y) return x !== 0 || y !== 0 || 1 / x === 1 / y\n\n return x !== x && y !== y\n}\n","import is from './is'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst shallowEqual = (a: unknown, b: unknown): boolean => {\n if (is(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n // @ts-expect-error: {}[string] is OK.\n if (!hasOwnProperty.call(b, keysA[i]) || !is(a[keysA[i]], b[keysA[i]])) return false\n }\n\n return true\n}\n\nexport default shallowEqual\n","import shallowEqual from './shallowEqual'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst deepEqual = (a: unknown, b: unknown): boolean => {\n if (shallowEqual(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n if (\n !hasOwnProperty.call(b, keysA[i]) ||\n // @ts-expect-error: {}[string] is OK.\n !deepEqual(a[keysA[i]], b[keysA[i]])\n )\n return false\n }\n\n return true\n}\n\nexport default deepEqual\n","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'\nimport type { DescriptorsPropControllers, PropController } from '../../prop-controllers/instances'\nimport type { Descriptor } from '../../prop-controllers/descriptors'\n\nexport interface PropControllersHandle<\n T extends Record<string, Descriptor> = Record<string, Descriptor>,\n> {\n setPropControllers(propControllers: DescriptorsPropControllers<T> | null): void\n}\n\nexport function isPropControllersHandle(value: unknown): value is PropControllersHandle {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'setPropControllers' in value &&\n typeof (value as { setPropControllers: unknown }).setPropControllers === 'function'\n ) {\n return true\n }\n\n return false\n}\n\nexport type State = {\n handles: Map<string, Map<string, PropControllersHandle>>\n instances: Map<string, Map<string, Record<string, PropController>>>\n}\n\nexport function getInitialState(): State {\n return { handles: new Map(), instances: new Map() }\n}\n\nexport function getPropControllersHandle(\n state: State,\n documentKey: string,\n elementKey: string,\n): PropControllersHandle | null {\n return state.handles.get(documentKey)?.get(elementKey) ?? null\n}\n\nexport function getPropController(\n state: State,\n documentKey: string,\n elementKey: string,\n propName: string,\n): PropController | null {\n return state.instances.get(documentKey)?.get(elementKey)?.[propName] ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey, handle } = action.payload\n\n return {\n ...state,\n handles: new Map(state.handles).set(\n documentKey,\n new Map(state.handles.get(documentKey) ?? []).set(elementKey, handle),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey } = action.payload\n const nextHandles = new Map(state.handles.get(documentKey) ?? [])\n\n const deleted = nextHandles.delete(elementKey)\n\n return deleted\n ? { ...state, handles: new Map(state.handles).set(documentKey, nextHandles) }\n : state\n }\n\n case ActionTypes.REGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey, propControllers } = action.payload\n\n return {\n ...state,\n instances: new Map(state.instances).set(\n documentKey,\n new Map(state.instances.get(documentKey) ?? []).set(elementKey, propControllers),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey } = action.payload\n const nextInstances = new Map(state.instances.get(documentKey) ?? [])\n\n const deleted = nextInstances.delete(elementKey)\n\n return deleted\n ? { ...state, instances: new Map(state.instances).set(documentKey, nextInstances) }\n : state\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 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 ReactPage from './react-page'\nimport {\n Action,\n changeDocumentElementSize,\n changeElementBoxModels,\n messageBuilderPropController,\n registerBuilderComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n unregisterBuilderComponent,\n unregisterMeasurable,\n unregisterPropControllers,\n} from './actions'\nimport { ActionTypes } from './actions'\nimport { createPropController, PropController } from '../prop-controllers/instances'\nimport { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport { Fragments } from '../api'\nimport { serializeControls } from '../builder'\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: (_state: boolean = true, _action: Action): boolean => true,\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 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 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\nexport function initialize(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const stopMeasuringElements = dispatch(startMeasuringElements())\n const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement())\n\n return () => {\n stopMeasuringElements()\n stopMeasuringDocumentElement()\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 const messageChannel = new MessageChannel()\n let cleanUp = () => {}\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 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 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.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 registerAndSetPropControllersHandle(\n documentKey: string,\n elementKey: string,\n handle: PropControllerHandles.PropControllersHandle,\n): ThunkAction<void, State, unknown, Action> {\n return dispatch => {\n dispatch(registerPropControllersHandle(documentKey, elementKey, handle))\n\n const propControllers = dispatch(createAndRegisterPropControllers(documentKey, elementKey))\n\n handle.setPropControllers(propControllers)\n }\n}\n\nfunction unregisterAndUnsetPropControllersHandle(\n documentKey: string,\n elementKey: string,\n): ThunkAction<void, State, unknown, Action> {\n return (dispatch, getState) => {\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}\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 if (PropControllerHandles.isPropControllersHandle(action.payload.componentHandle)) {\n dispatch(\n registerAndSetPropControllersHandle(\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(\n unregisterAndUnsetPropControllersHandle(\n action.payload.documentKey,\n action.payload.elementKey,\n ),\n )\n break\n\n case ActionTypes.MESSAGE_HOST_PROP_CONTROLLER: {\n const propController = PropControllerHandles.getPropController(\n getPropControllerHandlesStateSlice(getState()),\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.propName,\n )\n\n if (propController) propController.recv(action.payload.message)\n }\n }\n\n return next(action)\n }\n }\n}\n\nfunction apolloClientCacheSyncMiddleware(\n client: ApolloClient<NormalizedCacheObject>,\n): Middleware<Dispatch, State, Dispatch> {\n return () => (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.CHANGE_API_RESOURCE: {\n const { resource } = action.payload\n\n client.cache.writeFragment({\n id: client.cache.identify(resource),\n fragment: Fragments[resource.__typename],\n data: resource,\n })\n\n break\n }\n\n case ActionTypes.EVICT_API_RESOURCE:\n client.cache.evict({ id: action.payload.id })\n break\n }\n\n return next(action)\n }\n }\n}\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({\n preloadedState,\n client,\n}: {\n preloadedState?: PreloadedState<State>\n client: ApolloClient<NormalizedCacheObject>\n}): Store {\n return createStore(\n reducer,\n preloadedState,\n applyMiddleware(\n thunk,\n measureBoxModelsMiddleware(),\n messageChannelMiddleware(),\n propControllerHandlesMiddleware(),\n apolloClientCacheSyncMiddleware(client),\n ),\n )\n}\n"],"names":["hasOwnProperty","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","BoxModels.getMeasurables","BoxModels.getBoxModels","BoxModels.getBoxModel","ComponentsMeta.getComponentsMeta","PropControllers.getComponentPropControllerDescriptors","BoxModels.measure","changeElementBoxModels","changeDocumentElementSize","BoxModels.isMeasurable","registerMeasurable","unregisterMeasurable","serializeControls","registerBuilderComponent","unregisterBuilderComponent","ReactPage.getElementPropControllerDescriptors","createPropController","messageBuilderPropController","registerPropControllers","registerPropControllersHandle","PropControllerHandles.getPropControllersHandle","unregisterPropControllers","PropControllerHandles.isPropControllersHandle","PropControllerHandles.getPropController","Fragments","createStore","applyMiddleware","thunk"],"mappings":"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"}
|
|
@@ -20,33 +20,14 @@ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
|
20
20
|
import { combineReducers, createStore, applyMiddleware } from "redux";
|
|
21
21
|
import thunk from "redux-thunk";
|
|
22
22
|
import { removeIn, setIn } from "immutable";
|
|
23
|
-
import {
|
|
24
|
-
import { A as ActionTypes,
|
|
25
|
-
import { r as reducer$
|
|
23
|
+
import { h as getInitialState$2, r as reducer$3, j as getDocument$1, c as createDocument, k as reducer$4, l as reducer$6, m as reducer$7, n as getComponentsMeta$1, o as getComponentPropControllerDescriptors$1, p as getElementPropControllerDescriptors } from "./react-page.es.js";
|
|
24
|
+
import { A as ActionTypes, k as changeElementBoxModels, l as changeDocumentElementSize, n as registerBuilderComponent, o as unregisterBuilderComponent, p as unregisterMeasurable, q as registerMeasurable, t as unregisterPropControllers, v as registerPropControllersHandle, w as registerPropControllers, x as messageBuilderPropController } from "./actions.es.js";
|
|
25
|
+
import { r as reducer$5, a as getMeasurables$1, b as getBoxModels$1, m as measure, d as getBoxModel$1, i as isMeasurable } from "./box-models.es.js";
|
|
26
26
|
export { c as createBox, g as getBox, p as parse } from "./box-models.es.js";
|
|
27
27
|
import { c as createPropController } from "./instances.es.js";
|
|
28
28
|
import { F as Fragments } from "./constants.es.js";
|
|
29
|
-
import "
|
|
30
|
-
import "use-sync-external-store/shim/with-selector";
|
|
31
|
-
import "@apollo/client";
|
|
29
|
+
import { s as serializeControls } from "./control-serialization.es.js";
|
|
32
30
|
import "./descriptors.es.js";
|
|
33
|
-
import "styled-components";
|
|
34
|
-
import "framer-motion";
|
|
35
|
-
import "react/jsx-runtime";
|
|
36
|
-
import "next/image";
|
|
37
|
-
import "react-player";
|
|
38
|
-
import "color";
|
|
39
|
-
import "scroll-into-view-if-needed";
|
|
40
|
-
import "next/link";
|
|
41
|
-
import "react-use-gesture";
|
|
42
|
-
import "@popmotion/popcorn";
|
|
43
|
-
import "uuid/v4";
|
|
44
|
-
import "polished";
|
|
45
|
-
import "slate";
|
|
46
|
-
import "slate-hotkeys";
|
|
47
|
-
import "corporate-ipsum";
|
|
48
|
-
import "slate-react";
|
|
49
|
-
import "@convertkit/slate-lists";
|
|
50
31
|
import "css-box-model";
|
|
51
32
|
function is(x, y) {
|
|
52
33
|
if (x === y)
|
|
@@ -107,20 +88,22 @@ function getInitialState$1({
|
|
|
107
88
|
function getReadOnlyDocumentsStateSlice(state) {
|
|
108
89
|
return state;
|
|
109
90
|
}
|
|
110
|
-
function
|
|
111
|
-
return
|
|
91
|
+
function getDocument(state, documentKey) {
|
|
92
|
+
return getDocument$1(getReadOnlyDocumentsStateSlice(state), documentKey);
|
|
112
93
|
}
|
|
113
94
|
function reducer$2(state = getInitialState$1(), action) {
|
|
95
|
+
var _a;
|
|
96
|
+
const nextState = reducer$3(state, action);
|
|
114
97
|
switch (action.type) {
|
|
115
98
|
case ActionTypes.CHANGE_DOCUMENT: {
|
|
116
|
-
const currentRootElement =
|
|
99
|
+
const currentRootElement = (_a = getDocument(nextState, action.payload.documentKey)) == null ? void 0 : _a.rootElement;
|
|
117
100
|
if (currentRootElement == null)
|
|
118
|
-
return
|
|
101
|
+
return nextState;
|
|
119
102
|
const nextRootElement = apply(currentRootElement, action.payload.operation);
|
|
120
|
-
return currentRootElement === nextRootElement ?
|
|
103
|
+
return currentRootElement === nextRootElement ? nextState : new Map(nextState).set(action.payload.documentKey, createDocument(action.payload.documentKey, nextRootElement));
|
|
121
104
|
}
|
|
122
105
|
default:
|
|
123
|
-
return
|
|
106
|
+
return nextState;
|
|
124
107
|
}
|
|
125
108
|
}
|
|
126
109
|
function isPropControllersHandle(value) {
|
|
@@ -173,10 +156,10 @@ function reducer$1(state = getInitialState(), action) {
|
|
|
173
156
|
}
|
|
174
157
|
const reducer = combineReducers({
|
|
175
158
|
documents: reducer$2,
|
|
176
|
-
reactComponents: reducer$
|
|
177
|
-
boxModels: reducer$
|
|
178
|
-
componentsMeta: reducer$
|
|
179
|
-
propControllers: reducer$
|
|
159
|
+
reactComponents: reducer$4,
|
|
160
|
+
boxModels: reducer$5,
|
|
161
|
+
componentsMeta: reducer$6,
|
|
162
|
+
propControllers: reducer$7,
|
|
180
163
|
propControllerHandles: reducer$1,
|
|
181
164
|
isInBuilder: (_state = true, _action) => true
|
|
182
165
|
});
|
|
@@ -225,9 +208,9 @@ function measureElements() {
|
|
|
225
208
|
});
|
|
226
209
|
const changedBoxModels = /* @__PURE__ */ new Map();
|
|
227
210
|
currentBoxModels.forEach((currentDocumentBoxModels, documentKey) => {
|
|
211
|
+
const changedDocumentBoxModels = /* @__PURE__ */ new Map();
|
|
228
212
|
currentDocumentBoxModels.forEach((_boxModel, elementKey) => {
|
|
229
213
|
var _a;
|
|
230
|
-
const changedDocumentBoxModels = /* @__PURE__ */ new Map();
|
|
231
214
|
if (!((_a = measuredBoxModels.get(documentKey)) == null ? void 0 : _a.has(elementKey))) {
|
|
232
215
|
changedDocumentBoxModels.set(elementKey, null);
|
|
233
216
|
}
|
|
@@ -333,7 +316,8 @@ function messageChannelMiddleware() {
|
|
|
333
316
|
registeredComponentsMeta.forEach((componentMeta, componentType) => {
|
|
334
317
|
const propControllerDescriptors = getComponentPropControllerDescriptors(state, componentType);
|
|
335
318
|
if (propControllerDescriptors != null) {
|
|
336
|
-
|
|
319
|
+
const [serializedControls, transferables] = serializeControls(propControllerDescriptors);
|
|
320
|
+
messageChannel.port1.postMessage(registerBuilderComponent(componentType, componentMeta, serializedControls), transferables);
|
|
337
321
|
}
|
|
338
322
|
});
|
|
339
323
|
return (action) => {
|
|
@@ -341,15 +325,25 @@ function messageChannelMiddleware() {
|
|
|
341
325
|
case ActionTypes.CHANGE_ELEMENT_BOX_MODELS:
|
|
342
326
|
case ActionTypes.MOUNT_COMPONENT:
|
|
343
327
|
case ActionTypes.UNMOUNT_COMPONENT:
|
|
344
|
-
case ActionTypes.REGISTER_COMPONENT:
|
|
345
|
-
case ActionTypes.UNREGISTER_COMPONENT:
|
|
346
328
|
case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:
|
|
347
329
|
case ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:
|
|
348
330
|
messageChannel.port1.postMessage(action);
|
|
349
331
|
break;
|
|
332
|
+
case ActionTypes.REGISTER_COMPONENT: {
|
|
333
|
+
const { type, meta, propControllerDescriptors } = action.payload;
|
|
334
|
+
const [serializedControls, transferables] = serializeControls(propControllerDescriptors);
|
|
335
|
+
messageChannel.port1.postMessage(registerBuilderComponent(type, meta, serializedControls), transferables);
|
|
336
|
+
break;
|
|
337
|
+
}
|
|
338
|
+
case ActionTypes.UNREGISTER_COMPONENT:
|
|
339
|
+
messageChannel.port1.postMessage(unregisterBuilderComponent(action.payload.type));
|
|
340
|
+
break;
|
|
350
341
|
case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:
|
|
351
342
|
window.document.documentElement.scrollTop = action.payload.scrollTop;
|
|
352
343
|
break;
|
|
344
|
+
case ActionTypes.SCROLL_DOCUMENT_ELEMENT:
|
|
345
|
+
window.document.documentElement.scrollTop += action.payload.scrollTopDelta;
|
|
346
|
+
break;
|
|
353
347
|
case ActionTypes.INIT:
|
|
354
348
|
cleanUp = dispatch(initialize());
|
|
355
349
|
break;
|
|
@@ -424,6 +418,9 @@ function apolloClientCacheSyncMiddleware(client) {
|
|
|
424
418
|
});
|
|
425
419
|
break;
|
|
426
420
|
}
|
|
421
|
+
case ActionTypes.EVICT_API_RESOURCE:
|
|
422
|
+
client.cache.evict({ id: action.payload.id });
|
|
423
|
+
break;
|
|
427
424
|
}
|
|
428
425
|
return next(action);
|
|
429
426
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-builder-preview.es.js","sources":["../src/utils/is.ts","../src/utils/shallowEqual.ts","../src/utils/deepEqual.ts","../src/state/modules/read-write-documents.ts","../src/state/modules/prop-controller-handles.ts","../src/state/react-builder-preview.ts"],"sourcesContent":["export default function is(x: unknown, y: unknown): boolean {\n if (x === y) return x !== 0 || y !== 0 || 1 / x === 1 / y\n\n return x !== x && y !== y\n}\n","import is from './is'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst shallowEqual = (a: unknown, b: unknown): boolean => {\n if (is(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n // @ts-expect-error: {}[string] is OK.\n if (!hasOwnProperty.call(b, keysA[i]) || !is(a[keysA[i]], b[keysA[i]])) return false\n }\n\n return true\n}\n\nexport default shallowEqual\n","import shallowEqual from './shallowEqual'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst deepEqual = (a: unknown, b: unknown): boolean => {\n if (shallowEqual(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n if (\n !hasOwnProperty.call(b, keysA[i]) ||\n // @ts-expect-error: {}[string] is OK.\n !deepEqual(a[keysA[i]], b[keysA[i]])\n )\n return false\n }\n\n return true\n}\n\nexport default deepEqual\n","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 getDocumentRootElement(\n state: State,\n documentKey: string,\n): ReadOnlyDocuments.Element | null {\n return ReadOnlyDocuments.getDocumentRootElement(\n getReadOnlyDocumentsStateSlice(state),\n documentKey,\n )\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.CHANGE_DOCUMENT: {\n const currentRootElement = getDocumentRootElement(state, action.payload.documentKey)\n\n if (currentRootElement == null) return state\n\n const nextRootElement = apply(currentRootElement, action.payload.operation)\n\n return currentRootElement === nextRootElement\n ? state\n : new Map(state).set(\n action.payload.documentKey,\n ReadOnlyDocuments.createDocument(nextRootElement),\n )\n }\n\n default:\n return state\n }\n}\n","import { Action, ActionTypes } from '../actions'\nimport type { DescriptorsPropControllers, PropController } from '../../prop-controllers/instances'\nimport type { Descriptor } from '../../prop-controllers/descriptors'\n\nexport interface PropControllersHandle<\n T extends Record<string, Descriptor> = Record<string, Descriptor>,\n> {\n setPropControllers(propControllers: DescriptorsPropControllers<T> | null): void\n}\n\nexport function isPropControllersHandle(value: unknown): value is PropControllersHandle {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'setPropControllers' in value &&\n typeof (value as { setPropControllers: unknown }).setPropControllers === 'function'\n ) {\n return true\n }\n\n return false\n}\n\nexport type State = {\n handles: Map<string, Map<string, PropControllersHandle>>\n instances: Map<string, Map<string, Record<string, PropController>>>\n}\n\nexport function getInitialState(): State {\n return { handles: new Map(), instances: new Map() }\n}\n\nexport function getPropControllersHandle(\n state: State,\n documentKey: string,\n elementKey: string,\n): PropControllersHandle | null {\n return state.handles.get(documentKey)?.get(elementKey) ?? null\n}\n\nexport function getPropController(\n state: State,\n documentKey: string,\n elementKey: string,\n propName: string,\n): PropController | null {\n return state.instances.get(documentKey)?.get(elementKey)?.[propName] ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey, handle } = action.payload\n\n return {\n ...state,\n handles: new Map(state.handles).set(\n documentKey,\n new Map(state.handles.get(documentKey) ?? []).set(elementKey, handle),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey } = action.payload\n const nextHandles = new Map(state.handles.get(documentKey) ?? [])\n\n const deleted = nextHandles.delete(elementKey)\n\n return deleted\n ? { ...state, handles: new Map(state.handles).set(documentKey, nextHandles) }\n : state\n }\n\n case ActionTypes.REGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey, propControllers } = action.payload\n\n return {\n ...state,\n instances: new Map(state.instances).set(\n documentKey,\n new Map(state.instances.get(documentKey) ?? []).set(elementKey, propControllers),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey } = action.payload\n const nextInstances = new Map(state.instances.get(documentKey) ?? [])\n\n const deleted = nextInstances.delete(elementKey)\n\n return deleted\n ? { ...state, instances: new Map(state.instances).set(documentKey, nextInstances) }\n : state\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 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 ReactPage from './react-page'\nimport {\n Action,\n changeDocumentElementSize,\n changeElementBoxModels,\n messageBuilderPropController,\n registerComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n unregisterMeasurable,\n unregisterPropControllers,\n} from './actions'\nimport { ActionTypes } from './actions'\nimport { createPropController, PropController } from '../prop-controllers/instances'\nimport { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport { Fragments } from '../api'\n\nexport type { Operation } from './modules/read-write-documents'\nexport type { BoxModelHandle } from './modules/box-models'\nexport { createBox, getBox, parse } from './modules/box-models'\n\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: (_state: boolean = true, _action: Action): boolean => true,\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 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 currentDocumentBoxModels.forEach((_boxModel, elementKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\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 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\nexport function initialize(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const stopMeasuringElements = dispatch(startMeasuringElements())\n const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement())\n\n return () => {\n stopMeasuringElements()\n stopMeasuringDocumentElement()\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 const messageChannel = new MessageChannel()\n let cleanUp = () => {}\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 messageChannel.port1.postMessage(\n registerComponent(componentType, componentMeta, propControllerDescriptors),\n )\n }\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.REGISTER_COMPONENT:\n case ActionTypes.UNREGISTER_COMPONENT:\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:\n case ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:\n messageChannel.port1.postMessage(action)\n break\n\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:\n window.document.documentElement.scrollTop = action.payload.scrollTop\n break\n\n case ActionTypes.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 registerAndSetPropControllersHandle(\n documentKey: string,\n elementKey: string,\n handle: PropControllerHandles.PropControllersHandle,\n): ThunkAction<void, State, unknown, Action> {\n return dispatch => {\n dispatch(registerPropControllersHandle(documentKey, elementKey, handle))\n\n const propControllers = dispatch(createAndRegisterPropControllers(documentKey, elementKey))\n\n handle.setPropControllers(propControllers)\n }\n}\n\nfunction unregisterAndUnsetPropControllersHandle(\n documentKey: string,\n elementKey: string,\n): ThunkAction<void, State, unknown, Action> {\n return (dispatch, getState) => {\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}\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 if (PropControllerHandles.isPropControllersHandle(action.payload.componentHandle)) {\n dispatch(\n registerAndSetPropControllersHandle(\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(\n unregisterAndUnsetPropControllersHandle(\n action.payload.documentKey,\n action.payload.elementKey,\n ),\n )\n break\n\n case ActionTypes.MESSAGE_HOST_PROP_CONTROLLER: {\n const propController = PropControllerHandles.getPropController(\n getPropControllerHandlesStateSlice(getState()),\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.propName,\n )\n\n if (propController) propController.recv(action.payload.message)\n }\n }\n\n return next(action)\n }\n }\n}\n\nfunction apolloClientCacheSyncMiddleware(\n client: ApolloClient<NormalizedCacheObject>,\n): Middleware<Dispatch, State, Dispatch> {\n return () => (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.CHANGE_API_RESOURCE: {\n const { resource } = action.payload\n\n client.cache.writeFragment({\n id: client.cache.identify(resource),\n fragment: Fragments[resource.__typename],\n data: resource,\n })\n\n break\n }\n }\n\n return next(action)\n }\n }\n}\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({\n preloadedState,\n client,\n}: {\n preloadedState?: PreloadedState<State>\n client: ApolloClient<NormalizedCacheObject>\n}): Store {\n return createStore(\n reducer,\n preloadedState,\n applyMiddleware(\n thunk,\n measureBoxModelsMiddleware(),\n messageChannelMiddleware(),\n propControllerHandlesMiddleware(),\n apolloClientCacheSyncMiddleware(client),\n ),\n )\n}\n"],"names":["hasOwnProperty","ReadOnlyDocuments.getInitialState","ReadOnlyDocuments.getDocumentRootElement","getInitialState","ReadOnlyDocuments.createDocument","Documents.reducer","ReactComponents.reducer","BoxModels.reducer","ComponentsMeta.reducer","PropControllers.reducer","PropControllerHandles.reducer","BoxModels.getMeasurables","BoxModels.getBoxModels","BoxModels.getBoxModel","ComponentsMeta.getComponentsMeta","PropControllers.getComponentPropControllerDescriptors","BoxModels.measure","BoxModels.isMeasurable","ReactPage.getElementPropControllerDescriptors","PropControllerHandles.getPropControllersHandle","PropControllerHandles.isPropControllersHandle","PropControllerHandles.getPropController"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-builder-preview.es.js","sources":["../src/utils/is.ts","../src/utils/shallowEqual.ts","../src/utils/deepEqual.ts","../src/state/modules/read-write-documents.ts","../src/state/modules/prop-controller-handles.ts","../src/state/react-builder-preview.ts"],"sourcesContent":["export default function is(x: unknown, y: unknown): boolean {\n if (x === y) return x !== 0 || y !== 0 || 1 / x === 1 / y\n\n return x !== x && y !== y\n}\n","import is from './is'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst shallowEqual = (a: unknown, b: unknown): boolean => {\n if (is(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n // @ts-expect-error: {}[string] is OK.\n if (!hasOwnProperty.call(b, keysA[i]) || !is(a[keysA[i]], b[keysA[i]])) return false\n }\n\n return true\n}\n\nexport default shallowEqual\n","import shallowEqual from './shallowEqual'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst deepEqual = (a: unknown, b: unknown): boolean => {\n if (shallowEqual(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n if (\n !hasOwnProperty.call(b, keysA[i]) ||\n // @ts-expect-error: {}[string] is OK.\n !deepEqual(a[keysA[i]], b[keysA[i]])\n )\n return false\n }\n\n return true\n}\n\nexport default deepEqual\n","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'\nimport type { DescriptorsPropControllers, PropController } from '../../prop-controllers/instances'\nimport type { Descriptor } from '../../prop-controllers/descriptors'\n\nexport interface PropControllersHandle<\n T extends Record<string, Descriptor> = Record<string, Descriptor>,\n> {\n setPropControllers(propControllers: DescriptorsPropControllers<T> | null): void\n}\n\nexport function isPropControllersHandle(value: unknown): value is PropControllersHandle {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'setPropControllers' in value &&\n typeof (value as { setPropControllers: unknown }).setPropControllers === 'function'\n ) {\n return true\n }\n\n return false\n}\n\nexport type State = {\n handles: Map<string, Map<string, PropControllersHandle>>\n instances: Map<string, Map<string, Record<string, PropController>>>\n}\n\nexport function getInitialState(): State {\n return { handles: new Map(), instances: new Map() }\n}\n\nexport function getPropControllersHandle(\n state: State,\n documentKey: string,\n elementKey: string,\n): PropControllersHandle | null {\n return state.handles.get(documentKey)?.get(elementKey) ?? null\n}\n\nexport function getPropController(\n state: State,\n documentKey: string,\n elementKey: string,\n propName: string,\n): PropController | null {\n return state.instances.get(documentKey)?.get(elementKey)?.[propName] ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey, handle } = action.payload\n\n return {\n ...state,\n handles: new Map(state.handles).set(\n documentKey,\n new Map(state.handles.get(documentKey) ?? []).set(elementKey, handle),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE: {\n const { documentKey, elementKey } = action.payload\n const nextHandles = new Map(state.handles.get(documentKey) ?? [])\n\n const deleted = nextHandles.delete(elementKey)\n\n return deleted\n ? { ...state, handles: new Map(state.handles).set(documentKey, nextHandles) }\n : state\n }\n\n case ActionTypes.REGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey, propControllers } = action.payload\n\n return {\n ...state,\n instances: new Map(state.instances).set(\n documentKey,\n new Map(state.instances.get(documentKey) ?? []).set(elementKey, propControllers),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_PROP_CONTROLLERS: {\n const { documentKey, elementKey } = action.payload\n const nextInstances = new Map(state.instances.get(documentKey) ?? [])\n\n const deleted = nextInstances.delete(elementKey)\n\n return deleted\n ? { ...state, instances: new Map(state.instances).set(documentKey, nextInstances) }\n : state\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 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 ReactPage from './react-page'\nimport {\n Action,\n changeDocumentElementSize,\n changeElementBoxModels,\n messageBuilderPropController,\n registerBuilderComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n unregisterBuilderComponent,\n unregisterMeasurable,\n unregisterPropControllers,\n} from './actions'\nimport { ActionTypes } from './actions'\nimport { createPropController, PropController } from '../prop-controllers/instances'\nimport { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport { Fragments } from '../api'\nimport { serializeControls } from '../builder'\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: (_state: boolean = true, _action: Action): boolean => true,\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 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 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\nexport function initialize(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const stopMeasuringElements = dispatch(startMeasuringElements())\n const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement())\n\n return () => {\n stopMeasuringElements()\n stopMeasuringDocumentElement()\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 const messageChannel = new MessageChannel()\n let cleanUp = () => {}\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 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 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.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 registerAndSetPropControllersHandle(\n documentKey: string,\n elementKey: string,\n handle: PropControllerHandles.PropControllersHandle,\n): ThunkAction<void, State, unknown, Action> {\n return dispatch => {\n dispatch(registerPropControllersHandle(documentKey, elementKey, handle))\n\n const propControllers = dispatch(createAndRegisterPropControllers(documentKey, elementKey))\n\n handle.setPropControllers(propControllers)\n }\n}\n\nfunction unregisterAndUnsetPropControllersHandle(\n documentKey: string,\n elementKey: string,\n): ThunkAction<void, State, unknown, Action> {\n return (dispatch, getState) => {\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}\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 if (PropControllerHandles.isPropControllersHandle(action.payload.componentHandle)) {\n dispatch(\n registerAndSetPropControllersHandle(\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(\n unregisterAndUnsetPropControllersHandle(\n action.payload.documentKey,\n action.payload.elementKey,\n ),\n )\n break\n\n case ActionTypes.MESSAGE_HOST_PROP_CONTROLLER: {\n const propController = PropControllerHandles.getPropController(\n getPropControllerHandlesStateSlice(getState()),\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.propName,\n )\n\n if (propController) propController.recv(action.payload.message)\n }\n }\n\n return next(action)\n }\n }\n}\n\nfunction apolloClientCacheSyncMiddleware(\n client: ApolloClient<NormalizedCacheObject>,\n): Middleware<Dispatch, State, Dispatch> {\n return () => (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.CHANGE_API_RESOURCE: {\n const { resource } = action.payload\n\n client.cache.writeFragment({\n id: client.cache.identify(resource),\n fragment: Fragments[resource.__typename],\n data: resource,\n })\n\n break\n }\n\n case ActionTypes.EVICT_API_RESOURCE:\n client.cache.evict({ id: action.payload.id })\n break\n }\n\n return next(action)\n }\n }\n}\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({\n preloadedState,\n client,\n}: {\n preloadedState?: PreloadedState<State>\n client: ApolloClient<NormalizedCacheObject>\n}): Store {\n return createStore(\n reducer,\n preloadedState,\n applyMiddleware(\n thunk,\n measureBoxModelsMiddleware(),\n messageChannelMiddleware(),\n propControllerHandlesMiddleware(),\n apolloClientCacheSyncMiddleware(client),\n ),\n )\n}\n"],"names":["hasOwnProperty","ReadOnlyDocuments.getInitialState","ReadOnlyDocuments.getDocument","getInitialState","ReadOnlyDocuments.reducer","ReadOnlyDocuments.createDocument","Documents.reducer","ReactComponents.reducer","BoxModels.reducer","ComponentsMeta.reducer","PropControllers.reducer","PropControllerHandles.reducer","BoxModels.getMeasurables","BoxModels.getBoxModels","BoxModels.getBoxModel","ComponentsMeta.getComponentsMeta","PropControllers.getComponentPropControllerDescriptors","BoxModels.measure","BoxModels.isMeasurable","ReactPage.getElementPropControllerDescriptors","PropControllerHandles.getPropControllersHandle","PropControllerHandles.isPropControllersHandle","PropControllerHandles.getPropController"],"mappings":"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"}
|