@makeswift/runtime 0.27.1-canary.0 → 0.27.2
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/react.js +256 -0
- package/dist/cjs/api/react.js.map +1 -0
- package/dist/cjs/api-handler/handlers/manifest.js +1 -1
- package/dist/cjs/builder/serialization/control-serialization.js +10 -7
- package/dist/cjs/builder/serialization/control-serialization.js.map +1 -1
- package/dist/cjs/client/index.js +35 -6
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/controls/visitors/message-port-serializer/function-serialization.js.map +1 -1
- package/dist/cjs/next/api-handler/config/app-router.js +10 -1
- package/dist/cjs/next/api-handler/config/app-router.js.map +1 -1
- package/dist/cjs/runtimes/react/components/GoogleFontLink.js +56 -0
- package/dist/cjs/runtimes/react/components/GoogleFontLink.js.map +1 -0
- package/dist/cjs/runtimes/react/components/LiveProvider.js +50 -0
- package/dist/cjs/runtimes/react/components/LiveProvider.js.map +1 -0
- package/dist/cjs/runtimes/react/components/PreviewProvider.js +63 -0
- package/dist/cjs/runtimes/react/components/PreviewProvider.js.map +1 -0
- package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js +62 -0
- package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -0
- package/dist/cjs/runtimes/react/hooks/use-is-preview.js +33 -0
- package/dist/cjs/runtimes/react/hooks/use-is-preview.js.map +1 -0
- package/dist/cjs/runtimes/react/utils/google-fonts-url.js +49 -0
- package/dist/cjs/runtimes/react/utils/google-fonts-url.js.map +1 -0
- package/dist/cjs/state/actions/internal.js +205 -0
- package/dist/cjs/state/actions/internal.js.map +1 -0
- package/dist/cjs/state/builder-api/message-channel.js +33 -28
- package/dist/cjs/state/builder-api/message-channel.js.map +1 -1
- package/dist/cjs/state/builder-api/proxy.js +11 -9
- package/dist/cjs/state/builder-api/proxy.js.map +1 -1
- package/dist/cjs/state/mixins/setup-teardown.js +35 -0
- package/dist/cjs/state/mixins/setup-teardown.js.map +1 -0
- package/dist/cjs/state/modules/box-models.js +127 -0
- package/dist/cjs/state/modules/box-models.js.map +1 -0
- package/dist/cjs/state/modules/element-imperative-handles.js +60 -0
- package/dist/cjs/state/modules/element-imperative-handles.js.map +1 -0
- package/dist/cjs/state/modules/is-preview.js +47 -0
- package/dist/cjs/state/modules/is-preview.js.map +1 -0
- package/dist/cjs/state/modules/pointer.js +47 -0
- package/dist/cjs/state/modules/pointer.js.map +1 -0
- package/dist/cjs/state/modules/read-write-documents.js +98 -0
- package/dist/cjs/state/modules/read-write-documents.js.map +1 -0
- package/dist/cjs/state/react-builder-preview.js +586 -0
- package/dist/cjs/state/react-builder-preview.js.map +1 -0
- package/dist/cjs/state/react-page.js +313 -0
- package/dist/cjs/state/react-page.js.map +1 -0
- package/dist/cjs/state/read-write-state.js +1 -1
- package/dist/cjs/state/read-write-state.js.map +1 -1
- package/dist/cjs/state/store.js +2 -2
- package/dist/cjs/state/store.js.map +1 -1
- package/dist/cjs/state/translations/get.js +10 -9
- package/dist/cjs/state/translations/get.js.map +1 -1
- package/dist/cjs/state/translations/merge.js +10 -12
- package/dist/cjs/state/translations/merge.js.map +1 -1
- package/dist/cjs/translations/index.js +32 -0
- package/dist/cjs/translations/index.js.map +1 -0
- package/dist/cjs/unstable-framework-support/index.js +3 -0
- package/dist/cjs/unstable-framework-support/index.js.map +1 -1
- package/dist/esm/api/react.js +223 -0
- package/dist/esm/api/react.js.map +1 -0
- package/dist/esm/api-handler/handlers/manifest.js +1 -1
- package/dist/esm/builder/serialization/control-serialization.js +12 -8
- package/dist/esm/builder/serialization/control-serialization.js.map +1 -1
- package/dist/esm/client/index.js +37 -8
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/controls/visitors/message-port-serializer/function-serialization.js.map +1 -1
- package/dist/esm/next/api-handler/config/app-router.js +10 -1
- package/dist/esm/next/api-handler/config/app-router.js.map +1 -1
- package/dist/esm/runtimes/react/components/GoogleFontLink.js +36 -0
- package/dist/esm/runtimes/react/components/GoogleFontLink.js.map +1 -0
- package/dist/esm/runtimes/react/components/LiveProvider.js +20 -0
- package/dist/esm/runtimes/react/components/LiveProvider.js.map +1 -0
- package/dist/esm/runtimes/react/components/PreviewProvider.js +33 -0
- package/dist/esm/runtimes/react/components/PreviewProvider.js.map +1 -0
- package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js +38 -0
- package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -0
- package/dist/esm/runtimes/react/hooks/use-is-preview.js +9 -0
- package/dist/esm/runtimes/react/hooks/use-is-preview.js.map +1 -0
- package/dist/esm/runtimes/react/utils/google-fonts-url.js +23 -0
- package/dist/esm/runtimes/react/utils/google-fonts-url.js.map +1 -0
- package/dist/esm/state/actions/internal.js +162 -0
- package/dist/esm/state/actions/internal.js.map +1 -0
- package/dist/esm/state/builder-api/message-channel.js +33 -28
- package/dist/esm/state/builder-api/message-channel.js.map +1 -1
- package/dist/esm/state/builder-api/proxy.js +11 -9
- package/dist/esm/state/builder-api/proxy.js.map +1 -1
- package/dist/esm/state/mixins/setup-teardown.js +11 -0
- package/dist/esm/state/mixins/setup-teardown.js.map +1 -0
- package/dist/esm/state/modules/box-models.js +98 -0
- package/dist/esm/state/modules/box-models.js.map +1 -0
- package/dist/esm/state/modules/element-imperative-handles.js +35 -0
- package/dist/esm/state/modules/element-imperative-handles.js.map +1 -0
- package/dist/esm/state/modules/is-preview.js +21 -0
- package/dist/esm/state/modules/is-preview.js.map +1 -0
- package/dist/esm/state/modules/pointer.js +22 -0
- package/dist/esm/state/modules/pointer.js.map +1 -0
- package/dist/esm/state/modules/read-write-documents.js +60 -0
- package/dist/esm/state/modules/read-write-documents.js.map +1 -0
- package/dist/esm/state/react-builder-preview.js +547 -0
- package/dist/esm/state/react-builder-preview.js.map +1 -0
- package/dist/esm/state/react-page.js +268 -0
- package/dist/esm/state/react-page.js.map +1 -0
- package/dist/esm/state/read-write-state.js +1 -1
- package/dist/esm/state/read-write-state.js.map +1 -1
- package/dist/esm/state/store.js +2 -2
- package/dist/esm/state/store.js.map +1 -1
- package/dist/esm/state/translations/get.js +9 -8
- package/dist/esm/state/translations/get.js.map +1 -1
- package/dist/esm/state/translations/merge.js +9 -11
- package/dist/esm/state/translations/merge.js.map +1 -1
- package/dist/esm/translations/index.js +7 -0
- package/dist/esm/translations/index.js.map +1 -0
- package/dist/esm/unstable-framework-support/index.js +2 -0
- package/dist/esm/unstable-framework-support/index.js.map +1 -1
- package/dist/types/api/react.d.ts +82 -0
- package/dist/types/api/react.d.ts.map +1 -0
- package/dist/types/builder/serialization/control-serialization.d.ts +10 -6
- package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -1
- package/dist/types/client/index.d.ts +25 -1
- package/dist/types/client/index.d.ts.map +1 -1
- package/dist/types/client/tests/client.get-fonts.test.d.ts +2 -0
- package/dist/types/client/tests/client.get-fonts.test.d.ts.map +1 -0
- package/dist/types/next/api-handler/config/app-router.d.ts.map +1 -1
- package/dist/types/runtimes/react/components/GoogleFontLink.d.ts +14 -0
- package/dist/types/runtimes/react/components/GoogleFontLink.d.ts.map +1 -0
- package/dist/types/runtimes/react/components/LiveProvider.d.ts +3 -0
- package/dist/types/runtimes/react/components/LiveProvider.d.ts.map +1 -0
- package/dist/types/runtimes/react/components/PreviewProvider.d.ts +5 -0
- package/dist/types/runtimes/react/components/PreviewProvider.d.ts.map +1 -0
- package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts +4 -0
- package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts.map +1 -0
- package/dist/types/runtimes/react/hooks/use-is-preview.d.ts +2 -0
- package/dist/types/runtimes/react/hooks/use-is-preview.d.ts.map +1 -0
- package/dist/types/runtimes/react/utils/google-fonts-url.d.ts +6 -0
- package/dist/types/runtimes/react/utils/google-fonts-url.d.ts.map +1 -0
- package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts +5 -0
- package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts.map +1 -0
- package/dist/types/state/__tests__/fixtures/translatable-content-sample.d.ts +3 -0
- package/dist/types/state/__tests__/fixtures/translatable-content-sample.d.ts.map +1 -0
- package/dist/types/state/__tests__/get-translatable-content.test.d.ts +2 -0
- package/dist/types/state/__tests__/get-translatable-content.test.d.ts.map +1 -0
- package/dist/types/state/__tests__/react-page.test.d.ts +2 -0
- package/dist/types/state/__tests__/react-page.test.d.ts.map +1 -0
- package/dist/types/state/actions/internal.d.ts +181 -0
- package/dist/types/state/actions/internal.d.ts.map +1 -0
- package/dist/types/state/builder-api/message-channel.d.ts +3 -6
- package/dist/types/state/builder-api/message-channel.d.ts.map +1 -1
- package/dist/types/state/builder-api/proxy.d.ts +1 -2
- package/dist/types/state/builder-api/proxy.d.ts.map +1 -1
- package/dist/types/state/mixins/setup-teardown.d.ts +7 -0
- package/dist/types/state/mixins/setup-teardown.d.ts.map +1 -0
- package/dist/types/state/modules/box-models.d.ts +23 -0
- package/dist/types/state/modules/box-models.d.ts.map +1 -0
- package/dist/types/state/modules/element-imperative-handles.d.ts +7 -0
- package/dist/types/state/modules/element-imperative-handles.d.ts.map +1 -0
- package/dist/types/state/modules/is-preview.d.ts +6 -0
- package/dist/types/state/modules/is-preview.d.ts.map +1 -0
- package/dist/types/state/modules/pointer.d.ts +12 -0
- package/dist/types/state/modules/pointer.d.ts.map +1 -0
- package/dist/types/state/modules/read-write-documents.d.ts +14 -0
- package/dist/types/state/modules/read-write-documents.d.ts.map +1 -0
- package/dist/types/state/react-builder-preview.d.ts +108 -0
- package/dist/types/state/react-builder-preview.d.ts.map +1 -0
- package/dist/types/state/react-page.d.ts +149 -0
- package/dist/types/state/react-page.d.ts.map +1 -0
- package/dist/types/state/read-write-state.d.ts +1 -1
- package/dist/types/state/read-write-state.d.ts.map +1 -1
- package/dist/types/state/translations/get.d.ts +2 -2
- package/dist/types/state/translations/get.d.ts.map +1 -1
- package/dist/types/state/translations/merge.d.ts +2 -2
- package/dist/types/state/translations/merge.d.ts.map +1 -1
- package/dist/types/translations/index.d.ts +6 -0
- package/dist/types/translations/index.d.ts.map +1 -0
- package/dist/types/unstable-framework-support/index.d.ts +1 -0
- package/dist/types/unstable-framework-support/index.d.ts.map +1 -1
- package/package.json +9 -3
- package/translations/package.json +5 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
const InternalActionTypes = {
|
|
2
|
+
API_RESOURCE_FULFILLED: "API_RESOURCE_FULFILLED",
|
|
3
|
+
CREATE_ELEMENT_TREE: "CREATE_ELEMENT_TREE",
|
|
4
|
+
DELETE_ELEMENT_TREE: "DELETE_ELEMENT_TREE",
|
|
5
|
+
CHANGE_ELEMENT_TREE: "CHANGE_ELEMENT_TREE",
|
|
6
|
+
REGISTER_COMPONENT: "REGISTER_COMPONENT",
|
|
7
|
+
UNREGISTER_COMPONENT: "UNREGISTER_COMPONENT",
|
|
8
|
+
REGISTER_COMPONENT_HANDLE: "REGISTER_COMPONENT_HANDLE",
|
|
9
|
+
UNREGISTER_COMPONENT_HANDLE: "UNREGISTER_COMPONENT_HANDLE",
|
|
10
|
+
REGISTER_MEASURABLE: "REGISTER_MEASURABLE",
|
|
11
|
+
UNREGISTER_MEASURABLE: "UNREGISTER_MEASURABLE",
|
|
12
|
+
REGISTER_PROP_CONTROLLERS: "REGISTER_PROP_CONTROLLERS",
|
|
13
|
+
UNREGISTER_PROP_CONTROLLERS: "UNREGISTER_PROP_CONTROLLERS",
|
|
14
|
+
REGISTER_PROP_CONTROLLERS_HANDLE: "REGISTER_PROP_CONTROLLERS_HANDLE",
|
|
15
|
+
UNREGISTER_PROP_CONTROLLERS_HANDLE: "UNREGISTER_PROP_CONTROLLERS_HANDLE",
|
|
16
|
+
REGISTER_REACT_COMPONENT: "REGISTER_REACT_COMPONENT",
|
|
17
|
+
UNREGISTER_REACT_COMPONENT: "UNREGISTER_REACT_COMPONENT",
|
|
18
|
+
SET_IS_IN_BUILDER: "SET_IS_IN_BUILDER",
|
|
19
|
+
UPDATE_API_CLIENT_CACHE: "UPDATE_API_CLIENT_CACHE"
|
|
20
|
+
};
|
|
21
|
+
function apiResourceFulfilled(resourceType, resourceId, resource, locale) {
|
|
22
|
+
return {
|
|
23
|
+
type: InternalActionTypes.API_RESOURCE_FULFILLED,
|
|
24
|
+
payload: { resourceType, resourceId, resource, locale }
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function createElementTree(payload) {
|
|
28
|
+
return {
|
|
29
|
+
type: InternalActionTypes.CREATE_ELEMENT_TREE,
|
|
30
|
+
payload
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function deleteElementTree(payload) {
|
|
34
|
+
return { type: InternalActionTypes.DELETE_ELEMENT_TREE, payload };
|
|
35
|
+
}
|
|
36
|
+
function changeElementTree(payload) {
|
|
37
|
+
return {
|
|
38
|
+
type: InternalActionTypes.CHANGE_ELEMENT_TREE,
|
|
39
|
+
payload
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function registerComponent(type, meta, propControllerDescriptors) {
|
|
43
|
+
return {
|
|
44
|
+
type: InternalActionTypes.REGISTER_COMPONENT,
|
|
45
|
+
payload: { type, meta, propControllerDescriptors }
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function unregisterComponent(type) {
|
|
49
|
+
return { type: InternalActionTypes.UNREGISTER_COMPONENT, payload: { type } };
|
|
50
|
+
}
|
|
51
|
+
function registerComponentEffect(type, meta, propControllerDescriptors) {
|
|
52
|
+
return (dispatch) => {
|
|
53
|
+
dispatch(registerComponent(type, meta, propControllerDescriptors));
|
|
54
|
+
return () => {
|
|
55
|
+
dispatch(unregisterComponent(type));
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function registerComponentHandle(documentKey, elementKey, componentHandle) {
|
|
60
|
+
return {
|
|
61
|
+
type: InternalActionTypes.REGISTER_COMPONENT_HANDLE,
|
|
62
|
+
payload: { documentKey, elementKey, componentHandle }
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function unregisterComponentHandle(documentKey, elementKey) {
|
|
66
|
+
return {
|
|
67
|
+
type: InternalActionTypes.UNREGISTER_COMPONENT_HANDLE,
|
|
68
|
+
payload: { documentKey, elementKey }
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function registerComponentHandleEffect(documentKey, elementKey, componentHandle) {
|
|
72
|
+
return (dispatch) => {
|
|
73
|
+
dispatch(registerComponentHandle(documentKey, elementKey, componentHandle));
|
|
74
|
+
return () => {
|
|
75
|
+
dispatch(unregisterComponentHandle(documentKey, elementKey));
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function registerMeasurable(documentKey, elementKey, measurable) {
|
|
80
|
+
return {
|
|
81
|
+
type: InternalActionTypes.REGISTER_MEASURABLE,
|
|
82
|
+
payload: { documentKey, elementKey, measurable }
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function unregisterMeasurable(documentKey, elementKey) {
|
|
86
|
+
return { type: InternalActionTypes.UNREGISTER_MEASURABLE, payload: { documentKey, elementKey } };
|
|
87
|
+
}
|
|
88
|
+
function registerMeasurableEffect(documentKey, elementKey, measurable) {
|
|
89
|
+
return (dispatch) => {
|
|
90
|
+
dispatch(registerMeasurable(documentKey, elementKey, measurable));
|
|
91
|
+
return () => {
|
|
92
|
+
dispatch(unregisterMeasurable(documentKey, elementKey));
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function registerPropControllersHandle(documentKey, elementKey, handle) {
|
|
97
|
+
return {
|
|
98
|
+
type: InternalActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE,
|
|
99
|
+
payload: { documentKey, elementKey, handle }
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function unregisterPropControllersHandle(documentKey, elementKey) {
|
|
103
|
+
return {
|
|
104
|
+
type: InternalActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE,
|
|
105
|
+
payload: { documentKey, elementKey }
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function registerPropControllers(documentKey, elementKey, propControllers) {
|
|
109
|
+
return {
|
|
110
|
+
type: InternalActionTypes.REGISTER_PROP_CONTROLLERS,
|
|
111
|
+
payload: { documentKey, elementKey, propControllers }
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function unregisterPropControllers(documentKey, elementKey) {
|
|
115
|
+
return {
|
|
116
|
+
type: InternalActionTypes.UNREGISTER_PROP_CONTROLLERS,
|
|
117
|
+
payload: { documentKey, elementKey }
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function registerReactComponent(type, component) {
|
|
121
|
+
return { type: InternalActionTypes.REGISTER_REACT_COMPONENT, payload: { type, component } };
|
|
122
|
+
}
|
|
123
|
+
function unregisterReactComponent(type) {
|
|
124
|
+
return { type: InternalActionTypes.UNREGISTER_REACT_COMPONENT, payload: { type } };
|
|
125
|
+
}
|
|
126
|
+
function registerReactComponentEffect(type, component) {
|
|
127
|
+
return (dispatch) => {
|
|
128
|
+
dispatch(registerReactComponent(type, component));
|
|
129
|
+
return () => {
|
|
130
|
+
dispatch(unregisterReactComponent(type));
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function setIsInBuilder(isInBuilder) {
|
|
135
|
+
return { type: InternalActionTypes.SET_IS_IN_BUILDER, payload: isInBuilder };
|
|
136
|
+
}
|
|
137
|
+
function updateAPIClientCache(payload) {
|
|
138
|
+
return { type: InternalActionTypes.UPDATE_API_CLIENT_CACHE, payload };
|
|
139
|
+
}
|
|
140
|
+
export {
|
|
141
|
+
InternalActionTypes,
|
|
142
|
+
apiResourceFulfilled,
|
|
143
|
+
changeElementTree,
|
|
144
|
+
createElementTree,
|
|
145
|
+
deleteElementTree,
|
|
146
|
+
registerComponent,
|
|
147
|
+
registerComponentEffect,
|
|
148
|
+
registerComponentHandle,
|
|
149
|
+
registerComponentHandleEffect,
|
|
150
|
+
registerMeasurable,
|
|
151
|
+
registerMeasurableEffect,
|
|
152
|
+
registerPropControllers,
|
|
153
|
+
registerPropControllersHandle,
|
|
154
|
+
registerReactComponentEffect,
|
|
155
|
+
setIsInBuilder,
|
|
156
|
+
unregisterComponent,
|
|
157
|
+
unregisterMeasurable,
|
|
158
|
+
unregisterPropControllers,
|
|
159
|
+
unregisterPropControllersHandle,
|
|
160
|
+
updateAPIClientCache
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/actions/internal.ts"],"sourcesContent":["import { type Operation } from 'ot-json0'\nimport { type ThunkAction } from '@reduxjs/toolkit'\n\nimport { ControlInstance } from '@makeswift/controls'\n\nimport { ElementImperativeHandle } from '../../runtimes/react/element-imperative-handle'\n\nimport { type APIResource, APIResourceType, APIResourceLocale } from '../../api/types'\nimport { type Descriptor as PropControllerDescriptor } from '../../prop-controllers/descriptors'\n\nimport { type Measurable } from '../modules/box-models'\nimport { type ComponentMeta } from '../modules/components-meta'\nimport { type PropControllersHandle } from '../modules/prop-controller-handles'\nimport { type ComponentType } from '../modules/react-components'\nimport { type DescriptorsByComponentType } from '../modules/prop-controllers'\n\nimport { type DocumentPayload } from '../shared-api'\nimport { type SerializedState as APIClientCache } from '../makeswift-api-client'\n\nexport const InternalActionTypes = {\n API_RESOURCE_FULFILLED: 'API_RESOURCE_FULFILLED',\n\n CREATE_ELEMENT_TREE: 'CREATE_ELEMENT_TREE',\n DELETE_ELEMENT_TREE: 'DELETE_ELEMENT_TREE',\n CHANGE_ELEMENT_TREE: 'CHANGE_ELEMENT_TREE',\n\n REGISTER_COMPONENT: 'REGISTER_COMPONENT',\n UNREGISTER_COMPONENT: 'UNREGISTER_COMPONENT',\n\n REGISTER_COMPONENT_HANDLE: 'REGISTER_COMPONENT_HANDLE',\n UNREGISTER_COMPONENT_HANDLE: 'UNREGISTER_COMPONENT_HANDLE',\n\n REGISTER_MEASURABLE: 'REGISTER_MEASURABLE',\n UNREGISTER_MEASURABLE: 'UNREGISTER_MEASURABLE',\n\n REGISTER_PROP_CONTROLLERS: 'REGISTER_PROP_CONTROLLERS',\n UNREGISTER_PROP_CONTROLLERS: 'UNREGISTER_PROP_CONTROLLERS',\n\n REGISTER_PROP_CONTROLLERS_HANDLE: 'REGISTER_PROP_CONTROLLERS_HANDLE',\n UNREGISTER_PROP_CONTROLLERS_HANDLE: 'UNREGISTER_PROP_CONTROLLERS_HANDLE',\n\n REGISTER_REACT_COMPONENT: 'REGISTER_REACT_COMPONENT',\n UNREGISTER_REACT_COMPONENT: 'UNREGISTER_REACT_COMPONENT',\n\n SET_IS_IN_BUILDER: 'SET_IS_IN_BUILDER',\n\n UPDATE_API_CLIENT_CACHE: 'UPDATE_API_CLIENT_CACHE',\n} as const\n\ntype APIResourceFulfilledAction = {\n type: typeof InternalActionTypes.API_RESOURCE_FULFILLED\n payload: {\n resourceType: APIResourceType\n resourceId: string\n resource: APIResource | null\n locale?: string | null\n }\n}\n\ntype CreateElementTreeAction = {\n type: typeof InternalActionTypes.CREATE_ELEMENT_TREE\n payload: { document: DocumentPayload; descriptors: DescriptorsByComponentType }\n}\n\ntype DeleteElementTreeAction = {\n type: typeof InternalActionTypes.DELETE_ELEMENT_TREE\n payload: { documentKey: string }\n}\n\ntype ChangeElementTreeAction = {\n type: typeof InternalActionTypes.CHANGE_ELEMENT_TREE\n payload: {\n oldDocument: DocumentPayload\n newDocument: DocumentPayload\n descriptors: DescriptorsByComponentType\n operation: Operation\n }\n}\n\nexport type RegisterComponentAction = {\n type: typeof InternalActionTypes.REGISTER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n propControllerDescriptors: Record<string, PropControllerDescriptor>\n }\n}\n\nexport type UnregisterComponentAction = {\n type: typeof InternalActionTypes.UNREGISTER_COMPONENT\n payload: { type: string }\n}\n\ntype RegisterComponentHandleAction = {\n type: typeof InternalActionTypes.REGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string; componentHandle: ElementImperativeHandle }\n}\n\ntype UnregisterComponentHandleAction = {\n type: typeof InternalActionTypes.UNREGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterMeasurableAction = {\n type: typeof InternalActionTypes.REGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string; measurable: Measurable }\n}\n\ntype UnregisterMeasurableAction = {\n type: typeof InternalActionTypes.UNREGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterPropControllersHandleAction = {\n type: typeof InternalActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string; handle: PropControllersHandle }\n}\n\ntype UnregisterPropControllersHandleAction = {\n type: typeof InternalActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterPropControllersAction = {\n type: typeof InternalActionTypes.REGISTER_PROP_CONTROLLERS\n payload: {\n documentKey: string\n elementKey: string\n propControllers: Record<string, ControlInstance>\n }\n}\n\ntype UnregisterPropControllersAction = {\n type: typeof InternalActionTypes.UNREGISTER_PROP_CONTROLLERS\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterReactComponentAction = {\n type: typeof InternalActionTypes.REGISTER_REACT_COMPONENT\n payload: { type: string; component: ComponentType }\n}\n\ntype UnregisterReactComponentAction = {\n type: typeof InternalActionTypes.UNREGISTER_REACT_COMPONENT\n payload: { type: string }\n}\n\ntype SetIsInBuilderAction = {\n type: typeof InternalActionTypes.SET_IS_IN_BUILDER\n payload: boolean\n}\n\ntype UpdateAPIClientCache = {\n type: typeof InternalActionTypes.UPDATE_API_CLIENT_CACHE\n payload: APIClientCache\n}\n\nexport type InternalAction =\n | APIResourceFulfilledAction\n | CreateElementTreeAction\n | DeleteElementTreeAction\n | ChangeElementTreeAction\n | RegisterComponentAction\n | UnregisterComponentAction\n | RegisterComponentHandleAction\n | UnregisterComponentHandleAction\n | RegisterMeasurableAction\n | UnregisterMeasurableAction\n | RegisterPropControllersHandleAction\n | UnregisterPropControllersHandleAction\n | RegisterPropControllersAction\n | UnregisterPropControllersAction\n | RegisterReactComponentAction\n | UnregisterReactComponentAction\n | SetIsInBuilderAction\n | UpdateAPIClientCache\n\nexport function apiResourceFulfilled<T extends APIResourceType>(\n resourceType: T,\n resourceId: string,\n resource: APIResource | null,\n locale?: APIResourceLocale<T>,\n): APIResourceFulfilledAction {\n return {\n type: InternalActionTypes.API_RESOURCE_FULFILLED,\n payload: { resourceType, resourceId, resource, locale },\n }\n}\n\nexport function createElementTree(\n payload: CreateElementTreeAction['payload'],\n): CreateElementTreeAction {\n return {\n type: InternalActionTypes.CREATE_ELEMENT_TREE,\n payload,\n }\n}\n\nexport function deleteElementTree(\n payload: DeleteElementTreeAction['payload'],\n): DeleteElementTreeAction {\n return { type: InternalActionTypes.DELETE_ELEMENT_TREE, payload }\n}\n\nexport function changeElementTree(\n payload: ChangeElementTreeAction['payload'],\n): ChangeElementTreeAction {\n return {\n type: InternalActionTypes.CHANGE_ELEMENT_TREE,\n payload,\n }\n}\n\nexport function registerComponent(\n type: string,\n meta: ComponentMeta,\n propControllerDescriptors: Record<string, PropControllerDescriptor>,\n): RegisterComponentAction {\n return {\n type: InternalActionTypes.REGISTER_COMPONENT,\n payload: { type, meta, propControllerDescriptors },\n }\n}\n\nexport function unregisterComponent(type: string): UnregisterComponentAction {\n return { type: InternalActionTypes.UNREGISTER_COMPONENT, payload: { type } }\n}\n\nexport function registerComponentEffect(\n type: string,\n meta: ComponentMeta,\n propControllerDescriptors: Record<string, PropControllerDescriptor>,\n): ThunkAction<() => void, unknown, unknown, InternalAction> {\n return dispatch => {\n dispatch(registerComponent(type, meta, propControllerDescriptors))\n\n return () => {\n dispatch(unregisterComponent(type))\n }\n }\n}\n\nexport function registerComponentHandle(\n documentKey: string,\n elementKey: string,\n componentHandle: ElementImperativeHandle,\n): RegisterComponentHandleAction {\n return {\n type: InternalActionTypes.REGISTER_COMPONENT_HANDLE,\n payload: { documentKey, elementKey, componentHandle },\n }\n}\n\nfunction unregisterComponentHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterComponentHandleAction {\n return {\n type: InternalActionTypes.UNREGISTER_COMPONENT_HANDLE,\n payload: { documentKey, elementKey },\n }\n}\n\nexport function registerComponentHandleEffect(\n documentKey: string,\n elementKey: string,\n componentHandle: ElementImperativeHandle,\n): ThunkAction<() => void, unknown, unknown, InternalAction> {\n return dispatch => {\n dispatch(registerComponentHandle(documentKey, elementKey, componentHandle))\n\n return () => {\n dispatch(unregisterComponentHandle(documentKey, elementKey))\n }\n }\n}\n\nexport function registerMeasurable(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): RegisterMeasurableAction {\n return {\n type: InternalActionTypes.REGISTER_MEASURABLE,\n payload: { documentKey, elementKey, measurable },\n }\n}\n\nexport function unregisterMeasurable(\n documentKey: string,\n elementKey: string,\n): UnregisterMeasurableAction {\n return { type: InternalActionTypes.UNREGISTER_MEASURABLE, payload: { documentKey, elementKey } }\n}\n\nexport function registerMeasurableEffect(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): ThunkAction<() => void, unknown, unknown, InternalAction> {\n return dispatch => {\n dispatch(registerMeasurable(documentKey, elementKey, measurable))\n\n return () => {\n dispatch(unregisterMeasurable(documentKey, elementKey))\n }\n }\n}\n\nexport function registerPropControllersHandle(\n documentKey: string,\n elementKey: string,\n handle: PropControllersHandle,\n): RegisterPropControllersHandleAction {\n return {\n type: InternalActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE,\n payload: { documentKey, elementKey, handle },\n }\n}\n\nexport function unregisterPropControllersHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterPropControllersHandleAction {\n return {\n type: InternalActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE,\n payload: { documentKey, elementKey },\n }\n}\n\nexport function registerPropControllers(\n documentKey: string,\n elementKey: string,\n propControllers: Record<string, ControlInstance>,\n): RegisterPropControllersAction {\n return {\n type: InternalActionTypes.REGISTER_PROP_CONTROLLERS,\n payload: { documentKey, elementKey, propControllers },\n }\n}\n\nexport function unregisterPropControllers(\n documentKey: string,\n elementKey: string,\n): UnregisterPropControllersAction {\n return {\n type: InternalActionTypes.UNREGISTER_PROP_CONTROLLERS,\n payload: { documentKey, elementKey },\n }\n}\n\nfunction registerReactComponent(\n type: string,\n component: ComponentType,\n): RegisterReactComponentAction {\n return { type: InternalActionTypes.REGISTER_REACT_COMPONENT, payload: { type, component } }\n}\n\nfunction unregisterReactComponent(type: string): UnregisterReactComponentAction {\n return { type: InternalActionTypes.UNREGISTER_REACT_COMPONENT, payload: { type } }\n}\n\nexport function registerReactComponentEffect(\n type: string,\n component: ComponentType,\n): ThunkAction<() => void, unknown, unknown, InternalAction> {\n return dispatch => {\n dispatch(registerReactComponent(type, component))\n\n return () => {\n dispatch(unregisterReactComponent(type))\n }\n }\n}\n\nexport function setIsInBuilder(isInBuilder: boolean): SetIsInBuilderAction {\n return { type: InternalActionTypes.SET_IS_IN_BUILDER, payload: isInBuilder }\n}\n\nexport function updateAPIClientCache(payload: APIClientCache): UpdateAPIClientCache {\n return { type: InternalActionTypes.UPDATE_API_CLIENT_CACHE, payload }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -5,7 +5,6 @@ class MessageChannel {
|
|
|
5
5
|
appOrigin;
|
|
6
6
|
channel = null;
|
|
7
7
|
bufferedMessages = [];
|
|
8
|
-
connectionCheckIntervalID = null;
|
|
9
8
|
constructor({ appOrigin }) {
|
|
10
9
|
this.appOrigin = appOrigin;
|
|
11
10
|
}
|
|
@@ -16,12 +15,20 @@ class MessageChannel {
|
|
|
16
15
|
this.bufferedMessages.push([message, transferables]);
|
|
17
16
|
}
|
|
18
17
|
}
|
|
19
|
-
setup(onMessage) {
|
|
20
|
-
this.
|
|
18
|
+
setup({ onMessage }) {
|
|
19
|
+
const cleanupConnectionCheck = setupConnectionCheck(this.appOrigin);
|
|
21
20
|
const channel = new window.MessageChannel();
|
|
22
21
|
channel.port1.onmessage = onMessage;
|
|
23
22
|
window.parent.postMessage(channel.port2, this.appOrigin, [channel.port2]);
|
|
24
23
|
this.channel = channel.port1;
|
|
24
|
+
return () => {
|
|
25
|
+
cleanupConnectionCheck();
|
|
26
|
+
if (this.channel) {
|
|
27
|
+
this.channel.onmessage = null;
|
|
28
|
+
this.channel.close();
|
|
29
|
+
this.channel = null;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
25
32
|
}
|
|
26
33
|
dispatchBuffered() {
|
|
27
34
|
console.assert(this.channel != null, "channel is not setup");
|
|
@@ -30,38 +37,36 @@ class MessageChannel {
|
|
|
30
37
|
});
|
|
31
38
|
this.bufferedMessages = [];
|
|
32
39
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
}
|
|
41
|
+
function setupConnectionCheck(appOrigin) {
|
|
42
|
+
class Interval {
|
|
43
|
+
id = null;
|
|
44
|
+
setInterval(callback, delay) {
|
|
45
|
+
this.clear();
|
|
46
|
+
this.id = window.setInterval(callback, delay);
|
|
38
47
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
teardownConnectionCheck() {
|
|
45
|
-
window.removeEventListener("message", this.connectionCheckHandler);
|
|
46
|
-
if (this.connectionCheckIntervalID != null) {
|
|
47
|
-
window.clearInterval(this.connectionCheckIntervalID);
|
|
48
|
-
this.connectionCheckIntervalID = null;
|
|
48
|
+
clear() {
|
|
49
|
+
if (this.id != null) {
|
|
50
|
+
window.clearInterval(this.id);
|
|
51
|
+
this.id = null;
|
|
52
|
+
}
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (this.connectionCheckIntervalID != null) {
|
|
56
|
-
window.clearInterval(this.connectionCheckIntervalID);
|
|
57
|
-
this.connectionCheckIntervalID = null;
|
|
58
|
-
}
|
|
59
|
-
this.connectionCheckIntervalID = window.setInterval(() => {
|
|
55
|
+
const connectionCheckInterval = new Interval();
|
|
56
|
+
function connectionCheckHandler(event) {
|
|
57
|
+
if (event.origin === appOrigin && event.data.type === SharedActionTypes.MAKESWIFT_CONNECTION_INIT) {
|
|
58
|
+
connectionCheckInterval.setInterval(() => {
|
|
60
59
|
window.parent.postMessage(makeswiftConnectionCheck({ currentUrl: window.location.href }), {
|
|
61
|
-
targetOrigin:
|
|
60
|
+
targetOrigin: appOrigin
|
|
62
61
|
});
|
|
63
62
|
}, CONNECTION_PING_INTERVAL_MS);
|
|
64
63
|
}
|
|
64
|
+
}
|
|
65
|
+
window.addEventListener("message", connectionCheckHandler);
|
|
66
|
+
window.parent.postMessage(makeswiftConnectionInit(), { targetOrigin: appOrigin });
|
|
67
|
+
return () => {
|
|
68
|
+
window.removeEventListener("message", connectionCheckHandler);
|
|
69
|
+
connectionCheckInterval.clear();
|
|
65
70
|
};
|
|
66
71
|
}
|
|
67
72
|
export {
|
|
@@ -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
|
|
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({ currentUrl: window.location.href }), {\n targetOrigin: appOrigin,\n })\n }, CONNECTION_PING_INTERVAL_MS)\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,YAAY,MAAM;AACxC,eAAO,OAAO,YAAY,yBAAyB,EAAE,YAAY,OAAO,SAAS,KAAK,CAAC,GAAG;AAAA,UACxF,cAAc;AAAA,QAChB,CAAC;AAAA,MACH,GAAG,2BAA2B;AAAA,IAChC;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":[]}
|
|
@@ -8,14 +8,19 @@ class BuilderAPIProxy {
|
|
|
8
8
|
}
|
|
9
9
|
// low-level, action-based API
|
|
10
10
|
setup({ onHostAction }) {
|
|
11
|
-
this.messageChannel.setup(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const channelCleanup = this.messageChannel.setup({
|
|
12
|
+
onMessage: (event) => {
|
|
13
|
+
const action = event.data;
|
|
14
|
+
if (!isHostAction(action)) {
|
|
15
|
+
console.warn("Unexpected host action", action);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
onHostAction(action);
|
|
16
19
|
}
|
|
17
|
-
onHostAction(action);
|
|
18
20
|
});
|
|
21
|
+
return () => {
|
|
22
|
+
channelCleanup();
|
|
23
|
+
};
|
|
19
24
|
}
|
|
20
25
|
execute(action) {
|
|
21
26
|
if (hasTransferables(action)) {
|
|
@@ -28,9 +33,6 @@ class BuilderAPIProxy {
|
|
|
28
33
|
dispatchBuffered() {
|
|
29
34
|
this.messageChannel.dispatchBuffered();
|
|
30
35
|
}
|
|
31
|
-
teardown() {
|
|
32
|
-
this.messageChannel.teardown();
|
|
33
|
-
}
|
|
34
36
|
}
|
|
35
37
|
export {
|
|
36
38
|
BuilderAPIProxy
|
|
@@ -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 }):
|
|
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;AACrD,SAAS,sBAAsB;AAExB,MAAM,gBAAgB;AAAA,EACnB;AAAA,EAER,YAAY,EAAE,UAAU,GAA0B;AAChD,SAAK,iBAAiB,IAAI,eAAe,EAAE,UAAU,CAAC;AAAA,EACxD;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,WAAO,MAAM;AACX,qBAAe;AAAA,IACjB;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":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/mixins/setup-teardown.ts"],"sourcesContent":["import { type StoreEnhancer } from '@reduxjs/toolkit'\n\nexport interface SetupTeardownMixin {\n setup: () => void\n teardown: () => void\n}\n\nexport function withSetupTeardown(\n setup: () => void,\n teardown: () => void,\n): StoreEnhancer<SetupTeardownMixin> {\n return next => (reducer, preloadedState?) => ({\n ...next(reducer, preloadedState),\n setup,\n teardown,\n })\n}\n"],"mappings":"AAOO,SAAS,kBACd,OACA,UACmC;AACnC,SAAO,UAAQ,CAAC,SAAS,oBAAqB;AAAA,IAC5C,GAAG,KAAK,SAAS,cAAc;AAAA,IAC/B;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createBox as createBoxWithoutScroll,
|
|
3
|
+
getBox as getBoxWithoutScroll,
|
|
4
|
+
withScroll
|
|
5
|
+
} from "css-box-model";
|
|
6
|
+
import { ActionTypes, isKnownAction } from "../actions";
|
|
7
|
+
function parse(rawString) {
|
|
8
|
+
const value = Number(rawString.replace(/px$/, ""));
|
|
9
|
+
return Number.isFinite(value) ? value : 0;
|
|
10
|
+
}
|
|
11
|
+
function createBox(boxArgs) {
|
|
12
|
+
return withScroll(createBoxWithoutScroll(boxArgs));
|
|
13
|
+
}
|
|
14
|
+
function getBox(element) {
|
|
15
|
+
return withScroll(getBoxWithoutScroll(element));
|
|
16
|
+
}
|
|
17
|
+
function isMeasurable(value) {
|
|
18
|
+
if (value instanceof Element)
|
|
19
|
+
return true;
|
|
20
|
+
if (typeof value === "object" && value !== null && "getBoxModel" in value && typeof value.getBoxModel === "function") {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
function measure(measurable) {
|
|
26
|
+
if (measurable instanceof Element)
|
|
27
|
+
return getBox(measurable);
|
|
28
|
+
return measurable.getBoxModel();
|
|
29
|
+
}
|
|
30
|
+
function getInitialState() {
|
|
31
|
+
return { measurables: /* @__PURE__ */ new Map(), boxModels: /* @__PURE__ */ new Map() };
|
|
32
|
+
}
|
|
33
|
+
function getMeasurables(state) {
|
|
34
|
+
return state.measurables;
|
|
35
|
+
}
|
|
36
|
+
function getBoxModels(state) {
|
|
37
|
+
return state.boxModels;
|
|
38
|
+
}
|
|
39
|
+
function getBoxModel(state, documentKey, elementKey) {
|
|
40
|
+
return getBoxModels(state).get(documentKey)?.get(elementKey) ?? null;
|
|
41
|
+
}
|
|
42
|
+
function reducer(state = getInitialState(), action) {
|
|
43
|
+
if (!isKnownAction(action))
|
|
44
|
+
return state;
|
|
45
|
+
switch (action.type) {
|
|
46
|
+
case ActionTypes.REGISTER_MEASURABLE: {
|
|
47
|
+
const { documentKey, elementKey, measurable } = action.payload;
|
|
48
|
+
return {
|
|
49
|
+
...state,
|
|
50
|
+
measurables: new Map(state.measurables).set(
|
|
51
|
+
documentKey,
|
|
52
|
+
new Map(state.measurables.get(documentKey) ?? []).set(elementKey, measurable)
|
|
53
|
+
)
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
case ActionTypes.UNREGISTER_MEASURABLE: {
|
|
57
|
+
const { documentKey, elementKey } = action.payload;
|
|
58
|
+
const nextMeasurables = new Map(state.measurables.get(documentKey) ?? []);
|
|
59
|
+
const deleted = nextMeasurables.delete(elementKey);
|
|
60
|
+
return deleted ? { ...state, measurables: new Map(state.measurables).set(documentKey, nextMeasurables) } : state;
|
|
61
|
+
}
|
|
62
|
+
case ActionTypes.CHANGE_ELEMENT_BOX_MODELS: {
|
|
63
|
+
const { changedElementBoxModels } = action.payload;
|
|
64
|
+
if (changedElementBoxModels.size === 0)
|
|
65
|
+
return state;
|
|
66
|
+
const nextBoxModels = new Map(state.boxModels);
|
|
67
|
+
changedElementBoxModels.forEach((changedBoxModels, documentKey) => {
|
|
68
|
+
const nextDocumentBoxModels = new Map(nextBoxModels.get(documentKey) ?? []);
|
|
69
|
+
changedBoxModels.forEach((changedBoxModel, elementKey) => {
|
|
70
|
+
if (changedBoxModel == null)
|
|
71
|
+
nextDocumentBoxModels.delete(elementKey);
|
|
72
|
+
else
|
|
73
|
+
nextDocumentBoxModels.set(elementKey, changedBoxModel);
|
|
74
|
+
});
|
|
75
|
+
if (nextDocumentBoxModels.size > 0)
|
|
76
|
+
nextBoxModels.set(documentKey, nextDocumentBoxModels);
|
|
77
|
+
else
|
|
78
|
+
nextBoxModels.delete(documentKey);
|
|
79
|
+
});
|
|
80
|
+
return { ...state, boxModels: nextBoxModels };
|
|
81
|
+
}
|
|
82
|
+
default:
|
|
83
|
+
return state;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export {
|
|
87
|
+
createBox,
|
|
88
|
+
getBox,
|
|
89
|
+
getBoxModel,
|
|
90
|
+
getBoxModels,
|
|
91
|
+
getInitialState,
|
|
92
|
+
getMeasurables,
|
|
93
|
+
isMeasurable,
|
|
94
|
+
measure,
|
|
95
|
+
parse,
|
|
96
|
+
reducer
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=box-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/modules/box-models.ts"],"sourcesContent":["import { type BoxModel } from '@makeswift/controls'\nimport {\n createBox as createBoxWithoutScroll,\n CreateBoxArgs,\n getBox as getBoxWithoutScroll,\n withScroll,\n} from 'css-box-model'\n\nimport { type Action, type UnknownAction, ActionTypes, isKnownAction } from '../actions'\n\nexport type { BoxModel }\n\nexport function parse(rawString: string): number {\n const value = Number(rawString.replace(/px$/, ''))\n\n return Number.isFinite(value) ? value : 0\n}\n\nexport function createBox(boxArgs: CreateBoxArgs): BoxModel {\n return withScroll(createBoxWithoutScroll(boxArgs))\n}\n\nexport function getBox(element: Element): BoxModel {\n return withScroll(getBoxWithoutScroll(element))\n}\n\nexport interface BoxModelHandle {\n getBoxModel(): BoxModel | null\n}\n\nexport type Measurable = Element | BoxModelHandle\n\nexport function isMeasurable(value: unknown): value is Measurable {\n if (value instanceof Element) return true\n\n if (\n typeof value === 'object' &&\n value !== null &&\n 'getBoxModel' in value &&\n typeof (value as { getBoxModel: unknown }).getBoxModel === 'function'\n ) {\n return true\n }\n\n return false\n}\n\nexport function measure(measurable: Measurable): BoxModel | null {\n if (measurable instanceof Element) return getBox(measurable)\n\n return measurable.getBoxModel()\n}\n\nexport type State = {\n measurables: Map<string, Map<string, Measurable>>\n boxModels: Map<string, Map<string, BoxModel>>\n}\n\nexport function getInitialState(): State {\n return { measurables: new Map(), boxModels: new Map() }\n}\n\nexport function getMeasurables(state: State): Map<string, Map<string, Measurable>> {\n return state.measurables\n}\n\nexport function getBoxModels(state: State): Map<string, Map<string, BoxModel>> {\n return state.boxModels\n}\n\nexport function getBoxModel(\n state: State,\n documentKey: string,\n elementKey: string,\n): BoxModel | null {\n return getBoxModels(state).get(documentKey)?.get(elementKey) ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction) {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ActionTypes.REGISTER_MEASURABLE: {\n const { documentKey, elementKey, measurable } = action.payload\n\n return {\n ...state,\n measurables: new Map(state.measurables).set(\n documentKey,\n new Map(state.measurables.get(documentKey) ?? []).set(elementKey, measurable),\n ),\n }\n }\n\n case ActionTypes.UNREGISTER_MEASURABLE: {\n const { documentKey, elementKey } = action.payload\n const nextMeasurables = new Map(state.measurables.get(documentKey) ?? [])\n\n const deleted = nextMeasurables.delete(elementKey)\n\n return deleted\n ? { ...state, measurables: new Map(state.measurables).set(documentKey, nextMeasurables) }\n : state\n }\n\n case ActionTypes.CHANGE_ELEMENT_BOX_MODELS: {\n const { changedElementBoxModels } = action.payload\n\n if (changedElementBoxModels.size === 0) return state\n\n const nextBoxModels = new Map(state.boxModels)\n\n changedElementBoxModels.forEach((changedBoxModels, documentKey) => {\n const nextDocumentBoxModels = new Map(nextBoxModels.get(documentKey) ?? [])\n\n changedBoxModels.forEach((changedBoxModel, elementKey) => {\n if (changedBoxModel == null) nextDocumentBoxModels.delete(elementKey)\n else nextDocumentBoxModels.set(elementKey, changedBoxModel)\n })\n\n if (nextDocumentBoxModels.size > 0) nextBoxModels.set(documentKey, nextDocumentBoxModels)\n else nextBoxModels.delete(documentKey)\n })\n\n return { ...state, boxModels: nextBoxModels }\n }\n\n default:\n return state\n }\n}\n"],"mappings":"AACA;AAAA,EACE,aAAa;AAAA,EAEb,UAAU;AAAA,EACV;AAAA,OACK;AAEP,SAA0C,aAAa,qBAAqB;AAIrE,SAAS,MAAM,WAA2B;AAC/C,QAAM,QAAQ,OAAO,UAAU,QAAQ,OAAO,EAAE,CAAC;AAEjD,SAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAEO,SAAS,UAAU,SAAkC;AAC1D,SAAO,WAAW,uBAAuB,OAAO,CAAC;AACnD;AAEO,SAAS,OAAO,SAA4B;AACjD,SAAO,WAAW,oBAAoB,OAAO,CAAC;AAChD;AAQO,SAAS,aAAa,OAAqC;AAChE,MAAI,iBAAiB;AAAS,WAAO;AAErC,MACE,OAAO,UAAU,YACjB,UAAU,QACV,iBAAiB,SACjB,OAAQ,MAAmC,gBAAgB,YAC3D;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,QAAQ,YAAyC;AAC/D,MAAI,sBAAsB;AAAS,WAAO,OAAO,UAAU;AAE3D,SAAO,WAAW,YAAY;AAChC;AAOO,SAAS,kBAAyB;AACvC,SAAO,EAAE,aAAa,oBAAI,IAAI,GAAG,WAAW,oBAAI,IAAI,EAAE;AACxD;AAEO,SAAS,eAAe,OAAoD;AACjF,SAAO,MAAM;AACf;AAEO,SAAS,aAAa,OAAkD;AAC7E,SAAO,MAAM;AACf;AAEO,SAAS,YACd,OACA,aACA,YACiB;AACjB,SAAO,aAAa,KAAK,EAAE,IAAI,WAAW,GAAG,IAAI,UAAU,KAAK;AAClE;AAEO,SAAS,QAAQ,QAAe,gBAAgB,GAAG,QAAgC;AACxF,MAAI,CAAC,cAAc,MAAM;AAAG,WAAO;AAEnC,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,YAAY,qBAAqB;AACpC,YAAM,EAAE,aAAa,YAAY,WAAW,IAAI,OAAO;AAEvD,aAAO;AAAA,QACL,GAAG;AAAA,QACH,aAAa,IAAI,IAAI,MAAM,WAAW,EAAE;AAAA,UACtC;AAAA,UACA,IAAI,IAAI,MAAM,YAAY,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,IAAI,YAAY,UAAU;AAAA,QAC9E;AAAA,MACF;AAAA,IACF;AAAA,IAEA,KAAK,YAAY,uBAAuB;AACtC,YAAM,EAAE,aAAa,WAAW,IAAI,OAAO;AAC3C,YAAM,kBAAkB,IAAI,IAAI,MAAM,YAAY,IAAI,WAAW,KAAK,CAAC,CAAC;AAExE,YAAM,UAAU,gBAAgB,OAAO,UAAU;AAEjD,aAAO,UACH,EAAE,GAAG,OAAO,aAAa,IAAI,IAAI,MAAM,WAAW,EAAE,IAAI,aAAa,eAAe,EAAE,IACtF;AAAA,IACN;AAAA,IAEA,KAAK,YAAY,2BAA2B;AAC1C,YAAM,EAAE,wBAAwB,IAAI,OAAO;AAE3C,UAAI,wBAAwB,SAAS;AAAG,eAAO;AAE/C,YAAM,gBAAgB,IAAI,IAAI,MAAM,SAAS;AAE7C,8BAAwB,QAAQ,CAAC,kBAAkB,gBAAgB;AACjE,cAAM,wBAAwB,IAAI,IAAI,cAAc,IAAI,WAAW,KAAK,CAAC,CAAC;AAE1E,yBAAiB,QAAQ,CAAC,iBAAiB,eAAe;AACxD,cAAI,mBAAmB;AAAM,kCAAsB,OAAO,UAAU;AAAA;AAC/D,kCAAsB,IAAI,YAAY,eAAe;AAAA,QAC5D,CAAC;AAED,YAAI,sBAAsB,OAAO;AAAG,wBAAc,IAAI,aAAa,qBAAqB;AAAA;AACnF,wBAAc,OAAO,WAAW;AAAA,MACvC,CAAC;AAED,aAAO,EAAE,GAAG,OAAO,WAAW,cAAc;AAAA,IAC9C;AAAA,IAEA;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ActionTypes, isKnownAction } from "../actions";
|
|
2
|
+
function getElementImperativeHandles(state) {
|
|
3
|
+
return state;
|
|
4
|
+
}
|
|
5
|
+
function getInitialState() {
|
|
6
|
+
return /* @__PURE__ */ new Map();
|
|
7
|
+
}
|
|
8
|
+
function reducer(state = getInitialState(), action) {
|
|
9
|
+
if (!isKnownAction(action))
|
|
10
|
+
return state;
|
|
11
|
+
switch (action.type) {
|
|
12
|
+
case ActionTypes.REGISTER_COMPONENT_HANDLE:
|
|
13
|
+
return new Map(state).set(
|
|
14
|
+
action.payload.documentKey,
|
|
15
|
+
new Map(new Map(state.get(action.payload.documentKey) ?? [])).set(
|
|
16
|
+
action.payload.elementKey,
|
|
17
|
+
action.payload.componentHandle
|
|
18
|
+
)
|
|
19
|
+
);
|
|
20
|
+
case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {
|
|
21
|
+
const byElementKey = new Map(state.get(action.payload.documentKey) ?? []);
|
|
22
|
+
const deleted = byElementKey.delete(action.payload.elementKey);
|
|
23
|
+
if (!deleted)
|
|
24
|
+
return state;
|
|
25
|
+
return new Map(state).set(action.payload.documentKey, byElementKey);
|
|
26
|
+
}
|
|
27
|
+
default:
|
|
28
|
+
return state;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
getElementImperativeHandles,
|
|
33
|
+
reducer
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=element-imperative-handles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/modules/element-imperative-handles.ts"],"sourcesContent":["import { ElementImperativeHandle } from '../../runtimes/react/element-imperative-handle'\nimport { type Action, type UnknownAction, ActionTypes, isKnownAction } from '../actions'\n\ntype State = Map<string, Map<string, ElementImperativeHandle>>\n\nexport function getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return state\n}\n\nfunction getInitialState(): State {\n return new Map()\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE:\n return new Map(state).set(\n action.payload.documentKey,\n new Map(new Map(state.get(action.payload.documentKey) ?? [])).set(\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const byElementKey = new Map(state.get(action.payload.documentKey) ?? [])\n\n const deleted = byElementKey.delete(action.payload.elementKey)\n\n if (!deleted) return state\n\n return new Map(state).set(action.payload.documentKey, byElementKey)\n }\n\n default:\n return state\n }\n}\n"],"mappings":"AACA,SAA0C,aAAa,qBAAqB;AAIrE,SAAS,4BACd,OACmD;AACnD,SAAO;AACT;AAEA,SAAS,kBAAyB;AAChC,SAAO,oBAAI,IAAI;AACjB;AAEO,SAAS,QAAQ,QAAe,gBAAgB,GAAG,QAAuC;AAC/F,MAAI,CAAC,cAAc,MAAM;AAAG,WAAO;AAEnC,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,YAAY;AACf,aAAO,IAAI,IAAI,KAAK,EAAE;AAAA,QACpB,OAAO,QAAQ;AAAA,QACf,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,OAAO,QAAQ,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE;AAAA,UAC5D,OAAO,QAAQ;AAAA,UACf,OAAO,QAAQ;AAAA,QACjB;AAAA,MACF;AAAA,IAEF,KAAK,YAAY,6BAA6B;AAC5C,YAAM,eAAe,IAAI,IAAI,MAAM,IAAI,OAAO,QAAQ,WAAW,KAAK,CAAC,CAAC;AAExE,YAAM,UAAU,aAAa,OAAO,OAAO,QAAQ,UAAU;AAE7D,UAAI,CAAC;AAAS,eAAO;AAErB,aAAO,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,QAAQ,aAAa,YAAY;AAAA,IACpE;AAAA,IAEA;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { isKnownAction } from "../actions";
|
|
2
|
+
function getInitialState(isPreview = false) {
|
|
3
|
+
return isPreview;
|
|
4
|
+
}
|
|
5
|
+
function getIsPreview(state) {
|
|
6
|
+
return state;
|
|
7
|
+
}
|
|
8
|
+
function reducer(state = getInitialState(), action) {
|
|
9
|
+
if (!isKnownAction(action))
|
|
10
|
+
return state;
|
|
11
|
+
switch (action.type) {
|
|
12
|
+
default:
|
|
13
|
+
return state;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
getInitialState,
|
|
18
|
+
getIsPreview,
|
|
19
|
+
reducer
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=is-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/modules/is-preview.ts"],"sourcesContent":["import { type Action, type UnknownAction, isKnownAction } from '../actions'\n\nexport type State = boolean\n\nexport function getInitialState(isPreview = false): State {\n return isPreview\n}\n\nexport function getIsPreview(state: State): boolean {\n return state\n}\n\nexport function reducer(state = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n default:\n return state\n }\n}\n"],"mappings":"AAAA,SAA0C,qBAAqB;AAIxD,SAAS,gBAAgB,YAAY,OAAc;AACxD,SAAO;AACT;AAEO,SAAS,aAAa,OAAuB;AAClD,SAAO;AACT;AAEO,SAAS,QAAQ,QAAQ,gBAAgB,GAAG,QAAuC;AACxF,MAAI,CAAC,cAAc,MAAM;AAAG,WAAO;AAEnC,UAAQ,OAAO,MAAM;AAAA,IACnB;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ActionTypes, isKnownAction } from "../actions";
|
|
2
|
+
function getInitialState() {
|
|
3
|
+
return { pointer: null };
|
|
4
|
+
}
|
|
5
|
+
function getPointer(state) {
|
|
6
|
+
return state.pointer;
|
|
7
|
+
}
|
|
8
|
+
function reducer(state = getInitialState(), action) {
|
|
9
|
+
if (!isKnownAction(action))
|
|
10
|
+
return state;
|
|
11
|
+
switch (action.type) {
|
|
12
|
+
case ActionTypes.BUILDER_POINTER_MOVE:
|
|
13
|
+
return { ...state, pointer: action.payload.pointer };
|
|
14
|
+
default:
|
|
15
|
+
return state;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
getPointer,
|
|
20
|
+
reducer
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=pointer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/modules/pointer.ts"],"sourcesContent":["import { type Action, type UnknownAction, ActionTypes, isKnownAction } from '../actions'\n\nexport type Point = { x: number; y: number }\n\ntype State = {\n pointer: Point | null\n}\n\nfunction getInitialState(): State {\n return { pointer: null }\n}\n\nexport function getPointer(state: State): Point | null {\n return state.pointer\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ActionTypes.BUILDER_POINTER_MOVE:\n return { ...state, pointer: action.payload.pointer }\n\n default:\n return state\n }\n}\n"],"mappings":"AAAA,SAA0C,aAAa,qBAAqB;AAQ5E,SAAS,kBAAyB;AAChC,SAAO,EAAE,SAAS,KAAK;AACzB;AAEO,SAAS,WAAW,OAA4B;AACrD,SAAO,MAAM;AACf;AAEO,SAAS,QAAQ,QAAe,gBAAgB,GAAG,QAAuC;AAC/F,MAAI,CAAC,cAAc,MAAM;AAAG,WAAO;AAEnC,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,YAAY;AACf,aAAO,EAAE,GAAG,OAAO,SAAS,OAAO,QAAQ,QAAQ;AAAA,IAErD;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { removeIn, setIn } from "immutable";
|
|
2
|
+
import * as ReadOnlyDocuments from "./read-only-documents";
|
|
3
|
+
import { ActionTypes, isKnownAction } from "../actions";
|
|
4
|
+
import { isElementReference } from "./read-only-documents";
|
|
5
|
+
function apply(data, operation) {
|
|
6
|
+
let applied = data;
|
|
7
|
+
operation.forEach((component) => {
|
|
8
|
+
if (component.ld != null)
|
|
9
|
+
applied = removeIn(applied, component.p);
|
|
10
|
+
if (component.od != null)
|
|
11
|
+
applied = removeIn(applied, component.p);
|
|
12
|
+
if (component.li != null)
|
|
13
|
+
applied = setIn(applied, component.p, component.li);
|
|
14
|
+
if (component.oi != null)
|
|
15
|
+
applied = setIn(applied, component.p, component.oi);
|
|
16
|
+
});
|
|
17
|
+
return applied;
|
|
18
|
+
}
|
|
19
|
+
function getInitialState({
|
|
20
|
+
documents = []
|
|
21
|
+
} = {}) {
|
|
22
|
+
return ReadOnlyDocuments.getInitialState({ documents });
|
|
23
|
+
}
|
|
24
|
+
function getReadOnlyDocumentsStateSlice(state) {
|
|
25
|
+
return state;
|
|
26
|
+
}
|
|
27
|
+
function getDocument(state, documentKey) {
|
|
28
|
+
return ReadOnlyDocuments.getDocument(getReadOnlyDocumentsStateSlice(state), documentKey);
|
|
29
|
+
}
|
|
30
|
+
function getDocuments(state) {
|
|
31
|
+
return ReadOnlyDocuments.getDocuments(getReadOnlyDocumentsStateSlice(state));
|
|
32
|
+
}
|
|
33
|
+
function reducer(state = getInitialState(), action) {
|
|
34
|
+
const nextState = ReadOnlyDocuments.reducer(state, action);
|
|
35
|
+
if (!isKnownAction(action))
|
|
36
|
+
return state;
|
|
37
|
+
switch (action.type) {
|
|
38
|
+
case ActionTypes.CHANGE_DOCUMENT: {
|
|
39
|
+
const document = getDocument(nextState, action.payload.documentKey);
|
|
40
|
+
if (document == null)
|
|
41
|
+
return nextState;
|
|
42
|
+
const currentRootElement = ReadOnlyDocuments.getRootElement(document);
|
|
43
|
+
const nextRootElement = apply(currentRootElement, action.payload.operation);
|
|
44
|
+
return currentRootElement === nextRootElement ? nextState : new Map(nextState).set(action.payload.documentKey, {
|
|
45
|
+
...document,
|
|
46
|
+
rootElement: nextRootElement
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
default:
|
|
50
|
+
return nextState;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
getDocument,
|
|
55
|
+
getDocuments,
|
|
56
|
+
getInitialState,
|
|
57
|
+
isElementReference,
|
|
58
|
+
reducer
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=read-write-documents.js.map
|