@makeswift/runtime 0.26.0 → 0.26.1-canary.1
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/builder/index.js +22 -18
- package/dist/cjs/builder/index.js.map +1 -1
- package/dist/cjs/builder/serialization/control-serialization.js +7 -3
- package/dist/cjs/builder/serialization/control-serialization.js.map +1 -1
- package/dist/cjs/controls/rich-text-v2/rich-text-v2.js +0 -21
- package/dist/cjs/controls/rich-text-v2/rich-text-v2.js.map +1 -1
- package/dist/cjs/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js +72 -0
- package/dist/cjs/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js.map +1 -0
- package/dist/cjs/controls/visitors/message-port-serializer/function-serialization.js +79 -0
- package/dist/cjs/controls/visitors/message-port-serializer/function-serialization.js.map +1 -0
- package/dist/cjs/controls/visitors/message-port-serializer/index.js +36 -0
- package/dist/cjs/controls/visitors/message-port-serializer/index.js.map +1 -0
- package/dist/cjs/next/hooks/use-router-locale-sync.js +2 -2
- package/dist/cjs/next/hooks/use-router-locale-sync.js.map +1 -1
- package/dist/cjs/runtimes/react/components/ElementRegistration.js +3 -2
- package/dist/cjs/runtimes/react/components/ElementRegistration.js.map +1 -1
- package/dist/cjs/runtimes/react/components/PreviewProvider.js +9 -3
- package/dist/cjs/runtimes/react/components/PreviewProvider.js.map +1 -1
- package/dist/cjs/runtimes/react/components/RuntimeProvider.js +1 -1
- package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
- package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js +5 -10
- package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-cache-data.js +2 -2
- package/dist/cjs/runtimes/react/hooks/use-cache-data.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-register-document.js +4 -3
- package/dist/cjs/runtimes/react/hooks/use-register-document.js.map +1 -1
- package/dist/cjs/runtimes/react/react-runtime-core.js +3 -3
- package/dist/cjs/runtimes/react/react-runtime-core.js.map +1 -1
- package/dist/cjs/state/actions/index.js +42 -0
- package/dist/cjs/state/actions/index.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/actions.js +149 -0
- package/dist/cjs/state/builder-api/actions.js.map +1 -0
- package/dist/cjs/state/builder-api/message-channel.js +62 -0
- package/dist/cjs/state/builder-api/message-channel.js.map +1 -0
- package/dist/cjs/state/builder-api/proxy.js +62 -0
- package/dist/cjs/state/builder-api/proxy.js.map +1 -0
- package/dist/cjs/state/host-api.js +117 -0
- package/dist/cjs/state/host-api.js.map +1 -0
- package/dist/cjs/state/makeswift-api-client.js +4 -2
- package/dist/cjs/state/makeswift-api-client.js.map +1 -1
- package/dist/cjs/state/react-builder-preview.js +73 -97
- package/dist/cjs/state/react-builder-preview.js.map +1 -1
- package/dist/cjs/state/react-page.js +5 -4
- package/dist/cjs/state/react-page.js.map +1 -1
- package/dist/cjs/state/shared-api.js +79 -0
- package/dist/cjs/state/shared-api.js.map +1 -0
- package/dist/esm/api-handler/handlers/manifest.js +1 -1
- package/dist/esm/builder/index.js +15 -9
- package/dist/esm/builder/index.js.map +1 -1
- package/dist/esm/builder/serialization/control-serialization.js +10 -3
- package/dist/esm/builder/serialization/control-serialization.js.map +1 -1
- package/dist/esm/controls/rich-text-v2/rich-text-v2.js +0 -22
- package/dist/esm/controls/rich-text-v2/rich-text-v2.js.map +1 -1
- package/dist/esm/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js +53 -0
- package/dist/esm/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js.map +1 -0
- package/dist/esm/controls/visitors/message-port-serializer/function-serialization.js +52 -0
- package/dist/esm/controls/visitors/message-port-serializer/function-serialization.js.map +1 -0
- package/dist/esm/controls/visitors/message-port-serializer/index.js +13 -0
- package/dist/esm/controls/visitors/message-port-serializer/index.js.map +1 -0
- package/dist/esm/next/hooks/use-router-locale-sync.js +1 -1
- package/dist/esm/next/hooks/use-router-locale-sync.js.map +1 -1
- package/dist/esm/runtimes/react/components/ElementRegistration.js +2 -1
- package/dist/esm/runtimes/react/components/ElementRegistration.js.map +1 -1
- package/dist/esm/runtimes/react/components/PreviewProvider.js +9 -3
- package/dist/esm/runtimes/react/components/PreviewProvider.js.map +1 -1
- package/dist/esm/runtimes/react/components/RuntimeProvider.js +1 -1
- package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
- package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js +5 -10
- package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-cache-data.js +1 -1
- package/dist/esm/runtimes/react/hooks/use-cache-data.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-register-document.js +2 -5
- package/dist/esm/runtimes/react/hooks/use-register-document.js.map +1 -1
- package/dist/esm/runtimes/react/react-runtime-core.js +1 -1
- package/dist/esm/runtimes/react/react-runtime-core.js.map +1 -1
- package/dist/esm/state/actions/index.js +17 -0
- package/dist/esm/state/actions/index.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/actions.js +109 -0
- package/dist/esm/state/builder-api/actions.js.map +1 -0
- package/dist/esm/state/builder-api/message-channel.js +38 -0
- package/dist/esm/state/builder-api/message-channel.js.map +1 -0
- package/dist/esm/state/builder-api/proxy.js +38 -0
- package/dist/esm/state/builder-api/proxy.js.map +1 -0
- package/dist/esm/state/host-api.js +81 -0
- package/dist/esm/state/host-api.js.map +1 -0
- package/dist/esm/state/makeswift-api-client.js +3 -1
- package/dist/esm/state/makeswift-api-client.js.map +1 -1
- package/dist/esm/state/react-builder-preview.js +72 -115
- package/dist/esm/state/react-builder-preview.js.map +1 -1
- package/dist/esm/state/react-page.js +3 -7
- package/dist/esm/state/react-page.js.map +1 -1
- package/dist/esm/state/shared-api.js +49 -0
- package/dist/esm/state/shared-api.js.map +1 -0
- package/dist/types/builder/index.d.ts +3 -2
- package/dist/types/builder/index.d.ts.map +1 -1
- package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -1
- package/dist/types/client/index.d.ts +16 -16
- package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +1 -2
- package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
- package/dist/types/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.d.ts +9 -0
- package/dist/types/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.d.ts.map +1 -0
- package/dist/types/controls/visitors/message-port-serializer/function-serialization.d.ts +16 -0
- package/dist/types/controls/visitors/message-port-serializer/function-serialization.d.ts.map +1 -0
- package/dist/types/controls/visitors/message-port-serializer/function-serialization.test.d.ts +2 -0
- package/dist/types/controls/visitors/message-port-serializer/function-serialization.test.d.ts.map +1 -0
- package/dist/types/controls/visitors/message-port-serializer/index.d.ts +3 -0
- package/dist/types/controls/visitors/message-port-serializer/index.d.ts.map +1 -0
- package/dist/types/locale.d.ts +1 -1
- package/dist/types/runtimes/react/components/ElementRegistration.d.ts.map +1 -1
- package/dist/types/runtimes/react/components/PreviewProvider.d.ts +3 -1
- package/dist/types/runtimes/react/components/PreviewProvider.d.ts.map +1 -1
- package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts.map +1 -1
- package/dist/types/runtimes/react/hooks/use-register-document.d.ts.map +1 -1
- package/dist/types/runtimes/react/hooks/use-store.d.ts +1 -1
- package/dist/types/runtimes/react/react-runtime-core.d.ts.map +1 -1
- package/dist/types/slate/LinkPlugin/getValue.d.ts.map +1 -1
- package/dist/types/slate/LinkPlugin/index.d.ts.map +1 -1
- package/dist/types/slate/TypographyPlugin/getValue.d.ts.map +1 -1
- package/dist/types/slate/TypographyPlugin/index.d.ts.map +1 -1
- package/dist/types/state/actions/index.d.ts +58 -0
- package/dist/types/state/actions/index.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/actions.d.ts +157 -0
- package/dist/types/state/builder-api/actions.d.ts.map +1 -0
- package/dist/types/state/builder-api/message-channel.d.ts +13 -0
- package/dist/types/state/builder-api/message-channel.d.ts.map +1 -0
- package/dist/types/state/builder-api/proxy.d.ts +15 -0
- package/dist/types/state/builder-api/proxy.d.ts.map +1 -0
- package/dist/types/state/host-api.d.ts +111 -0
- package/dist/types/state/host-api.d.ts.map +1 -0
- package/dist/types/state/makeswift-api-client.d.ts.map +1 -1
- package/dist/types/state/react-builder-preview.d.ts +5 -7
- package/dist/types/state/react-builder-preview.d.ts.map +1 -1
- package/dist/types/state/react-page.d.ts.map +1 -1
- package/dist/types/state/shared-api.d.ts +69 -0
- package/dist/types/state/shared-api.d.ts.map +1 -0
- package/package.json +4 -4
- package/dist/cjs/state/actions.js +0 -423
- package/dist/cjs/state/actions.js.map +0 -1
- package/dist/esm/state/actions.js +0 -349
- package/dist/esm/state/actions.js.map +0 -1
- package/dist/types/state/actions.d.ts +0 -461
- package/dist/types/state/actions.d.ts.map +0 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ControlDefinition,
|
|
3
|
+
serializeObject,
|
|
4
|
+
ControlSerializationVisitor,
|
|
5
|
+
isFunction
|
|
6
|
+
} from "@makeswift/controls";
|
|
7
|
+
import { RichTextV2Definition } from "../../rich-text-v2";
|
|
8
|
+
import { serializeFunction } from "./function-serialization";
|
|
9
|
+
class ClientMessagePortSerializationVisitor extends ControlSerializationVisitor {
|
|
10
|
+
transferables = [];
|
|
11
|
+
constructor() {
|
|
12
|
+
const serializeFunctionPlugin = {
|
|
13
|
+
match: isFunction,
|
|
14
|
+
serialize: (val) => {
|
|
15
|
+
const r = serializeFunction(val);
|
|
16
|
+
this.transferables.push(r);
|
|
17
|
+
return r;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const serializeDefinitionPlugin = {
|
|
21
|
+
match: (val) => val instanceof ControlDefinition,
|
|
22
|
+
serialize: (val) => val.accept(this)
|
|
23
|
+
};
|
|
24
|
+
super([serializeFunctionPlugin, serializeDefinitionPlugin]);
|
|
25
|
+
}
|
|
26
|
+
getTransferables() {
|
|
27
|
+
return [...this.transferables];
|
|
28
|
+
}
|
|
29
|
+
visitRichTextV2(def) {
|
|
30
|
+
const { plugins, ...config } = def.config;
|
|
31
|
+
const pluginDefs = plugins.map(
|
|
32
|
+
({ control }) => control ? {
|
|
33
|
+
control: {
|
|
34
|
+
definition: control.definition,
|
|
35
|
+
// FIXME: remove getValue/onChange stubs once we released a version of the builder
|
|
36
|
+
// built against the runtime where these can be optional
|
|
37
|
+
getValue: () => void 0,
|
|
38
|
+
onChange: () => {
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
} : {}
|
|
42
|
+
);
|
|
43
|
+
const serialized = serializeObject(
|
|
44
|
+
{ config: { ...config, plugins: pluginDefs } },
|
|
45
|
+
this.serializationPlugins
|
|
46
|
+
);
|
|
47
|
+
return { ...serialized, type: RichTextV2Definition.type };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export {
|
|
51
|
+
ClientMessagePortSerializationVisitor
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=client-message-port-serialization-visitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.ts"],"sourcesContent":["import {\n AnyFunction,\n ControlDefinition,\n SerializedRecord,\n serializeObject,\n SerializationPlugin,\n ControlSerializationVisitor,\n isFunction,\n} from '@makeswift/controls'\n\nimport { RichTextV2Definition } from '../../rich-text-v2'\n\nimport { serializeFunction } from './function-serialization'\n\nexport class ClientMessagePortSerializationVisitor extends ControlSerializationVisitor {\n private transferables: Transferable[] = []\n\n constructor() {\n const serializeFunctionPlugin: SerializationPlugin<AnyFunction> = {\n match: isFunction,\n serialize: (val: AnyFunction) => {\n const r = serializeFunction(val)\n this.transferables.push(r)\n return r\n },\n }\n\n const serializeDefinitionPlugin: SerializationPlugin<ControlDefinition> = {\n match: (val: unknown) => val instanceof ControlDefinition,\n serialize: (val: ControlDefinition) => val.accept(this),\n }\n\n super([serializeFunctionPlugin, serializeDefinitionPlugin])\n }\n\n getTransferables(): Transferable[] {\n return [...this.transferables]\n }\n\n visitRichTextV2(def: RichTextV2Definition): SerializedRecord {\n const { plugins, ...config } = def.config\n\n // serialize only the plugin control definition, if any\n const pluginDefs = plugins.map(({ control }) =>\n control\n ? {\n control: {\n definition: control.definition,\n // FIXME: remove getValue/onChange stubs once we released a version of the builder\n // built against the runtime where these can be optional\n getValue: () => undefined,\n onChange: () => {},\n },\n }\n : {},\n )\n\n const serialized = serializeObject(\n { config: { ...config, plugins: pluginDefs } },\n this.serializationPlugins,\n ) as SerializedRecord\n\n return { ...serialized, type: RichTextV2Definition.type }\n }\n}\n"],"mappings":"AAAA;AAAA,EAEE;AAAA,EAEA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,4BAA4B;AAErC,SAAS,yBAAyB;AAE3B,MAAM,8CAA8C,4BAA4B;AAAA,EAC7E,gBAAgC,CAAC;AAAA,EAEzC,cAAc;AACZ,UAAM,0BAA4D;AAAA,MAChE,OAAO;AAAA,MACP,WAAW,CAAC,QAAqB;AAC/B,cAAM,IAAI,kBAAkB,GAAG;AAC/B,aAAK,cAAc,KAAK,CAAC;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,4BAAoE;AAAA,MACxE,OAAO,CAAC,QAAiB,eAAe;AAAA,MACxC,WAAW,CAAC,QAA2B,IAAI,OAAO,IAAI;AAAA,IACxD;AAEA,UAAM,CAAC,yBAAyB,yBAAyB,CAAC;AAAA,EAC5D;AAAA,EAEA,mBAAmC;AACjC,WAAO,CAAC,GAAG,KAAK,aAAa;AAAA,EAC/B;AAAA,EAEA,gBAAgB,KAA6C;AAC3D,UAAM,EAAE,SAAS,GAAG,OAAO,IAAI,IAAI;AAGnC,UAAM,aAAa,QAAQ;AAAA,MAAI,CAAC,EAAE,QAAQ,MACxC,UACI;AAAA,QACE,SAAS;AAAA,UACP,YAAY,QAAQ;AAAA;AAAA;AAAA,UAGpB,UAAU,MAAM;AAAA,UAChB,UAAU,MAAM;AAAA,UAAC;AAAA,QACnB;AAAA,MACF,IACA,CAAC;AAAA,IACP;AAEA,UAAM,aAAa;AAAA,MACjB,EAAE,QAAQ,EAAE,GAAG,QAAQ,SAAS,WAAW,EAAE;AAAA,MAC7C,KAAK;AAAA,IACP;AAEA,WAAO,EAAE,GAAG,YAAY,MAAM,qBAAqB,KAAK;AAAA,EAC1D;AACF;","names":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
function isSerializedFunction(value) {
|
|
2
|
+
return value instanceof MessagePort;
|
|
3
|
+
}
|
|
4
|
+
function serializeFunction(func) {
|
|
5
|
+
const messageChannel = new MessageChannel();
|
|
6
|
+
messageChannel.port1.onmessage = ({ data: [callId, args] }) => {
|
|
7
|
+
Promise.resolve().then(() => func.apply(null, args)).then((result) => messageChannel.port1.postMessage([callId, result]));
|
|
8
|
+
};
|
|
9
|
+
return messageChannel.port2;
|
|
10
|
+
}
|
|
11
|
+
function onmessageHandler() {
|
|
12
|
+
let nextCallId = 0;
|
|
13
|
+
const calls = /* @__PURE__ */ new Map();
|
|
14
|
+
const result = ({ data: [callId, result2] }) => {
|
|
15
|
+
calls.get(callId)?.(result2);
|
|
16
|
+
calls.delete(callId);
|
|
17
|
+
};
|
|
18
|
+
result.newCall = (resolve) => {
|
|
19
|
+
const callId = nextCallId++;
|
|
20
|
+
calls.set(callId, resolve);
|
|
21
|
+
return callId;
|
|
22
|
+
};
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
function deserializeFunction(serializedFunction) {
|
|
26
|
+
if (serializedFunction.onmessage == null) {
|
|
27
|
+
serializedFunction.onmessage = onmessageHandler();
|
|
28
|
+
}
|
|
29
|
+
return function deserializedFunction(...args) {
|
|
30
|
+
return new Promise((resolve) => {
|
|
31
|
+
const { newCall } = serializedFunction.onmessage;
|
|
32
|
+
if (newCall == null) {
|
|
33
|
+
throw new Error(
|
|
34
|
+
`Deserialized function call failed: 'onmessage' handler is missing 'newCall' method`
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
const callId = newCall(resolve);
|
|
38
|
+
serializedFunction.postMessage([callId, args]);
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const functionDeserializationPlugin = {
|
|
43
|
+
match: isSerializedFunction,
|
|
44
|
+
deserialize: (value) => deserializeFunction(value)
|
|
45
|
+
};
|
|
46
|
+
export {
|
|
47
|
+
deserializeFunction,
|
|
48
|
+
functionDeserializationPlugin,
|
|
49
|
+
isSerializedFunction,
|
|
50
|
+
serializeFunction
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=function-serialization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/controls/visitors/message-port-serializer/function-serialization.ts"],"sourcesContent":["import {\n DeserializationPlugin,\n type AnyFunction,\n type SerializedFunctionReturnType,\n type DeserializedFunction,\n} from '@makeswift/controls'\n\ndeclare const SerializedFunctionTag: unique symbol\n\ntype ResolveCallPromise<T extends AnyFunction> = (value: SerializedFunctionReturnType<T>) => void\n\ntype OnMessageHandler<T extends AnyFunction> = MessagePort['onmessage'] & {\n newCall?(resolve: ResolveCallPromise<T>): number\n}\n\nexport type SerializedFunction<T extends AnyFunction> = MessagePort & {\n onmessage: OnMessageHandler<T>\n readonly [SerializedFunctionTag]: T\n}\n\nexport function isSerializedFunction(value: any): value is SerializedFunction<AnyFunction> {\n return value instanceof MessagePort\n}\n\ntype CallID = number\n\nexport function serializeFunction<T extends AnyFunction>(func: T): SerializedFunction<T> {\n type CallMessageEvent = MessageEvent<[CallID, Parameters<T>]>\n\n const messageChannel = new MessageChannel()\n\n messageChannel.port1.onmessage = ({ data: [callId, args] }: CallMessageEvent) => {\n Promise.resolve()\n .then(() => func.apply(null, args))\n .then(result => messageChannel.port1.postMessage([callId, result]))\n }\n\n return messageChannel.port2 as SerializedFunction<T>\n}\n\nfunction onmessageHandler<T extends AnyFunction>(): OnMessageHandler<T> {\n type ResultMessageEvent = MessageEvent<[CallID, SerializedFunctionReturnType<T>]>\n let nextCallId = 0\n const calls = new Map<CallID, ResolveCallPromise<T>>()\n\n const result: OnMessageHandler<T> = ({ data: [callId, result] }: ResultMessageEvent) => {\n calls.get(callId)?.(result)\n calls.delete(callId)\n }\n\n result.newCall = (resolve: ResolveCallPromise<T>) => {\n const callId = nextCallId++\n calls.set(callId, resolve)\n return callId\n }\n\n return result\n}\n\nexport function deserializeFunction<T extends AnyFunction>(\n serializedFunction: SerializedFunction<T>,\n): DeserializedFunction<T> {\n if (serializedFunction.onmessage == null) {\n serializedFunction.onmessage = onmessageHandler<T>()\n }\n\n return function deserializedFunction(...args) {\n return new Promise(resolve => {\n const { newCall } = serializedFunction.onmessage\n if (newCall == null) {\n throw new Error(\n `Deserialized function call failed: 'onmessage' handler is missing 'newCall' method`,\n )\n }\n\n const callId = newCall(resolve)\n serializedFunction.postMessage([callId, args])\n })\n }\n}\n\nexport const functionDeserializationPlugin: DeserializationPlugin<\n SerializedFunction<AnyFunction>,\n DeserializedFunction<AnyFunction>\n> = {\n match: isSerializedFunction,\n deserialize: value => deserializeFunction(value),\n}\n"],"mappings":"AAoBO,SAAS,qBAAqB,OAAsD;AACzF,SAAO,iBAAiB;AAC1B;AAIO,SAAS,kBAAyC,MAAgC;AAGvF,QAAM,iBAAiB,IAAI,eAAe;AAE1C,iBAAe,MAAM,YAAY,CAAC,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,MAAwB;AAC/E,YAAQ,QAAQ,EACb,KAAK,MAAM,KAAK,MAAM,MAAM,IAAI,CAAC,EACjC,KAAK,YAAU,eAAe,MAAM,YAAY,CAAC,QAAQ,MAAM,CAAC,CAAC;AAAA,EACtE;AAEA,SAAO,eAAe;AACxB;AAEA,SAAS,mBAA+D;AAEtE,MAAI,aAAa;AACjB,QAAM,QAAQ,oBAAI,IAAmC;AAErD,QAAM,SAA8B,CAAC,EAAE,MAAM,CAAC,QAAQA,OAAM,EAAE,MAA0B;AACtF,UAAM,IAAI,MAAM,IAAIA,OAAM;AAC1B,UAAM,OAAO,MAAM;AAAA,EACrB;AAEA,SAAO,UAAU,CAAC,YAAmC;AACnD,UAAM,SAAS;AACf,UAAM,IAAI,QAAQ,OAAO;AACzB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,oBACd,oBACyB;AACzB,MAAI,mBAAmB,aAAa,MAAM;AACxC,uBAAmB,YAAY,iBAAoB;AAAA,EACrD;AAEA,SAAO,SAAS,wBAAwB,MAAM;AAC5C,WAAO,IAAI,QAAQ,aAAW;AAC5B,YAAM,EAAE,QAAQ,IAAI,mBAAmB;AACvC,UAAI,WAAW,MAAM;AACnB,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,YAAM,SAAS,QAAQ,OAAO;AAC9B,yBAAmB,YAAY,CAAC,QAAQ,IAAI,CAAC;AAAA,IAC/C,CAAC;AAAA,EACH;AACF;AAEO,MAAM,gCAGT;AAAA,EACF,OAAO;AAAA,EACP,aAAa,WAAS,oBAAoB,KAAK;AACjD;","names":["result"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ClientMessagePortSerializationVisitor } from "./client-message-port-serialization-visitor";
|
|
2
|
+
import {
|
|
3
|
+
serializeFunction,
|
|
4
|
+
deserializeFunction,
|
|
5
|
+
functionDeserializationPlugin
|
|
6
|
+
} from "./function-serialization";
|
|
7
|
+
export {
|
|
8
|
+
ClientMessagePortSerializationVisitor,
|
|
9
|
+
deserializeFunction,
|
|
10
|
+
functionDeserializationPlugin,
|
|
11
|
+
serializeFunction
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/controls/visitors/message-port-serializer/index.ts"],"sourcesContent":["export { ClientMessagePortSerializationVisitor } from './client-message-port-serialization-visitor'\nexport {\n serializeFunction,\n deserializeFunction,\n functionDeserializationPlugin,\n} from './function-serialization'\n"],"mappings":"AAAA,SAAS,6CAA6C;AACtD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useRouter as usePagesRouter } from "next/router";
|
|
2
2
|
import { P, match } from "ts-pattern";
|
|
3
3
|
import { useEffect } from "react";
|
|
4
|
-
import { setLocale } from "../../state/
|
|
4
|
+
import { setLocale } from "../../state/shared-api";
|
|
5
5
|
import { useDispatch } from "../../runtimes/react/hooks/use-dispatch";
|
|
6
6
|
function useRouter() {
|
|
7
7
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/next/hooks/use-router-locale-sync.ts"],"sourcesContent":["import { useRouter as usePagesRouter } from 'next/router'\nimport { P, match } from 'ts-pattern'\nimport { useEffect } from 'react'\n\nimport { setLocale } from '../../state/
|
|
1
|
+
{"version":3,"sources":["../../../../src/next/hooks/use-router-locale-sync.ts"],"sourcesContent":["import { useRouter as usePagesRouter } from 'next/router'\nimport { P, match } from 'ts-pattern'\nimport { useEffect } from 'react'\n\nimport { setLocale } from '../../state/shared-api'\nimport { useDispatch } from '../../runtimes/react/hooks/use-dispatch'\n\nfunction useRouter() {\n try {\n const router = usePagesRouter()\n\n return router\n } catch (e) {\n return\n }\n}\n\nexport const useRouterLocaleSync = () => {\n const router = useRouter()\n const dispatch = useDispatch()\n\n useEffect(() => {\n match(router)\n .with({ locale: P.string }, ({ locale }) => dispatch(setLocale(new Intl.Locale(locale))))\n .otherwise(() => {})\n }, [router])\n}\n"],"mappings":"AAAA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,GAAG,aAAa;AACzB,SAAS,iBAAiB;AAE1B,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAE5B,SAAS,YAAY;AACnB,MAAI;AACF,UAAM,SAAS,eAAe;AAE9B,WAAO;AAAA,EACT,SAAS,GAAG;AACV;AAAA,EACF;AACF;AAEO,MAAM,sBAAsB,MAAM;AACvC,QAAM,SAAS,UAAU;AACzB,QAAM,WAAW,YAAY;AAE7B,YAAU,MAAM;AACd,UAAM,MAAM,EACT,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,MAAM,SAAS,UAAU,IAAI,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC,EACvF,UAAU,MAAM;AAAA,IAAC,CAAC;AAAA,EACvB,GAAG,CAAC,MAAM,CAAC;AACb;","names":[]}
|
|
@@ -4,7 +4,8 @@ import { memo, useEffect } from "react";
|
|
|
4
4
|
import { useDispatch } from "../hooks/use-dispatch";
|
|
5
5
|
import { useDocumentKey } from "../hooks/use-document-context";
|
|
6
6
|
import { useDisableRegisterElement } from "../hooks/use-disable-register-element";
|
|
7
|
-
import { mountComponentEffect
|
|
7
|
+
import { mountComponentEffect } from "../../../state/builder-api/actions";
|
|
8
|
+
import { registerComponentHandleEffect } from "../../../state/actions/internal";
|
|
8
9
|
const ElementRegistration = memo(function ElementRegistration2({
|
|
9
10
|
elementKey,
|
|
10
11
|
componentHandle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/runtimes/react/components/ElementRegistration.tsx"],"sourcesContent":["'use client'\n\nimport { ReactNode, memo, useEffect } from 'react'\nimport { ElementImperativeHandle } from '../element-imperative-handle'\nimport { useDispatch } from '../hooks/use-dispatch'\nimport { useDocumentKey } from '../hooks/use-document-context'\nimport { useDisableRegisterElement } from '../hooks/use-disable-register-element'\nimport { mountComponentEffect
|
|
1
|
+
{"version":3,"sources":["../../../../../src/runtimes/react/components/ElementRegistration.tsx"],"sourcesContent":["'use client'\n\nimport { ReactNode, memo, useEffect } from 'react'\nimport { ElementImperativeHandle } from '../element-imperative-handle'\nimport { useDispatch } from '../hooks/use-dispatch'\nimport { useDocumentKey } from '../hooks/use-document-context'\nimport { useDisableRegisterElement } from '../hooks/use-disable-register-element'\nimport { mountComponentEffect } from '../../../state/builder-api/actions'\nimport { registerComponentHandleEffect } from '../../../state/actions/internal'\n\ntype RegisterChildrenAsElementProps = {\n elementKey: string\n componentHandle: ElementImperativeHandle\n children?: ReactNode\n}\n\nexport const ElementRegistration = memo(function ElementRegistration({\n elementKey,\n componentHandle,\n children,\n}: RegisterChildrenAsElementProps): JSX.Element {\n const dispatch = useDispatch()\n const documentKey = useDocumentKey()\n\n const isRegisterElementDisabled = useDisableRegisterElement()\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(registerComponentHandleEffect(documentKey, elementKey, componentHandle))\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(mountComponentEffect(documentKey, elementKey))\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n return <>{children}</>\n})\n"],"mappings":";AAsCS;AApCT,SAAoB,MAAM,iBAAiB;AAE3C,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,iCAAiC;AAC1C,SAAS,4BAA4B;AACrC,SAAS,qCAAqC;AAQvC,MAAM,sBAAsB,KAAK,SAASA,qBAAoB;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AACF,GAAgD;AAC9C,QAAM,WAAW,YAAY;AAC7B,QAAM,cAAc,eAAe;AAEnC,QAAM,4BAA4B,0BAA0B;AAE5D,YAAU,MAAM;AACd,QAAI,eAAe,QAAQ;AAA2B;AAEtD,WAAO,SAAS,8BAA8B,aAAa,YAAY,eAAe,CAAC;AAAA,EACzF,GAAG,CAAC,UAAU,aAAa,YAAY,yBAAyB,CAAC;AAEjE,YAAU,MAAM;AACd,QAAI,eAAe,QAAQ;AAA2B;AAEtD,WAAO,SAAS,qBAAqB,aAAa,UAAU,CAAC;AAAA,EAC/D,GAAG,CAAC,UAAU,aAAa,YAAY,yBAAyB,CAAC;AAEjE,SAAO,gCAAG,UAAS;AACrB,CAAC;","names":["ElementRegistration"]}
|
|
@@ -2,18 +2,24 @@
|
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect, useMemo } from "react";
|
|
4
4
|
import * as ReactBuilderPreview from "../../../state/react-builder-preview";
|
|
5
|
+
import { BuilderAPIProxy } from "../../../state/builder-api/proxy";
|
|
5
6
|
import { useReactRuntime } from "../hooks/use-react-runtime";
|
|
6
7
|
import { StoreContext } from "../hooks/use-store";
|
|
7
8
|
import { useMakeswiftHostApiClient } from "../host-api-client";
|
|
8
|
-
function PreviewProvider({
|
|
9
|
+
function PreviewProvider({
|
|
10
|
+
appOrigin,
|
|
11
|
+
children
|
|
12
|
+
}) {
|
|
9
13
|
const runtime = useReactRuntime();
|
|
10
14
|
const client = useMakeswiftHostApiClient();
|
|
15
|
+
const builderProxy = useMemo(() => new BuilderAPIProxy({ appOrigin }), [appOrigin]);
|
|
11
16
|
const store = useMemo(
|
|
12
17
|
() => ReactBuilderPreview.configureStore({
|
|
13
18
|
preloadedState: runtime.store.getState(),
|
|
14
|
-
client
|
|
19
|
+
client,
|
|
20
|
+
builderProxy
|
|
15
21
|
}),
|
|
16
|
-
[client,
|
|
22
|
+
[runtime, client, builderProxy]
|
|
17
23
|
);
|
|
18
24
|
useEffect(() => {
|
|
19
25
|
store.setup();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/runtimes/react/components/PreviewProvider.tsx"],"sourcesContent":["'use client'\n\nimport { type PropsWithChildren, useEffect, useMemo } from 'react'\n\nimport * as ReactBuilderPreview from '../../../state/react-builder-preview'\n\nimport { useReactRuntime } from '../hooks/use-react-runtime'\nimport { StoreContext } from '../hooks/use-store'\nimport { useMakeswiftHostApiClient } from '../host-api-client'\n\nexport default function PreviewProvider({
|
|
1
|
+
{"version":3,"sources":["../../../../../src/runtimes/react/components/PreviewProvider.tsx"],"sourcesContent":["'use client'\n\nimport { type PropsWithChildren, useEffect, useMemo } from 'react'\n\nimport * as ReactBuilderPreview from '../../../state/react-builder-preview'\nimport { BuilderAPIProxy } from '../../../state/builder-api/proxy'\n\nimport { useReactRuntime } from '../hooks/use-react-runtime'\nimport { StoreContext } from '../hooks/use-store'\nimport { useMakeswiftHostApiClient } from '../host-api-client'\n\nexport default function PreviewProvider({\n appOrigin,\n children,\n}: PropsWithChildren<{ appOrigin: string }>): JSX.Element {\n const runtime = useReactRuntime()\n const client = useMakeswiftHostApiClient()\n const builderProxy = useMemo(() => new BuilderAPIProxy({ appOrigin }), [appOrigin])\n\n const store = useMemo(\n () =>\n ReactBuilderPreview.configureStore({\n preloadedState: runtime.store.getState(),\n client,\n builderProxy,\n }),\n [runtime, client, builderProxy],\n )\n\n useEffect(() => {\n store.setup()\n return () => store.teardown()\n }, [store])\n\n return <StoreContext.Provider value={store}>{children}</StoreContext.Provider>\n}\n"],"mappings":";AAkCS;AAhCT,SAAiC,WAAW,eAAe;AAE3D,YAAY,yBAAyB;AACrC,SAAS,uBAAuB;AAEhC,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAC7B,SAAS,iCAAiC;AAE3B,SAAR,gBAAiC;AAAA,EACtC;AAAA,EACA;AACF,GAA0D;AACxD,QAAM,UAAU,gBAAgB;AAChC,QAAM,SAAS,0BAA0B;AACzC,QAAM,eAAe,QAAQ,MAAM,IAAI,gBAAgB,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAElF,QAAM,QAAQ;AAAA,IACZ,MACE,oBAAoB,eAAe;AAAA,MACjC,gBAAgB,QAAQ,MAAM,SAAS;AAAA,MACvC;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,CAAC,SAAS,QAAQ,YAAY;AAAA,EAChC;AAEA,YAAU,MAAM;AACd,UAAM,MAAM;AACZ,WAAO,MAAM,MAAM,SAAS;AAAA,EAC9B,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,oBAAC,aAAa,UAAb,EAAsB,OAAO,OAAQ,UAAS;AACxD;","names":[]}
|
|
@@ -29,7 +29,7 @@ function RuntimeProvider({
|
|
|
29
29
|
const isPreview = siteVersion != null;
|
|
30
30
|
const StoreProvider = isPreview ? PreviewProvider : LiveProvider;
|
|
31
31
|
useBuilderConnectionPing({ appOrigin });
|
|
32
|
-
return /* @__PURE__ */ jsx(ReactRuntimeContext.Provider, { value: runtime, children: /* @__PURE__ */ jsx(MakeswiftHostApiClientProvider, { client, children: /* @__PURE__ */ jsxs(StoreProvider, { children: [
|
|
32
|
+
return /* @__PURE__ */ jsx(ReactRuntimeContext.Provider, { value: runtime, children: /* @__PURE__ */ jsx(MakeswiftHostApiClientProvider, { client, children: /* @__PURE__ */ jsxs(StoreProvider, { appOrigin, children: [
|
|
33
33
|
children,
|
|
34
34
|
/* @__PURE__ */ jsx(PreviewSwitcher, { isPreview })
|
|
35
35
|
] }) }) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/runtimes/react/components/RuntimeProvider.tsx"],"sourcesContent":["'use client'\n\nimport { ReactNode, useMemo, lazy } from 'react'\n\nimport { MakeswiftHostApiClient } from '../../../api/react'\nimport { ReactRuntimeContext } from '../hooks/use-react-runtime'\nimport { type ReactRuntimeCore } from '../react-runtime-core'\nimport { MakeswiftHostApiClientProvider } from '../host-api-client'\nimport { type SiteVersion } from '../../../api/site-version'\nimport { PreviewSwitcher } from './preview-switcher/preview-switcher'\nimport { useBuilderConnectionPing } from './hooks/use-builder-connection-ping'\nimport { useFrameworkContext } from './hooks/use-framework-context'\n\nconst LiveProvider = lazy(() => import('./LiveProvider'))\nconst PreviewProvider = lazy(() => import('./PreviewProvider'))\n\nexport function RuntimeProvider({\n children,\n runtime,\n siteVersion,\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n locale = undefined,\n}: {\n children: ReactNode\n runtime: ReactRuntimeCore\n siteVersion: SiteVersion | null\n apiOrigin?: string\n appOrigin?: string\n locale?: string\n}) {\n const { versionedFetch } = useFrameworkContext()\n\n const client = useMemo(\n () =>\n new MakeswiftHostApiClient({\n uri: new URL('graphql', apiOrigin).href,\n locale,\n fetch: versionedFetch(siteVersion),\n }),\n [apiOrigin, locale, siteVersion, versionedFetch],\n )\n\n const isPreview = siteVersion != null\n const StoreProvider = isPreview ? PreviewProvider : LiveProvider\n\n useBuilderConnectionPing({ appOrigin })\n\n return (\n <ReactRuntimeContext.Provider value={runtime}>\n <MakeswiftHostApiClientProvider client={client}>\n <StoreProvider>\n {children}\n <PreviewSwitcher isPreview={isPreview} />\n </StoreProvider>\n </MakeswiftHostApiClientProvider>\n </ReactRuntimeContext.Provider>\n )\n}\n"],"mappings":";AAmDQ,SAEE,KAFF;AAjDR,SAAoB,SAAS,YAAY;AAEzC,SAAS,8BAA8B;AACvC,SAAS,2BAA2B;AAEpC,SAAS,sCAAsC;AAE/C,SAAS,uBAAuB;AAChC,SAAS,gCAAgC;AACzC,SAAS,2BAA2B;AAEpC,MAAM,eAAe,KAAK,MAAM,OAAO,gBAAgB,CAAC;AACxD,MAAM,kBAAkB,KAAK,MAAM,OAAO,mBAAmB,CAAC;AAEvD,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,SAAS;AACX,GAOG;AACD,QAAM,EAAE,eAAe,IAAI,oBAAoB;AAE/C,QAAM,SAAS;AAAA,IACb,MACE,IAAI,uBAAuB;AAAA,MACzB,KAAK,IAAI,IAAI,WAAW,SAAS,EAAE;AAAA,MACnC;AAAA,MACA,OAAO,eAAe,WAAW;AAAA,IACnC,CAAC;AAAA,IACH,CAAC,WAAW,QAAQ,aAAa,cAAc;AAAA,EACjD;AAEA,QAAM,YAAY,eAAe;AACjC,QAAM,gBAAgB,YAAY,kBAAkB;AAEpD,2BAAyB,EAAE,UAAU,CAAC;AAEtC,SACE,oBAAC,oBAAoB,UAApB,EAA6B,OAAO,SACnC,8BAAC,kCAA+B,QAC9B,+BAAC,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/runtimes/react/components/RuntimeProvider.tsx"],"sourcesContent":["'use client'\n\nimport { ReactNode, useMemo, lazy } from 'react'\n\nimport { MakeswiftHostApiClient } from '../../../api/react'\nimport { ReactRuntimeContext } from '../hooks/use-react-runtime'\nimport { type ReactRuntimeCore } from '../react-runtime-core'\nimport { MakeswiftHostApiClientProvider } from '../host-api-client'\nimport { type SiteVersion } from '../../../api/site-version'\nimport { PreviewSwitcher } from './preview-switcher/preview-switcher'\nimport { useBuilderConnectionPing } from './hooks/use-builder-connection-ping'\nimport { useFrameworkContext } from './hooks/use-framework-context'\n\nconst LiveProvider = lazy(() => import('./LiveProvider'))\nconst PreviewProvider = lazy(() => import('./PreviewProvider'))\n\nexport function RuntimeProvider({\n children,\n runtime,\n siteVersion,\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n locale = undefined,\n}: {\n children: ReactNode\n runtime: ReactRuntimeCore\n siteVersion: SiteVersion | null\n apiOrigin?: string\n appOrigin?: string\n locale?: string\n}) {\n const { versionedFetch } = useFrameworkContext()\n\n const client = useMemo(\n () =>\n new MakeswiftHostApiClient({\n uri: new URL('graphql', apiOrigin).href,\n locale,\n fetch: versionedFetch(siteVersion),\n }),\n [apiOrigin, locale, siteVersion, versionedFetch],\n )\n\n const isPreview = siteVersion != null\n const StoreProvider = isPreview ? PreviewProvider : LiveProvider\n\n useBuilderConnectionPing({ appOrigin })\n\n return (\n <ReactRuntimeContext.Provider value={runtime}>\n <MakeswiftHostApiClientProvider client={client}>\n <StoreProvider appOrigin={appOrigin}>\n {children}\n <PreviewSwitcher isPreview={isPreview} />\n </StoreProvider>\n </MakeswiftHostApiClientProvider>\n </ReactRuntimeContext.Provider>\n )\n}\n"],"mappings":";AAmDQ,SAEE,KAFF;AAjDR,SAAoB,SAAS,YAAY;AAEzC,SAAS,8BAA8B;AACvC,SAAS,2BAA2B;AAEpC,SAAS,sCAAsC;AAE/C,SAAS,uBAAuB;AAChC,SAAS,gCAAgC;AACzC,SAAS,2BAA2B;AAEpC,MAAM,eAAe,KAAK,MAAM,OAAO,gBAAgB,CAAC;AACxD,MAAM,kBAAkB,KAAK,MAAM,OAAO,mBAAmB,CAAC;AAEvD,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,SAAS;AACX,GAOG;AACD,QAAM,EAAE,eAAe,IAAI,oBAAoB;AAE/C,QAAM,SAAS;AAAA,IACb,MACE,IAAI,uBAAuB;AAAA,MACzB,KAAK,IAAI,IAAI,WAAW,SAAS,EAAE;AAAA,MACnC;AAAA,MACA,OAAO,eAAe,WAAW;AAAA,IACnC,CAAC;AAAA,IACH,CAAC,WAAW,QAAQ,aAAa,cAAc;AAAA,EACjD;AAEA,QAAM,YAAY,eAAe;AACjC,QAAM,gBAAgB,YAAY,kBAAkB;AAEpD,2BAAyB,EAAE,UAAU,CAAC;AAEtC,SACE,oBAAC,oBAAoB,UAApB,EAA6B,OAAO,SACnC,8BAAC,kCAA+B,QAC9B,+BAAC,iBAAc,WACZ;AAAA;AAAA,IACD,oBAAC,mBAAgB,WAAsB;AAAA,KACzC,GACF,GACF;AAEJ;","names":[]}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { makeswiftConnectionCheck } from "../../../../state/builder-api/actions";
|
|
3
|
+
import { SharedActionTypes, makeswiftConnectionInit } from "../../../../state/shared-api";
|
|
3
4
|
const CONNECTION_PING_INTERVAL_MS = 20;
|
|
4
5
|
function useBuilderConnectionPing({ appOrigin }) {
|
|
5
6
|
useEffect(() => {
|
|
6
7
|
let connectionInterval;
|
|
7
8
|
if (window.parent !== window) {
|
|
8
9
|
window.addEventListener("message", messageHandler);
|
|
9
|
-
window.parent.postMessage(
|
|
10
|
-
{ type: ActionTypes.MAKESWIFT_CONNECTION_INIT },
|
|
11
|
-
{ targetOrigin: appOrigin }
|
|
12
|
-
);
|
|
10
|
+
window.parent.postMessage(makeswiftConnectionInit(), { targetOrigin: appOrigin });
|
|
13
11
|
}
|
|
14
12
|
return () => {
|
|
15
13
|
window.removeEventListener("message", messageHandler);
|
|
@@ -19,17 +17,14 @@ function useBuilderConnectionPing({ appOrigin }) {
|
|
|
19
17
|
}
|
|
20
18
|
};
|
|
21
19
|
function messageHandler(event) {
|
|
22
|
-
if (event.origin === appOrigin && event.data.type ===
|
|
20
|
+
if (event.origin === appOrigin && event.data.type === SharedActionTypes.MAKESWIFT_CONNECTION_INIT) {
|
|
23
21
|
if (connectionInterval != null) {
|
|
24
22
|
window.clearInterval(connectionInterval);
|
|
25
23
|
connectionInterval = null;
|
|
26
24
|
}
|
|
27
25
|
connectionInterval = window.setInterval(() => {
|
|
28
26
|
window.parent.postMessage(
|
|
29
|
-
{
|
|
30
|
-
type: ActionTypes.MAKESWIFT_CONNECTION_CHECK,
|
|
31
|
-
payload: { currentUrl: window.location.href }
|
|
32
|
-
},
|
|
27
|
+
makeswiftConnectionCheck({ currentUrl: window.location.href }),
|
|
33
28
|
{ targetOrigin: appOrigin }
|
|
34
29
|
);
|
|
35
30
|
}, CONNECTION_PING_INTERVAL_MS);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/runtimes/react/components/hooks/use-builder-connection-ping.ts"],"sourcesContent":["import { useEffect } from 'react'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/runtimes/react/components/hooks/use-builder-connection-ping.ts"],"sourcesContent":["import { useEffect } from 'react'\nimport { makeswiftConnectionCheck } from '../../../../state/builder-api/actions'\nimport { SharedActionTypes, makeswiftConnectionInit } from '../../../../state/shared-api'\n\nconst CONNECTION_PING_INTERVAL_MS = 20\n\nexport function useBuilderConnectionPing({ appOrigin }: { appOrigin: string }) {\n useEffect(() => {\n let connectionInterval: number | null\n\n if (window.parent !== window) {\n window.addEventListener('message', messageHandler)\n window.parent.postMessage(makeswiftConnectionInit(), { targetOrigin: appOrigin })\n }\n\n return () => {\n window.removeEventListener('message', messageHandler)\n if (connectionInterval != null) {\n window.clearInterval(connectionInterval)\n connectionInterval = null\n }\n }\n\n function messageHandler(event: MessageEvent): void {\n if (\n event.origin === appOrigin &&\n event.data.type === SharedActionTypes.MAKESWIFT_CONNECTION_INIT\n ) {\n if (connectionInterval != null) {\n window.clearInterval(connectionInterval)\n connectionInterval = null\n }\n\n connectionInterval = window.setInterval(() => {\n window.parent.postMessage(\n makeswiftConnectionCheck({ currentUrl: window.location.href }),\n { targetOrigin: appOrigin },\n )\n }, CONNECTION_PING_INTERVAL_MS)\n }\n }\n }, [appOrigin])\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAS,gCAAgC;AACzC,SAAS,mBAAmB,+BAA+B;AAE3D,MAAM,8BAA8B;AAE7B,SAAS,yBAAyB,EAAE,UAAU,GAA0B;AAC7E,YAAU,MAAM;AACd,QAAI;AAEJ,QAAI,OAAO,WAAW,QAAQ;AAC5B,aAAO,iBAAiB,WAAW,cAAc;AACjD,aAAO,OAAO,YAAY,wBAAwB,GAAG,EAAE,cAAc,UAAU,CAAC;AAAA,IAClF;AAEA,WAAO,MAAM;AACX,aAAO,oBAAoB,WAAW,cAAc;AACpD,UAAI,sBAAsB,MAAM;AAC9B,eAAO,cAAc,kBAAkB;AACvC,6BAAqB;AAAA,MACvB;AAAA,IACF;AAEA,aAAS,eAAe,OAA2B;AACjD,UACE,MAAM,WAAW,aACjB,MAAM,KAAK,SAAS,kBAAkB,2BACtC;AACA,YAAI,sBAAsB,MAAM;AAC9B,iBAAO,cAAc,kBAAkB;AACvC,+BAAqB;AAAA,QACvB;AAEA,6BAAqB,OAAO,YAAY,MAAM;AAC5C,iBAAO,OAAO;AAAA,YACZ,yBAAyB,EAAE,YAAY,OAAO,SAAS,KAAK,CAAC;AAAA,YAC7D,EAAE,cAAc,UAAU;AAAA,UAC5B;AAAA,QACF,GAAG,2BAA2B;AAAA,MAChC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAChB;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
|
-
import { updateAPIClientCache } from "../../../state/actions";
|
|
2
|
+
import { updateAPIClientCache } from "../../../state/actions/internal";
|
|
3
3
|
import { useMakeswiftHostApiClient } from "../host-api-client";
|
|
4
4
|
function useCacheData(cacheData) {
|
|
5
5
|
const { makeswiftApiClient: apiStore } = useMakeswiftHostApiClient();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/runtimes/react/hooks/use-cache-data.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { type CacheData } from '../../../api/react'\nimport { updateAPIClientCache } from '../../../state/actions'\n\nimport { useMakeswiftHostApiClient } from '../host-api-client'\n\nexport function useCacheData(cacheData: CacheData) {\n const { makeswiftApiClient: apiStore } = useMakeswiftHostApiClient()\n\n // We perform cache hydration immediately on render - this is safe to do per\n // render because updating the API cache is idempotent. For precedence, see:\n //\n // https://github.com/TanStack/query/blob/8f9f183f11df3709a1a38c4efce1452788041f88/packages/react-query/src/HydrationBoundary.tsx#L41\n useMemo(() => apiStore.dispatch(updateAPIClientCache(cacheData)), [cacheData])\n}\n"],"mappings":"AAAA,SAAS,eAAe;AAExB,SAAS,4BAA4B;AAErC,SAAS,iCAAiC;AAEnC,SAAS,aAAa,WAAsB;AACjD,QAAM,EAAE,oBAAoB,SAAS,IAAI,0BAA0B;AAMnE,UAAQ,MAAM,SAAS,SAAS,qBAAqB,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC/E;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/runtimes/react/hooks/use-cache-data.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { type CacheData } from '../../../api/react'\nimport { updateAPIClientCache } from '../../../state/actions/internal'\n\nimport { useMakeswiftHostApiClient } from '../host-api-client'\n\nexport function useCacheData(cacheData: CacheData) {\n const { makeswiftApiClient: apiStore } = useMakeswiftHostApiClient()\n\n // We perform cache hydration immediately on render - this is safe to do per\n // render because updating the API cache is idempotent. For precedence, see:\n //\n // https://github.com/TanStack/query/blob/8f9f183f11df3709a1a38c4efce1452788041f88/packages/react-query/src/HydrationBoundary.tsx#L41\n useMemo(() => apiStore.dispatch(updateAPIClientCache(cacheData)), [cacheData])\n}\n"],"mappings":"AAAA,SAAS,eAAe;AAExB,SAAS,4BAA4B;AAErC,SAAS,iCAAiC;AAEnC,SAAS,aAAa,WAAsB;AACjD,QAAM,EAAE,oBAAoB,SAAS,IAAI,0BAA0B;AAMnE,UAAQ,MAAM,SAAS,SAAS,qBAAqB,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC/E;","names":[]}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
2
|
import { useDispatch } from "./use-dispatch";
|
|
3
3
|
import { useIsInBuilder } from "./use-is-in-builder";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
registerDocument,
|
|
7
|
-
registerDocumentsEffect
|
|
8
|
-
} from "../../../state/actions";
|
|
4
|
+
import { registerDocument, registerDocumentsEffect } from "../../../state/shared-api";
|
|
5
|
+
import { registerBuilderDocumentsEffect } from "../../../state/builder-api/actions";
|
|
9
6
|
import { isServer } from "../../../utils/is-server";
|
|
10
7
|
import { useIsomorphicLayoutEffect } from "../../../components/hooks/useIsomorphicLayoutEffect";
|
|
11
8
|
function useRegisterDocument(document) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/runtimes/react/hooks/use-register-document.ts"],"sourcesContent":["import { useEffect } from 'react'\nimport { type Document } from '../../../state/react-page'\nimport { useDispatch } from './use-dispatch'\nimport { useIsInBuilder } from './use-is-in-builder'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/runtimes/react/hooks/use-register-document.ts"],"sourcesContent":["import { useEffect } from 'react'\nimport { type Document } from '../../../state/react-page'\nimport { useDispatch } from './use-dispatch'\nimport { useIsInBuilder } from './use-is-in-builder'\nimport { registerDocument, registerDocumentsEffect } from '../../../state/shared-api'\nimport { registerBuilderDocumentsEffect } from '../../../state/builder-api/actions'\n\nimport { isServer } from '../../../utils/is-server'\nimport { useIsomorphicLayoutEffect } from '../../../components/hooks/useIsomorphicLayoutEffect'\n\n/**\n * @param document Document to register\n */\nexport function useRegisterDocument(document: Document): void {\n const isInBuilder = useIsInBuilder()\n const dispatch = useDispatch()\n\n if (isServer()) {\n dispatch(registerDocument(document))\n }\n\n /*\n Layout effect is to ensure that the document registration happens prior to the\n attempted creation/registration of prop controllers in child components.\n */\n useIsomorphicLayoutEffect(() => {\n return dispatch(registerDocumentsEffect([document]))\n }, [dispatch, document])\n\n // TODO: Decide whether to do this via middleware or via explicit action (like\n // what we're doing below)\n useEffect(() => {\n if (!isInBuilder) return\n return dispatch(registerBuilderDocumentsEffect([document]))\n }, [isInBuilder, document])\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAE1B,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,kBAAkB,+BAA+B;AAC1D,SAAS,sCAAsC;AAE/C,SAAS,gBAAgB;AACzB,SAAS,iCAAiC;AAKnC,SAAS,oBAAoB,UAA0B;AAC5D,QAAM,cAAc,eAAe;AACnC,QAAM,WAAW,YAAY;AAE7B,MAAI,SAAS,GAAG;AACd,aAAS,iBAAiB,QAAQ,CAAC;AAAA,EACrC;AAMA,4BAA0B,MAAM;AAC9B,WAAO,SAAS,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAAA,EACrD,GAAG,CAAC,UAAU,QAAQ,CAAC;AAIvB,YAAU,MAAM;AACd,QAAI,CAAC;AAAa;AAClB,WAAO,SAAS,+BAA+B,CAAC,QAAQ,CAAC,CAAC;AAAA,EAC5D,GAAG,CAAC,aAAa,QAAQ,CAAC;AAC5B;","names":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { registerComponentEffect, registerReactComponentEffect } from "../../state/actions";
|
|
1
|
+
import { registerComponentEffect, registerReactComponentEffect } from "../../state/actions/internal";
|
|
2
2
|
import { ComponentIcon } from "../../state/modules/components-meta";
|
|
3
3
|
import { RuntimeCore } from "./runtime-core";
|
|
4
4
|
function validateComponentType(type, component) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtimes/react/react-runtime-core.ts"],"sourcesContent":["import { ControlDefinition as UnifiedControlDefinition } from '@makeswift/controls'\n\nimport { type LegacyDescriptor, type DescriptorValueType } from '../../prop-controllers/descriptors'\n\nimport { registerComponentEffect, registerReactComponentEffect } from '../../state/actions'\nimport { BreakpointsInput } from '../../state/modules/breakpoints'\nimport { ComponentIcon } from '../../state/modules/components-meta'\nimport type { ComponentType } from '../../state/react-page'\n\nimport { RuntimeCore } from './runtime-core'\n\nfunction validateComponentType(type: string, component?: ComponentType): void {\n const componentName = component?.name ?? 'Component'\n if (typeof type !== 'string' || type === '') {\n throw new Error(\n `${componentName}: A non-empty string \\`type\\` is required for component registration, got ${type}`,\n )\n }\n}\n\nexport class ReactRuntimeCore extends RuntimeCore {\n registerComponent<\n ControlDef extends UnifiedControlDefinition,\n P extends Record<string, LegacyDescriptor | ControlDef>,\n C extends ComponentType<{ [K in keyof P]: DescriptorValueType<P[K]> }>,\n >(\n component: C,\n {\n type,\n label,\n icon = ComponentIcon.Cube,\n hidden = false,\n description,\n builtinSuspense,\n props,\n }: {\n type: string\n label: string\n icon?: ComponentIcon\n hidden?: boolean\n description?: string\n builtinSuspense?: boolean\n props?: P\n },\n ): () => void {\n validateComponentType(type, component as unknown as ComponentType)\n\n const unregisterComponent = this.store.dispatch(\n registerComponentEffect(\n type,\n { label, icon, hidden, description, builtinSuspense },\n props ?? {},\n ),\n )\n\n const unregisterReactComponent = this.store.dispatch(\n registerReactComponentEffect(type, component as unknown as ComponentType),\n )\n\n return () => {\n unregisterComponent()\n unregisterReactComponent()\n }\n }\n\n constructor({ breakpoints }: { breakpoints?: BreakpointsInput } = {}) {\n super({ breakpoints })\n }\n}\n"],"mappings":"AAIA,SAAS,yBAAyB,oCAAoC;
|
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/react/react-runtime-core.ts"],"sourcesContent":["import { ControlDefinition as UnifiedControlDefinition } from '@makeswift/controls'\n\nimport { type LegacyDescriptor, type DescriptorValueType } from '../../prop-controllers/descriptors'\n\nimport { registerComponentEffect, registerReactComponentEffect } from '../../state/actions/internal'\n\nimport { BreakpointsInput } from '../../state/modules/breakpoints'\nimport { ComponentIcon } from '../../state/modules/components-meta'\nimport type { ComponentType } from '../../state/react-page'\n\nimport { RuntimeCore } from './runtime-core'\n\nfunction validateComponentType(type: string, component?: ComponentType): void {\n const componentName = component?.name ?? 'Component'\n if (typeof type !== 'string' || type === '') {\n throw new Error(\n `${componentName}: A non-empty string \\`type\\` is required for component registration, got ${type}`,\n )\n }\n}\n\nexport class ReactRuntimeCore extends RuntimeCore {\n registerComponent<\n ControlDef extends UnifiedControlDefinition,\n P extends Record<string, LegacyDescriptor | ControlDef>,\n C extends ComponentType<{ [K in keyof P]: DescriptorValueType<P[K]> }>,\n >(\n component: C,\n {\n type,\n label,\n icon = ComponentIcon.Cube,\n hidden = false,\n description,\n builtinSuspense,\n props,\n }: {\n type: string\n label: string\n icon?: ComponentIcon\n hidden?: boolean\n description?: string\n builtinSuspense?: boolean\n props?: P\n },\n ): () => void {\n validateComponentType(type, component as unknown as ComponentType)\n\n const unregisterComponent = this.store.dispatch(\n registerComponentEffect(\n type,\n { label, icon, hidden, description, builtinSuspense },\n props ?? {},\n ),\n )\n\n const unregisterReactComponent = this.store.dispatch(\n registerReactComponentEffect(type, component as unknown as ComponentType),\n )\n\n return () => {\n unregisterComponent()\n unregisterReactComponent()\n }\n }\n\n constructor({ breakpoints }: { breakpoints?: BreakpointsInput } = {}) {\n super({ breakpoints })\n }\n}\n"],"mappings":"AAIA,SAAS,yBAAyB,oCAAoC;AAGtE,SAAS,qBAAqB;AAG9B,SAAS,mBAAmB;AAE5B,SAAS,sBAAsB,MAAc,WAAiC;AAC5E,QAAM,gBAAgB,WAAW,QAAQ;AACzC,MAAI,OAAO,SAAS,YAAY,SAAS,IAAI;AAC3C,UAAM,IAAI;AAAA,MACR,GAAG,aAAa,6EAA6E,IAAI;AAAA,IACnG;AAAA,EACF;AACF;AAEO,MAAM,yBAAyB,YAAY;AAAA,EAChD,kBAKE,WACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO,cAAc;AAAA,IACrB,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF,GASY;AACZ,0BAAsB,MAAM,SAAqC;AAEjE,UAAM,sBAAsB,KAAK,MAAM;AAAA,MACrC;AAAA,QACE;AAAA,QACA,EAAE,OAAO,MAAM,QAAQ,aAAa,gBAAgB;AAAA,QACpD,SAAS,CAAC;AAAA,MACZ;AAAA,IACF;AAEA,UAAM,2BAA2B,KAAK,MAAM;AAAA,MAC1C,6BAA6B,MAAM,SAAqC;AAAA,IAC1E;AAEA,WAAO,MAAM;AACX,0BAAoB;AACpB,+BAAyB;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,YAAY,EAAE,YAAY,IAAwC,CAAC,GAAG;AACpE,UAAM,EAAE,YAAY,CAAC;AAAA,EACvB;AACF;","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { isAction } from "@reduxjs/toolkit";
|
|
2
|
+
import { BuilderActionTypes } from "../builder-api/actions";
|
|
3
|
+
import { HostActionTypes } from "../host-api";
|
|
4
|
+
import { InternalActionTypes } from "./internal";
|
|
5
|
+
const ActionTypes = {
|
|
6
|
+
...HostActionTypes,
|
|
7
|
+
...BuilderActionTypes,
|
|
8
|
+
...InternalActionTypes
|
|
9
|
+
};
|
|
10
|
+
function isKnownAction(action) {
|
|
11
|
+
return isAction(action) && Object.hasOwn(ActionTypes, action.type);
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
ActionTypes,
|
|
15
|
+
isKnownAction
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/actions/index.ts"],"sourcesContent":["import { isAction } from '@reduxjs/toolkit'\n\nimport { type BuilderAction, BuilderActionTypes } from '../builder-api/actions'\nimport { type HostAction, HostActionTypes } from '../host-api'\n\nimport { type InternalAction, InternalActionTypes } from './internal'\n\nexport { type UnknownAction } from '@reduxjs/toolkit'\nexport { type DocumentPayload } from '../shared-api'\n\nexport const ActionTypes = {\n ...HostActionTypes,\n ...BuilderActionTypes,\n ...InternalActionTypes,\n} as const\n\nexport type Action = HostAction | BuilderAction | InternalAction\n\nexport function isKnownAction(action: unknown): action is Action {\n return isAction(action) && Object.hasOwn(ActionTypes, action.type)\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AAEzB,SAA6B,0BAA0B;AACvD,SAA0B,uBAAuB;AAEjD,SAA8B,2BAA2B;AAKlD,MAAM,cAAc;AAAA,EACzB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAIO,SAAS,cAAc,QAAmC;AAC/D,SAAO,SAAS,MAAM,KAAK,OAAO,OAAO,aAAa,OAAO,IAAI;AACnE;","names":[]}
|
|
@@ -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\ntype RegisterComponentAction = {\n type: typeof InternalActionTypes.REGISTER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n propControllerDescriptors: Record<string, PropControllerDescriptor>\n }\n}\n\ntype 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":"AAmBO,MAAM,sBAAsB;AAAA,EACjC,wBAAwB;AAAA,EAExB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EAErB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EAEtB,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAE7B,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EAEvB,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAE7B,kCAAkC;AAAA,EAClC,oCAAoC;AAAA,EAEpC,0BAA0B;AAAA,EAC1B,4BAA4B;AAAA,EAE5B,mBAAmB;AAAA,EAEnB,yBAAyB;AAC3B;AAkIO,SAAS,qBACd,cACA,YACA,UACA,QAC4B;AAC5B,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B,SAAS,EAAE,cAAc,YAAY,UAAU,OAAO;AAAA,EACxD;AACF;AAEO,SAAS,kBACd,SACyB;AACzB,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B;AAAA,EACF;AACF;AAEO,SAAS,kBACd,SACyB;AACzB,SAAO,EAAE,MAAM,oBAAoB,qBAAqB,QAAQ;AAClE;AAEO,SAAS,kBACd,SACyB;AACzB,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B;AAAA,EACF;AACF;AAEO,SAAS,kBACd,MACA,MACA,2BACyB;AACzB,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B,SAAS,EAAE,MAAM,MAAM,0BAA0B;AAAA,EACnD;AACF;AAEO,SAAS,oBAAoB,MAAyC;AAC3E,SAAO,EAAE,MAAM,oBAAoB,sBAAsB,SAAS,EAAE,KAAK,EAAE;AAC7E;AAEO,SAAS,wBACd,MACA,MACA,2BAC2D;AAC3D,SAAO,cAAY;AACjB,aAAS,kBAAkB,MAAM,MAAM,yBAAyB,CAAC;AAEjE,WAAO,MAAM;AACX,eAAS,oBAAoB,IAAI,CAAC;AAAA,IACpC;AAAA,EACF;AACF;AAEO,SAAS,wBACd,aACA,YACA,iBAC+B;AAC/B,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B,SAAS,EAAE,aAAa,YAAY,gBAAgB;AAAA,EACtD;AACF;AAEA,SAAS,0BACP,aACA,YACiC;AACjC,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B,SAAS,EAAE,aAAa,WAAW;AAAA,EACrC;AACF;AAEO,SAAS,8BACd,aACA,YACA,iBAC2D;AAC3D,SAAO,cAAY;AACjB,aAAS,wBAAwB,aAAa,YAAY,eAAe,CAAC;AAE1E,WAAO,MAAM;AACX,eAAS,0BAA0B,aAAa,UAAU,CAAC;AAAA,IAC7D;AAAA,EACF;AACF;AAEO,SAAS,mBACd,aACA,YACA,YAC0B;AAC1B,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B,SAAS,EAAE,aAAa,YAAY,WAAW;AAAA,EACjD;AACF;AAEO,SAAS,qBACd,aACA,YAC4B;AAC5B,SAAO,EAAE,MAAM,oBAAoB,uBAAuB,SAAS,EAAE,aAAa,WAAW,EAAE;AACjG;AAEO,SAAS,yBACd,aACA,YACA,YAC2D;AAC3D,SAAO,cAAY;AACjB,aAAS,mBAAmB,aAAa,YAAY,UAAU,CAAC;AAEhE,WAAO,MAAM;AACX,eAAS,qBAAqB,aAAa,UAAU,CAAC;AAAA,IACxD;AAAA,EACF;AACF;AAEO,SAAS,8BACd,aACA,YACA,QACqC;AACrC,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B,SAAS,EAAE,aAAa,YAAY,OAAO;AAAA,EAC7C;AACF;AAEO,SAAS,gCACd,aACA,YACuC;AACvC,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B,SAAS,EAAE,aAAa,WAAW;AAAA,EACrC;AACF;AAEO,SAAS,wBACd,aACA,YACA,iBAC+B;AAC/B,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B,SAAS,EAAE,aAAa,YAAY,gBAAgB;AAAA,EACtD;AACF;AAEO,SAAS,0BACd,aACA,YACiC;AACjC,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B,SAAS,EAAE,aAAa,WAAW;AAAA,EACrC;AACF;AAEA,SAAS,uBACP,MACA,WAC8B;AAC9B,SAAO,EAAE,MAAM,oBAAoB,0BAA0B,SAAS,EAAE,MAAM,UAAU,EAAE;AAC5F;AAEA,SAAS,yBAAyB,MAA8C;AAC9E,SAAO,EAAE,MAAM,oBAAoB,4BAA4B,SAAS,EAAE,KAAK,EAAE;AACnF;AAEO,SAAS,6BACd,MACA,WAC2D;AAC3D,SAAO,cAAY;AACjB,aAAS,uBAAuB,MAAM,SAAS,CAAC;AAEhD,WAAO,MAAM;AACX,eAAS,yBAAyB,IAAI,CAAC;AAAA,IACzC;AAAA,EACF;AACF;AAEO,SAAS,eAAe,aAA4C;AACzE,SAAO,EAAE,MAAM,oBAAoB,mBAAmB,SAAS,YAAY;AAC7E;AAEO,SAAS,qBAAqB,SAA+C;AAClF,SAAO,EAAE,MAAM,oBAAoB,yBAAyB,QAAQ;AACtE;","names":[]}
|