@makeswift/runtime 0.27.1 → 0.28.0-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api-handler/handlers/manifest.js +1 -1
- package/dist/cjs/client/index.js +3 -3
- package/dist/cjs/global.d.js.map +1 -1
- package/dist/cjs/state/builder-api/actions.js +2 -2
- package/dist/cjs/state/builder-api/actions.js.map +1 -1
- package/dist/cjs/state/builder-api/api.js +17 -0
- package/dist/cjs/state/builder-api/api.js.map +1 -0
- package/dist/cjs/state/builder-api/message-channel.js +4 -5
- package/dist/cjs/state/builder-api/message-channel.js.map +1 -1
- package/dist/cjs/state/builder-api/navigation-listener.js +90 -0
- package/dist/cjs/state/builder-api/navigation-listener.js.map +1 -0
- package/dist/cjs/state/builder-api/proxy.js +8 -0
- package/dist/cjs/state/builder-api/proxy.js.map +1 -1
- package/dist/cjs/state/middleware/read-write/builder-api/index.js +3 -0
- package/dist/cjs/state/middleware/read-write/builder-api/index.js.map +1 -1
- package/dist/esm/api-handler/handlers/manifest.js +1 -1
- package/dist/esm/client/index.js +3 -3
- package/dist/esm/global.d.js.map +1 -1
- package/dist/esm/state/builder-api/actions.js +2 -2
- package/dist/esm/state/builder-api/actions.js.map +1 -1
- package/dist/esm/state/builder-api/api.js +1 -0
- package/dist/esm/state/builder-api/api.js.map +1 -0
- package/dist/esm/state/builder-api/message-channel.js +4 -5
- package/dist/esm/state/builder-api/message-channel.js.map +1 -1
- package/dist/esm/state/builder-api/navigation-listener.js +66 -0
- package/dist/esm/state/builder-api/navigation-listener.js.map +1 -0
- package/dist/esm/state/builder-api/proxy.js +9 -1
- package/dist/esm/state/builder-api/proxy.js.map +1 -1
- package/dist/esm/state/middleware/read-write/builder-api/index.js +3 -0
- package/dist/esm/state/middleware/read-write/builder-api/index.js.map +1 -1
- package/dist/types/state/builder-api/actions.d.ts +3 -7
- package/dist/types/state/builder-api/actions.d.ts.map +1 -1
- package/dist/types/state/builder-api/api.d.ts +8 -0
- package/dist/types/state/builder-api/api.d.ts.map +1 -0
- package/dist/types/state/builder-api/navigation-listener.d.ts +6 -0
- package/dist/types/state/builder-api/navigation-listener.d.ts.map +1 -0
- package/dist/types/state/builder-api/proxy.d.ts +3 -1
- package/dist/types/state/builder-api/proxy.d.ts.map +1 -1
- package/dist/types/state/middleware/read-write/builder-api/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -28,7 +28,7 @@ async function manifestHandler(req, { apiKey, manifest }) {
|
|
|
28
28
|
return import_request_response.ApiResponse.json({ message: "Unauthorized" }, { status: 401 });
|
|
29
29
|
}
|
|
30
30
|
return import_request_response.ApiResponse.json({
|
|
31
|
-
version: "0.
|
|
31
|
+
version: "0.28.0-canary.0",
|
|
32
32
|
interactionMode: true,
|
|
33
33
|
clientSideNavigation: false,
|
|
34
34
|
elementFromPoint: false,
|
package/dist/cjs/client/index.js
CHANGED
|
@@ -210,7 +210,7 @@ Received "${apiKey}" instead.`
|
|
|
210
210
|
}
|
|
211
211
|
this.apiKey = apiKey;
|
|
212
212
|
this.graphqlClient = new import_client.GraphQLClient(new URL("graphql", runtime.apiOrigin).href, {
|
|
213
|
-
"makeswift-runtime-version": "0.
|
|
213
|
+
"makeswift-runtime-version": "0.28.0-canary.0"
|
|
214
214
|
});
|
|
215
215
|
this.runtime = runtime;
|
|
216
216
|
}
|
|
@@ -222,7 +222,7 @@ Received "${apiKey}" instead.`
|
|
|
222
222
|
const requestHeaders = new Headers({
|
|
223
223
|
"x-api-key": this.apiKey,
|
|
224
224
|
"makeswift-site-api-key": this.apiKey,
|
|
225
|
-
"makeswift-runtime-version": "0.
|
|
225
|
+
"makeswift-runtime-version": "0.28.0-canary.0"
|
|
226
226
|
});
|
|
227
227
|
if (siteVersion?.token) {
|
|
228
228
|
requestUrl.searchParams.set("version", siteVersion.version);
|
|
@@ -680,7 +680,7 @@ Received "${apiKey}" instead.`
|
|
|
680
680
|
headers: {
|
|
681
681
|
"x-api-key": this.apiKey,
|
|
682
682
|
"makeswift-site-api-key": this.apiKey,
|
|
683
|
-
"makeswift-runtime-version": "0.
|
|
683
|
+
"makeswift-runtime-version": "0.28.0-canary.0",
|
|
684
684
|
"content-type": "application/json"
|
|
685
685
|
},
|
|
686
686
|
body: JSON.stringify({ token }),
|
package/dist/cjs/global.d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/global.d.ts"],"sourcesContent":["import '@emotion/jest'\n\ndeclare global {\n const PACKAGE_VERSION: string\n}\n\nexport {}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;AAAA,kBAAO;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/global.d.ts"],"sourcesContent":["import '@emotion/jest'\n\ndeclare global {\n const PACKAGE_VERSION: string\n\n // partial typings for the new Navigation API, see\n // https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API\n interface NavigateEvent extends Event {\n readonly navigationType: 'push' | 'reload' | 'replace' | 'traverse'\n readonly destination: {\n readonly id: string\n readonly index: number\n readonly key: string\n readonly sameDocument: boolean\n readonly url: string\n }\n\n readonly hashChange: boolean\n readonly userInitiated: boolean\n }\n\n interface Navigation {\n addEventListener(type: 'navigate', listener: (event: NavigateEvent) => void): void\n removeEventListener(type: 'navigate', listener: (event: NavigateEvent) => void): void\n }\n\n interface Window {\n navigation?: Navigation\n }\n}\n\nexport {}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;AAAA,kBAAO;","names":[]}
|
|
@@ -57,8 +57,8 @@ const BuilderActionTypes = {
|
|
|
57
57
|
UNREGISTER_BUILDER_COMPONENT: "UNREGISTER_BUILDER_COMPONENT",
|
|
58
58
|
HANDLE_HOST_NAVIGATE: "HANDLE_HOST_NAVIGATE"
|
|
59
59
|
};
|
|
60
|
-
function makeswiftConnectionCheck(
|
|
61
|
-
return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK
|
|
60
|
+
function makeswiftConnectionCheck() {
|
|
61
|
+
return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK };
|
|
62
62
|
}
|
|
63
63
|
function mountComponent(documentKey, elementKey) {
|
|
64
64
|
return { type: BuilderActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/state/builder-api/actions.ts"],"sourcesContent":["import { type ThunkAction } from '@reduxjs/toolkit'\n\nimport { type SerializedControl } from '../../builder'\nimport { type PropControllerMessage } from '../../prop-controllers/instances'\n\nimport { type Document } from '../modules/read-only-documents'\nimport { type ComponentMeta } from '../modules/components-meta'\nimport { type BoxModel } from '../modules/read-write/box-models'\n\nimport { type ElementSize } from '../middleware/read-write/builder-api/element-size'\nimport { type DocumentPayload, type SharedAction, SharedActionTypes } from '../shared-api'\n\nexport * from '../shared-api'\n\n// actions dispatched by the host to the builder (\"Builder API\")\n// note that some of these actions, in addition to being dispatched to the builder,\n// might also be internally intercepted by the host as a part of maintaining the\n// runtime's \"read-write\" state\nexport const BuilderActionTypes = {\n ...SharedActionTypes,\n\n MAKESWIFT_CONNECTION_CHECK: 'MAKESWIFT_CONNECTION_CHECK',\n\n MOUNT_COMPONENT: 'MOUNT_COMPONENT',\n UNMOUNT_COMPONENT: 'UNMOUNT_COMPONENT',\n\n CHANGE_DOCUMENT_ELEMENT_SIZE: 'CHANGE_DOCUMENT_ELEMENT_SIZE',\n CHANGE_ELEMENT_BOX_MODELS: 'CHANGE_ELEMENT_BOX_MODELS',\n\n MESSAGE_BUILDER_PROP_CONTROLLER: 'MESSAGE_BUILDER_PROP_CONTROLLER',\n\n HANDLE_WHEEL: 'HANDLE_WHEEL',\n HANDLE_POINTER_MOVE: 'HANDLE_POINTER_MOVE',\n\n ELEMENT_FROM_POINT_CHANGE: 'ELEMENT_FROM_POINT_CHANGE',\n\n REGISTER_BUILDER_DOCUMENT: 'REGISTER_BUILDER_DOCUMENT',\n UNREGISTER_BUILDER_DOCUMENT: 'UNREGISTER_BUILDER_DOCUMENT',\n\n REGISTER_BUILDER_COMPONENT: 'REGISTER_BUILDER_COMPONENT',\n UNREGISTER_BUILDER_COMPONENT: 'UNREGISTER_BUILDER_COMPONENT',\n\n HANDLE_HOST_NAVIGATE: 'HANDLE_HOST_NAVIGATE',\n} as const\n\ntype ActionWithTransferables<A> = A & {\n transferables?: Transferable[]\n}\n\ntype MakeswiftConnectionCheckAction = {\n type: typeof BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK\n payload: { currentUrl: string }\n}\n\ntype MountComponentAction = {\n type: typeof BuilderActionTypes.MOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype UnmountComponentAction = {\n type: typeof BuilderActionTypes.UNMOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype ChangeDocumentElementSizeAction = {\n type: typeof BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE\n payload: { size: ElementSize }\n}\n\ntype ChangeElementBoxModelsAction = {\n type: typeof BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS\n payload: { changedElementBoxModels: Map<string, Map<string, BoxModel | null>> }\n}\n\ntype MessageBuilderPropControllerAction<T = PropControllerMessage> = {\n type: typeof BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype HandleWheelAction = {\n type: typeof BuilderActionTypes.HANDLE_WHEEL\n payload: { deltaX: number; deltaY: number }\n}\n\ntype HandlePointerMoveAction = {\n type: typeof BuilderActionTypes.HANDLE_POINTER_MOVE\n payload: { clientX: number; clientY: number }\n}\n\ntype ElementFromPointChangeAction = {\n type: typeof BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE\n payload: { keys: { documentKey: string; elementKey: string } | null }\n}\n\ntype RegisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string; document: DocumentPayload }\n}\n\ntype UnregisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype RegisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n serializedControls: Record<string, SerializedControl>\n }\n}\n\ntype UnregisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT\n payload: { type: string }\n}\n\ntype HandleHostNavigateAction = {\n type: typeof BuilderActionTypes.HANDLE_HOST_NAVIGATE\n payload: { url: string | null }\n}\n\nexport type BuilderAction =\n | SharedAction\n | MakeswiftConnectionCheckAction\n | MountComponentAction\n | UnmountComponentAction\n | ChangeDocumentElementSizeAction\n | ChangeElementBoxModelsAction\n | MessageBuilderPropControllerAction\n | HandleWheelAction\n | HandlePointerMoveAction\n | ElementFromPointChangeAction\n | RegisterBuilderDocumentAction\n | UnregisterBuilderDocumentAction\n | RegisterBuilderComponentAction\n | UnregisterBuilderComponentAction\n | HandleHostNavigateAction\n\nexport function makeswiftConnectionCheck(\n payload: MakeswiftConnectionCheckAction['payload'],\n): MakeswiftConnectionCheckAction {\n return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK, payload }\n}\n\nexport function mountComponent(documentKey: string, elementKey: string): MountComponentAction {\n return { type: BuilderActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function unmountComponent(documentKey: string, elementKey: string): UnmountComponentAction {\n return { type: BuilderActionTypes.UNMOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function mountComponentEffect(\n documentKey: string,\n elementKey: string,\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n dispatch(mountComponent(documentKey, elementKey))\n\n return () => {\n dispatch(unmountComponent(documentKey, elementKey))\n }\n }\n}\n\nexport function changeDocumentElementSize(size: ElementSize): ChangeDocumentElementSizeAction {\n return { type: BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE, payload: { size } }\n}\n\nexport function changeElementBoxModels(\n changedElementBoxModels: Map<string, Map<string, BoxModel | null>>,\n): ChangeElementBoxModelsAction {\n return {\n type: BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS,\n payload: { changedElementBoxModels },\n }\n}\n\nexport function messageBuilderPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageBuilderPropControllerAction<T> {\n return {\n type: BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function handleWheel(payload: { deltaX: number; deltaY: number }): HandleWheelAction {\n return { type: BuilderActionTypes.HANDLE_WHEEL, payload }\n}\n\nexport function handlePointerMove(payload: {\n clientX: number\n clientY: number\n}): HandlePointerMoveAction {\n return { type: BuilderActionTypes.HANDLE_POINTER_MOVE, payload }\n}\n\nexport function elementFromPointChange(\n keys: {\n documentKey: string\n elementKey: string\n } | null,\n): ElementFromPointChangeAction {\n return { type: BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE, payload: { keys } }\n}\n\nexport function registerBuilderDocument(document: Document): RegisterBuilderDocumentAction {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_DOCUMENT,\n payload: { documentKey: document.key, document },\n }\n}\n\nexport function unregisterBuilderDocument(documentKey: string): UnregisterBuilderDocumentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function registerBuilderDocumentsEffect(\n documents: Document[],\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n documents.forEach(document => dispatch(registerBuilderDocument(document)))\n\n return () => {\n documents.forEach(document => dispatch(unregisterBuilderDocument(document.key)))\n }\n }\n}\n\nexport function registerBuilderComponent(\n payload: RegisterBuilderComponentAction['payload'],\n transferables?: Transferable[],\n): ActionWithTransferables<RegisterBuilderComponentAction> {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_COMPONENT,\n payload,\n transferables,\n }\n}\n\nexport function unregisterBuilderComponent(\n payload: UnregisterBuilderComponentAction['payload'],\n): UnregisterBuilderComponentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT, payload }\n}\n\nexport function hasTransferables<A extends BuilderAction>(\n action: A,\n): action is ActionWithTransferables<A> {\n return 'transferables' in action && Array.isArray(action.transferables)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,wBAA2E;AAE3E,4BAAc,0BAZd;AAkBO,MAAM,qBAAqB;AAAA,EAChC,GAAG;AAAA,EAEH,4BAA4B;AAAA,EAE5B,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAE3B,iCAAiC;AAAA,EAEjC,cAAc;AAAA,EACd,qBAAqB;AAAA,EAErB,2BAA2B;AAAA,EAE3B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAE7B,4BAA4B;AAAA,EAC5B,8BAA8B;AAAA,EAE9B,sBAAsB;AACxB;AAiGO,SAAS,yBACd,SACgC;AAChC,SAAO,EAAE,MAAM,mBAAmB,4BAA4B,QAAQ;AACxE;AAEO,SAAS,eAAe,aAAqB,YAA0C;AAC5F,SAAO,EAAE,MAAM,mBAAmB,iBAAiB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC1F;AAEO,SAAS,iBAAiB,aAAqB,YAA4C;AAChG,SAAO,EAAE,MAAM,mBAAmB,mBAAmB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC5F;AAEO,SAAS,qBACd,aACA,YAC0D;AAC1D,SAAO,cAAY;AACjB,aAAS,eAAe,aAAa,UAAU,CAAC;AAEhD,WAAO,MAAM;AACX,eAAS,iBAAiB,aAAa,UAAU,CAAC;AAAA,IACpD;AAAA,EACF;AACF;AAEO,SAAS,0BAA0B,MAAoD;AAC5F,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,SAAS,EAAE,KAAK,EAAE;AACpF;AAEO,SAAS,uBACd,yBAC8B;AAC9B,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,wBAAwB;AAAA,EACrC;AACF;AAEO,SAAS,6BACd,aACA,YACA,UACA,SACuC;AACvC,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,YAAY,UAAU,QAAQ;AAAA,EACxD;AACF;AAEO,SAAS,YAAY,SAAgE;AAC1F,SAAO,EAAE,MAAM,mBAAmB,cAAc,QAAQ;AAC1D;AAEO,SAAS,kBAAkB,SAGN;AAC1B,SAAO,EAAE,MAAM,mBAAmB,qBAAqB,QAAQ;AACjE;AAEO,SAAS,uBACd,MAI8B;AAC9B,SAAO,EAAE,MAAM,mBAAmB,2BAA2B,SAAS,EAAE,KAAK,EAAE;AACjF;AAEO,SAAS,wBAAwB,UAAmD;AACzF,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,SAAS,KAAK,SAAS;AAAA,EACjD;AACF;AAEO,SAAS,0BAA0B,aAAsD;AAC9F,SAAO,EAAE,MAAM,mBAAmB,6BAA6B,SAAS,EAAE,YAAY,EAAE;AAC1F;AAEO,SAAS,+BACd,WAC0D;AAC1D,SAAO,cAAY;AACjB,cAAU,QAAQ,cAAY,SAAS,wBAAwB,QAAQ,CAAC,CAAC;AAEzE,WAAO,MAAM;AACX,gBAAU,QAAQ,cAAY,SAAS,0BAA0B,SAAS,GAAG,CAAC,CAAC;AAAA,IACjF;AAAA,EACF;AACF;AAEO,SAAS,yBACd,SACA,eACyD;AACzD,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,2BACd,SACkC;AAClC,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,QAAQ;AAC1E;AAEO,SAAS,iBACd,QACsC;AACtC,SAAO,mBAAmB,UAAU,MAAM,QAAQ,OAAO,aAAa;AACxE;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/builder-api/actions.ts"],"sourcesContent":["import { type ThunkAction } from '@reduxjs/toolkit'\n\nimport { type SerializedControl } from '../../builder'\nimport { type PropControllerMessage } from '../../prop-controllers/instances'\n\nimport { type Document } from '../modules/read-only-documents'\nimport { type ComponentMeta } from '../modules/components-meta'\nimport { type BoxModel } from '../modules/read-write/box-models'\n\nimport { type ElementSize } from '../middleware/read-write/builder-api/element-size'\nimport { type DocumentPayload, type SharedAction, SharedActionTypes } from '../shared-api'\n\nimport { type HostNavigationEvent } from './api'\n\nexport * from '../shared-api'\n\n// actions dispatched by the host to the builder (\"Builder API\")\n// note that some of these actions, in addition to being dispatched to the builder,\n// might also be internally intercepted by the host as a part of maintaining the\n// runtime's \"read-write\" state\nexport const BuilderActionTypes = {\n ...SharedActionTypes,\n\n MAKESWIFT_CONNECTION_CHECK: 'MAKESWIFT_CONNECTION_CHECK',\n\n MOUNT_COMPONENT: 'MOUNT_COMPONENT',\n UNMOUNT_COMPONENT: 'UNMOUNT_COMPONENT',\n\n CHANGE_DOCUMENT_ELEMENT_SIZE: 'CHANGE_DOCUMENT_ELEMENT_SIZE',\n CHANGE_ELEMENT_BOX_MODELS: 'CHANGE_ELEMENT_BOX_MODELS',\n\n MESSAGE_BUILDER_PROP_CONTROLLER: 'MESSAGE_BUILDER_PROP_CONTROLLER',\n\n HANDLE_WHEEL: 'HANDLE_WHEEL',\n HANDLE_POINTER_MOVE: 'HANDLE_POINTER_MOVE',\n\n ELEMENT_FROM_POINT_CHANGE: 'ELEMENT_FROM_POINT_CHANGE',\n\n REGISTER_BUILDER_DOCUMENT: 'REGISTER_BUILDER_DOCUMENT',\n UNREGISTER_BUILDER_DOCUMENT: 'UNREGISTER_BUILDER_DOCUMENT',\n\n REGISTER_BUILDER_COMPONENT: 'REGISTER_BUILDER_COMPONENT',\n UNREGISTER_BUILDER_COMPONENT: 'UNREGISTER_BUILDER_COMPONENT',\n\n HANDLE_HOST_NAVIGATE: 'HANDLE_HOST_NAVIGATE',\n} as const\n\ntype ActionWithTransferables<A> = A & {\n transferables?: Transferable[]\n}\n\ntype MakeswiftConnectionCheckAction = {\n type: typeof BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK\n}\n\ntype MountComponentAction = {\n type: typeof BuilderActionTypes.MOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype UnmountComponentAction = {\n type: typeof BuilderActionTypes.UNMOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype ChangeDocumentElementSizeAction = {\n type: typeof BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE\n payload: { size: ElementSize }\n}\n\ntype ChangeElementBoxModelsAction = {\n type: typeof BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS\n payload: { changedElementBoxModels: Map<string, Map<string, BoxModel | null>> }\n}\n\ntype MessageBuilderPropControllerAction<T = PropControllerMessage> = {\n type: typeof BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype HandleWheelAction = {\n type: typeof BuilderActionTypes.HANDLE_WHEEL\n payload: { deltaX: number; deltaY: number }\n}\n\ntype HandlePointerMoveAction = {\n type: typeof BuilderActionTypes.HANDLE_POINTER_MOVE\n payload: { clientX: number; clientY: number }\n}\n\ntype ElementFromPointChangeAction = {\n type: typeof BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE\n payload: { keys: { documentKey: string; elementKey: string } | null }\n}\n\ntype RegisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string; document: DocumentPayload }\n}\n\ntype UnregisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype RegisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n serializedControls: Record<string, SerializedControl>\n }\n}\n\ntype UnregisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT\n payload: { type: string }\n}\n\ntype HandleHostNavigateAction = {\n type: typeof BuilderActionTypes.HANDLE_HOST_NAVIGATE\n payload: HostNavigationEvent\n}\n\nexport type BuilderAction =\n | SharedAction\n | MakeswiftConnectionCheckAction\n | MountComponentAction\n | UnmountComponentAction\n | ChangeDocumentElementSizeAction\n | ChangeElementBoxModelsAction\n | MessageBuilderPropControllerAction\n | HandleWheelAction\n | HandlePointerMoveAction\n | ElementFromPointChangeAction\n | RegisterBuilderDocumentAction\n | UnregisterBuilderDocumentAction\n | RegisterBuilderComponentAction\n | UnregisterBuilderComponentAction\n | HandleHostNavigateAction\n\nexport function makeswiftConnectionCheck(): MakeswiftConnectionCheckAction {\n return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK }\n}\n\nexport function mountComponent(documentKey: string, elementKey: string): MountComponentAction {\n return { type: BuilderActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function unmountComponent(documentKey: string, elementKey: string): UnmountComponentAction {\n return { type: BuilderActionTypes.UNMOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function mountComponentEffect(\n documentKey: string,\n elementKey: string,\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n dispatch(mountComponent(documentKey, elementKey))\n\n return () => {\n dispatch(unmountComponent(documentKey, elementKey))\n }\n }\n}\n\nexport function changeDocumentElementSize(size: ElementSize): ChangeDocumentElementSizeAction {\n return { type: BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE, payload: { size } }\n}\n\nexport function changeElementBoxModels(\n changedElementBoxModels: Map<string, Map<string, BoxModel | null>>,\n): ChangeElementBoxModelsAction {\n return {\n type: BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS,\n payload: { changedElementBoxModels },\n }\n}\n\nexport function messageBuilderPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageBuilderPropControllerAction<T> {\n return {\n type: BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function handleWheel(payload: { deltaX: number; deltaY: number }): HandleWheelAction {\n return { type: BuilderActionTypes.HANDLE_WHEEL, payload }\n}\n\nexport function handlePointerMove(payload: {\n clientX: number\n clientY: number\n}): HandlePointerMoveAction {\n return { type: BuilderActionTypes.HANDLE_POINTER_MOVE, payload }\n}\n\nexport function elementFromPointChange(\n keys: {\n documentKey: string\n elementKey: string\n } | null,\n): ElementFromPointChangeAction {\n return { type: BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE, payload: { keys } }\n}\n\nexport function registerBuilderDocument(document: Document): RegisterBuilderDocumentAction {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_DOCUMENT,\n payload: { documentKey: document.key, document },\n }\n}\n\nexport function unregisterBuilderDocument(documentKey: string): UnregisterBuilderDocumentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function registerBuilderDocumentsEffect(\n documents: Document[],\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n documents.forEach(document => dispatch(registerBuilderDocument(document)))\n\n return () => {\n documents.forEach(document => dispatch(unregisterBuilderDocument(document.key)))\n }\n }\n}\n\nexport function registerBuilderComponent(\n payload: RegisterBuilderComponentAction['payload'],\n transferables?: Transferable[],\n): ActionWithTransferables<RegisterBuilderComponentAction> {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_COMPONENT,\n payload,\n transferables,\n }\n}\n\nexport function unregisterBuilderComponent(\n payload: UnregisterBuilderComponentAction['payload'],\n): UnregisterBuilderComponentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT, payload }\n}\n\nexport function hasTransferables<A extends BuilderAction>(\n action: A,\n): action is ActionWithTransferables<A> {\n return 'transferables' in action && Array.isArray(action.transferables)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,wBAA2E;AAI3E,4BAAc,0BAdd;AAoBO,MAAM,qBAAqB;AAAA,EAChC,GAAG;AAAA,EAEH,4BAA4B;AAAA,EAE5B,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAE3B,iCAAiC;AAAA,EAEjC,cAAc;AAAA,EACd,qBAAqB;AAAA,EAErB,2BAA2B;AAAA,EAE3B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAE7B,4BAA4B;AAAA,EAC5B,8BAA8B;AAAA,EAE9B,sBAAsB;AACxB;AAgGO,SAAS,2BAA2D;AACzE,SAAO,EAAE,MAAM,mBAAmB,2BAA2B;AAC/D;AAEO,SAAS,eAAe,aAAqB,YAA0C;AAC5F,SAAO,EAAE,MAAM,mBAAmB,iBAAiB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC1F;AAEO,SAAS,iBAAiB,aAAqB,YAA4C;AAChG,SAAO,EAAE,MAAM,mBAAmB,mBAAmB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC5F;AAEO,SAAS,qBACd,aACA,YAC0D;AAC1D,SAAO,cAAY;AACjB,aAAS,eAAe,aAAa,UAAU,CAAC;AAEhD,WAAO,MAAM;AACX,eAAS,iBAAiB,aAAa,UAAU,CAAC;AAAA,IACpD;AAAA,EACF;AACF;AAEO,SAAS,0BAA0B,MAAoD;AAC5F,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,SAAS,EAAE,KAAK,EAAE;AACpF;AAEO,SAAS,uBACd,yBAC8B;AAC9B,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,wBAAwB;AAAA,EACrC;AACF;AAEO,SAAS,6BACd,aACA,YACA,UACA,SACuC;AACvC,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,YAAY,UAAU,QAAQ;AAAA,EACxD;AACF;AAEO,SAAS,YAAY,SAAgE;AAC1F,SAAO,EAAE,MAAM,mBAAmB,cAAc,QAAQ;AAC1D;AAEO,SAAS,kBAAkB,SAGN;AAC1B,SAAO,EAAE,MAAM,mBAAmB,qBAAqB,QAAQ;AACjE;AAEO,SAAS,uBACd,MAI8B;AAC9B,SAAO,EAAE,MAAM,mBAAmB,2BAA2B,SAAS,EAAE,KAAK,EAAE;AACjF;AAEO,SAAS,wBAAwB,UAAmD;AACzF,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,SAAS,KAAK,SAAS;AAAA,EACjD;AACF;AAEO,SAAS,0BAA0B,aAAsD;AAC9F,SAAO,EAAE,MAAM,mBAAmB,6BAA6B,SAAS,EAAE,YAAY,EAAE;AAC1F;AAEO,SAAS,+BACd,WAC0D;AAC1D,SAAO,cAAY;AACjB,cAAU,QAAQ,cAAY,SAAS,wBAAwB,QAAQ,CAAC,CAAC;AAEzE,WAAO,MAAM;AACX,gBAAU,QAAQ,cAAY,SAAS,0BAA0B,SAAS,GAAG,CAAC,CAAC;AAAA,IACjF;AAAA,EACF;AACF;AAEO,SAAS,yBACd,SACA,eACyD;AACzD,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,2BACd,SACkC;AAClC,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,QAAQ;AAC1E;AAEO,SAAS,iBACd,QACsC;AACtC,SAAO,mBAAmB,UAAU,MAAM,QAAQ,OAAO,aAAa;AACxE;","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var api_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(api_exports);
|
|
17
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/builder-api/api.ts"],"sourcesContent":["export type HostNavigationEvent = {\n url: string | null\n initialPageLoad: boolean\n}\n\nexport type BuilderApi = {\n handleHostNavigate(event: HostNavigationEvent): void\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -78,11 +78,10 @@ function setupConnectionCheck(appOrigin) {
|
|
|
78
78
|
const connectionCheckInterval = new Interval();
|
|
79
79
|
function connectionCheckHandler(event) {
|
|
80
80
|
if (event.origin === appOrigin && event.data.type === import_shared_api.SharedActionTypes.MAKESWIFT_CONNECTION_INIT) {
|
|
81
|
-
connectionCheckInterval.setInterval(
|
|
82
|
-
window.parent.postMessage((0, import_actions.makeswiftConnectionCheck)({
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}, CONNECTION_PING_INTERVAL_MS);
|
|
81
|
+
connectionCheckInterval.setInterval(
|
|
82
|
+
() => window.parent.postMessage((0, import_actions.makeswiftConnectionCheck)(), { targetOrigin: appOrigin }),
|
|
83
|
+
CONNECTION_PING_INTERVAL_MS
|
|
84
|
+
);
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
87
|
window.addEventListener("message", connectionCheckHandler);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/state/builder-api/message-channel.ts"],"sourcesContent":["import { SharedActionTypes, makeswiftConnectionInit } from '../shared-api'\nimport { makeswiftConnectionCheck } from './actions'\n\nconst CONNECTION_PING_INTERVAL_MS = 20\n\nexport class MessageChannel {\n private readonly appOrigin: string\n private channel: MessagePort | null = null\n private bufferedMessages: [any, Transferable[]?][] = []\n\n constructor({ appOrigin }: { appOrigin: string }) {\n this.appOrigin = appOrigin\n }\n\n public postMessage(message: any, transferables?: Transferable[]) {\n if (this.channel) {\n this.channel.postMessage(message, transferables ?? [])\n } else {\n this.bufferedMessages.push([message, transferables])\n }\n }\n\n public setup({ onMessage }: { onMessage: (event: MessageEvent) => void }): VoidFunction {\n const cleanupConnectionCheck = setupConnectionCheck(this.appOrigin)\n\n const channel = new window.MessageChannel()\n channel.port1.onmessage = onMessage\n\n // connect channel to the parent window, see\n // https://developer.mozilla.org/en-US/docs/Web/API/Channel_Messaging_API\n window.parent.postMessage(channel.port2, this.appOrigin, [channel.port2])\n\n this.channel = channel.port1\n\n return () => {\n cleanupConnectionCheck()\n\n if (this.channel) {\n this.channel.onmessage = null\n this.channel.close()\n this.channel = null\n }\n }\n }\n\n public dispatchBuffered() {\n console.assert(this.channel != null, 'channel is not setup')\n\n this.bufferedMessages.forEach(([message, transferables]) => {\n this.channel?.postMessage(message, transferables ?? [])\n })\n\n this.bufferedMessages = []\n }\n}\n\n// FIXME: instead of `window.parent.postMessage`, the connection check should\n// probably use the message channel itself: after all, it's meant to check\n// the health of the builder <> host connection, and whether we can reach the\n// builder through `window.parent.postMessage` is not indicative of the health\n// of the message channel itself, which is what the builder <> host\n// communication relies on.\nfunction setupConnectionCheck(appOrigin: string): VoidFunction {\n class Interval {\n private id: number | null = null\n\n setInterval(callback: () => void, delay: number) {\n this.clear()\n this.id = window.setInterval(callback, delay)\n }\n\n clear() {\n if (this.id != null) {\n window.clearInterval(this.id)\n this.id = null\n }\n }\n }\n\n const connectionCheckInterval = new Interval()\n\n function connectionCheckHandler(event: MessageEvent) {\n if (\n event.origin === appOrigin &&\n event.data.type === SharedActionTypes.MAKESWIFT_CONNECTION_INIT\n ) {\n connectionCheckInterval.setInterval(() =>
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/builder-api/message-channel.ts"],"sourcesContent":["import { SharedActionTypes, makeswiftConnectionInit } from '../shared-api'\nimport { makeswiftConnectionCheck } from './actions'\n\nconst CONNECTION_PING_INTERVAL_MS = 20\n\nexport class MessageChannel {\n private readonly appOrigin: string\n private channel: MessagePort | null = null\n private bufferedMessages: [any, Transferable[]?][] = []\n\n constructor({ appOrigin }: { appOrigin: string }) {\n this.appOrigin = appOrigin\n }\n\n public postMessage(message: any, transferables?: Transferable[]) {\n if (this.channel) {\n this.channel.postMessage(message, transferables ?? [])\n } else {\n this.bufferedMessages.push([message, transferables])\n }\n }\n\n public setup({ onMessage }: { onMessage: (event: MessageEvent) => void }): VoidFunction {\n const cleanupConnectionCheck = setupConnectionCheck(this.appOrigin)\n\n const channel = new window.MessageChannel()\n channel.port1.onmessage = onMessage\n\n // connect channel to the parent window, see\n // https://developer.mozilla.org/en-US/docs/Web/API/Channel_Messaging_API\n window.parent.postMessage(channel.port2, this.appOrigin, [channel.port2])\n\n this.channel = channel.port1\n\n return () => {\n cleanupConnectionCheck()\n\n if (this.channel) {\n this.channel.onmessage = null\n this.channel.close()\n this.channel = null\n }\n }\n }\n\n public dispatchBuffered() {\n console.assert(this.channel != null, 'channel is not setup')\n\n this.bufferedMessages.forEach(([message, transferables]) => {\n this.channel?.postMessage(message, transferables ?? [])\n })\n\n this.bufferedMessages = []\n }\n}\n\n// FIXME: instead of `window.parent.postMessage`, the connection check should\n// probably use the message channel itself: after all, it's meant to check\n// the health of the builder <> host connection, and whether we can reach the\n// builder through `window.parent.postMessage` is not indicative of the health\n// of the message channel itself, which is what the builder <> host\n// communication relies on.\nfunction setupConnectionCheck(appOrigin: string): VoidFunction {\n class Interval {\n private id: number | null = null\n\n setInterval(callback: () => void, delay: number) {\n this.clear()\n this.id = window.setInterval(callback, delay)\n }\n\n clear() {\n if (this.id != null) {\n window.clearInterval(this.id)\n this.id = null\n }\n }\n }\n\n const connectionCheckInterval = new Interval()\n\n function connectionCheckHandler(event: MessageEvent) {\n if (\n event.origin === appOrigin &&\n event.data.type === SharedActionTypes.MAKESWIFT_CONNECTION_INIT\n ) {\n connectionCheckInterval.setInterval(\n () => window.parent.postMessage(makeswiftConnectionCheck(), { targetOrigin: appOrigin }),\n CONNECTION_PING_INTERVAL_MS,\n )\n }\n }\n\n window.addEventListener('message', connectionCheckHandler)\n window.parent.postMessage(makeswiftConnectionInit(), { targetOrigin: appOrigin })\n\n return () => {\n window.removeEventListener('message', connectionCheckHandler)\n connectionCheckInterval.clear()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA2D;AAC3D,qBAAyC;AAEzC,MAAM,8BAA8B;AAE7B,MAAM,eAAe;AAAA,EACT;AAAA,EACT,UAA8B;AAAA,EAC9B,mBAA6C,CAAC;AAAA,EAEtD,YAAY,EAAE,UAAU,GAA0B;AAChD,SAAK,YAAY;AAAA,EACnB;AAAA,EAEO,YAAY,SAAc,eAAgC;AAC/D,QAAI,KAAK,SAAS;AAChB,WAAK,QAAQ,YAAY,SAAS,iBAAiB,CAAC,CAAC;AAAA,IACvD,OAAO;AACL,WAAK,iBAAiB,KAAK,CAAC,SAAS,aAAa,CAAC;AAAA,IACrD;AAAA,EACF;AAAA,EAEO,MAAM,EAAE,UAAU,GAA+D;AACtF,UAAM,yBAAyB,qBAAqB,KAAK,SAAS;AAElE,UAAM,UAAU,IAAI,OAAO,eAAe;AAC1C,YAAQ,MAAM,YAAY;AAI1B,WAAO,OAAO,YAAY,QAAQ,OAAO,KAAK,WAAW,CAAC,QAAQ,KAAK,CAAC;AAExE,SAAK,UAAU,QAAQ;AAEvB,WAAO,MAAM;AACX,6BAAuB;AAEvB,UAAI,KAAK,SAAS;AAChB,aAAK,QAAQ,YAAY;AACzB,aAAK,QAAQ,MAAM;AACnB,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EAEO,mBAAmB;AACxB,YAAQ,OAAO,KAAK,WAAW,MAAM,sBAAsB;AAE3D,SAAK,iBAAiB,QAAQ,CAAC,CAAC,SAAS,aAAa,MAAM;AAC1D,WAAK,SAAS,YAAY,SAAS,iBAAiB,CAAC,CAAC;AAAA,IACxD,CAAC;AAED,SAAK,mBAAmB,CAAC;AAAA,EAC3B;AACF;AAQA,SAAS,qBAAqB,WAAiC;AAAA,EAC7D,MAAM,SAAS;AAAA,IACL,KAAoB;AAAA,IAE5B,YAAY,UAAsB,OAAe;AAC/C,WAAK,MAAM;AACX,WAAK,KAAK,OAAO,YAAY,UAAU,KAAK;AAAA,IAC9C;AAAA,IAEA,QAAQ;AACN,UAAI,KAAK,MAAM,MAAM;AACnB,eAAO,cAAc,KAAK,EAAE;AAC5B,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,QAAM,0BAA0B,IAAI,SAAS;AAE7C,WAAS,uBAAuB,OAAqB;AACnD,QACE,MAAM,WAAW,aACjB,MAAM,KAAK,SAAS,oCAAkB,2BACtC;AACA,8BAAwB;AAAA,QACtB,MAAM,OAAO,OAAO,gBAAY,yCAAyB,GAAG,EAAE,cAAc,UAAU,CAAC;AAAA,QACvF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,iBAAiB,WAAW,sBAAsB;AACzD,SAAO,OAAO,gBAAY,2CAAwB,GAAG,EAAE,cAAc,UAAU,CAAC;AAEhF,SAAO,MAAM;AACX,WAAO,oBAAoB,WAAW,sBAAsB;AAC5D,4BAAwB,MAAM;AAAA,EAChC;AACF;","names":[]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var navigation_listener_exports = {};
|
|
20
|
+
__export(navigation_listener_exports, {
|
|
21
|
+
setupNavigationListener: () => setupNavigationListener
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(navigation_listener_exports);
|
|
24
|
+
const CLICK_NAVIGATION_THRESHOLD_MS = 100;
|
|
25
|
+
const LOCATION_CHECK_DELAY_MS = 700;
|
|
26
|
+
function setupNavigationListener(callback) {
|
|
27
|
+
let previousLocation = null;
|
|
28
|
+
const handleNavigate = (event) => {
|
|
29
|
+
if (event.url === previousLocation)
|
|
30
|
+
return;
|
|
31
|
+
callback(event);
|
|
32
|
+
previousLocation = event.url;
|
|
33
|
+
};
|
|
34
|
+
handleNavigate({ url: windowLocation(), initialPageLoad: true });
|
|
35
|
+
if (typeof window === "undefined") {
|
|
36
|
+
return () => {
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const unsubscribes = [];
|
|
40
|
+
if ("navigation" in window && window.navigation) {
|
|
41
|
+
const navigation = window.navigation;
|
|
42
|
+
const handler = ({ destination }) => handleNavigate({ url: destination.url, initialPageLoad: false });
|
|
43
|
+
navigation.addEventListener("navigate", handler);
|
|
44
|
+
unsubscribes.push(() => navigation.removeEventListener("navigate", handler));
|
|
45
|
+
return () => {
|
|
46
|
+
unsubscribes.forEach((u) => u());
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
let lastClickEvent = null;
|
|
50
|
+
const clickHandler = (e) => {
|
|
51
|
+
const a = e.composedPath?.()?.find((n) => n instanceof HTMLAnchorElement) ?? (e.target instanceof Element && e.target.closest?.("a"));
|
|
52
|
+
if (!a)
|
|
53
|
+
return;
|
|
54
|
+
lastClickEvent = { href: a.href, timestamp: Date.now() };
|
|
55
|
+
window.setTimeout(
|
|
56
|
+
() => handleNavigate({ url: windowLocation(), initialPageLoad: false }),
|
|
57
|
+
LOCATION_CHECK_DELAY_MS
|
|
58
|
+
);
|
|
59
|
+
};
|
|
60
|
+
window.document.addEventListener(
|
|
61
|
+
"click",
|
|
62
|
+
clickHandler,
|
|
63
|
+
{ capture: true }
|
|
64
|
+
// run before bubbling to fortify against `stopPropagation()` calls
|
|
65
|
+
);
|
|
66
|
+
unsubscribes.push(
|
|
67
|
+
() => window.document.removeEventListener("click", clickHandler, { capture: true })
|
|
68
|
+
);
|
|
69
|
+
const unloadHandler = () => {
|
|
70
|
+
if (!lastClickEvent)
|
|
71
|
+
return;
|
|
72
|
+
const msSinceLastClick = Date.now() - lastClickEvent.timestamp;
|
|
73
|
+
handleNavigate({
|
|
74
|
+
url: msSinceLastClick < CLICK_NAVIGATION_THRESHOLD_MS ? lastClickEvent.href ?? null : null,
|
|
75
|
+
initialPageLoad: false
|
|
76
|
+
});
|
|
77
|
+
lastClickEvent = null;
|
|
78
|
+
};
|
|
79
|
+
window.addEventListener("beforeunload", unloadHandler);
|
|
80
|
+
unsubscribes.push(() => window.removeEventListener("beforeunload", unloadHandler));
|
|
81
|
+
return () => {
|
|
82
|
+
unsubscribes.forEach((u) => u());
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const windowLocation = () => typeof window !== "undefined" ? window.location.href : null;
|
|
86
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
87
|
+
0 && (module.exports = {
|
|
88
|
+
setupNavigationListener
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=navigation-listener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/builder-api/navigation-listener.ts"],"sourcesContent":["export type SiteNavigationEvent = {\n url: string | null\n initialPageLoad: boolean\n}\n\ntype ClickEvent = {\n href: string\n timestamp: number\n}\n\nconst CLICK_NAVIGATION_THRESHOLD_MS = 100\nconst LOCATION_CHECK_DELAY_MS = 700 // give the host generous time to perform the navigation\n\nexport function setupNavigationListener(\n callback: (args: SiteNavigationEvent) => void,\n): VoidFunction {\n let previousLocation: string | null = null\n\n const handleNavigate = (event: SiteNavigationEvent) => {\n if (event.url === previousLocation) return\n\n callback(event)\n previousLocation = event.url\n }\n\n // trigger navigation callback on initial page load\n handleNavigate({ url: windowLocation(), initialPageLoad: true })\n\n if (typeof window === 'undefined') {\n return () => {}\n }\n\n const unsubscribes: (() => void)[] = []\n\n // check for availability of the Navigation API (baseline feature since January 2026),\n // see https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API\n if ('navigation' in window && window.navigation) {\n const navigation = window.navigation\n\n const handler = ({ destination }: NavigateEvent) =>\n handleNavigate({ url: destination.url, initialPageLoad: false })\n\n // note that in order to capture destination URLs that might not be Makeswift-enabled,\n // we send a `SiteNavigationEvent` at the start of navigation, but do not track whether\n // the navigation was successful or not (possible future improvement)\n navigation.addEventListener('navigate', handler)\n unsubscribes.push(() => navigation.removeEventListener('navigate', handler))\n\n return () => {\n unsubscribes.forEach(u => u())\n }\n }\n\n // for browsers lacking Navigation API support, we manually track:\n // - link clicks to capture destination URLs\n // - page unload events to detect cross-page navigation\n let lastClickEvent: ClickEvent | null = null\n\n const clickHandler = (e: MouseEvent) => {\n const a =\n e.composedPath?.()?.find(n => n instanceof HTMLAnchorElement) ??\n (e.target instanceof Element && e.target.closest?.('a'))\n\n if (!a) return\n\n lastClickEvent = { href: a.href, timestamp: Date.now() }\n\n // handle navigation between pages in the host; note that we intentionally are\n // not cancelling the timer on cleanup to ensure we report the navigation\n window.setTimeout(\n () => handleNavigate({ url: windowLocation(), initialPageLoad: false }),\n LOCATION_CHECK_DELAY_MS,\n )\n }\n\n window.document.addEventListener(\n 'click',\n clickHandler,\n { capture: true }, // run before bubbling to fortify against `stopPropagation()` calls\n )\n\n unsubscribes.push(() =>\n window.document.removeEventListener('click', clickHandler, { capture: true }),\n )\n\n // handle external navigation\n const unloadHandler = () => {\n if (!lastClickEvent) return\n\n const msSinceLastClick = Date.now() - lastClickEvent.timestamp\n handleNavigate({\n url: msSinceLastClick < CLICK_NAVIGATION_THRESHOLD_MS ? (lastClickEvent.href ?? null) : null,\n initialPageLoad: false,\n })\n\n lastClickEvent = null\n }\n\n window.addEventListener('beforeunload', unloadHandler)\n unsubscribes.push(() => window.removeEventListener('beforeunload', unloadHandler))\n\n return () => {\n unsubscribes.forEach(u => u())\n }\n}\n\nconst windowLocation = (): string | null =>\n typeof window !== 'undefined' ? window.location.href : null\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,MAAM,gCAAgC;AACtC,MAAM,0BAA0B;AAEzB,SAAS,wBACd,UACc;AACd,MAAI,mBAAkC;AAEtC,QAAM,iBAAiB,CAAC,UAA+B;AACrD,QAAI,MAAM,QAAQ;AAAkB;AAEpC,aAAS,KAAK;AACd,uBAAmB,MAAM;AAAA,EAC3B;AAGA,iBAAe,EAAE,KAAK,eAAe,GAAG,iBAAiB,KAAK,CAAC;AAE/D,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AAEA,QAAM,eAA+B,CAAC;AAItC,MAAI,gBAAgB,UAAU,OAAO,YAAY;AAC/C,UAAM,aAAa,OAAO;AAE1B,UAAM,UAAU,CAAC,EAAE,YAAY,MAC7B,eAAe,EAAE,KAAK,YAAY,KAAK,iBAAiB,MAAM,CAAC;AAKjE,eAAW,iBAAiB,YAAY,OAAO;AAC/C,iBAAa,KAAK,MAAM,WAAW,oBAAoB,YAAY,OAAO,CAAC;AAE3E,WAAO,MAAM;AACX,mBAAa,QAAQ,OAAK,EAAE,CAAC;AAAA,IAC/B;AAAA,EACF;AAKA,MAAI,iBAAoC;AAExC,QAAM,eAAe,CAAC,MAAkB;AACtC,UAAM,IACJ,EAAE,eAAe,GAAG,KAAK,OAAK,aAAa,iBAAiB,MAC3D,EAAE,kBAAkB,WAAW,EAAE,OAAO,UAAU,GAAG;AAExD,QAAI,CAAC;AAAG;AAER,qBAAiB,EAAE,MAAM,EAAE,MAAM,WAAW,KAAK,IAAI,EAAE;AAIvD,WAAO;AAAA,MACL,MAAM,eAAe,EAAE,KAAK,eAAe,GAAG,iBAAiB,MAAM,CAAC;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAEA,SAAO,SAAS;AAAA,IACd;AAAA,IACA;AAAA,IACA,EAAE,SAAS,KAAK;AAAA;AAAA,EAClB;AAEA,eAAa;AAAA,IAAK,MAChB,OAAO,SAAS,oBAAoB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAAA,EAC9E;AAGA,QAAM,gBAAgB,MAAM;AAC1B,QAAI,CAAC;AAAgB;AAErB,UAAM,mBAAmB,KAAK,IAAI,IAAI,eAAe;AACrD,mBAAe;AAAA,MACb,KAAK,mBAAmB,gCAAiC,eAAe,QAAQ,OAAQ;AAAA,MACxF,iBAAiB;AAAA,IACnB,CAAC;AAED,qBAAiB;AAAA,EACnB;AAEA,SAAO,iBAAiB,gBAAgB,aAAa;AACrD,eAAa,KAAK,MAAM,OAAO,oBAAoB,gBAAgB,aAAa,CAAC;AAEjF,SAAO,MAAM;AACX,iBAAa,QAAQ,OAAK,EAAE,CAAC;AAAA,EAC/B;AACF;AAEA,MAAM,iBAAiB,MACrB,OAAO,WAAW,cAAc,OAAO,SAAS,OAAO;","names":[]}
|
|
@@ -24,11 +24,15 @@ module.exports = __toCommonJS(proxy_exports);
|
|
|
24
24
|
var import_host_api = require("../host-api");
|
|
25
25
|
var import_actions = require("./actions");
|
|
26
26
|
var import_message_channel = require("./message-channel");
|
|
27
|
+
var import_navigation_listener = require("./navigation-listener");
|
|
27
28
|
class BuilderAPIProxy {
|
|
28
29
|
messageChannel;
|
|
29
30
|
constructor({ appOrigin }) {
|
|
30
31
|
this.messageChannel = new import_message_channel.MessageChannel({ appOrigin });
|
|
31
32
|
}
|
|
33
|
+
handleHostNavigate(event) {
|
|
34
|
+
this.execute({ type: import_actions.BuilderActionTypes.HANDLE_HOST_NAVIGATE, payload: event });
|
|
35
|
+
}
|
|
32
36
|
// low-level, action-based API
|
|
33
37
|
setup({ onHostAction }) {
|
|
34
38
|
const channelCleanup = this.messageChannel.setup({
|
|
@@ -41,8 +45,12 @@ class BuilderAPIProxy {
|
|
|
41
45
|
onHostAction(action);
|
|
42
46
|
}
|
|
43
47
|
});
|
|
48
|
+
const navigationListenerCleanup = (0, import_navigation_listener.setupNavigationListener)(
|
|
49
|
+
(event) => this.handleHostNavigate(event)
|
|
50
|
+
);
|
|
44
51
|
return () => {
|
|
45
52
|
channelCleanup();
|
|
53
|
+
navigationListenerCleanup();
|
|
46
54
|
};
|
|
47
55
|
}
|
|
48
56
|
execute(action) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/state/builder-api/proxy.ts"],"sourcesContent":["import { type HostAction, isHostAction } from '../host-api'\n\nimport { type BuilderAction, hasTransferables } from './actions'\nimport { MessageChannel } from './message-channel'\n\nexport class BuilderAPIProxy {\n private messageChannel: MessageChannel\n\n constructor({ appOrigin }: { appOrigin: string }) {\n this.messageChannel = new MessageChannel({ appOrigin })\n }\n\n // low-level, action-based API\n\n setup({ onHostAction }: { onHostAction: (action: HostAction) => void }): VoidFunction {\n const channelCleanup = this.messageChannel.setup({\n onMessage: (event: MessageEvent) => {\n const action = event.data\n\n if (!isHostAction(action)) {\n console.warn('Unexpected host action', action)\n return\n }\n\n onHostAction(action)\n },\n })\n\n return () => {\n channelCleanup()\n }\n }\n\n execute(action: BuilderAction): void {\n if (hasTransferables(action)) {\n const { transferables, ...forwardedAction } = action\n this.messageChannel.postMessage(forwardedAction, transferables)\n return\n }\n\n this.messageChannel.postMessage(action)\n }\n\n dispatchBuffered(): void {\n this.messageChannel.dispatchBuffered()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA8C;AAE9C,
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/builder-api/proxy.ts"],"sourcesContent":["import { type HostAction, isHostAction } from '../host-api'\n\nimport { type BuilderAction, BuilderActionTypes, hasTransferables } from './actions'\nimport { MessageChannel } from './message-channel'\nimport { setupNavigationListener } from './navigation-listener'\nimport { type BuilderApi, type HostNavigationEvent } from './api'\n\nexport class BuilderAPIProxy implements BuilderApi {\n private messageChannel: MessageChannel\n\n constructor({ appOrigin }: { appOrigin: string }) {\n this.messageChannel = new MessageChannel({ appOrigin })\n }\n\n handleHostNavigate(event: HostNavigationEvent) {\n this.execute({ type: BuilderActionTypes.HANDLE_HOST_NAVIGATE, payload: event })\n }\n\n // low-level, action-based API\n\n setup({ onHostAction }: { onHostAction: (action: HostAction) => void }): VoidFunction {\n const channelCleanup = this.messageChannel.setup({\n onMessage: (event: MessageEvent) => {\n const action = event.data\n\n if (!isHostAction(action)) {\n console.warn('Unexpected host action', action)\n return\n }\n\n onHostAction(action)\n },\n })\n\n const navigationListenerCleanup = setupNavigationListener(event =>\n this.handleHostNavigate(event),\n )\n\n return () => {\n channelCleanup()\n navigationListenerCleanup()\n }\n }\n\n execute(action: BuilderAction): void {\n if (hasTransferables(action)) {\n const { transferables, ...forwardedAction } = action\n this.messageChannel.postMessage(forwardedAction, transferables)\n return\n }\n\n this.messageChannel.postMessage(action)\n }\n\n dispatchBuffered(): void {\n this.messageChannel.dispatchBuffered()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA8C;AAE9C,qBAAyE;AACzE,6BAA+B;AAC/B,iCAAwC;AAGjC,MAAM,gBAAsC;AAAA,EACzC;AAAA,EAER,YAAY,EAAE,UAAU,GAA0B;AAChD,SAAK,iBAAiB,IAAI,sCAAe,EAAE,UAAU,CAAC;AAAA,EACxD;AAAA,EAEA,mBAAmB,OAA4B;AAC7C,SAAK,QAAQ,EAAE,MAAM,kCAAmB,sBAAsB,SAAS,MAAM,CAAC;AAAA,EAChF;AAAA;AAAA,EAIA,MAAM,EAAE,aAAa,GAAiE;AACpF,UAAM,iBAAiB,KAAK,eAAe,MAAM;AAAA,MAC/C,WAAW,CAAC,UAAwB;AAClC,cAAM,SAAS,MAAM;AAErB,YAAI,KAAC,8BAAa,MAAM,GAAG;AACzB,kBAAQ,KAAK,0BAA0B,MAAM;AAC7C;AAAA,QACF;AAEA,qBAAa,MAAM;AAAA,MACrB;AAAA,IACF,CAAC;AAED,UAAM,gCAA4B;AAAA,MAAwB,WACxD,KAAK,mBAAmB,KAAK;AAAA,IAC/B;AAEA,WAAO,MAAM;AACX,qBAAe;AACf,gCAA0B;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,QAAQ,QAA6B;AACnC,YAAI,iCAAiB,MAAM,GAAG;AAC5B,YAAM,EAAE,eAAe,GAAG,gBAAgB,IAAI;AAC9C,WAAK,eAAe,YAAY,iBAAiB,aAAa;AAC9D;AAAA,IACF;AAEA,SAAK,eAAe,YAAY,MAAM;AAAA,EACxC;AAAA,EAEA,mBAAyB;AACvB,SAAK,eAAe,iBAAiB;AAAA,EACvC;AACF;","names":[]}
|
|
@@ -59,10 +59,13 @@ function builderAPIMiddleware(builderProxy) {
|
|
|
59
59
|
window.getSelection()?.removeAllRanges();
|
|
60
60
|
break;
|
|
61
61
|
case import_host_api.HostActionTypes.INIT:
|
|
62
|
+
cleanUp();
|
|
62
63
|
cleanUp = dispatch((0, import_initialize_connection.initializeBuilderConnection)(builderProxy));
|
|
63
64
|
break;
|
|
64
65
|
case import_host_api.HostActionTypes.CLEAN_UP:
|
|
65
66
|
cleanUp();
|
|
67
|
+
cleanUp = () => {
|
|
68
|
+
};
|
|
66
69
|
break;
|
|
67
70
|
}
|
|
68
71
|
return next(action);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/state/middleware/read-write/builder-api/index.ts"],"sourcesContent":["import { type Middleware } from '@reduxjs/toolkit'\n\nimport { type Action } from '../../../actions'\n\nimport { BuilderActionTypes } from '../../../builder-api/actions'\n\nimport { actionMiddleware } from '../../../toolkit'\n\nimport { type BuilderAPIProxy } from '../../../builder-api/proxy'\nimport { HostActionTypes } from '../../../host-api'\n\nimport { type State, type Dispatch } from '../../../read-write-state'\nimport { initializeBuilderConnection } from './initialize-connection'\n\nexport function builderAPIMiddleware(\n builderProxy: BuilderAPIProxy,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch }) => next => {\n if (typeof window === 'undefined') return (action: Action) => next(action)\n\n let cleanUp = () => {}\n return (action: Action) => {\n switch (action.type) {\n case BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS:\n case BuilderActionTypes.MOUNT_COMPONENT:\n case BuilderActionTypes.UNMOUNT_COMPONENT:\n case BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:\n case BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:\n case BuilderActionTypes.HANDLE_WHEEL:\n case BuilderActionTypes.HANDLE_POINTER_MOVE:\n case BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE:\n case BuilderActionTypes.SET_LOCALE:\n case BuilderActionTypes.SET_BREAKPOINTS:\n case BuilderActionTypes.REGISTER_BUILDER_DOCUMENT:\n case BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT:\n case BuilderActionTypes.REGISTER_BUILDER_COMPONENT:\n case BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT:\n builderProxy.execute(action)\n break\n\n case HostActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:\n window.document.documentElement.scrollTop = action.payload.scrollTop\n break\n\n case HostActionTypes.SCROLL_DOCUMENT_ELEMENT:\n window.document.documentElement.scrollTop += action.payload.scrollTopDelta\n break\n\n case HostActionTypes.SET_BUILDER_EDIT_MODE:\n window.getSelection()?.removeAllRanges()\n break\n\n case HostActionTypes.INIT:\n // dispatched by the parent window after establishing the connection\n cleanUp = dispatch(initializeBuilderConnection(builderProxy))\n break\n\n case HostActionTypes.CLEAN_UP:\n // dispatched by the parent window on disconnect\n cleanUp()\n break\n }\n\n return next(action)\n }\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,IAAAA,kBAAmC;AAEnC,IAAAC,kBAAiC;AAGjC,sBAAgC;AAGhC,mCAA4C;AAErC,SAAS,qBACd,cACuC;AACvC,aAAO,kCAAiB,CAAC,EAAE,SAAS,MAAM,UAAQ;AAChD,QAAI,OAAO,WAAW;AAAa,aAAO,CAAC,WAAmB,KAAK,MAAM;AAEzE,QAAI,UAAU,MAAM;AAAA,IAAC;AACrB,WAAO,CAAC,WAAmB;AACzB,cAAQ,OAAO,MAAM;AAAA,QACnB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AACtB,uBAAa,QAAQ,MAAM;AAC3B;AAAA,QAEF,KAAK,gCAAgB;AACnB,iBAAO,SAAS,gBAAgB,YAAY,OAAO,QAAQ;AAC3D;AAAA,QAEF,KAAK,gCAAgB;AACnB,iBAAO,SAAS,gBAAgB,aAAa,OAAO,QAAQ;AAC5D;AAAA,QAEF,KAAK,gCAAgB;AACnB,iBAAO,aAAa,GAAG,gBAAgB;AACvC;AAAA,QAEF,KAAK,gCAAgB;
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/state/middleware/read-write/builder-api/index.ts"],"sourcesContent":["import { type Middleware } from '@reduxjs/toolkit'\n\nimport { type Action } from '../../../actions'\n\nimport { BuilderActionTypes } from '../../../builder-api/actions'\n\nimport { actionMiddleware } from '../../../toolkit'\n\nimport { type BuilderAPIProxy } from '../../../builder-api/proxy'\nimport { HostActionTypes } from '../../../host-api'\n\nimport { type State, type Dispatch } from '../../../read-write-state'\nimport { initializeBuilderConnection } from './initialize-connection'\n\nexport function builderAPIMiddleware(\n builderProxy: BuilderAPIProxy,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch }) => next => {\n if (typeof window === 'undefined') return (action: Action) => next(action)\n\n let cleanUp = () => {}\n return (action: Action) => {\n switch (action.type) {\n case BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS:\n case BuilderActionTypes.MOUNT_COMPONENT:\n case BuilderActionTypes.UNMOUNT_COMPONENT:\n case BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:\n case BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:\n case BuilderActionTypes.HANDLE_WHEEL:\n case BuilderActionTypes.HANDLE_POINTER_MOVE:\n case BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE:\n case BuilderActionTypes.SET_LOCALE:\n case BuilderActionTypes.SET_BREAKPOINTS:\n case BuilderActionTypes.REGISTER_BUILDER_DOCUMENT:\n case BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT:\n case BuilderActionTypes.REGISTER_BUILDER_COMPONENT:\n case BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT:\n builderProxy.execute(action)\n break\n\n case HostActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:\n window.document.documentElement.scrollTop = action.payload.scrollTop\n break\n\n case HostActionTypes.SCROLL_DOCUMENT_ELEMENT:\n window.document.documentElement.scrollTop += action.payload.scrollTopDelta\n break\n\n case HostActionTypes.SET_BUILDER_EDIT_MODE:\n window.getSelection()?.removeAllRanges()\n break\n\n case HostActionTypes.INIT:\n // dispatched by the parent window after establishing the connection\n // and in response to host's client-side navigation\n cleanUp() // cleanup existing connection setup, if any\n cleanUp = dispatch(initializeBuilderConnection(builderProxy))\n break\n\n case HostActionTypes.CLEAN_UP:\n // dispatched by the parent window on disconnect\n cleanUp()\n cleanUp = () => {}\n break\n }\n\n return next(action)\n }\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,IAAAA,kBAAmC;AAEnC,IAAAC,kBAAiC;AAGjC,sBAAgC;AAGhC,mCAA4C;AAErC,SAAS,qBACd,cACuC;AACvC,aAAO,kCAAiB,CAAC,EAAE,SAAS,MAAM,UAAQ;AAChD,QAAI,OAAO,WAAW;AAAa,aAAO,CAAC,WAAmB,KAAK,MAAM;AAEzE,QAAI,UAAU,MAAM;AAAA,IAAC;AACrB,WAAO,CAAC,WAAmB;AACzB,cAAQ,OAAO,MAAM;AAAA,QACnB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AAAA,QACxB,KAAK,mCAAmB;AACtB,uBAAa,QAAQ,MAAM;AAC3B;AAAA,QAEF,KAAK,gCAAgB;AACnB,iBAAO,SAAS,gBAAgB,YAAY,OAAO,QAAQ;AAC3D;AAAA,QAEF,KAAK,gCAAgB;AACnB,iBAAO,SAAS,gBAAgB,aAAa,OAAO,QAAQ;AAC5D;AAAA,QAEF,KAAK,gCAAgB;AACnB,iBAAO,aAAa,GAAG,gBAAgB;AACvC;AAAA,QAEF,KAAK,gCAAgB;AAGnB,kBAAQ;AACR,oBAAU,aAAS,0DAA4B,YAAY,CAAC;AAC5D;AAAA,QAEF,KAAK,gCAAgB;AAEnB,kBAAQ;AACR,oBAAU,MAAM;AAAA,UAAC;AACjB;AAAA,MACJ;AAEA,aAAO,KAAK,MAAM;AAAA,IACpB;AAAA,EACF,CAAC;AACH;","names":["import_actions","import_toolkit"]}
|
|
@@ -8,7 +8,7 @@ async function manifestHandler(req, { apiKey, manifest }) {
|
|
|
8
8
|
return ApiResponse.json({ message: "Unauthorized" }, { status: 401 });
|
|
9
9
|
}
|
|
10
10
|
return ApiResponse.json({
|
|
11
|
-
version: "0.
|
|
11
|
+
version: "0.28.0-canary.0",
|
|
12
12
|
interactionMode: true,
|
|
13
13
|
clientSideNavigation: false,
|
|
14
14
|
elementFromPoint: false,
|
package/dist/esm/client/index.js
CHANGED
|
@@ -194,7 +194,7 @@ Received "${apiKey}" instead.`
|
|
|
194
194
|
}
|
|
195
195
|
this.apiKey = apiKey;
|
|
196
196
|
this.graphqlClient = new GraphQLClient(new URL("graphql", runtime.apiOrigin).href, {
|
|
197
|
-
"makeswift-runtime-version": "0.
|
|
197
|
+
"makeswift-runtime-version": "0.28.0-canary.0"
|
|
198
198
|
});
|
|
199
199
|
this.runtime = runtime;
|
|
200
200
|
}
|
|
@@ -206,7 +206,7 @@ Received "${apiKey}" instead.`
|
|
|
206
206
|
const requestHeaders = new Headers({
|
|
207
207
|
"x-api-key": this.apiKey,
|
|
208
208
|
"makeswift-site-api-key": this.apiKey,
|
|
209
|
-
"makeswift-runtime-version": "0.
|
|
209
|
+
"makeswift-runtime-version": "0.28.0-canary.0"
|
|
210
210
|
});
|
|
211
211
|
if (siteVersion?.token) {
|
|
212
212
|
requestUrl.searchParams.set("version", siteVersion.version);
|
|
@@ -664,7 +664,7 @@ Received "${apiKey}" instead.`
|
|
|
664
664
|
headers: {
|
|
665
665
|
"x-api-key": this.apiKey,
|
|
666
666
|
"makeswift-site-api-key": this.apiKey,
|
|
667
|
-
"makeswift-runtime-version": "0.
|
|
667
|
+
"makeswift-runtime-version": "0.28.0-canary.0",
|
|
668
668
|
"content-type": "application/json"
|
|
669
669
|
},
|
|
670
670
|
body: JSON.stringify({ token }),
|
package/dist/esm/global.d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/global.d.ts"],"sourcesContent":["import '@emotion/jest'\n\ndeclare global {\n const PACKAGE_VERSION: string\n}\n\nexport {}\n"],"mappings":"AAAA,OAAO;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/global.d.ts"],"sourcesContent":["import '@emotion/jest'\n\ndeclare global {\n const PACKAGE_VERSION: string\n\n // partial typings for the new Navigation API, see\n // https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API\n interface NavigateEvent extends Event {\n readonly navigationType: 'push' | 'reload' | 'replace' | 'traverse'\n readonly destination: {\n readonly id: string\n readonly index: number\n readonly key: string\n readonly sameDocument: boolean\n readonly url: string\n }\n\n readonly hashChange: boolean\n readonly userInitiated: boolean\n }\n\n interface Navigation {\n addEventListener(type: 'navigate', listener: (event: NavigateEvent) => void): void\n removeEventListener(type: 'navigate', listener: (event: NavigateEvent) => void): void\n }\n\n interface Window {\n navigation?: Navigation\n }\n}\n\nexport {}\n"],"mappings":"AAAA,OAAO;","names":[]}
|
|
@@ -17,8 +17,8 @@ const BuilderActionTypes = {
|
|
|
17
17
|
UNREGISTER_BUILDER_COMPONENT: "UNREGISTER_BUILDER_COMPONENT",
|
|
18
18
|
HANDLE_HOST_NAVIGATE: "HANDLE_HOST_NAVIGATE"
|
|
19
19
|
};
|
|
20
|
-
function makeswiftConnectionCheck(
|
|
21
|
-
return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK
|
|
20
|
+
function makeswiftConnectionCheck() {
|
|
21
|
+
return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK };
|
|
22
22
|
}
|
|
23
23
|
function mountComponent(documentKey, elementKey) {
|
|
24
24
|
return { type: BuilderActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/state/builder-api/actions.ts"],"sourcesContent":["import { type ThunkAction } from '@reduxjs/toolkit'\n\nimport { type SerializedControl } from '../../builder'\nimport { type PropControllerMessage } from '../../prop-controllers/instances'\n\nimport { type Document } from '../modules/read-only-documents'\nimport { type ComponentMeta } from '../modules/components-meta'\nimport { type BoxModel } from '../modules/read-write/box-models'\n\nimport { type ElementSize } from '../middleware/read-write/builder-api/element-size'\nimport { type DocumentPayload, type SharedAction, SharedActionTypes } from '../shared-api'\n\nexport * from '../shared-api'\n\n// actions dispatched by the host to the builder (\"Builder API\")\n// note that some of these actions, in addition to being dispatched to the builder,\n// might also be internally intercepted by the host as a part of maintaining the\n// runtime's \"read-write\" state\nexport const BuilderActionTypes = {\n ...SharedActionTypes,\n\n MAKESWIFT_CONNECTION_CHECK: 'MAKESWIFT_CONNECTION_CHECK',\n\n MOUNT_COMPONENT: 'MOUNT_COMPONENT',\n UNMOUNT_COMPONENT: 'UNMOUNT_COMPONENT',\n\n CHANGE_DOCUMENT_ELEMENT_SIZE: 'CHANGE_DOCUMENT_ELEMENT_SIZE',\n CHANGE_ELEMENT_BOX_MODELS: 'CHANGE_ELEMENT_BOX_MODELS',\n\n MESSAGE_BUILDER_PROP_CONTROLLER: 'MESSAGE_BUILDER_PROP_CONTROLLER',\n\n HANDLE_WHEEL: 'HANDLE_WHEEL',\n HANDLE_POINTER_MOVE: 'HANDLE_POINTER_MOVE',\n\n ELEMENT_FROM_POINT_CHANGE: 'ELEMENT_FROM_POINT_CHANGE',\n\n REGISTER_BUILDER_DOCUMENT: 'REGISTER_BUILDER_DOCUMENT',\n UNREGISTER_BUILDER_DOCUMENT: 'UNREGISTER_BUILDER_DOCUMENT',\n\n REGISTER_BUILDER_COMPONENT: 'REGISTER_BUILDER_COMPONENT',\n UNREGISTER_BUILDER_COMPONENT: 'UNREGISTER_BUILDER_COMPONENT',\n\n HANDLE_HOST_NAVIGATE: 'HANDLE_HOST_NAVIGATE',\n} as const\n\ntype ActionWithTransferables<A> = A & {\n transferables?: Transferable[]\n}\n\ntype MakeswiftConnectionCheckAction = {\n type: typeof BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK\n payload: { currentUrl: string }\n}\n\ntype MountComponentAction = {\n type: typeof BuilderActionTypes.MOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype UnmountComponentAction = {\n type: typeof BuilderActionTypes.UNMOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype ChangeDocumentElementSizeAction = {\n type: typeof BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE\n payload: { size: ElementSize }\n}\n\ntype ChangeElementBoxModelsAction = {\n type: typeof BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS\n payload: { changedElementBoxModels: Map<string, Map<string, BoxModel | null>> }\n}\n\ntype MessageBuilderPropControllerAction<T = PropControllerMessage> = {\n type: typeof BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype HandleWheelAction = {\n type: typeof BuilderActionTypes.HANDLE_WHEEL\n payload: { deltaX: number; deltaY: number }\n}\n\ntype HandlePointerMoveAction = {\n type: typeof BuilderActionTypes.HANDLE_POINTER_MOVE\n payload: { clientX: number; clientY: number }\n}\n\ntype ElementFromPointChangeAction = {\n type: typeof BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE\n payload: { keys: { documentKey: string; elementKey: string } | null }\n}\n\ntype RegisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string; document: DocumentPayload }\n}\n\ntype UnregisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype RegisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n serializedControls: Record<string, SerializedControl>\n }\n}\n\ntype UnregisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT\n payload: { type: string }\n}\n\ntype HandleHostNavigateAction = {\n type: typeof BuilderActionTypes.HANDLE_HOST_NAVIGATE\n payload: { url: string | null }\n}\n\nexport type BuilderAction =\n | SharedAction\n | MakeswiftConnectionCheckAction\n | MountComponentAction\n | UnmountComponentAction\n | ChangeDocumentElementSizeAction\n | ChangeElementBoxModelsAction\n | MessageBuilderPropControllerAction\n | HandleWheelAction\n | HandlePointerMoveAction\n | ElementFromPointChangeAction\n | RegisterBuilderDocumentAction\n | UnregisterBuilderDocumentAction\n | RegisterBuilderComponentAction\n | UnregisterBuilderComponentAction\n | HandleHostNavigateAction\n\nexport function makeswiftConnectionCheck(\n payload: MakeswiftConnectionCheckAction['payload'],\n): MakeswiftConnectionCheckAction {\n return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK, payload }\n}\n\nexport function mountComponent(documentKey: string, elementKey: string): MountComponentAction {\n return { type: BuilderActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function unmountComponent(documentKey: string, elementKey: string): UnmountComponentAction {\n return { type: BuilderActionTypes.UNMOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function mountComponentEffect(\n documentKey: string,\n elementKey: string,\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n dispatch(mountComponent(documentKey, elementKey))\n\n return () => {\n dispatch(unmountComponent(documentKey, elementKey))\n }\n }\n}\n\nexport function changeDocumentElementSize(size: ElementSize): ChangeDocumentElementSizeAction {\n return { type: BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE, payload: { size } }\n}\n\nexport function changeElementBoxModels(\n changedElementBoxModels: Map<string, Map<string, BoxModel | null>>,\n): ChangeElementBoxModelsAction {\n return {\n type: BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS,\n payload: { changedElementBoxModels },\n }\n}\n\nexport function messageBuilderPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageBuilderPropControllerAction<T> {\n return {\n type: BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function handleWheel(payload: { deltaX: number; deltaY: number }): HandleWheelAction {\n return { type: BuilderActionTypes.HANDLE_WHEEL, payload }\n}\n\nexport function handlePointerMove(payload: {\n clientX: number\n clientY: number\n}): HandlePointerMoveAction {\n return { type: BuilderActionTypes.HANDLE_POINTER_MOVE, payload }\n}\n\nexport function elementFromPointChange(\n keys: {\n documentKey: string\n elementKey: string\n } | null,\n): ElementFromPointChangeAction {\n return { type: BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE, payload: { keys } }\n}\n\nexport function registerBuilderDocument(document: Document): RegisterBuilderDocumentAction {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_DOCUMENT,\n payload: { documentKey: document.key, document },\n }\n}\n\nexport function unregisterBuilderDocument(documentKey: string): UnregisterBuilderDocumentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function registerBuilderDocumentsEffect(\n documents: Document[],\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n documents.forEach(document => dispatch(registerBuilderDocument(document)))\n\n return () => {\n documents.forEach(document => dispatch(unregisterBuilderDocument(document.key)))\n }\n }\n}\n\nexport function registerBuilderComponent(\n payload: RegisterBuilderComponentAction['payload'],\n transferables?: Transferable[],\n): ActionWithTransferables<RegisterBuilderComponentAction> {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_COMPONENT,\n payload,\n transferables,\n }\n}\n\nexport function unregisterBuilderComponent(\n payload: UnregisterBuilderComponentAction['payload'],\n): UnregisterBuilderComponentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT, payload }\n}\n\nexport function hasTransferables<A extends BuilderAction>(\n action: A,\n): action is ActionWithTransferables<A> {\n return 'transferables' in action && Array.isArray(action.transferables)\n}\n"],"mappings":"AAUA,SAAkD,yBAAyB;AAE3E,cAAc;AAMP,MAAM,qBAAqB;AAAA,EAChC,GAAG;AAAA,EAEH,4BAA4B;AAAA,EAE5B,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAE3B,iCAAiC;AAAA,EAEjC,cAAc;AAAA,EACd,qBAAqB;AAAA,EAErB,2BAA2B;AAAA,EAE3B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAE7B,4BAA4B;AAAA,EAC5B,8BAA8B;AAAA,EAE9B,sBAAsB;AACxB;AAiGO,SAAS,yBACd,SACgC;AAChC,SAAO,EAAE,MAAM,mBAAmB,4BAA4B,QAAQ;AACxE;AAEO,SAAS,eAAe,aAAqB,YAA0C;AAC5F,SAAO,EAAE,MAAM,mBAAmB,iBAAiB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC1F;AAEO,SAAS,iBAAiB,aAAqB,YAA4C;AAChG,SAAO,EAAE,MAAM,mBAAmB,mBAAmB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC5F;AAEO,SAAS,qBACd,aACA,YAC0D;AAC1D,SAAO,cAAY;AACjB,aAAS,eAAe,aAAa,UAAU,CAAC;AAEhD,WAAO,MAAM;AACX,eAAS,iBAAiB,aAAa,UAAU,CAAC;AAAA,IACpD;AAAA,EACF;AACF;AAEO,SAAS,0BAA0B,MAAoD;AAC5F,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,SAAS,EAAE,KAAK,EAAE;AACpF;AAEO,SAAS,uBACd,yBAC8B;AAC9B,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,wBAAwB;AAAA,EACrC;AACF;AAEO,SAAS,6BACd,aACA,YACA,UACA,SACuC;AACvC,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,YAAY,UAAU,QAAQ;AAAA,EACxD;AACF;AAEO,SAAS,YAAY,SAAgE;AAC1F,SAAO,EAAE,MAAM,mBAAmB,cAAc,QAAQ;AAC1D;AAEO,SAAS,kBAAkB,SAGN;AAC1B,SAAO,EAAE,MAAM,mBAAmB,qBAAqB,QAAQ;AACjE;AAEO,SAAS,uBACd,MAI8B;AAC9B,SAAO,EAAE,MAAM,mBAAmB,2BAA2B,SAAS,EAAE,KAAK,EAAE;AACjF;AAEO,SAAS,wBAAwB,UAAmD;AACzF,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,SAAS,KAAK,SAAS;AAAA,EACjD;AACF;AAEO,SAAS,0BAA0B,aAAsD;AAC9F,SAAO,EAAE,MAAM,mBAAmB,6BAA6B,SAAS,EAAE,YAAY,EAAE;AAC1F;AAEO,SAAS,+BACd,WAC0D;AAC1D,SAAO,cAAY;AACjB,cAAU,QAAQ,cAAY,SAAS,wBAAwB,QAAQ,CAAC,CAAC;AAEzE,WAAO,MAAM;AACX,gBAAU,QAAQ,cAAY,SAAS,0BAA0B,SAAS,GAAG,CAAC,CAAC;AAAA,IACjF;AAAA,EACF;AACF;AAEO,SAAS,yBACd,SACA,eACyD;AACzD,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,2BACd,SACkC;AAClC,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,QAAQ;AAC1E;AAEO,SAAS,iBACd,QACsC;AACtC,SAAO,mBAAmB,UAAU,MAAM,QAAQ,OAAO,aAAa;AACxE;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/builder-api/actions.ts"],"sourcesContent":["import { type ThunkAction } from '@reduxjs/toolkit'\n\nimport { type SerializedControl } from '../../builder'\nimport { type PropControllerMessage } from '../../prop-controllers/instances'\n\nimport { type Document } from '../modules/read-only-documents'\nimport { type ComponentMeta } from '../modules/components-meta'\nimport { type BoxModel } from '../modules/read-write/box-models'\n\nimport { type ElementSize } from '../middleware/read-write/builder-api/element-size'\nimport { type DocumentPayload, type SharedAction, SharedActionTypes } from '../shared-api'\n\nimport { type HostNavigationEvent } from './api'\n\nexport * from '../shared-api'\n\n// actions dispatched by the host to the builder (\"Builder API\")\n// note that some of these actions, in addition to being dispatched to the builder,\n// might also be internally intercepted by the host as a part of maintaining the\n// runtime's \"read-write\" state\nexport const BuilderActionTypes = {\n ...SharedActionTypes,\n\n MAKESWIFT_CONNECTION_CHECK: 'MAKESWIFT_CONNECTION_CHECK',\n\n MOUNT_COMPONENT: 'MOUNT_COMPONENT',\n UNMOUNT_COMPONENT: 'UNMOUNT_COMPONENT',\n\n CHANGE_DOCUMENT_ELEMENT_SIZE: 'CHANGE_DOCUMENT_ELEMENT_SIZE',\n CHANGE_ELEMENT_BOX_MODELS: 'CHANGE_ELEMENT_BOX_MODELS',\n\n MESSAGE_BUILDER_PROP_CONTROLLER: 'MESSAGE_BUILDER_PROP_CONTROLLER',\n\n HANDLE_WHEEL: 'HANDLE_WHEEL',\n HANDLE_POINTER_MOVE: 'HANDLE_POINTER_MOVE',\n\n ELEMENT_FROM_POINT_CHANGE: 'ELEMENT_FROM_POINT_CHANGE',\n\n REGISTER_BUILDER_DOCUMENT: 'REGISTER_BUILDER_DOCUMENT',\n UNREGISTER_BUILDER_DOCUMENT: 'UNREGISTER_BUILDER_DOCUMENT',\n\n REGISTER_BUILDER_COMPONENT: 'REGISTER_BUILDER_COMPONENT',\n UNREGISTER_BUILDER_COMPONENT: 'UNREGISTER_BUILDER_COMPONENT',\n\n HANDLE_HOST_NAVIGATE: 'HANDLE_HOST_NAVIGATE',\n} as const\n\ntype ActionWithTransferables<A> = A & {\n transferables?: Transferable[]\n}\n\ntype MakeswiftConnectionCheckAction = {\n type: typeof BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK\n}\n\ntype MountComponentAction = {\n type: typeof BuilderActionTypes.MOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype UnmountComponentAction = {\n type: typeof BuilderActionTypes.UNMOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype ChangeDocumentElementSizeAction = {\n type: typeof BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE\n payload: { size: ElementSize }\n}\n\ntype ChangeElementBoxModelsAction = {\n type: typeof BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS\n payload: { changedElementBoxModels: Map<string, Map<string, BoxModel | null>> }\n}\n\ntype MessageBuilderPropControllerAction<T = PropControllerMessage> = {\n type: typeof BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype HandleWheelAction = {\n type: typeof BuilderActionTypes.HANDLE_WHEEL\n payload: { deltaX: number; deltaY: number }\n}\n\ntype HandlePointerMoveAction = {\n type: typeof BuilderActionTypes.HANDLE_POINTER_MOVE\n payload: { clientX: number; clientY: number }\n}\n\ntype ElementFromPointChangeAction = {\n type: typeof BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE\n payload: { keys: { documentKey: string; elementKey: string } | null }\n}\n\ntype RegisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string; document: DocumentPayload }\n}\n\ntype UnregisterBuilderDocumentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype RegisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.REGISTER_BUILDER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n serializedControls: Record<string, SerializedControl>\n }\n}\n\ntype UnregisterBuilderComponentAction = {\n type: typeof BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT\n payload: { type: string }\n}\n\ntype HandleHostNavigateAction = {\n type: typeof BuilderActionTypes.HANDLE_HOST_NAVIGATE\n payload: HostNavigationEvent\n}\n\nexport type BuilderAction =\n | SharedAction\n | MakeswiftConnectionCheckAction\n | MountComponentAction\n | UnmountComponentAction\n | ChangeDocumentElementSizeAction\n | ChangeElementBoxModelsAction\n | MessageBuilderPropControllerAction\n | HandleWheelAction\n | HandlePointerMoveAction\n | ElementFromPointChangeAction\n | RegisterBuilderDocumentAction\n | UnregisterBuilderDocumentAction\n | RegisterBuilderComponentAction\n | UnregisterBuilderComponentAction\n | HandleHostNavigateAction\n\nexport function makeswiftConnectionCheck(): MakeswiftConnectionCheckAction {\n return { type: BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK }\n}\n\nexport function mountComponent(documentKey: string, elementKey: string): MountComponentAction {\n return { type: BuilderActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function unmountComponent(documentKey: string, elementKey: string): UnmountComponentAction {\n return { type: BuilderActionTypes.UNMOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function mountComponentEffect(\n documentKey: string,\n elementKey: string,\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n dispatch(mountComponent(documentKey, elementKey))\n\n return () => {\n dispatch(unmountComponent(documentKey, elementKey))\n }\n }\n}\n\nexport function changeDocumentElementSize(size: ElementSize): ChangeDocumentElementSizeAction {\n return { type: BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE, payload: { size } }\n}\n\nexport function changeElementBoxModels(\n changedElementBoxModels: Map<string, Map<string, BoxModel | null>>,\n): ChangeElementBoxModelsAction {\n return {\n type: BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS,\n payload: { changedElementBoxModels },\n }\n}\n\nexport function messageBuilderPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageBuilderPropControllerAction<T> {\n return {\n type: BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function handleWheel(payload: { deltaX: number; deltaY: number }): HandleWheelAction {\n return { type: BuilderActionTypes.HANDLE_WHEEL, payload }\n}\n\nexport function handlePointerMove(payload: {\n clientX: number\n clientY: number\n}): HandlePointerMoveAction {\n return { type: BuilderActionTypes.HANDLE_POINTER_MOVE, payload }\n}\n\nexport function elementFromPointChange(\n keys: {\n documentKey: string\n elementKey: string\n } | null,\n): ElementFromPointChangeAction {\n return { type: BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE, payload: { keys } }\n}\n\nexport function registerBuilderDocument(document: Document): RegisterBuilderDocumentAction {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_DOCUMENT,\n payload: { documentKey: document.key, document },\n }\n}\n\nexport function unregisterBuilderDocument(documentKey: string): UnregisterBuilderDocumentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function registerBuilderDocumentsEffect(\n documents: Document[],\n): ThunkAction<() => void, unknown, unknown, BuilderAction> {\n return dispatch => {\n documents.forEach(document => dispatch(registerBuilderDocument(document)))\n\n return () => {\n documents.forEach(document => dispatch(unregisterBuilderDocument(document.key)))\n }\n }\n}\n\nexport function registerBuilderComponent(\n payload: RegisterBuilderComponentAction['payload'],\n transferables?: Transferable[],\n): ActionWithTransferables<RegisterBuilderComponentAction> {\n return {\n type: BuilderActionTypes.REGISTER_BUILDER_COMPONENT,\n payload,\n transferables,\n }\n}\n\nexport function unregisterBuilderComponent(\n payload: UnregisterBuilderComponentAction['payload'],\n): UnregisterBuilderComponentAction {\n return { type: BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT, payload }\n}\n\nexport function hasTransferables<A extends BuilderAction>(\n action: A,\n): action is ActionWithTransferables<A> {\n return 'transferables' in action && Array.isArray(action.transferables)\n}\n"],"mappings":"AAUA,SAAkD,yBAAyB;AAI3E,cAAc;AAMP,MAAM,qBAAqB;AAAA,EAChC,GAAG;AAAA,EAEH,4BAA4B;AAAA,EAE5B,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAE3B,iCAAiC;AAAA,EAEjC,cAAc;AAAA,EACd,qBAAqB;AAAA,EAErB,2BAA2B;AAAA,EAE3B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAE7B,4BAA4B;AAAA,EAC5B,8BAA8B;AAAA,EAE9B,sBAAsB;AACxB;AAgGO,SAAS,2BAA2D;AACzE,SAAO,EAAE,MAAM,mBAAmB,2BAA2B;AAC/D;AAEO,SAAS,eAAe,aAAqB,YAA0C;AAC5F,SAAO,EAAE,MAAM,mBAAmB,iBAAiB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC1F;AAEO,SAAS,iBAAiB,aAAqB,YAA4C;AAChG,SAAO,EAAE,MAAM,mBAAmB,mBAAmB,SAAS,EAAE,aAAa,WAAW,EAAE;AAC5F;AAEO,SAAS,qBACd,aACA,YAC0D;AAC1D,SAAO,cAAY;AACjB,aAAS,eAAe,aAAa,UAAU,CAAC;AAEhD,WAAO,MAAM;AACX,eAAS,iBAAiB,aAAa,UAAU,CAAC;AAAA,IACpD;AAAA,EACF;AACF;AAEO,SAAS,0BAA0B,MAAoD;AAC5F,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,SAAS,EAAE,KAAK,EAAE;AACpF;AAEO,SAAS,uBACd,yBAC8B;AAC9B,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,wBAAwB;AAAA,EACrC;AACF;AAEO,SAAS,6BACd,aACA,YACA,UACA,SACuC;AACvC,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,YAAY,UAAU,QAAQ;AAAA,EACxD;AACF;AAEO,SAAS,YAAY,SAAgE;AAC1F,SAAO,EAAE,MAAM,mBAAmB,cAAc,QAAQ;AAC1D;AAEO,SAAS,kBAAkB,SAGN;AAC1B,SAAO,EAAE,MAAM,mBAAmB,qBAAqB,QAAQ;AACjE;AAEO,SAAS,uBACd,MAI8B;AAC9B,SAAO,EAAE,MAAM,mBAAmB,2BAA2B,SAAS,EAAE,KAAK,EAAE;AACjF;AAEO,SAAS,wBAAwB,UAAmD;AACzF,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS,EAAE,aAAa,SAAS,KAAK,SAAS;AAAA,EACjD;AACF;AAEO,SAAS,0BAA0B,aAAsD;AAC9F,SAAO,EAAE,MAAM,mBAAmB,6BAA6B,SAAS,EAAE,YAAY,EAAE;AAC1F;AAEO,SAAS,+BACd,WAC0D;AAC1D,SAAO,cAAY;AACjB,cAAU,QAAQ,cAAY,SAAS,wBAAwB,QAAQ,CAAC,CAAC;AAEzE,WAAO,MAAM;AACX,gBAAU,QAAQ,cAAY,SAAS,0BAA0B,SAAS,GAAG,CAAC,CAAC;AAAA,IACjF;AAAA,EACF;AACF;AAEO,SAAS,yBACd,SACA,eACyD;AACzD,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,2BACd,SACkC;AAClC,SAAO,EAAE,MAAM,mBAAmB,8BAA8B,QAAQ;AAC1E;AAEO,SAAS,iBACd,QACsC;AACtC,SAAO,mBAAmB,UAAU,MAAM,QAAQ,OAAO,aAAa;AACxE;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -55,11 +55,10 @@ function setupConnectionCheck(appOrigin) {
|
|
|
55
55
|
const connectionCheckInterval = new Interval();
|
|
56
56
|
function connectionCheckHandler(event) {
|
|
57
57
|
if (event.origin === appOrigin && event.data.type === SharedActionTypes.MAKESWIFT_CONNECTION_INIT) {
|
|
58
|
-
connectionCheckInterval.setInterval(
|
|
59
|
-
window.parent.postMessage(makeswiftConnectionCheck({
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}, CONNECTION_PING_INTERVAL_MS);
|
|
58
|
+
connectionCheckInterval.setInterval(
|
|
59
|
+
() => window.parent.postMessage(makeswiftConnectionCheck(), { targetOrigin: appOrigin }),
|
|
60
|
+
CONNECTION_PING_INTERVAL_MS
|
|
61
|
+
);
|
|
63
62
|
}
|
|
64
63
|
}
|
|
65
64
|
window.addEventListener("message", connectionCheckHandler);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/state/builder-api/message-channel.ts"],"sourcesContent":["import { SharedActionTypes, makeswiftConnectionInit } from '../shared-api'\nimport { makeswiftConnectionCheck } from './actions'\n\nconst CONNECTION_PING_INTERVAL_MS = 20\n\nexport class MessageChannel {\n private readonly appOrigin: string\n private channel: MessagePort | null = null\n private bufferedMessages: [any, Transferable[]?][] = []\n\n constructor({ appOrigin }: { appOrigin: string }) {\n this.appOrigin = appOrigin\n }\n\n public postMessage(message: any, transferables?: Transferable[]) {\n if (this.channel) {\n this.channel.postMessage(message, transferables ?? [])\n } else {\n this.bufferedMessages.push([message, transferables])\n }\n }\n\n public setup({ onMessage }: { onMessage: (event: MessageEvent) => void }): VoidFunction {\n const cleanupConnectionCheck = setupConnectionCheck(this.appOrigin)\n\n const channel = new window.MessageChannel()\n channel.port1.onmessage = onMessage\n\n // connect channel to the parent window, see\n // https://developer.mozilla.org/en-US/docs/Web/API/Channel_Messaging_API\n window.parent.postMessage(channel.port2, this.appOrigin, [channel.port2])\n\n this.channel = channel.port1\n\n return () => {\n cleanupConnectionCheck()\n\n if (this.channel) {\n this.channel.onmessage = null\n this.channel.close()\n this.channel = null\n }\n }\n }\n\n public dispatchBuffered() {\n console.assert(this.channel != null, 'channel is not setup')\n\n this.bufferedMessages.forEach(([message, transferables]) => {\n this.channel?.postMessage(message, transferables ?? [])\n })\n\n this.bufferedMessages = []\n }\n}\n\n// FIXME: instead of `window.parent.postMessage`, the connection check should\n// probably use the message channel itself: after all, it's meant to check\n// the health of the builder <> host connection, and whether we can reach the\n// builder through `window.parent.postMessage` is not indicative of the health\n// of the message channel itself, which is what the builder <> host\n// communication relies on.\nfunction setupConnectionCheck(appOrigin: string): VoidFunction {\n class Interval {\n private id: number | null = null\n\n setInterval(callback: () => void, delay: number) {\n this.clear()\n this.id = window.setInterval(callback, delay)\n }\n\n clear() {\n if (this.id != null) {\n window.clearInterval(this.id)\n this.id = null\n }\n }\n }\n\n const connectionCheckInterval = new Interval()\n\n function connectionCheckHandler(event: MessageEvent) {\n if (\n event.origin === appOrigin &&\n event.data.type === SharedActionTypes.MAKESWIFT_CONNECTION_INIT\n ) {\n connectionCheckInterval.setInterval(() =>
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/builder-api/message-channel.ts"],"sourcesContent":["import { SharedActionTypes, makeswiftConnectionInit } from '../shared-api'\nimport { makeswiftConnectionCheck } from './actions'\n\nconst CONNECTION_PING_INTERVAL_MS = 20\n\nexport class MessageChannel {\n private readonly appOrigin: string\n private channel: MessagePort | null = null\n private bufferedMessages: [any, Transferable[]?][] = []\n\n constructor({ appOrigin }: { appOrigin: string }) {\n this.appOrigin = appOrigin\n }\n\n public postMessage(message: any, transferables?: Transferable[]) {\n if (this.channel) {\n this.channel.postMessage(message, transferables ?? [])\n } else {\n this.bufferedMessages.push([message, transferables])\n }\n }\n\n public setup({ onMessage }: { onMessage: (event: MessageEvent) => void }): VoidFunction {\n const cleanupConnectionCheck = setupConnectionCheck(this.appOrigin)\n\n const channel = new window.MessageChannel()\n channel.port1.onmessage = onMessage\n\n // connect channel to the parent window, see\n // https://developer.mozilla.org/en-US/docs/Web/API/Channel_Messaging_API\n window.parent.postMessage(channel.port2, this.appOrigin, [channel.port2])\n\n this.channel = channel.port1\n\n return () => {\n cleanupConnectionCheck()\n\n if (this.channel) {\n this.channel.onmessage = null\n this.channel.close()\n this.channel = null\n }\n }\n }\n\n public dispatchBuffered() {\n console.assert(this.channel != null, 'channel is not setup')\n\n this.bufferedMessages.forEach(([message, transferables]) => {\n this.channel?.postMessage(message, transferables ?? [])\n })\n\n this.bufferedMessages = []\n }\n}\n\n// FIXME: instead of `window.parent.postMessage`, the connection check should\n// probably use the message channel itself: after all, it's meant to check\n// the health of the builder <> host connection, and whether we can reach the\n// builder through `window.parent.postMessage` is not indicative of the health\n// of the message channel itself, which is what the builder <> host\n// communication relies on.\nfunction setupConnectionCheck(appOrigin: string): VoidFunction {\n class Interval {\n private id: number | null = null\n\n setInterval(callback: () => void, delay: number) {\n this.clear()\n this.id = window.setInterval(callback, delay)\n }\n\n clear() {\n if (this.id != null) {\n window.clearInterval(this.id)\n this.id = null\n }\n }\n }\n\n const connectionCheckInterval = new Interval()\n\n function connectionCheckHandler(event: MessageEvent) {\n if (\n event.origin === appOrigin &&\n event.data.type === SharedActionTypes.MAKESWIFT_CONNECTION_INIT\n ) {\n connectionCheckInterval.setInterval(\n () => window.parent.postMessage(makeswiftConnectionCheck(), { targetOrigin: appOrigin }),\n CONNECTION_PING_INTERVAL_MS,\n )\n }\n }\n\n window.addEventListener('message', connectionCheckHandler)\n window.parent.postMessage(makeswiftConnectionInit(), { targetOrigin: appOrigin })\n\n return () => {\n window.removeEventListener('message', connectionCheckHandler)\n connectionCheckInterval.clear()\n }\n}\n"],"mappings":"AAAA,SAAS,mBAAmB,+BAA+B;AAC3D,SAAS,gCAAgC;AAEzC,MAAM,8BAA8B;AAE7B,MAAM,eAAe;AAAA,EACT;AAAA,EACT,UAA8B;AAAA,EAC9B,mBAA6C,CAAC;AAAA,EAEtD,YAAY,EAAE,UAAU,GAA0B;AAChD,SAAK,YAAY;AAAA,EACnB;AAAA,EAEO,YAAY,SAAc,eAAgC;AAC/D,QAAI,KAAK,SAAS;AAChB,WAAK,QAAQ,YAAY,SAAS,iBAAiB,CAAC,CAAC;AAAA,IACvD,OAAO;AACL,WAAK,iBAAiB,KAAK,CAAC,SAAS,aAAa,CAAC;AAAA,IACrD;AAAA,EACF;AAAA,EAEO,MAAM,EAAE,UAAU,GAA+D;AACtF,UAAM,yBAAyB,qBAAqB,KAAK,SAAS;AAElE,UAAM,UAAU,IAAI,OAAO,eAAe;AAC1C,YAAQ,MAAM,YAAY;AAI1B,WAAO,OAAO,YAAY,QAAQ,OAAO,KAAK,WAAW,CAAC,QAAQ,KAAK,CAAC;AAExE,SAAK,UAAU,QAAQ;AAEvB,WAAO,MAAM;AACX,6BAAuB;AAEvB,UAAI,KAAK,SAAS;AAChB,aAAK,QAAQ,YAAY;AACzB,aAAK,QAAQ,MAAM;AACnB,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EAEO,mBAAmB;AACxB,YAAQ,OAAO,KAAK,WAAW,MAAM,sBAAsB;AAE3D,SAAK,iBAAiB,QAAQ,CAAC,CAAC,SAAS,aAAa,MAAM;AAC1D,WAAK,SAAS,YAAY,SAAS,iBAAiB,CAAC,CAAC;AAAA,IACxD,CAAC;AAED,SAAK,mBAAmB,CAAC;AAAA,EAC3B;AACF;AAQA,SAAS,qBAAqB,WAAiC;AAAA,EAC7D,MAAM,SAAS;AAAA,IACL,KAAoB;AAAA,IAE5B,YAAY,UAAsB,OAAe;AAC/C,WAAK,MAAM;AACX,WAAK,KAAK,OAAO,YAAY,UAAU,KAAK;AAAA,IAC9C;AAAA,IAEA,QAAQ;AACN,UAAI,KAAK,MAAM,MAAM;AACnB,eAAO,cAAc,KAAK,EAAE;AAC5B,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,QAAM,0BAA0B,IAAI,SAAS;AAE7C,WAAS,uBAAuB,OAAqB;AACnD,QACE,MAAM,WAAW,aACjB,MAAM,KAAK,SAAS,kBAAkB,2BACtC;AACA,8BAAwB;AAAA,QACtB,MAAM,OAAO,OAAO,YAAY,yBAAyB,GAAG,EAAE,cAAc,UAAU,CAAC;AAAA,QACvF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,iBAAiB,WAAW,sBAAsB;AACzD,SAAO,OAAO,YAAY,wBAAwB,GAAG,EAAE,cAAc,UAAU,CAAC;AAEhF,SAAO,MAAM;AACX,WAAO,oBAAoB,WAAW,sBAAsB;AAC5D,4BAAwB,MAAM;AAAA,EAChC;AACF;","names":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const CLICK_NAVIGATION_THRESHOLD_MS = 100;
|
|
2
|
+
const LOCATION_CHECK_DELAY_MS = 700;
|
|
3
|
+
function setupNavigationListener(callback) {
|
|
4
|
+
let previousLocation = null;
|
|
5
|
+
const handleNavigate = (event) => {
|
|
6
|
+
if (event.url === previousLocation)
|
|
7
|
+
return;
|
|
8
|
+
callback(event);
|
|
9
|
+
previousLocation = event.url;
|
|
10
|
+
};
|
|
11
|
+
handleNavigate({ url: windowLocation(), initialPageLoad: true });
|
|
12
|
+
if (typeof window === "undefined") {
|
|
13
|
+
return () => {
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const unsubscribes = [];
|
|
17
|
+
if ("navigation" in window && window.navigation) {
|
|
18
|
+
const navigation = window.navigation;
|
|
19
|
+
const handler = ({ destination }) => handleNavigate({ url: destination.url, initialPageLoad: false });
|
|
20
|
+
navigation.addEventListener("navigate", handler);
|
|
21
|
+
unsubscribes.push(() => navigation.removeEventListener("navigate", handler));
|
|
22
|
+
return () => {
|
|
23
|
+
unsubscribes.forEach((u) => u());
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
let lastClickEvent = null;
|
|
27
|
+
const clickHandler = (e) => {
|
|
28
|
+
const a = e.composedPath?.()?.find((n) => n instanceof HTMLAnchorElement) ?? (e.target instanceof Element && e.target.closest?.("a"));
|
|
29
|
+
if (!a)
|
|
30
|
+
return;
|
|
31
|
+
lastClickEvent = { href: a.href, timestamp: Date.now() };
|
|
32
|
+
window.setTimeout(
|
|
33
|
+
() => handleNavigate({ url: windowLocation(), initialPageLoad: false }),
|
|
34
|
+
LOCATION_CHECK_DELAY_MS
|
|
35
|
+
);
|
|
36
|
+
};
|
|
37
|
+
window.document.addEventListener(
|
|
38
|
+
"click",
|
|
39
|
+
clickHandler,
|
|
40
|
+
{ capture: true }
|
|
41
|
+
// run before bubbling to fortify against `stopPropagation()` calls
|
|
42
|
+
);
|
|
43
|
+
unsubscribes.push(
|
|
44
|
+
() => window.document.removeEventListener("click", clickHandler, { capture: true })
|
|
45
|
+
);
|
|
46
|
+
const unloadHandler = () => {
|
|
47
|
+
if (!lastClickEvent)
|
|
48
|
+
return;
|
|
49
|
+
const msSinceLastClick = Date.now() - lastClickEvent.timestamp;
|
|
50
|
+
handleNavigate({
|
|
51
|
+
url: msSinceLastClick < CLICK_NAVIGATION_THRESHOLD_MS ? lastClickEvent.href ?? null : null,
|
|
52
|
+
initialPageLoad: false
|
|
53
|
+
});
|
|
54
|
+
lastClickEvent = null;
|
|
55
|
+
};
|
|
56
|
+
window.addEventListener("beforeunload", unloadHandler);
|
|
57
|
+
unsubscribes.push(() => window.removeEventListener("beforeunload", unloadHandler));
|
|
58
|
+
return () => {
|
|
59
|
+
unsubscribes.forEach((u) => u());
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const windowLocation = () => typeof window !== "undefined" ? window.location.href : null;
|
|
63
|
+
export {
|
|
64
|
+
setupNavigationListener
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=navigation-listener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/builder-api/navigation-listener.ts"],"sourcesContent":["export type SiteNavigationEvent = {\n url: string | null\n initialPageLoad: boolean\n}\n\ntype ClickEvent = {\n href: string\n timestamp: number\n}\n\nconst CLICK_NAVIGATION_THRESHOLD_MS = 100\nconst LOCATION_CHECK_DELAY_MS = 700 // give the host generous time to perform the navigation\n\nexport function setupNavigationListener(\n callback: (args: SiteNavigationEvent) => void,\n): VoidFunction {\n let previousLocation: string | null = null\n\n const handleNavigate = (event: SiteNavigationEvent) => {\n if (event.url === previousLocation) return\n\n callback(event)\n previousLocation = event.url\n }\n\n // trigger navigation callback on initial page load\n handleNavigate({ url: windowLocation(), initialPageLoad: true })\n\n if (typeof window === 'undefined') {\n return () => {}\n }\n\n const unsubscribes: (() => void)[] = []\n\n // check for availability of the Navigation API (baseline feature since January 2026),\n // see https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API\n if ('navigation' in window && window.navigation) {\n const navigation = window.navigation\n\n const handler = ({ destination }: NavigateEvent) =>\n handleNavigate({ url: destination.url, initialPageLoad: false })\n\n // note that in order to capture destination URLs that might not be Makeswift-enabled,\n // we send a `SiteNavigationEvent` at the start of navigation, but do not track whether\n // the navigation was successful or not (possible future improvement)\n navigation.addEventListener('navigate', handler)\n unsubscribes.push(() => navigation.removeEventListener('navigate', handler))\n\n return () => {\n unsubscribes.forEach(u => u())\n }\n }\n\n // for browsers lacking Navigation API support, we manually track:\n // - link clicks to capture destination URLs\n // - page unload events to detect cross-page navigation\n let lastClickEvent: ClickEvent | null = null\n\n const clickHandler = (e: MouseEvent) => {\n const a =\n e.composedPath?.()?.find(n => n instanceof HTMLAnchorElement) ??\n (e.target instanceof Element && e.target.closest?.('a'))\n\n if (!a) return\n\n lastClickEvent = { href: a.href, timestamp: Date.now() }\n\n // handle navigation between pages in the host; note that we intentionally are\n // not cancelling the timer on cleanup to ensure we report the navigation\n window.setTimeout(\n () => handleNavigate({ url: windowLocation(), initialPageLoad: false }),\n LOCATION_CHECK_DELAY_MS,\n )\n }\n\n window.document.addEventListener(\n 'click',\n clickHandler,\n { capture: true }, // run before bubbling to fortify against `stopPropagation()` calls\n )\n\n unsubscribes.push(() =>\n window.document.removeEventListener('click', clickHandler, { capture: true }),\n )\n\n // handle external navigation\n const unloadHandler = () => {\n if (!lastClickEvent) return\n\n const msSinceLastClick = Date.now() - lastClickEvent.timestamp\n handleNavigate({\n url: msSinceLastClick < CLICK_NAVIGATION_THRESHOLD_MS ? (lastClickEvent.href ?? null) : null,\n initialPageLoad: false,\n })\n\n lastClickEvent = null\n }\n\n window.addEventListener('beforeunload', unloadHandler)\n unsubscribes.push(() => window.removeEventListener('beforeunload', unloadHandler))\n\n return () => {\n unsubscribes.forEach(u => u())\n }\n}\n\nconst windowLocation = (): string | null =>\n typeof window !== 'undefined' ? window.location.href : null\n"],"mappings":"AAUA,MAAM,gCAAgC;AACtC,MAAM,0BAA0B;AAEzB,SAAS,wBACd,UACc;AACd,MAAI,mBAAkC;AAEtC,QAAM,iBAAiB,CAAC,UAA+B;AACrD,QAAI,MAAM,QAAQ;AAAkB;AAEpC,aAAS,KAAK;AACd,uBAAmB,MAAM;AAAA,EAC3B;AAGA,iBAAe,EAAE,KAAK,eAAe,GAAG,iBAAiB,KAAK,CAAC;AAE/D,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AAEA,QAAM,eAA+B,CAAC;AAItC,MAAI,gBAAgB,UAAU,OAAO,YAAY;AAC/C,UAAM,aAAa,OAAO;AAE1B,UAAM,UAAU,CAAC,EAAE,YAAY,MAC7B,eAAe,EAAE,KAAK,YAAY,KAAK,iBAAiB,MAAM,CAAC;AAKjE,eAAW,iBAAiB,YAAY,OAAO;AAC/C,iBAAa,KAAK,MAAM,WAAW,oBAAoB,YAAY,OAAO,CAAC;AAE3E,WAAO,MAAM;AACX,mBAAa,QAAQ,OAAK,EAAE,CAAC;AAAA,IAC/B;AAAA,EACF;AAKA,MAAI,iBAAoC;AAExC,QAAM,eAAe,CAAC,MAAkB;AACtC,UAAM,IACJ,EAAE,eAAe,GAAG,KAAK,OAAK,aAAa,iBAAiB,MAC3D,EAAE,kBAAkB,WAAW,EAAE,OAAO,UAAU,GAAG;AAExD,QAAI,CAAC;AAAG;AAER,qBAAiB,EAAE,MAAM,EAAE,MAAM,WAAW,KAAK,IAAI,EAAE;AAIvD,WAAO;AAAA,MACL,MAAM,eAAe,EAAE,KAAK,eAAe,GAAG,iBAAiB,MAAM,CAAC;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAEA,SAAO,SAAS;AAAA,IACd;AAAA,IACA;AAAA,IACA,EAAE,SAAS,KAAK;AAAA;AAAA,EAClB;AAEA,eAAa;AAAA,IAAK,MAChB,OAAO,SAAS,oBAAoB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAAA,EAC9E;AAGA,QAAM,gBAAgB,MAAM;AAC1B,QAAI,CAAC;AAAgB;AAErB,UAAM,mBAAmB,KAAK,IAAI,IAAI,eAAe;AACrD,mBAAe;AAAA,MACb,KAAK,mBAAmB,gCAAiC,eAAe,QAAQ,OAAQ;AAAA,MACxF,iBAAiB;AAAA,IACnB,CAAC;AAED,qBAAiB;AAAA,EACnB;AAEA,SAAO,iBAAiB,gBAAgB,aAAa;AACrD,eAAa,KAAK,MAAM,OAAO,oBAAoB,gBAAgB,aAAa,CAAC;AAEjF,SAAO,MAAM;AACX,iBAAa,QAAQ,OAAK,EAAE,CAAC;AAAA,EAC/B;AACF;AAEA,MAAM,iBAAiB,MACrB,OAAO,WAAW,cAAc,OAAO,SAAS,OAAO;","names":[]}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { isHostAction } from "../host-api";
|
|
2
|
-
import { hasTransferables } from "./actions";
|
|
2
|
+
import { BuilderActionTypes, hasTransferables } from "./actions";
|
|
3
3
|
import { MessageChannel } from "./message-channel";
|
|
4
|
+
import { setupNavigationListener } from "./navigation-listener";
|
|
4
5
|
class BuilderAPIProxy {
|
|
5
6
|
messageChannel;
|
|
6
7
|
constructor({ appOrigin }) {
|
|
7
8
|
this.messageChannel = new MessageChannel({ appOrigin });
|
|
8
9
|
}
|
|
10
|
+
handleHostNavigate(event) {
|
|
11
|
+
this.execute({ type: BuilderActionTypes.HANDLE_HOST_NAVIGATE, payload: event });
|
|
12
|
+
}
|
|
9
13
|
// low-level, action-based API
|
|
10
14
|
setup({ onHostAction }) {
|
|
11
15
|
const channelCleanup = this.messageChannel.setup({
|
|
@@ -18,8 +22,12 @@ class BuilderAPIProxy {
|
|
|
18
22
|
onHostAction(action);
|
|
19
23
|
}
|
|
20
24
|
});
|
|
25
|
+
const navigationListenerCleanup = setupNavigationListener(
|
|
26
|
+
(event) => this.handleHostNavigate(event)
|
|
27
|
+
);
|
|
21
28
|
return () => {
|
|
22
29
|
channelCleanup();
|
|
30
|
+
navigationListenerCleanup();
|
|
23
31
|
};
|
|
24
32
|
}
|
|
25
33
|
execute(action) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/state/builder-api/proxy.ts"],"sourcesContent":["import { type HostAction, isHostAction } from '../host-api'\n\nimport { type BuilderAction, hasTransferables } from './actions'\nimport { MessageChannel } from './message-channel'\n\nexport class BuilderAPIProxy {\n private messageChannel: MessageChannel\n\n constructor({ appOrigin }: { appOrigin: string }) {\n this.messageChannel = new MessageChannel({ appOrigin })\n }\n\n // low-level, action-based API\n\n setup({ onHostAction }: { onHostAction: (action: HostAction) => void }): VoidFunction {\n const channelCleanup = this.messageChannel.setup({\n onMessage: (event: MessageEvent) => {\n const action = event.data\n\n if (!isHostAction(action)) {\n console.warn('Unexpected host action', action)\n return\n }\n\n onHostAction(action)\n },\n })\n\n return () => {\n channelCleanup()\n }\n }\n\n execute(action: BuilderAction): void {\n if (hasTransferables(action)) {\n const { transferables, ...forwardedAction } = action\n this.messageChannel.postMessage(forwardedAction, transferables)\n return\n }\n\n this.messageChannel.postMessage(action)\n }\n\n dispatchBuffered(): void {\n this.messageChannel.dispatchBuffered()\n }\n}\n"],"mappings":"AAAA,SAA0B,oBAAoB;AAE9C,SAA6B,wBAAwB;
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/builder-api/proxy.ts"],"sourcesContent":["import { type HostAction, isHostAction } from '../host-api'\n\nimport { type BuilderAction, BuilderActionTypes, hasTransferables } from './actions'\nimport { MessageChannel } from './message-channel'\nimport { setupNavigationListener } from './navigation-listener'\nimport { type BuilderApi, type HostNavigationEvent } from './api'\n\nexport class BuilderAPIProxy implements BuilderApi {\n private messageChannel: MessageChannel\n\n constructor({ appOrigin }: { appOrigin: string }) {\n this.messageChannel = new MessageChannel({ appOrigin })\n }\n\n handleHostNavigate(event: HostNavigationEvent) {\n this.execute({ type: BuilderActionTypes.HANDLE_HOST_NAVIGATE, payload: event })\n }\n\n // low-level, action-based API\n\n setup({ onHostAction }: { onHostAction: (action: HostAction) => void }): VoidFunction {\n const channelCleanup = this.messageChannel.setup({\n onMessage: (event: MessageEvent) => {\n const action = event.data\n\n if (!isHostAction(action)) {\n console.warn('Unexpected host action', action)\n return\n }\n\n onHostAction(action)\n },\n })\n\n const navigationListenerCleanup = setupNavigationListener(event =>\n this.handleHostNavigate(event),\n )\n\n return () => {\n channelCleanup()\n navigationListenerCleanup()\n }\n }\n\n execute(action: BuilderAction): void {\n if (hasTransferables(action)) {\n const { transferables, ...forwardedAction } = action\n this.messageChannel.postMessage(forwardedAction, transferables)\n return\n }\n\n this.messageChannel.postMessage(action)\n }\n\n dispatchBuffered(): void {\n this.messageChannel.dispatchBuffered()\n }\n}\n"],"mappings":"AAAA,SAA0B,oBAAoB;AAE9C,SAA6B,oBAAoB,wBAAwB;AACzE,SAAS,sBAAsB;AAC/B,SAAS,+BAA+B;AAGjC,MAAM,gBAAsC;AAAA,EACzC;AAAA,EAER,YAAY,EAAE,UAAU,GAA0B;AAChD,SAAK,iBAAiB,IAAI,eAAe,EAAE,UAAU,CAAC;AAAA,EACxD;AAAA,EAEA,mBAAmB,OAA4B;AAC7C,SAAK,QAAQ,EAAE,MAAM,mBAAmB,sBAAsB,SAAS,MAAM,CAAC;AAAA,EAChF;AAAA;AAAA,EAIA,MAAM,EAAE,aAAa,GAAiE;AACpF,UAAM,iBAAiB,KAAK,eAAe,MAAM;AAAA,MAC/C,WAAW,CAAC,UAAwB;AAClC,cAAM,SAAS,MAAM;AAErB,YAAI,CAAC,aAAa,MAAM,GAAG;AACzB,kBAAQ,KAAK,0BAA0B,MAAM;AAC7C;AAAA,QACF;AAEA,qBAAa,MAAM;AAAA,MACrB;AAAA,IACF,CAAC;AAED,UAAM,4BAA4B;AAAA,MAAwB,WACxD,KAAK,mBAAmB,KAAK;AAAA,IAC/B;AAEA,WAAO,MAAM;AACX,qBAAe;AACf,gCAA0B;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,QAAQ,QAA6B;AACnC,QAAI,iBAAiB,MAAM,GAAG;AAC5B,YAAM,EAAE,eAAe,GAAG,gBAAgB,IAAI;AAC9C,WAAK,eAAe,YAAY,iBAAiB,aAAa;AAC9D;AAAA,IACF;AAEA,SAAK,eAAe,YAAY,MAAM;AAAA,EACxC;AAAA,EAEA,mBAAyB;AACvB,SAAK,eAAe,iBAAiB;AAAA,EACvC;AACF;","names":[]}
|
|
@@ -36,10 +36,13 @@ function builderAPIMiddleware(builderProxy) {
|
|
|
36
36
|
window.getSelection()?.removeAllRanges();
|
|
37
37
|
break;
|
|
38
38
|
case HostActionTypes.INIT:
|
|
39
|
+
cleanUp();
|
|
39
40
|
cleanUp = dispatch(initializeBuilderConnection(builderProxy));
|
|
40
41
|
break;
|
|
41
42
|
case HostActionTypes.CLEAN_UP:
|
|
42
43
|
cleanUp();
|
|
44
|
+
cleanUp = () => {
|
|
45
|
+
};
|
|
43
46
|
break;
|
|
44
47
|
}
|
|
45
48
|
return next(action);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/state/middleware/read-write/builder-api/index.ts"],"sourcesContent":["import { type Middleware } from '@reduxjs/toolkit'\n\nimport { type Action } from '../../../actions'\n\nimport { BuilderActionTypes } from '../../../builder-api/actions'\n\nimport { actionMiddleware } from '../../../toolkit'\n\nimport { type BuilderAPIProxy } from '../../../builder-api/proxy'\nimport { HostActionTypes } from '../../../host-api'\n\nimport { type State, type Dispatch } from '../../../read-write-state'\nimport { initializeBuilderConnection } from './initialize-connection'\n\nexport function builderAPIMiddleware(\n builderProxy: BuilderAPIProxy,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch }) => next => {\n if (typeof window === 'undefined') return (action: Action) => next(action)\n\n let cleanUp = () => {}\n return (action: Action) => {\n switch (action.type) {\n case BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS:\n case BuilderActionTypes.MOUNT_COMPONENT:\n case BuilderActionTypes.UNMOUNT_COMPONENT:\n case BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:\n case BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:\n case BuilderActionTypes.HANDLE_WHEEL:\n case BuilderActionTypes.HANDLE_POINTER_MOVE:\n case BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE:\n case BuilderActionTypes.SET_LOCALE:\n case BuilderActionTypes.SET_BREAKPOINTS:\n case BuilderActionTypes.REGISTER_BUILDER_DOCUMENT:\n case BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT:\n case BuilderActionTypes.REGISTER_BUILDER_COMPONENT:\n case BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT:\n builderProxy.execute(action)\n break\n\n case HostActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:\n window.document.documentElement.scrollTop = action.payload.scrollTop\n break\n\n case HostActionTypes.SCROLL_DOCUMENT_ELEMENT:\n window.document.documentElement.scrollTop += action.payload.scrollTopDelta\n break\n\n case HostActionTypes.SET_BUILDER_EDIT_MODE:\n window.getSelection()?.removeAllRanges()\n break\n\n case HostActionTypes.INIT:\n // dispatched by the parent window after establishing the connection\n cleanUp = dispatch(initializeBuilderConnection(builderProxy))\n break\n\n case HostActionTypes.CLEAN_UP:\n // dispatched by the parent window on disconnect\n cleanUp()\n break\n }\n\n return next(action)\n }\n })\n}\n"],"mappings":"AAIA,SAAS,0BAA0B;AAEnC,SAAS,wBAAwB;AAGjC,SAAS,uBAAuB;AAGhC,SAAS,mCAAmC;AAErC,SAAS,qBACd,cACuC;AACvC,SAAO,iBAAiB,CAAC,EAAE,SAAS,MAAM,UAAQ;AAChD,QAAI,OAAO,WAAW;AAAa,aAAO,CAAC,WAAmB,KAAK,MAAM;AAEzE,QAAI,UAAU,MAAM;AAAA,IAAC;AACrB,WAAO,CAAC,WAAmB;AACzB,cAAQ,OAAO,MAAM;AAAA,QACnB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AACtB,uBAAa,QAAQ,MAAM;AAC3B;AAAA,QAEF,KAAK,gBAAgB;AACnB,iBAAO,SAAS,gBAAgB,YAAY,OAAO,QAAQ;AAC3D;AAAA,QAEF,KAAK,gBAAgB;AACnB,iBAAO,SAAS,gBAAgB,aAAa,OAAO,QAAQ;AAC5D;AAAA,QAEF,KAAK,gBAAgB;AACnB,iBAAO,aAAa,GAAG,gBAAgB;AACvC;AAAA,QAEF,KAAK,gBAAgB;
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/state/middleware/read-write/builder-api/index.ts"],"sourcesContent":["import { type Middleware } from '@reduxjs/toolkit'\n\nimport { type Action } from '../../../actions'\n\nimport { BuilderActionTypes } from '../../../builder-api/actions'\n\nimport { actionMiddleware } from '../../../toolkit'\n\nimport { type BuilderAPIProxy } from '../../../builder-api/proxy'\nimport { HostActionTypes } from '../../../host-api'\n\nimport { type State, type Dispatch } from '../../../read-write-state'\nimport { initializeBuilderConnection } from './initialize-connection'\n\nexport function builderAPIMiddleware(\n builderProxy: BuilderAPIProxy,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch }) => next => {\n if (typeof window === 'undefined') return (action: Action) => next(action)\n\n let cleanUp = () => {}\n return (action: Action) => {\n switch (action.type) {\n case BuilderActionTypes.CHANGE_ELEMENT_BOX_MODELS:\n case BuilderActionTypes.MOUNT_COMPONENT:\n case BuilderActionTypes.UNMOUNT_COMPONENT:\n case BuilderActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:\n case BuilderActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:\n case BuilderActionTypes.HANDLE_WHEEL:\n case BuilderActionTypes.HANDLE_POINTER_MOVE:\n case BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE:\n case BuilderActionTypes.SET_LOCALE:\n case BuilderActionTypes.SET_BREAKPOINTS:\n case BuilderActionTypes.REGISTER_BUILDER_DOCUMENT:\n case BuilderActionTypes.UNREGISTER_BUILDER_DOCUMENT:\n case BuilderActionTypes.REGISTER_BUILDER_COMPONENT:\n case BuilderActionTypes.UNREGISTER_BUILDER_COMPONENT:\n builderProxy.execute(action)\n break\n\n case HostActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:\n window.document.documentElement.scrollTop = action.payload.scrollTop\n break\n\n case HostActionTypes.SCROLL_DOCUMENT_ELEMENT:\n window.document.documentElement.scrollTop += action.payload.scrollTopDelta\n break\n\n case HostActionTypes.SET_BUILDER_EDIT_MODE:\n window.getSelection()?.removeAllRanges()\n break\n\n case HostActionTypes.INIT:\n // dispatched by the parent window after establishing the connection\n // and in response to host's client-side navigation\n cleanUp() // cleanup existing connection setup, if any\n cleanUp = dispatch(initializeBuilderConnection(builderProxy))\n break\n\n case HostActionTypes.CLEAN_UP:\n // dispatched by the parent window on disconnect\n cleanUp()\n cleanUp = () => {}\n break\n }\n\n return next(action)\n }\n })\n}\n"],"mappings":"AAIA,SAAS,0BAA0B;AAEnC,SAAS,wBAAwB;AAGjC,SAAS,uBAAuB;AAGhC,SAAS,mCAAmC;AAErC,SAAS,qBACd,cACuC;AACvC,SAAO,iBAAiB,CAAC,EAAE,SAAS,MAAM,UAAQ;AAChD,QAAI,OAAO,WAAW;AAAa,aAAO,CAAC,WAAmB,KAAK,MAAM;AAEzE,QAAI,UAAU,MAAM;AAAA,IAAC;AACrB,WAAO,CAAC,WAAmB;AACzB,cAAQ,OAAO,MAAM;AAAA,QACnB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AACtB,uBAAa,QAAQ,MAAM;AAC3B;AAAA,QAEF,KAAK,gBAAgB;AACnB,iBAAO,SAAS,gBAAgB,YAAY,OAAO,QAAQ;AAC3D;AAAA,QAEF,KAAK,gBAAgB;AACnB,iBAAO,SAAS,gBAAgB,aAAa,OAAO,QAAQ;AAC5D;AAAA,QAEF,KAAK,gBAAgB;AACnB,iBAAO,aAAa,GAAG,gBAAgB;AACvC;AAAA,QAEF,KAAK,gBAAgB;AAGnB,kBAAQ;AACR,oBAAU,SAAS,4BAA4B,YAAY,CAAC;AAC5D;AAAA,QAEF,KAAK,gBAAgB;AAEnB,kBAAQ;AACR,oBAAU,MAAM;AAAA,UAAC;AACjB;AAAA,MACJ;AAEA,aAAO,KAAK,MAAM;AAAA,IACpB;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -6,6 +6,7 @@ import { type ComponentMeta } from '../modules/components-meta';
|
|
|
6
6
|
import { type BoxModel } from '../modules/read-write/box-models';
|
|
7
7
|
import { type ElementSize } from '../middleware/read-write/builder-api/element-size';
|
|
8
8
|
import { type DocumentPayload, type SharedAction } from '../shared-api';
|
|
9
|
+
import { type HostNavigationEvent } from './api';
|
|
9
10
|
export * from '../shared-api';
|
|
10
11
|
export declare const BuilderActionTypes: {
|
|
11
12
|
readonly MAKESWIFT_CONNECTION_CHECK: "MAKESWIFT_CONNECTION_CHECK";
|
|
@@ -33,9 +34,6 @@ type ActionWithTransferables<A> = A & {
|
|
|
33
34
|
};
|
|
34
35
|
type MakeswiftConnectionCheckAction = {
|
|
35
36
|
type: typeof BuilderActionTypes.MAKESWIFT_CONNECTION_CHECK;
|
|
36
|
-
payload: {
|
|
37
|
-
currentUrl: string;
|
|
38
|
-
};
|
|
39
37
|
};
|
|
40
38
|
type MountComponentAction = {
|
|
41
39
|
type: typeof BuilderActionTypes.MOUNT_COMPONENT;
|
|
@@ -124,12 +122,10 @@ type UnregisterBuilderComponentAction = {
|
|
|
124
122
|
};
|
|
125
123
|
type HandleHostNavigateAction = {
|
|
126
124
|
type: typeof BuilderActionTypes.HANDLE_HOST_NAVIGATE;
|
|
127
|
-
payload:
|
|
128
|
-
url: string | null;
|
|
129
|
-
};
|
|
125
|
+
payload: HostNavigationEvent;
|
|
130
126
|
};
|
|
131
127
|
export type BuilderAction = SharedAction | MakeswiftConnectionCheckAction | MountComponentAction | UnmountComponentAction | ChangeDocumentElementSizeAction | ChangeElementBoxModelsAction | MessageBuilderPropControllerAction | HandleWheelAction | HandlePointerMoveAction | ElementFromPointChangeAction | RegisterBuilderDocumentAction | UnregisterBuilderDocumentAction | RegisterBuilderComponentAction | UnregisterBuilderComponentAction | HandleHostNavigateAction;
|
|
132
|
-
export declare function makeswiftConnectionCheck(
|
|
128
|
+
export declare function makeswiftConnectionCheck(): MakeswiftConnectionCheckAction;
|
|
133
129
|
export declare function mountComponent(documentKey: string, elementKey: string): MountComponentAction;
|
|
134
130
|
export declare function unmountComponent(documentKey: string, elementKey: string): UnmountComponentAction;
|
|
135
131
|
export declare function mountComponentEffect(documentKey: string, elementKey: string): ThunkAction<() => void, unknown, unknown, BuilderAction>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../src/state/builder-api/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAE7E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAEhE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mDAAmD,CAAA;AACpF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAqB,MAAM,eAAe,CAAA;AAE1F,cAAc,eAAe,CAAA;AAM7B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;CAyBrB,CAAA;AAEV,KAAK,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG;IACpC,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;CAC/B,CAAA;AAED,KAAK,8BAA8B,GAAG;IACpC,IAAI,EAAE,OAAO,kBAAkB,CAAC,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../src/state/builder-api/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAE7E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAEhE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mDAAmD,CAAA;AACpF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAqB,MAAM,eAAe,CAAA;AAE1F,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAEhD,cAAc,eAAe,CAAA;AAM7B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;CAyBrB,CAAA;AAEV,KAAK,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG;IACpC,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;CAC/B,CAAA;AAED,KAAK,8BAA8B,GAAG;IACpC,IAAI,EAAE,OAAO,kBAAkB,CAAC,0BAA0B,CAAA;CAC3D,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,OAAO,kBAAkB,CAAC,eAAe,CAAA;IAC/C,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CACrD,CAAA;AAED,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,OAAO,kBAAkB,CAAC,iBAAiB,CAAA;IACjD,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CACrD,CAAA;AAED,KAAK,+BAA+B,GAAG;IACrC,IAAI,EAAE,OAAO,kBAAkB,CAAC,4BAA4B,CAAA;IAC5D,OAAO,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAA;CAC/B,CAAA;AAED,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,OAAO,kBAAkB,CAAC,yBAAyB,CAAA;IACzD,OAAO,EAAE;QAAE,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAA;KAAE,CAAA;CAChF,CAAA;AAED,KAAK,kCAAkC,CAAC,CAAC,GAAG,qBAAqB,IAAI;IACnE,IAAI,EAAE,OAAO,kBAAkB,CAAC,+BAA+B,CAAA;IAC/D,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,CAAA;KAAE,CAAA;CACnF,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,OAAO,kBAAkB,CAAC,YAAY,CAAA;IAC5C,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5C,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,OAAO,kBAAkB,CAAC,mBAAmB,CAAA;IACnD,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9C,CAAA;AAED,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,OAAO,kBAAkB,CAAC,yBAAyB,CAAA;IACzD,OAAO,EAAE;QAAE,IAAI,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KAAE,CAAA;CACtE,CAAA;AAED,KAAK,6BAA6B,GAAG;IACnC,IAAI,EAAE,OAAO,kBAAkB,CAAC,yBAAyB,CAAA;IACzD,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,eAAe,CAAA;KAAE,CAAA;CAC5D,CAAA;AAED,KAAK,+BAA+B,GAAG;IACrC,IAAI,EAAE,OAAO,kBAAkB,CAAC,2BAA2B,CAAA;IAC3D,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;CACjC,CAAA;AAED,KAAK,8BAA8B,GAAG;IACpC,IAAI,EAAE,OAAO,kBAAkB,CAAC,0BAA0B,CAAA;IAC1D,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,aAAa,CAAA;QACnB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;KACtD,CAAA;CACF,CAAA;AAED,KAAK,gCAAgC,GAAG;IACtC,IAAI,EAAE,OAAO,kBAAkB,CAAC,4BAA4B,CAAA;IAC5D,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAC1B,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,OAAO,kBAAkB,CAAC,oBAAoB,CAAA;IACpD,OAAO,EAAE,mBAAmB,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,8BAA8B,GAC9B,oBAAoB,GACpB,sBAAsB,GACtB,+BAA+B,GAC/B,4BAA4B,GAC5B,kCAAkC,GAClC,iBAAiB,GACjB,uBAAuB,GACvB,4BAA4B,GAC5B,6BAA6B,GAC7B,+BAA+B,GAC/B,8BAA8B,GAC9B,gCAAgC,GAChC,wBAAwB,CAAA;AAE5B,wBAAgB,wBAAwB,IAAI,8BAA8B,CAEzE;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,oBAAoB,CAE5F;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,sBAAsB,CAEhG;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,WAAW,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAQ1D;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,WAAW,GAAG,+BAA+B,CAE5F;AAED,wBAAgB,sBAAsB,CACpC,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,GACjE,4BAA4B,CAK9B;AAED,wBAAgB,4BAA4B,CAAC,CAAC,EAC5C,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,GACT,kCAAkC,CAAC,CAAC,CAAC,CAKvC;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAE1F;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,uBAAuB,CAE1B;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE;IACJ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,IAAI,GACP,4BAA4B,CAE9B;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,6BAA6B,CAKzF;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,+BAA+B,CAE9F;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,QAAQ,EAAE,GACpB,WAAW,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAQ1D;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,EAClD,aAAa,CAAC,EAAE,YAAY,EAAE,GAC7B,uBAAuB,CAAC,8BAA8B,CAAC,CAMzD;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,gCAAgC,CAAC,SAAS,CAAC,GACnD,gCAAgC,CAElC;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,aAAa,EACtD,MAAM,EAAE,CAAC,GACR,MAAM,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAEtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/state/builder-api/api.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAA;CACrD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-listener.d.ts","sourceRoot":"","sources":["../../../../src/state/builder-api/navigation-listener.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;CACzB,CAAA;AAUD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,GAC5C,YAAY,CAyFd"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { type HostAction } from '../host-api';
|
|
2
2
|
import { type BuilderAction } from './actions';
|
|
3
|
-
|
|
3
|
+
import { type BuilderApi, type HostNavigationEvent } from './api';
|
|
4
|
+
export declare class BuilderAPIProxy implements BuilderApi {
|
|
4
5
|
private messageChannel;
|
|
5
6
|
constructor({ appOrigin }: {
|
|
6
7
|
appOrigin: string;
|
|
7
8
|
});
|
|
9
|
+
handleHostNavigate(event: HostNavigationEvent): void;
|
|
8
10
|
setup({ onHostAction }: {
|
|
9
11
|
onHostAction: (action: HostAction) => void;
|
|
10
12
|
}): VoidFunction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../../src/state/builder-api/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,aAAa,CAAA;AAE3D,OAAO,EAAE,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../../src/state/builder-api/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,aAAa,CAAA;AAE3D,OAAO,EAAE,KAAK,aAAa,EAAwC,MAAM,WAAW,CAAA;AAGpF,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAEjE,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,cAAc,CAAgB;gBAE1B,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE;IAIhD,kBAAkB,CAAC,KAAK,EAAE,mBAAmB;IAM7C,KAAK,CAAC,EAAE,YAAY,EAAE,EAAE;QAAE,YAAY,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;KAAE,GAAG,YAAY;IAwBrF,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAUpC,gBAAgB,IAAI,IAAI;CAGzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/state/middleware/read-write/builder-api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAQlD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGjE,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAGrE,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,eAAe,GAC5B,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/state/middleware/read-write/builder-api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAQlD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGjE,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAGrE,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,eAAe,GAC5B,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAqDvC"}
|