@makeswift/runtime 0.29.0-canary.21 → 0.29.0-canary.23
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/graphql-api-client.js +1 -1
- package/dist/cjs/api/rest-api-client.js +1 -1
- package/dist/cjs/api-handler/handlers/manifest.js +1 -1
- package/dist/cjs/api-handler/handlers/merge-translated-data.js +2 -12
- package/dist/cjs/api-handler/handlers/merge-translated-data.js.map +1 -1
- package/dist/cjs/api-handler/handlers/revalidate.js +2 -12
- package/dist/cjs/api-handler/handlers/revalidate.js.map +1 -1
- package/dist/cjs/api-handler/handlers/table-record.js +2 -12
- package/dist/cjs/api-handler/handlers/table-record.js.map +1 -1
- package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js +3 -18
- package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
- package/dist/cjs/next/document.js +2 -1
- package/dist/cjs/next/document.js.map +1 -1
- package/dist/cjs/next/root-style-registry.js +11 -2
- package/dist/cjs/next/root-style-registry.js.map +1 -1
- package/dist/cjs/runtimes/react/css-runtime/components/styles-context-provider.js +2 -0
- package/dist/cjs/runtimes/react/css-runtime/components/styles-context-provider.js.map +1 -1
- package/dist/cjs/runtimes/react/css-runtime/constants.js +3 -0
- package/dist/cjs/runtimes/react/css-runtime/constants.js.map +1 -1
- package/dist/cjs/runtimes/react/css-runtime/hooks/use-base-styles.js +2 -2
- package/dist/cjs/runtimes/react/css-runtime/hooks/use-base-styles.js.map +1 -1
- package/dist/cjs/runtimes/react/css-runtime/hooks/use-controlled-styles.js +4 -3
- package/dist/cjs/runtimes/react/css-runtime/hooks/use-controlled-styles.js.map +1 -1
- package/dist/cjs/runtimes/react/css-runtime/hooks/use-css-reset.js +4 -7
- package/dist/cjs/runtimes/react/css-runtime/hooks/use-css-reset.js.map +1 -1
- package/dist/cjs/runtimes/react/css-runtime/hooks/use-legacy-controlled-style.js +2 -2
- package/dist/cjs/runtimes/react/css-runtime/hooks/use-legacy-controlled-style.js.map +1 -1
- package/dist/cjs/runtimes/react/css-runtime/hooks/use-style.js +4 -3
- package/dist/cjs/runtimes/react/css-runtime/hooks/use-style.js.map +1 -1
- package/dist/cjs/runtimes/react/css-runtime/serialize-css.js +24 -7
- package/dist/cjs/runtimes/react/css-runtime/serialize-css.js.map +1 -1
- package/dist/cjs/runtimes/react/css-runtime/stylesheet-engine.js +9 -3
- package/dist/cjs/runtimes/react/css-runtime/stylesheet-engine.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-async-effect.js +4 -3
- package/dist/cjs/runtimes/react/hooks/use-async-effect.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-server-element-refresh.js +10 -20
- package/dist/cjs/runtimes/react/hooks/use-server-element-refresh.js.map +1 -1
- package/dist/cjs/runtimes/react/root-style-registry.js +5 -1
- package/dist/cjs/runtimes/react/root-style-registry.js.map +1 -1
- package/dist/cjs/runtimes/react/server/components/editable-server-element.js +18 -14
- package/dist/cjs/runtimes/react/server/components/editable-server-element.js.map +1 -1
- package/dist/cjs/runtimes/react/server/components/element-data.js +1 -0
- package/dist/cjs/runtimes/react/server/components/element-data.js.map +1 -1
- package/dist/cjs/runtimes/react/server/components/server-elements-cache.js +75 -25
- package/dist/cjs/runtimes/react/server/components/server-elements-cache.js.map +1 -1
- package/dist/cjs/state/actions/internal/read-write-action-types.js +1 -1
- package/dist/cjs/state/actions/internal/read-write-action-types.js.map +1 -1
- package/dist/cjs/state/actions/internal/read-write-actions.js +4 -4
- package/dist/cjs/state/actions/internal/read-write-actions.js.map +1 -1
- package/dist/cjs/state/modules/read-write/resolved-value-overrides.js +32 -14
- package/dist/cjs/state/modules/read-write/resolved-value-overrides.js.map +1 -1
- package/dist/cjs/state/read-write-state.js +5 -0
- package/dist/cjs/state/read-write-state.js.map +1 -1
- package/dist/cjs/testing/window.js +50 -0
- package/dist/cjs/testing/window.js.map +1 -0
- package/dist/cjs/utils/{isErrorWithMessage.js → error-message.js} +12 -5
- package/dist/cjs/utils/error-message.js.map +1 -0
- package/dist/esm/api/graphql-api-client.js +1 -1
- package/dist/esm/api/rest-api-client.js +1 -1
- package/dist/esm/api-handler/handlers/manifest.js +1 -1
- package/dist/esm/api-handler/handlers/merge-translated-data.js +1 -1
- package/dist/esm/api-handler/handlers/merge-translated-data.js.map +1 -1
- package/dist/esm/api-handler/handlers/revalidate.js +1 -1
- package/dist/esm/api-handler/handlers/revalidate.js.map +1 -1
- package/dist/esm/api-handler/handlers/table-record.js +1 -1
- package/dist/esm/api-handler/handlers/table-record.js.map +1 -1
- package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js +3 -18
- package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
- package/dist/esm/next/document.js +2 -1
- package/dist/esm/next/document.js.map +1 -1
- package/dist/esm/next/root-style-registry.js +11 -2
- package/dist/esm/next/root-style-registry.js.map +1 -1
- package/dist/esm/runtimes/react/css-runtime/components/styles-context-provider.js +2 -0
- package/dist/esm/runtimes/react/css-runtime/components/styles-context-provider.js.map +1 -1
- package/dist/esm/runtimes/react/css-runtime/constants.js +2 -0
- package/dist/esm/runtimes/react/css-runtime/constants.js.map +1 -1
- package/dist/esm/runtimes/react/css-runtime/hooks/use-base-styles.js +2 -2
- package/dist/esm/runtimes/react/css-runtime/hooks/use-base-styles.js.map +1 -1
- package/dist/esm/runtimes/react/css-runtime/hooks/use-controlled-styles.js +4 -3
- package/dist/esm/runtimes/react/css-runtime/hooks/use-controlled-styles.js.map +1 -1
- package/dist/esm/runtimes/react/css-runtime/hooks/use-css-reset.js +4 -7
- package/dist/esm/runtimes/react/css-runtime/hooks/use-css-reset.js.map +1 -1
- package/dist/esm/runtimes/react/css-runtime/hooks/use-legacy-controlled-style.js +2 -2
- package/dist/esm/runtimes/react/css-runtime/hooks/use-legacy-controlled-style.js.map +1 -1
- package/dist/esm/runtimes/react/css-runtime/hooks/use-style.js +4 -3
- package/dist/esm/runtimes/react/css-runtime/hooks/use-style.js.map +1 -1
- package/dist/esm/runtimes/react/css-runtime/serialize-css.js +34 -8
- package/dist/esm/runtimes/react/css-runtime/serialize-css.js.map +1 -1
- package/dist/esm/runtimes/react/css-runtime/stylesheet-engine.js +9 -3
- package/dist/esm/runtimes/react/css-runtime/stylesheet-engine.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-async-effect.js +4 -3
- package/dist/esm/runtimes/react/hooks/use-async-effect.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-server-element-refresh.js +11 -21
- package/dist/esm/runtimes/react/hooks/use-server-element-refresh.js.map +1 -1
- package/dist/esm/runtimes/react/root-style-registry.js +7 -2
- package/dist/esm/runtimes/react/root-style-registry.js.map +1 -1
- package/dist/esm/runtimes/react/server/components/editable-server-element.js +19 -15
- package/dist/esm/runtimes/react/server/components/editable-server-element.js.map +1 -1
- package/dist/esm/runtimes/react/server/components/element-data.js +1 -0
- package/dist/esm/runtimes/react/server/components/element-data.js.map +1 -1
- package/dist/esm/runtimes/react/server/components/server-elements-cache.js +83 -26
- package/dist/esm/runtimes/react/server/components/server-elements-cache.js.map +1 -1
- package/dist/esm/state/actions/internal/read-write-action-types.js +1 -1
- package/dist/esm/state/actions/internal/read-write-action-types.js.map +1 -1
- package/dist/esm/state/actions/internal/read-write-actions.js +3 -3
- package/dist/esm/state/actions/internal/read-write-actions.js.map +1 -1
- package/dist/esm/state/modules/read-write/resolved-value-overrides.js +31 -14
- package/dist/esm/state/modules/read-write/resolved-value-overrides.js.map +1 -1
- package/dist/esm/state/read-write-state.js +4 -0
- package/dist/esm/state/read-write-state.js.map +1 -1
- package/dist/esm/testing/window.js +26 -0
- package/dist/esm/testing/window.js.map +1 -0
- package/dist/esm/utils/error-message.js +9 -0
- package/dist/esm/utils/error-message.js.map +1 -0
- package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts.map +1 -1
- package/dist/types/next/root-style-registry.d.ts +1 -1
- package/dist/types/next/root-style-registry.d.ts.map +1 -1
- package/dist/types/runtimes/react/css-runtime/__tests__/runtime-integration/utils.d.ts +2 -1
- package/dist/types/runtimes/react/css-runtime/__tests__/runtime-integration/utils.d.ts.map +1 -1
- package/dist/types/runtimes/react/css-runtime/components/styles-context-provider.d.ts +2 -1
- package/dist/types/runtimes/react/css-runtime/components/styles-context-provider.d.ts.map +1 -1
- package/dist/types/runtimes/react/css-runtime/constants.d.ts +1 -0
- package/dist/types/runtimes/react/css-runtime/constants.d.ts.map +1 -1
- package/dist/types/runtimes/react/css-runtime/hooks/use-controlled-styles.d.ts.map +1 -1
- package/dist/types/runtimes/react/css-runtime/hooks/use-style.d.ts.map +1 -1
- package/dist/types/runtimes/react/css-runtime/serialize-css.d.ts +7 -3
- package/dist/types/runtimes/react/css-runtime/serialize-css.d.ts.map +1 -1
- package/dist/types/runtimes/react/css-runtime/stylesheet-engine.d.ts +3 -1
- package/dist/types/runtimes/react/css-runtime/stylesheet-engine.d.ts.map +1 -1
- package/dist/types/runtimes/react/hooks/use-async-effect.d.ts.map +1 -1
- package/dist/types/runtimes/react/hooks/use-server-element-refresh.d.ts +3 -4
- package/dist/types/runtimes/react/hooks/use-server-element-refresh.d.ts.map +1 -1
- package/dist/types/runtimes/react/root-style-registry.d.ts +12 -2
- package/dist/types/runtimes/react/root-style-registry.d.ts.map +1 -1
- package/dist/types/runtimes/react/server/components/editable-server-element.d.ts.map +1 -1
- package/dist/types/runtimes/react/server/components/element-data.d.ts.map +1 -1
- package/dist/types/runtimes/react/server/components/server-elements-cache.d.ts +2 -2
- package/dist/types/runtimes/react/server/components/server-elements-cache.d.ts.map +1 -1
- package/dist/types/state/actions/index.d.ts +1 -1
- package/dist/types/state/actions/internal/action-types.d.ts +1 -1
- package/dist/types/state/actions/internal/read-write-action-types.d.ts +1 -1
- package/dist/types/state/actions/internal/read-write-actions.d.ts +6 -5
- package/dist/types/state/actions/internal/read-write-actions.d.ts.map +1 -1
- package/dist/types/state/modules/read-write/resolved-value-overrides.d.ts +9 -3
- package/dist/types/state/modules/read-write/resolved-value-overrides.d.ts.map +1 -1
- package/dist/types/state/read-write-state.d.ts +1 -0
- package/dist/types/state/read-write-state.d.ts.map +1 -1
- package/dist/types/testing/window.d.ts +9 -0
- package/dist/types/testing/window.d.ts.map +1 -0
- package/dist/types/utils/__tests__/error-message.test.d.ts +2 -0
- package/dist/types/utils/__tests__/error-message.test.d.ts.map +1 -0
- package/dist/types/utils/error-message.d.ts +7 -0
- package/dist/types/utils/error-message.d.ts.map +1 -0
- package/package.json +3 -3
- package/dist/cjs/utils/isErrorWithMessage.js.map +0 -1
- package/dist/esm/utils/isErrorWithMessage.js +0 -7
- package/dist/esm/utils/isErrorWithMessage.js.map +0 -1
- package/dist/types/utils/isErrorWithMessage.d.ts +0 -6
- package/dist/types/utils/isErrorWithMessage.d.ts.map +0 -1
|
@@ -26,41 +26,91 @@ __export(server_elements_cache_exports, {
|
|
|
26
26
|
module.exports = __toCommonJS(server_elements_cache_exports);
|
|
27
27
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
28
28
|
var import_react = require("react");
|
|
29
|
+
var import_useIsomorphicLayoutEffect = require("../../../../components/hooks/useIsomorphicLayoutEffect");
|
|
30
|
+
const createCacheState = (initialElements) => ({
|
|
31
|
+
initialElements,
|
|
32
|
+
elements: new Map(Array.from(initialElements, ([key, node]) => [key, { node }])),
|
|
33
|
+
refreshScope: {
|
|
34
|
+
active: false,
|
|
35
|
+
requestsByElement: /* @__PURE__ */ new Map()
|
|
36
|
+
}
|
|
37
|
+
});
|
|
29
38
|
const Context = (0, import_react.createContext)({
|
|
30
39
|
getElement: () => null,
|
|
31
|
-
|
|
32
|
-
},
|
|
33
|
-
removeElement: () => {
|
|
34
|
-
}
|
|
40
|
+
beginRefresh: () => null
|
|
35
41
|
});
|
|
36
42
|
const ServerElementsCache = ({
|
|
37
43
|
children,
|
|
38
44
|
value
|
|
39
45
|
}) => {
|
|
40
|
-
const [
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
setPreviousValue(value);
|
|
44
|
-
setNodes(value);
|
|
46
|
+
const [state, setState] = (0, import_react.useState)(() => createCacheState(value));
|
|
47
|
+
if (state.initialElements !== value) {
|
|
48
|
+
setState(createCacheState(value));
|
|
45
49
|
}
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
50
|
+
const { elements, refreshScope } = state;
|
|
51
|
+
(0, import_useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(() => {
|
|
52
|
+
refreshScope.active = true;
|
|
53
|
+
return () => {
|
|
54
|
+
refreshScope.active = false;
|
|
55
|
+
};
|
|
56
|
+
}, [refreshScope]);
|
|
57
|
+
const getElement = (0, import_react.useCallback)(
|
|
58
|
+
// Always wrap the node in `<RefreshCommitObserver>` so adding a commit callback
|
|
59
|
+
// during refresh doesn't change the tree shape and remount the refreshed node
|
|
60
|
+
(elementKey) => {
|
|
61
|
+
const entry = elements.get(elementKey);
|
|
62
|
+
if (entry == null)
|
|
63
|
+
return null;
|
|
64
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RefreshCommitObserver, { onCommitted: entry.onCommitted, children: entry.node });
|
|
65
|
+
},
|
|
66
|
+
[elements]
|
|
58
67
|
);
|
|
59
|
-
const
|
|
60
|
-
() =>
|
|
61
|
-
|
|
68
|
+
const beginRefresh = (0, import_react.useCallback)(
|
|
69
|
+
(elementKey, onCommitted) => {
|
|
70
|
+
const { requestsByElement } = refreshScope;
|
|
71
|
+
const elementRequests = requestsByElement.get(elementKey) ?? {
|
|
72
|
+
lastIssued: 0,
|
|
73
|
+
lastAccepted: 0,
|
|
74
|
+
lastCommitted: 0
|
|
75
|
+
};
|
|
76
|
+
requestsByElement.set(elementKey, elementRequests);
|
|
77
|
+
const requestId = ++elementRequests.lastIssued;
|
|
78
|
+
return (node) => {
|
|
79
|
+
if (!refreshScope.active || requestId <= elementRequests.lastAccepted)
|
|
80
|
+
return;
|
|
81
|
+
elementRequests.lastAccepted = requestId;
|
|
82
|
+
const notifyCommitted = () => {
|
|
83
|
+
if (requestId <= elementRequests.lastCommitted)
|
|
84
|
+
return;
|
|
85
|
+
elementRequests.lastCommitted = requestId;
|
|
86
|
+
const callback = onCommitted;
|
|
87
|
+
onCommitted = void 0;
|
|
88
|
+
callback?.();
|
|
89
|
+
};
|
|
90
|
+
setState((prev) => {
|
|
91
|
+
if (prev.refreshScope !== refreshScope)
|
|
92
|
+
return prev;
|
|
93
|
+
return {
|
|
94
|
+
...prev,
|
|
95
|
+
elements: new Map(prev.elements).set(elementKey, {
|
|
96
|
+
node,
|
|
97
|
+
onCommitted: notifyCommitted
|
|
98
|
+
})
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
},
|
|
103
|
+
[refreshScope]
|
|
62
104
|
);
|
|
63
|
-
|
|
105
|
+
const result = (0, import_react.useMemo)(() => ({ getElement, beginRefresh }), [getElement, beginRefresh]);
|
|
106
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Context.Provider, { value: result, children });
|
|
107
|
+
};
|
|
108
|
+
const RefreshCommitObserver = ({
|
|
109
|
+
children,
|
|
110
|
+
onCommitted
|
|
111
|
+
}) => {
|
|
112
|
+
(0, import_react.useEffect)(() => onCommitted?.(), [onCommitted]);
|
|
113
|
+
return children;
|
|
64
114
|
};
|
|
65
115
|
const ServerElementsProvider = ({
|
|
66
116
|
children,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/runtimes/react/server/components/server-elements-cache.tsx"],"sourcesContent":["'use client'\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/runtimes/react/server/components/server-elements-cache.tsx"],"sourcesContent":["'use client'\n\nimport {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../../../../components/hooks/useIsomorphicLayoutEffect'\n\nimport { type ElementsMap } from '../collect-server-elements'\n\ntype CommitRefresh = (node: ReactNode) => void\n\ntype ElementRequests = {\n lastIssued: number\n lastAccepted: number\n lastCommitted: number\n}\n\ntype ContextValue = {\n getElement: (elementKey: string) => ReactNode\n beginRefresh: (elementKey: string, onCommitted?: () => void) => CommitRefresh | null\n}\n\ntype CacheEntry = {\n node: ReactNode\n onCommitted?: () => void\n}\n\ntype CacheState = {\n initialElements: ElementsMap\n elements: Map<string, CacheEntry>\n refreshScope: {\n active: boolean\n requestsByElement: Map<string, ElementRequests>\n }\n}\n\nconst createCacheState = (initialElements: ElementsMap): CacheState => ({\n initialElements,\n elements: new Map(Array.from(initialElements, ([key, node]) => [key, { node }] as const)),\n refreshScope: {\n active: false,\n requestsByElement: new Map(),\n },\n})\n\nconst Context = createContext<ContextValue>({\n getElement: () => null,\n beginRefresh: () => null,\n})\n\n/**\n * Client-side \"cache\" of server-rendered elements; this is one of the key pieces in our RSC\n * implementation, with React doing the majority of the heavy lifting: when `ReactNode`s are\n * passed as props across a 'use client' boundary, React's flight serializer automatically\n * renders and encodes them in the RSC stream and then reconstructs them on the client. All\n * we need to do on the client is to make these React elements available for lookup/\n * manipulation when editing in the builder.\n */\nexport const ServerElementsCache = ({\n children,\n value,\n}: {\n children: ReactNode\n value: ElementsMap\n}) => {\n const [state, setState] = useState<CacheState>(() => createCacheState(value))\n // A new elements map resets the state\n if (state.initialElements !== value) {\n setState(createCacheState(value))\n }\n\n const { elements, refreshScope } = state\n\n // Run during React commit, before paint\n useIsomorphicLayoutEffect(() => {\n // Activate current scope on mount / whenever we reset the state\n refreshScope.active = true\n return () => {\n // Stop accepting refresh requests associated with the old scope\n refreshScope.active = false\n }\n }, [refreshScope])\n\n const getElement = useCallback(\n // Always wrap the node in `<RefreshCommitObserver>` so adding a commit callback\n // during refresh doesn't change the tree shape and remount the refreshed node\n (elementKey: string): ReactNode => {\n const entry = elements.get(elementKey)\n if (entry == null) return null\n\n return (\n <RefreshCommitObserver onCommitted={entry.onCommitted}>{entry.node}</RefreshCommitObserver>\n )\n },\n [elements],\n )\n\n const beginRefresh = useCallback(\n (elementKey: string, onCommitted?: () => void) => {\n const { requestsByElement } = refreshScope\n\n const elementRequests = requestsByElement.get(elementKey) ?? {\n lastIssued: 0,\n lastAccepted: 0,\n lastCommitted: 0,\n }\n\n requestsByElement.set(elementKey, elementRequests)\n\n const requestId = ++elementRequests.lastIssued\n\n return (node: ReactNode): void => {\n // Ignore stale updates\n if (!refreshScope.active || requestId <= elementRequests.lastAccepted) return\n\n elementRequests.lastAccepted = requestId\n const notifyCommitted = () => {\n if (requestId <= elementRequests.lastCommitted) return\n\n elementRequests.lastCommitted = requestId\n // Don't retain the external callback and its captured values after notification\n const callback = onCommitted\n onCommitted = undefined\n callback?.()\n }\n\n setState(prev => {\n // Ignore updates that come in between element map replacement and scope deactivation\n if (prev.refreshScope !== refreshScope) return prev\n\n return {\n ...prev,\n elements: new Map(prev.elements).set(elementKey, {\n node,\n onCommitted: notifyCommitted,\n }),\n }\n })\n }\n },\n [refreshScope],\n )\n\n const result = useMemo(() => ({ getElement, beginRefresh }), [getElement, beginRefresh])\n\n return <Context.Provider value={result}>{children}</Context.Provider>\n}\n\nconst RefreshCommitObserver = ({\n children,\n onCommitted,\n}: {\n children: ReactNode\n onCommitted?: () => void\n}) => {\n // Notify the caller that the updated element node has been committed to\n // the current React tree\n useEffect(() => onCommitted?.(), [onCommitted])\n return children\n}\n\nexport const ServerElementsProvider = ({\n children,\n elements,\n}: {\n children: ReactNode\n elements: ElementsMap\n}) => <ServerElementsCache value={elements}>{children}</ServerElementsCache>\n\nexport const useServerElementsCache = () => useContext(Context)\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkGQ;AAhGR,mBAQO;AAEP,uCAA0C;AA+B1C,MAAM,mBAAmB,CAAC,qBAA8C;AAAA,EACtE;AAAA,EACA,UAAU,IAAI,IAAI,MAAM,KAAK,iBAAiB,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAU,CAAC;AAAA,EACxF,cAAc;AAAA,IACZ,QAAQ;AAAA,IACR,mBAAmB,oBAAI,IAAI;AAAA,EAC7B;AACF;AAEA,MAAM,cAAU,4BAA4B;AAAA,EAC1C,YAAY,MAAM;AAAA,EAClB,cAAc,MAAM;AACtB,CAAC;AAUM,MAAM,sBAAsB,CAAC;AAAA,EAClC;AAAA,EACA;AACF,MAGM;AACJ,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAqB,MAAM,iBAAiB,KAAK,CAAC;AAE5E,MAAI,MAAM,oBAAoB,OAAO;AACnC,aAAS,iBAAiB,KAAK,CAAC;AAAA,EAClC;AAEA,QAAM,EAAE,UAAU,aAAa,IAAI;AAGnC,kEAA0B,MAAM;AAE9B,iBAAa,SAAS;AACtB,WAAO,MAAM;AAEX,mBAAa,SAAS;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,iBAAa;AAAA;AAAA;AAAA,IAGjB,CAAC,eAAkC;AACjC,YAAM,QAAQ,SAAS,IAAI,UAAU;AACrC,UAAI,SAAS;AAAM,eAAO;AAE1B,aACE,4CAAC,yBAAsB,aAAa,MAAM,aAAc,gBAAM,MAAK;AAAA,IAEvE;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,mBAAe;AAAA,IACnB,CAAC,YAAoB,gBAA6B;AAChD,YAAM,EAAE,kBAAkB,IAAI;AAE9B,YAAM,kBAAkB,kBAAkB,IAAI,UAAU,KAAK;AAAA,QAC3D,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,eAAe;AAAA,MACjB;AAEA,wBAAkB,IAAI,YAAY,eAAe;AAEjD,YAAM,YAAY,EAAE,gBAAgB;AAEpC,aAAO,CAAC,SAA0B;AAEhC,YAAI,CAAC,aAAa,UAAU,aAAa,gBAAgB;AAAc;AAEvE,wBAAgB,eAAe;AAC/B,cAAM,kBAAkB,MAAM;AAC5B,cAAI,aAAa,gBAAgB;AAAe;AAEhD,0BAAgB,gBAAgB;AAEhC,gBAAM,WAAW;AACjB,wBAAc;AACd,qBAAW;AAAA,QACb;AAEA,iBAAS,UAAQ;AAEf,cAAI,KAAK,iBAAiB;AAAc,mBAAO;AAE/C,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,UAAU,IAAI,IAAI,KAAK,QAAQ,EAAE,IAAI,YAAY;AAAA,cAC/C;AAAA,cACA,aAAa;AAAA,YACf,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,aAAS,sBAAQ,OAAO,EAAE,YAAY,aAAa,IAAI,CAAC,YAAY,YAAY,CAAC;AAEvF,SAAO,4CAAC,QAAQ,UAAR,EAAiB,OAAO,QAAS,UAAS;AACpD;AAEA,MAAM,wBAAwB,CAAC;AAAA,EAC7B;AAAA,EACA;AACF,MAGM;AAGJ,8BAAU,MAAM,cAAc,GAAG,CAAC,WAAW,CAAC;AAC9C,SAAO;AACT;AAEO,MAAM,yBAAyB,CAAC;AAAA,EACrC;AAAA,EACA;AACF,MAGM,4CAAC,uBAAoB,OAAO,UAAW,UAAS;AAE/C,MAAM,yBAAyB,UAAM,yBAAW,OAAO;","names":[]}
|
|
@@ -33,7 +33,7 @@ const ReadWriteActionTypes = {
|
|
|
33
33
|
REGISTER_MEASURABLE: "REGISTER_MEASURABLE",
|
|
34
34
|
UNREGISTER_MEASURABLE: "UNREGISTER_MEASURABLE",
|
|
35
35
|
SET_RESOLVED_VALUE_OVERRIDE: "SET_RESOLVED_VALUE_OVERRIDE",
|
|
36
|
-
|
|
36
|
+
CLEAR_STALE_RESOLVED_VALUE_OVERRIDES: "CLEAR_STALE_RESOLVED_VALUE_OVERRIDES",
|
|
37
37
|
UPDATE_API_CLIENT_CACHE: "UPDATE_API_CLIENT_CACHE",
|
|
38
38
|
CLEAR_API_CLIENT_CACHE: "CLEAR_API_CLIENT_CACHE"
|
|
39
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/state/actions/internal/read-write-action-types.ts"],"sourcesContent":["export const ReadWriteActionTypes = {\n FLUSH_ACTION_BUFFER: 'FLUSH_ACTION_BUFFER',\n\n CHANGE_ELEMENT_TREE: 'CHANGE_ELEMENT_TREE',\n\n REGISTER_COMPONENT_HANDLE: 'REGISTER_COMPONENT_HANDLE',\n UNREGISTER_COMPONENT_HANDLE: 'UNREGISTER_COMPONENT_HANDLE',\n\n REGISTER_PROP_CONTROLLERS: 'REGISTER_PROP_CONTROLLERS',\n UNREGISTER_PROP_CONTROLLERS: 'UNREGISTER_PROP_CONTROLLERS',\n REGISTER_PROP_CONTROLLERS_HANDLE: 'REGISTER_PROP_CONTROLLERS_HANDLE',\n UNREGISTER_PROP_CONTROLLERS_HANDLE: 'UNREGISTER_PROP_CONTROLLERS_HANDLE',\n\n REGISTER_MEASURABLE: 'REGISTER_MEASURABLE',\n UNREGISTER_MEASURABLE: 'UNREGISTER_MEASURABLE',\n\n SET_RESOLVED_VALUE_OVERRIDE: 'SET_RESOLVED_VALUE_OVERRIDE',\n
|
|
1
|
+
{"version":3,"sources":["../../../../../src/state/actions/internal/read-write-action-types.ts"],"sourcesContent":["export const ReadWriteActionTypes = {\n FLUSH_ACTION_BUFFER: 'FLUSH_ACTION_BUFFER',\n\n CHANGE_ELEMENT_TREE: 'CHANGE_ELEMENT_TREE',\n\n REGISTER_COMPONENT_HANDLE: 'REGISTER_COMPONENT_HANDLE',\n UNREGISTER_COMPONENT_HANDLE: 'UNREGISTER_COMPONENT_HANDLE',\n\n REGISTER_PROP_CONTROLLERS: 'REGISTER_PROP_CONTROLLERS',\n UNREGISTER_PROP_CONTROLLERS: 'UNREGISTER_PROP_CONTROLLERS',\n REGISTER_PROP_CONTROLLERS_HANDLE: 'REGISTER_PROP_CONTROLLERS_HANDLE',\n UNREGISTER_PROP_CONTROLLERS_HANDLE: 'UNREGISTER_PROP_CONTROLLERS_HANDLE',\n\n REGISTER_MEASURABLE: 'REGISTER_MEASURABLE',\n UNREGISTER_MEASURABLE: 'UNREGISTER_MEASURABLE',\n\n SET_RESOLVED_VALUE_OVERRIDE: 'SET_RESOLVED_VALUE_OVERRIDE',\n CLEAR_STALE_RESOLVED_VALUE_OVERRIDES: 'CLEAR_STALE_RESOLVED_VALUE_OVERRIDES',\n\n UPDATE_API_CLIENT_CACHE: 'UPDATE_API_CLIENT_CACHE',\n CLEAR_API_CLIENT_CACHE: 'CLEAR_API_CLIENT_CACHE',\n} as const\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,uBAAuB;AAAA,EAClC,qBAAqB;AAAA,EAErB,qBAAqB;AAAA,EAErB,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAE7B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAC7B,kCAAkC;AAAA,EAClC,oCAAoC;AAAA,EAEpC,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EAEvB,6BAA6B;AAAA,EAC7B,sCAAsC;AAAA,EAEtC,yBAAyB;AAAA,EACzB,wBAAwB;AAC1B;","names":[]}
|
|
@@ -30,7 +30,7 @@ var read_write_actions_exports = {};
|
|
|
30
30
|
__export(read_write_actions_exports, {
|
|
31
31
|
changeElementTree: () => changeElementTree,
|
|
32
32
|
clearAPIClientCache: () => clearAPIClientCache,
|
|
33
|
-
|
|
33
|
+
clearStaleResolvedValueOverrides: () => clearStaleResolvedValueOverrides,
|
|
34
34
|
createPropControllers: () => createPropControllers,
|
|
35
35
|
flushActionBuffer: () => flushActionBuffer,
|
|
36
36
|
registerComponentHandle: () => registerComponentHandle,
|
|
@@ -128,9 +128,9 @@ function setResolvedValueOverride(payload) {
|
|
|
128
128
|
payload
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
|
-
function
|
|
131
|
+
function clearStaleResolvedValueOverrides(payload) {
|
|
132
132
|
return {
|
|
133
|
-
type: import_read_write_action_types.ReadWriteActionTypes.
|
|
133
|
+
type: import_read_write_action_types.ReadWriteActionTypes.CLEAR_STALE_RESOLVED_VALUE_OVERRIDES,
|
|
134
134
|
payload
|
|
135
135
|
};
|
|
136
136
|
}
|
|
@@ -177,7 +177,7 @@ function createPropControllers({
|
|
|
177
177
|
0 && (module.exports = {
|
|
178
178
|
changeElementTree,
|
|
179
179
|
clearAPIClientCache,
|
|
180
|
-
|
|
180
|
+
clearStaleResolvedValueOverrides,
|
|
181
181
|
createPropControllers,
|
|
182
182
|
flushActionBuffer,
|
|
183
183
|
registerComponentHandle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/state/actions/internal/read-write-actions.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 DescriptorsByComponentType } from '../../modules/prop-controller-descriptors'\nimport { type Measurable } from '../../modules/read-write/box-models'\nimport { type PropControllersHandle } from '../../modules/read-write/prop-controllers'\nimport {\n type ResolvedValueKey,\n type ResolvedValue,\n} from '../../modules/read-write/resolved-value-overrides'\n\nimport { createPropController } from '../../../prop-controllers/instances'\n\nimport { type Action } from '../../actions'\nimport * as Builder from '../../builder-api/actions'\n\nimport { type DocumentPayload } from '../../shared-api'\nimport { type SerializedState as APIClientCache } from '../../api-client/state'\nimport { getComponentPropControllerDescriptors } from '../../read-only-state'\nimport { type State } from '../../unified-state'\n\nimport { ReadWriteActionTypes } from './read-write-action-types'\n\ntype FlushActionBufferAction = {\n type: typeof ReadWriteActionTypes.FLUSH_ACTION_BUFFER\n}\n\ntype ChangeElementTreeAction = {\n type: typeof ReadWriteActionTypes.CHANGE_ELEMENT_TREE\n payload: {\n oldDocument: DocumentPayload\n newDocument: DocumentPayload\n descriptors: DescriptorsByComponentType\n operation: Operation\n }\n}\n\ntype RegisterComponentHandleAction = {\n type: typeof ReadWriteActionTypes.REGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string; componentHandle: ElementImperativeHandle }\n}\n\ntype UnregisterComponentHandleAction = {\n type: typeof ReadWriteActionTypes.UNREGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterPropControllersHandleAction = {\n type: typeof ReadWriteActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string; handle: PropControllersHandle }\n}\n\ntype UnregisterPropControllersHandleAction = {\n type: typeof ReadWriteActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterPropControllersAction = {\n type: typeof ReadWriteActionTypes.REGISTER_PROP_CONTROLLERS\n payload: {\n documentKey: string\n elementKey: string\n propControllers: Record<string, ControlInstance>\n }\n}\n\ntype UnregisterPropControllersAction = {\n type: typeof ReadWriteActionTypes.UNREGISTER_PROP_CONTROLLERS\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterMeasurableAction = {\n type: typeof ReadWriteActionTypes.REGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string; measurable: Measurable }\n}\n\ntype UnregisterMeasurableAction = {\n type: typeof ReadWriteActionTypes.UNREGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype SetResolvedValueOverrideAction = {\n type: typeof ReadWriteActionTypes.SET_RESOLVED_VALUE_OVERRIDE\n payload: { documentKey: string; instanceKey: ResolvedValueKey; value: ResolvedValue }\n}\n\ntype ClearResolvedValueOverrideAction = {\n type: typeof ReadWriteActionTypes.CLEAR_RESOLVED_VALUE_OVERRIDE\n payload: { documentKey: string; instanceKey: ResolvedValueKey }\n}\n\ntype UpdateAPIClientCache = {\n type: typeof ReadWriteActionTypes.UPDATE_API_CLIENT_CACHE\n payload: APIClientCache\n}\n\ntype ClearAPIClientCache = {\n type: typeof ReadWriteActionTypes.CLEAR_API_CLIENT_CACHE\n}\n\nexport type ReadWriteAction =\n | FlushActionBufferAction\n | ChangeElementTreeAction\n | RegisterComponentHandleAction\n | UnregisterComponentHandleAction\n | RegisterPropControllersHandleAction\n | UnregisterPropControllersHandleAction\n | RegisterPropControllersAction\n | UnregisterPropControllersAction\n | RegisterMeasurableAction\n | UnregisterMeasurableAction\n | SetResolvedValueOverrideAction\n | ClearResolvedValueOverrideAction\n | UpdateAPIClientCache\n | ClearAPIClientCache\n\nexport function flushActionBuffer() {\n return { type: ReadWriteActionTypes.FLUSH_ACTION_BUFFER }\n}\n\nexport function changeElementTree(\n payload: ChangeElementTreeAction['payload'],\n): ChangeElementTreeAction {\n return {\n type: ReadWriteActionTypes.CHANGE_ELEMENT_TREE,\n payload,\n }\n}\n\nexport function registerComponentHandle(\n documentKey: string,\n elementKey: string,\n componentHandle: ElementImperativeHandle,\n): RegisterComponentHandleAction {\n return {\n type: ReadWriteActionTypes.REGISTER_COMPONENT_HANDLE,\n payload: { documentKey, elementKey, componentHandle },\n }\n}\n\nexport function unregisterComponentHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterComponentHandleAction {\n return {\n type: ReadWriteActionTypes.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, ReadWriteAction> {\n return dispatch => {\n dispatch(registerComponentHandle(documentKey, elementKey, componentHandle))\n\n return () => {\n dispatch(unregisterComponentHandle(documentKey, elementKey))\n }\n }\n}\n\nexport function registerPropControllersHandle(\n documentKey: string,\n elementKey: string,\n handle: PropControllersHandle,\n): RegisterPropControllersHandleAction {\n return {\n type: ReadWriteActionTypes.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: ReadWriteActionTypes.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: ReadWriteActionTypes.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: ReadWriteActionTypes.UNREGISTER_PROP_CONTROLLERS,\n payload: { documentKey, elementKey },\n }\n}\n\nexport function registerPropControllersEffect(\n documentKey: string,\n elementKey: string,\n propControllers: Record<string, ControlInstance>,\n): ThunkAction<() => void, unknown, unknown, ReadWriteAction> {\n return dispatch => {\n dispatch(registerPropControllers(documentKey, elementKey, propControllers))\n\n return () => {\n dispatch(unregisterPropControllers(documentKey, elementKey))\n }\n }\n}\n\nexport function registerMeasurable(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): RegisterMeasurableAction {\n return {\n type: ReadWriteActionTypes.REGISTER_MEASURABLE,\n payload: { documentKey, elementKey, measurable },\n }\n}\n\nexport function unregisterMeasurable(\n documentKey: string,\n elementKey: string,\n): UnregisterMeasurableAction {\n return { type: ReadWriteActionTypes.UNREGISTER_MEASURABLE, payload: { documentKey, elementKey } }\n}\n\nexport function setResolvedValueOverride(\n payload: SetResolvedValueOverrideAction['payload'],\n): SetResolvedValueOverrideAction {\n return {\n type: ReadWriteActionTypes.SET_RESOLVED_VALUE_OVERRIDE,\n payload,\n }\n}\n\nexport function clearResolvedValueOverride(\n payload: ClearResolvedValueOverrideAction['payload'],\n): ClearResolvedValueOverrideAction {\n return {\n type: ReadWriteActionTypes.CLEAR_RESOLVED_VALUE_OVERRIDE,\n payload,\n }\n}\n\nexport function registerMeasurableEffect(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): ThunkAction<() => void, unknown, unknown, ReadWriteAction> {\n return dispatch => {\n dispatch(registerMeasurable(documentKey, elementKey, measurable))\n\n return () => {\n dispatch(unregisterMeasurable(documentKey, elementKey))\n }\n }\n}\n\nexport function updateAPIClientCache(payload: APIClientCache): UpdateAPIClientCache {\n return { type: ReadWriteActionTypes.UPDATE_API_CLIENT_CACHE, payload }\n}\n\nexport function clearAPIClientCache(): ClearAPIClientCache {\n return { type: ReadWriteActionTypes.CLEAR_API_CLIENT_CACHE }\n}\n\nexport function createPropControllers({\n documentKey,\n elementKey,\n componentType,\n}: {\n documentKey: string\n elementKey: string\n componentType: string\n}): ThunkAction<Record<string, ControlInstance> | null, State, unknown, Action> {\n return (dispatch, getState) => {\n const descriptors = getComponentPropControllerDescriptors(getState(), componentType)\n if (descriptors == null) return null\n\n const propControllers = Object.entries(descriptors).reduce(\n (acc, [propName, descriptor]) => {\n const propController = createPropController({\n descriptor,\n instanceKey: { elementKey, propPath: propName },\n sendMessage: message =>\n dispatch(\n Builder.messageBuilderPropController(documentKey, elementKey, propName, message),\n ),\n }) as ControlInstance\n\n return { ...acc, [propName]: propController }\n },\n {} as Record<string, ControlInstance>,\n )\n\n return propControllers\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/state/actions/internal/read-write-actions.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 DescriptorsByComponentType } from '../../modules/prop-controller-descriptors'\nimport { type Measurable } from '../../modules/read-write/box-models'\nimport { type PropControllersHandle } from '../../modules/read-write/prop-controllers'\nimport {\n type ResolvedValueKey,\n type ResolvedValue,\n} from '../../modules/read-write/resolved-value-overrides'\n\nimport { createPropController } from '../../../prop-controllers/instances'\n\nimport { type Action } from '../../actions'\nimport * as Builder from '../../builder-api/actions'\n\nimport { type DocumentPayload } from '../../shared-api'\nimport { type SerializedState as APIClientCache } from '../../api-client/state'\nimport { getComponentPropControllerDescriptors } from '../../read-only-state'\nimport { type State } from '../../unified-state'\n\nimport { ReadWriteActionTypes } from './read-write-action-types'\n\ntype FlushActionBufferAction = {\n type: typeof ReadWriteActionTypes.FLUSH_ACTION_BUFFER\n}\n\ntype ChangeElementTreeAction = {\n type: typeof ReadWriteActionTypes.CHANGE_ELEMENT_TREE\n payload: {\n oldDocument: DocumentPayload\n newDocument: DocumentPayload\n descriptors: DescriptorsByComponentType\n operation: Operation\n }\n}\n\ntype RegisterComponentHandleAction = {\n type: typeof ReadWriteActionTypes.REGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string; componentHandle: ElementImperativeHandle }\n}\n\ntype UnregisterComponentHandleAction = {\n type: typeof ReadWriteActionTypes.UNREGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterPropControllersHandleAction = {\n type: typeof ReadWriteActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string; handle: PropControllersHandle }\n}\n\ntype UnregisterPropControllersHandleAction = {\n type: typeof ReadWriteActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterPropControllersAction = {\n type: typeof ReadWriteActionTypes.REGISTER_PROP_CONTROLLERS\n payload: {\n documentKey: string\n elementKey: string\n propControllers: Record<string, ControlInstance>\n }\n}\n\ntype UnregisterPropControllersAction = {\n type: typeof ReadWriteActionTypes.UNREGISTER_PROP_CONTROLLERS\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterMeasurableAction = {\n type: typeof ReadWriteActionTypes.REGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string; measurable: Measurable }\n}\n\ntype UnregisterMeasurableAction = {\n type: typeof ReadWriteActionTypes.UNREGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype SetResolvedValueOverrideAction = {\n type: typeof ReadWriteActionTypes.SET_RESOLVED_VALUE_OVERRIDE\n payload: { documentKey: string; instanceKey: ResolvedValueKey; value: ResolvedValue }\n}\n\ntype ClearStaleResolvedValueOverridesAction = {\n type: typeof ReadWriteActionTypes.CLEAR_STALE_RESOLVED_VALUE_OVERRIDES\n payload: { documentKey: string; elementKey: string; generation: number }\n}\n\ntype UpdateAPIClientCache = {\n type: typeof ReadWriteActionTypes.UPDATE_API_CLIENT_CACHE\n payload: APIClientCache\n}\n\ntype ClearAPIClientCache = {\n type: typeof ReadWriteActionTypes.CLEAR_API_CLIENT_CACHE\n}\n\nexport type ReadWriteAction =\n | FlushActionBufferAction\n | ChangeElementTreeAction\n | RegisterComponentHandleAction\n | UnregisterComponentHandleAction\n | RegisterPropControllersHandleAction\n | UnregisterPropControllersHandleAction\n | RegisterPropControllersAction\n | UnregisterPropControllersAction\n | RegisterMeasurableAction\n | UnregisterMeasurableAction\n | SetResolvedValueOverrideAction\n | ClearStaleResolvedValueOverridesAction\n | UpdateAPIClientCache\n | ClearAPIClientCache\n\nexport function flushActionBuffer() {\n return { type: ReadWriteActionTypes.FLUSH_ACTION_BUFFER }\n}\n\nexport function changeElementTree(\n payload: ChangeElementTreeAction['payload'],\n): ChangeElementTreeAction {\n return {\n type: ReadWriteActionTypes.CHANGE_ELEMENT_TREE,\n payload,\n }\n}\n\nexport function registerComponentHandle(\n documentKey: string,\n elementKey: string,\n componentHandle: ElementImperativeHandle,\n): RegisterComponentHandleAction {\n return {\n type: ReadWriteActionTypes.REGISTER_COMPONENT_HANDLE,\n payload: { documentKey, elementKey, componentHandle },\n }\n}\n\nexport function unregisterComponentHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterComponentHandleAction {\n return {\n type: ReadWriteActionTypes.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, ReadWriteAction> {\n return dispatch => {\n dispatch(registerComponentHandle(documentKey, elementKey, componentHandle))\n\n return () => {\n dispatch(unregisterComponentHandle(documentKey, elementKey))\n }\n }\n}\n\nexport function registerPropControllersHandle(\n documentKey: string,\n elementKey: string,\n handle: PropControllersHandle,\n): RegisterPropControllersHandleAction {\n return {\n type: ReadWriteActionTypes.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: ReadWriteActionTypes.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: ReadWriteActionTypes.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: ReadWriteActionTypes.UNREGISTER_PROP_CONTROLLERS,\n payload: { documentKey, elementKey },\n }\n}\n\nexport function registerPropControllersEffect(\n documentKey: string,\n elementKey: string,\n propControllers: Record<string, ControlInstance>,\n): ThunkAction<() => void, unknown, unknown, ReadWriteAction> {\n return dispatch => {\n dispatch(registerPropControllers(documentKey, elementKey, propControllers))\n\n return () => {\n dispatch(unregisterPropControllers(documentKey, elementKey))\n }\n }\n}\n\nexport function registerMeasurable(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): RegisterMeasurableAction {\n return {\n type: ReadWriteActionTypes.REGISTER_MEASURABLE,\n payload: { documentKey, elementKey, measurable },\n }\n}\n\nexport function unregisterMeasurable(\n documentKey: string,\n elementKey: string,\n): UnregisterMeasurableAction {\n return { type: ReadWriteActionTypes.UNREGISTER_MEASURABLE, payload: { documentKey, elementKey } }\n}\n\nexport function setResolvedValueOverride(\n payload: SetResolvedValueOverrideAction['payload'],\n): SetResolvedValueOverrideAction {\n return {\n type: ReadWriteActionTypes.SET_RESOLVED_VALUE_OVERRIDE,\n payload,\n }\n}\n\nexport function clearStaleResolvedValueOverrides(\n payload: ClearStaleResolvedValueOverridesAction['payload'],\n): ClearStaleResolvedValueOverridesAction {\n return {\n type: ReadWriteActionTypes.CLEAR_STALE_RESOLVED_VALUE_OVERRIDES,\n payload,\n }\n}\n\nexport function registerMeasurableEffect(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): ThunkAction<() => void, unknown, unknown, ReadWriteAction> {\n return dispatch => {\n dispatch(registerMeasurable(documentKey, elementKey, measurable))\n\n return () => {\n dispatch(unregisterMeasurable(documentKey, elementKey))\n }\n }\n}\n\nexport function updateAPIClientCache(payload: APIClientCache): UpdateAPIClientCache {\n return { type: ReadWriteActionTypes.UPDATE_API_CLIENT_CACHE, payload }\n}\n\nexport function clearAPIClientCache(): ClearAPIClientCache {\n return { type: ReadWriteActionTypes.CLEAR_API_CLIENT_CACHE }\n}\n\nexport function createPropControllers({\n documentKey,\n elementKey,\n componentType,\n}: {\n documentKey: string\n elementKey: string\n componentType: string\n}): ThunkAction<Record<string, ControlInstance> | null, State, unknown, Action> {\n return (dispatch, getState) => {\n const descriptors = getComponentPropControllerDescriptors(getState(), componentType)\n if (descriptors == null) return null\n\n const propControllers = Object.entries(descriptors).reduce(\n (acc, [propName, descriptor]) => {\n const propController = createPropController({\n descriptor,\n instanceKey: { elementKey, propPath: propName },\n sendMessage: message =>\n dispatch(\n Builder.messageBuilderPropController(documentKey, elementKey, propName, message),\n ),\n }) as ControlInstance\n\n return { ...acc, [propName]: propController }\n },\n {} as Record<string, ControlInstance>,\n )\n\n return propControllers\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var resolved_value_overrides_exports = {};
|
|
20
20
|
__export(resolved_value_overrides_exports, {
|
|
21
|
+
getGeneration: () => getGeneration,
|
|
21
22
|
getInitialState: () => getInitialState,
|
|
22
23
|
getValueOverride: () => getValueOverride,
|
|
23
24
|
hasValueOverride: () => hasValueOverride,
|
|
@@ -27,14 +28,17 @@ module.exports = __toCommonJS(resolved_value_overrides_exports);
|
|
|
27
28
|
var import_actions = require("../../actions");
|
|
28
29
|
var import_read_write_action_types = require("../../actions/internal/read-write-action-types");
|
|
29
30
|
function getInitialState() {
|
|
30
|
-
return { overrides: /* @__PURE__ */ new Map() };
|
|
31
|
+
return { overrides: /* @__PURE__ */ new Map(), generation: 0 };
|
|
31
32
|
}
|
|
32
|
-
const
|
|
33
|
+
const getOverride = (state, documentKey, { elementKey, propPath }) => state.overrides.get(documentKey)?.get(elementKey)?.get(propPath);
|
|
33
34
|
function hasValueOverride(state, documentKey, instanceKey) {
|
|
34
|
-
return state
|
|
35
|
+
return getOverride(state, documentKey, instanceKey) != null;
|
|
35
36
|
}
|
|
36
37
|
function getValueOverride(state, documentKey, instanceKey) {
|
|
37
|
-
return state
|
|
38
|
+
return getOverride(state, documentKey, instanceKey)?.value;
|
|
39
|
+
}
|
|
40
|
+
function getGeneration(state) {
|
|
41
|
+
return state.generation;
|
|
38
42
|
}
|
|
39
43
|
function reducer(state = getInitialState(), action) {
|
|
40
44
|
if (!(0, import_actions.isKnownAction)(action))
|
|
@@ -42,26 +46,40 @@ function reducer(state = getInitialState(), action) {
|
|
|
42
46
|
switch (action.type) {
|
|
43
47
|
case import_read_write_action_types.ReadWriteActionTypes.SET_RESOLVED_VALUE_OVERRIDE: {
|
|
44
48
|
const { documentKey, instanceKey, value } = action.payload;
|
|
49
|
+
const { elementKey, propPath } = instanceKey;
|
|
50
|
+
const generation = state.generation + 1;
|
|
51
|
+
const propOverrides = new Map(getPropOverrides(state, documentKey, elementKey)).set(
|
|
52
|
+
propPath,
|
|
53
|
+
{ value, setAtGeneration: generation }
|
|
54
|
+
);
|
|
45
55
|
return {
|
|
46
|
-
|
|
47
|
-
overrides:
|
|
48
|
-
documentKey,
|
|
49
|
-
new Map(state.overrides.get(documentKey) ?? []).set(compositeKey(instanceKey), value)
|
|
50
|
-
)
|
|
56
|
+
generation,
|
|
57
|
+
overrides: setPropOverrides(state, documentKey, elementKey, propOverrides)
|
|
51
58
|
};
|
|
52
59
|
}
|
|
53
|
-
case import_read_write_action_types.ReadWriteActionTypes.
|
|
54
|
-
const { documentKey,
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
|
|
60
|
+
case import_read_write_action_types.ReadWriteActionTypes.CLEAR_STALE_RESOLVED_VALUE_OVERRIDES: {
|
|
61
|
+
const { documentKey, elementKey, generation } = action.payload;
|
|
62
|
+
const propOverrides = getPropOverrides(state, documentKey, elementKey);
|
|
63
|
+
const overridesSinceGeneration = new Map(
|
|
64
|
+
Array.from(propOverrides).filter(([, override]) => override.setAtGeneration > generation)
|
|
65
|
+
);
|
|
66
|
+
return overridesSinceGeneration.size === propOverrides.size ? state : {
|
|
67
|
+
...state,
|
|
68
|
+
overrides: setPropOverrides(state, documentKey, elementKey, overridesSinceGeneration)
|
|
69
|
+
};
|
|
58
70
|
}
|
|
59
71
|
default:
|
|
60
72
|
return state;
|
|
61
73
|
}
|
|
62
74
|
}
|
|
75
|
+
const getPropOverrides = (state, documentKey, elementKey) => state.overrides.get(documentKey)?.get(elementKey) ?? /* @__PURE__ */ new Map();
|
|
76
|
+
const setPropOverrides = (state, documentKey, elementKey, propOverrides) => new Map(state.overrides).set(
|
|
77
|
+
documentKey,
|
|
78
|
+
new Map(state.overrides.get(documentKey) ?? []).set(elementKey, propOverrides)
|
|
79
|
+
);
|
|
63
80
|
// Annotate the CommonJS export names for ESM import in node:
|
|
64
81
|
0 && (module.exports = {
|
|
82
|
+
getGeneration,
|
|
65
83
|
getInitialState,
|
|
66
84
|
getValueOverride,
|
|
67
85
|
hasValueOverride,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/state/modules/read-write/resolved-value-overrides.ts"],"sourcesContent":["import { type ControlInstanceKey } from '@makeswift/controls'\n\nimport { type Action, type UnknownAction, isKnownAction } from '../../actions'\nimport { ReadWriteActionTypes } from '../../actions/internal/read-write-action-types'\n\
|
|
1
|
+
{"version":3,"sources":["../../../../../src/state/modules/read-write/resolved-value-overrides.ts"],"sourcesContent":["import { type ControlInstanceKey } from '@makeswift/controls'\n\nimport { type Action, type UnknownAction, isKnownAction } from '../../actions'\nimport { ReadWriteActionTypes } from '../../actions/internal/read-write-action-types'\n\nexport type ResolvedValueKey = ControlInstanceKey\nexport type ResolvedValue = unknown\n\ntype Override = {\n value: ResolvedValue\n setAtGeneration: number\n}\n\ntype PropOverrides = Map<string, Override>\ntype ElementOverrides = Map<string, PropOverrides>\n\nexport type State = {\n overrides: Map<string, ElementOverrides>\n // incremented every time an override is set\n generation: number\n}\n\nexport function getInitialState(): State {\n return { overrides: new Map(), generation: 0 }\n}\n\nconst getOverride = (\n state: State,\n documentKey: string,\n { elementKey, propPath }: ResolvedValueKey,\n): Override | undefined => state.overrides.get(documentKey)?.get(elementKey)?.get(propPath)\n\nexport function hasValueOverride(\n state: State,\n documentKey: string,\n instanceKey: ResolvedValueKey,\n): boolean {\n return getOverride(state, documentKey, instanceKey) != null\n}\n\nexport function getValueOverride(\n state: State,\n documentKey: string,\n instanceKey: ResolvedValueKey,\n): ResolvedValue {\n return getOverride(state, documentKey, instanceKey)?.value\n}\n\nexport function getGeneration(state: State): number {\n return state.generation\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction) {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ReadWriteActionTypes.SET_RESOLVED_VALUE_OVERRIDE: {\n const { documentKey, instanceKey, value } = action.payload\n const { elementKey, propPath } = instanceKey\n const generation = state.generation + 1\n\n const propOverrides = new Map(getPropOverrides(state, documentKey, elementKey)).set(\n propPath,\n { value, setAtGeneration: generation },\n )\n\n return {\n generation,\n overrides: setPropOverrides(state, documentKey, elementKey, propOverrides),\n }\n }\n\n case ReadWriteActionTypes.CLEAR_STALE_RESOLVED_VALUE_OVERRIDES: {\n const { documentKey, elementKey, generation } = action.payload\n const propOverrides = getPropOverrides(state, documentKey, elementKey)\n\n const overridesSinceGeneration = new Map(\n Array.from(propOverrides).filter(([, override]) => override.setAtGeneration > generation),\n )\n\n return overridesSinceGeneration.size === propOverrides.size\n ? state\n : {\n ...state,\n overrides: setPropOverrides(state, documentKey, elementKey, overridesSinceGeneration),\n }\n }\n\n default:\n return state\n }\n}\n\nconst getPropOverrides = (state: State, documentKey: string, elementKey: string): PropOverrides =>\n state.overrides.get(documentKey)?.get(elementKey) ?? new Map()\n\nconst setPropOverrides = (\n state: State,\n documentKey: string,\n elementKey: string,\n propOverrides: PropOverrides,\n): State['overrides'] =>\n new Map(state.overrides).set(\n documentKey,\n new Map(state.overrides.get(documentKey) ?? []).set(elementKey, propOverrides),\n )\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qBAA+D;AAC/D,qCAAqC;AAmB9B,SAAS,kBAAyB;AACvC,SAAO,EAAE,WAAW,oBAAI,IAAI,GAAG,YAAY,EAAE;AAC/C;AAEA,MAAM,cAAc,CAClB,OACA,aACA,EAAE,YAAY,SAAS,MACE,MAAM,UAAU,IAAI,WAAW,GAAG,IAAI,UAAU,GAAG,IAAI,QAAQ;AAEnF,SAAS,iBACd,OACA,aACA,aACS;AACT,SAAO,YAAY,OAAO,aAAa,WAAW,KAAK;AACzD;AAEO,SAAS,iBACd,OACA,aACA,aACe;AACf,SAAO,YAAY,OAAO,aAAa,WAAW,GAAG;AACvD;AAEO,SAAS,cAAc,OAAsB;AAClD,SAAO,MAAM;AACf;AAEO,SAAS,QAAQ,QAAe,gBAAgB,GAAG,QAAgC;AACxF,MAAI,KAAC,8BAAc,MAAM;AAAG,WAAO;AAEnC,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,oDAAqB,6BAA6B;AACrD,YAAM,EAAE,aAAa,aAAa,MAAM,IAAI,OAAO;AACnD,YAAM,EAAE,YAAY,SAAS,IAAI;AACjC,YAAM,aAAa,MAAM,aAAa;AAEtC,YAAM,gBAAgB,IAAI,IAAI,iBAAiB,OAAO,aAAa,UAAU,CAAC,EAAE;AAAA,QAC9E;AAAA,QACA,EAAE,OAAO,iBAAiB,WAAW;AAAA,MACvC;AAEA,aAAO;AAAA,QACL;AAAA,QACA,WAAW,iBAAiB,OAAO,aAAa,YAAY,aAAa;AAAA,MAC3E;AAAA,IACF;AAAA,IAEA,KAAK,oDAAqB,sCAAsC;AAC9D,YAAM,EAAE,aAAa,YAAY,WAAW,IAAI,OAAO;AACvD,YAAM,gBAAgB,iBAAiB,OAAO,aAAa,UAAU;AAErE,YAAM,2BAA2B,IAAI;AAAA,QACnC,MAAM,KAAK,aAAa,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,MAAM,SAAS,kBAAkB,UAAU;AAAA,MAC1F;AAEA,aAAO,yBAAyB,SAAS,cAAc,OACnD,QACA;AAAA,QACE,GAAG;AAAA,QACH,WAAW,iBAAiB,OAAO,aAAa,YAAY,wBAAwB;AAAA,MACtF;AAAA,IACN;AAAA,IAEA;AACE,aAAO;AAAA,EACX;AACF;AAEA,MAAM,mBAAmB,CAAC,OAAc,aAAqB,eAC3D,MAAM,UAAU,IAAI,WAAW,GAAG,IAAI,UAAU,KAAK,oBAAI,IAAI;AAE/D,MAAM,mBAAmB,CACvB,OACA,aACA,YACA,kBAEA,IAAI,IAAI,MAAM,SAAS,EAAE;AAAA,EACvB;AAAA,EACA,IAAI,IAAI,MAAM,UAAU,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,IAAI,YAAY,aAAa;AAC/E;","names":[]}
|
|
@@ -43,6 +43,7 @@ __export(read_write_state_exports, {
|
|
|
43
43
|
getPropControllers: () => getPropControllers,
|
|
44
44
|
getPropControllersHandle: () => getPropControllersHandle,
|
|
45
45
|
getResolvedValueOverride: () => getResolvedValueOverride,
|
|
46
|
+
getResolvedValueOverridesGeneration: () => getResolvedValueOverridesGeneration,
|
|
46
47
|
hasResolvedValueOverride: () => hasResolvedValueOverride,
|
|
47
48
|
parse: () => import_box_models.parse,
|
|
48
49
|
setupBuilderProxy: () => setupBuilderProxy
|
|
@@ -159,6 +160,9 @@ function getResolvedValueOverride(state, documentKey, instanceKey) {
|
|
|
159
160
|
instanceKey
|
|
160
161
|
);
|
|
161
162
|
}
|
|
163
|
+
function getResolvedValueOverridesGeneration(state) {
|
|
164
|
+
return ResolvedValueOverrides.getGeneration(getResolvedValueOverridesStateSlice(state));
|
|
165
|
+
}
|
|
162
166
|
function setupBuilderProxy(builderProxy) {
|
|
163
167
|
return (dispatch) => {
|
|
164
168
|
return builderProxy.setup({ onHostAction: (action) => dispatch(action) });
|
|
@@ -181,6 +185,7 @@ function setupBuilderProxy(builderProxy) {
|
|
|
181
185
|
getPropControllers,
|
|
182
186
|
getPropControllersHandle,
|
|
183
187
|
getResolvedValueOverride,
|
|
188
|
+
getResolvedValueOverridesGeneration,
|
|
184
189
|
hasResolvedValueOverride,
|
|
185
190
|
parse,
|
|
186
191
|
setupBuilderProxy
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/state/read-write-state.ts"],"sourcesContent":["import { combineReducers, type ThunkAction, type ThunkDispatch } from '@reduxjs/toolkit'\n\nimport * as Documents from './modules/read-write/read-write-documents'\nimport * as BoxModels from './modules/read-write/box-models'\nimport * as Pointer from './modules/read-write/pointer'\nimport * as PropControllers from './modules/read-write/prop-controllers'\nimport * as ElementImperativeHandles from './modules/read-write/element-imperative-handles'\nimport * as ResolvedValueOverrides from './modules/read-write/resolved-value-overrides'\n\nimport { type Action } from './actions'\n\nimport { ElementImperativeHandle } from '../runtimes/react/element-imperative-handle'\n\nimport { BuilderAPIProxy } from './builder-api/proxy'\nimport * as ReadOnlyState from './read-only-state'\n\nexport type { Operation } from './modules/read-write/read-write-documents'\nexport type { BoxModelHandle } from './modules/read-write/box-models'\nexport { createBox, getBox, parse } from './modules/read-write/box-models'\nexport type { ResolvedValueKey, ResolvedValue } from './modules/read-write/resolved-value-overrides'\n\nconst reducers = {\n ...ReadOnlyState.reducers,\n documents: Documents.reducer,\n boxModels: BoxModels.reducer,\n pointer: Pointer.reducer,\n propControllers: PropControllers.reducer,\n elementImperativeHandles: ElementImperativeHandles.reducer,\n resolvedValueOverrides: ResolvedValueOverrides.reducer,\n}\n\nexport function createRootReducer() {\n return combineReducers(reducers)\n}\n\nexport type State = Omit<ReadOnlyState.State, 'documents'> & {\n documents: Documents.State\n boxModels: BoxModels.State\n pointer: Pointer.State\n propControllers: PropControllers.State\n elementImperativeHandles: ElementImperativeHandles.State\n resolvedValueOverrides: ResolvedValueOverrides.State\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nexport function getDocuments(state: State): Documents.State {\n return Documents.getDocuments(getDocumentsStateSlice(state))\n}\n\nexport function getDocument(state: State, documentKey: string): Documents.Document | null {\n return Documents.getDocument(getDocumentsStateSlice(state), documentKey)\n}\n\nfunction getBoxModelsStateSlice(state: State): BoxModels.State {\n return state.boxModels\n}\n\nexport function getMeasurables(state: State): Map<string, Map<string, BoxModels.Measurable>> {\n return BoxModels.getMeasurables(getBoxModelsStateSlice(state))\n}\n\nexport function getBoxModels(state: State): Map<string, Map<string, BoxModels.BoxDisplayModel>> {\n return BoxModels.getBoxModels(getBoxModelsStateSlice(state))\n}\n\nexport function getBoxModel(\n state: State,\n documentKey: string,\n elementKey: string,\n): BoxModels.BoxDisplayModel | null {\n return BoxModels.getBoxModel(getBoxModelsStateSlice(state), documentKey, elementKey)\n}\n\nexport function getPointer(state: State): Pointer.Point | null {\n return Pointer.getPointer(state.pointer)\n}\n\nexport function getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return ElementImperativeHandles.getElementImperativeHandles(state.elementImperativeHandles)\n}\n\nexport function getElementImperativeHandlesContainingElement(\n state: State,\n element: Element,\n): Map<string, Map<string, ElementImperativeHandle>> {\n const elementImperativeHandles = getElementImperativeHandles(state)\n const filteredElementImperativeHandles = new Map<string, Map<string, ElementImperativeHandle>>()\n\n for (const [documentKey, byElementKey] of elementImperativeHandles) {\n const filteredByElementKey = new Map<string, ElementImperativeHandle>()\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n const handleElement = elementImperativeHandle.getDomNode()\n\n if (handleElement?.contains(element)) {\n filteredByElementKey.set(elementKey, elementImperativeHandle)\n }\n }\n\n if (filteredByElementKey.size > 0) {\n filteredElementImperativeHandles.set(documentKey, filteredByElementKey)\n }\n }\n\n return filteredElementImperativeHandles\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nexport function getPropControllers(\n state: State,\n { documentKey, elementKey }: { documentKey: string; elementKey: string },\n) {\n return PropControllers.getPropControllers(\n getPropControllersStateSlice(state),\n documentKey,\n elementKey,\n )\n}\n\nexport function getPropControllersHandle(\n state: State,\n { documentKey, elementKey }: { documentKey: string; elementKey: string },\n) {\n return PropControllers.getPropControllersHandle(\n getPropControllersStateSlice(state),\n documentKey,\n elementKey,\n )\n}\n\nexport function getPropController(\n state: State,\n {\n documentKey,\n elementKey,\n propName,\n }: { documentKey: string; elementKey: string; propName: string },\n) {\n return PropControllers.getPropController(\n getPropControllersStateSlice(state),\n documentKey,\n elementKey,\n propName,\n )\n}\n\nfunction getResolvedValueOverridesStateSlice(state: State): ResolvedValueOverrides.State {\n return state.resolvedValueOverrides\n}\n\nexport function hasResolvedValueOverride(\n state: State,\n documentKey: string,\n instanceKey: ResolvedValueOverrides.ResolvedValueKey,\n): boolean {\n return ResolvedValueOverrides.hasValueOverride(\n getResolvedValueOverridesStateSlice(state),\n documentKey,\n instanceKey,\n )\n}\n\nexport function getResolvedValueOverride(\n state: State,\n documentKey: string,\n instanceKey: ResolvedValueOverrides.ResolvedValueKey,\n): ResolvedValueOverrides.ResolvedValue {\n return ResolvedValueOverrides.getValueOverride(\n getResolvedValueOverridesStateSlice(state),\n documentKey,\n instanceKey,\n )\n}\n\nexport function setupBuilderProxy(\n builderProxy: BuilderAPIProxy,\n): ThunkAction<VoidFunction, State, unknown, Action> {\n return dispatch => {\n return builderProxy.setup({ onHostAction: action => dispatch(action) })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAsE;AAEtE,gBAA2B;AAC3B,gBAA2B;AAC3B,cAAyB;AACzB,sBAAiC;AACjC,+BAA0C;AAC1C,6BAAwC;AAOxC,oBAA+B;AAI/B,wBAAyC;AAGzC,MAAM,WAAW;AAAA,EACf,GAAG,cAAc;AAAA,EACjB,WAAW,UAAU;AAAA,EACrB,WAAW,UAAU;AAAA,EACrB,SAAS,QAAQ;AAAA,EACjB,iBAAiB,gBAAgB;AAAA,EACjC,0BAA0B,yBAAyB;AAAA,EACnD,wBAAwB,uBAAuB;AACjD;AAEO,SAAS,oBAAoB;AAClC,aAAO,gCAAgB,QAAQ;AACjC;AAaA,SAAS,uBAAuB,OAA+B;AAC7D,SAAO,MAAM;AACf;AAEO,SAAS,aAAa,OAA+B;AAC1D,SAAO,UAAU,aAAa,uBAAuB,KAAK,CAAC;AAC7D;AAEO,SAAS,YAAY,OAAc,aAAgD;AACxF,SAAO,UAAU,YAAY,uBAAuB,KAAK,GAAG,WAAW;AACzE;AAEA,SAAS,uBAAuB,OAA+B;AAC7D,SAAO,MAAM;AACf;AAEO,SAAS,eAAe,OAA8D;AAC3F,SAAO,UAAU,eAAe,uBAAuB,KAAK,CAAC;AAC/D;AAEO,SAAS,aAAa,OAAmE;AAC9F,SAAO,UAAU,aAAa,uBAAuB,KAAK,CAAC;AAC7D;AAEO,SAAS,YACd,OACA,aACA,YACkC;AAClC,SAAO,UAAU,YAAY,uBAAuB,KAAK,GAAG,aAAa,UAAU;AACrF;AAEO,SAAS,WAAW,OAAoC;AAC7D,SAAO,QAAQ,WAAW,MAAM,OAAO;AACzC;AAEO,SAAS,4BACd,OACmD;AACnD,SAAO,yBAAyB,4BAA4B,MAAM,wBAAwB;AAC5F;AAEO,SAAS,6CACd,OACA,SACmD;AACnD,QAAM,2BAA2B,4BAA4B,KAAK;AAClE,QAAM,mCAAmC,oBAAI,IAAkD;AAE/F,aAAW,CAAC,aAAa,YAAY,KAAK,0BAA0B;AAClE,UAAM,uBAAuB,oBAAI,IAAqC;AAEtE,eAAW,CAAC,YAAY,uBAAuB,KAAK,cAAc;AAChE,YAAM,gBAAgB,wBAAwB,WAAW;AAEzD,UAAI,eAAe,SAAS,OAAO,GAAG;AACpC,6BAAqB,IAAI,YAAY,uBAAuB;AAAA,MAC9D;AAAA,IACF;AAEA,QAAI,qBAAqB,OAAO,GAAG;AACjC,uCAAiC,IAAI,aAAa,oBAAoB;AAAA,IACxE;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,6BAA6B,OAAqC;AACzE,SAAO,MAAM;AACf;AAEO,SAAS,mBACd,OACA,EAAE,aAAa,WAAW,GAC1B;AACA,SAAO,gBAAgB;AAAA,IACrB,6BAA6B,KAAK;AAAA,IAClC;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,yBACd,OACA,EAAE,aAAa,WAAW,GAC1B;AACA,SAAO,gBAAgB;AAAA,IACrB,6BAA6B,KAAK;AAAA,IAClC;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,kBACd,OACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AACF,GACA;AACA,SAAO,gBAAgB;AAAA,IACrB,6BAA6B,KAAK;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,oCAAoC,OAA4C;AACvF,SAAO,MAAM;AACf;AAEO,SAAS,yBACd,OACA,aACA,aACS;AACT,SAAO,uBAAuB;AAAA,IAC5B,oCAAoC,KAAK;AAAA,IACzC;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,yBACd,OACA,aACA,aACsC;AACtC,SAAO,uBAAuB;AAAA,IAC5B,oCAAoC,KAAK;AAAA,IACzC;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,kBACd,cACmD;AACnD,SAAO,cAAY;AACjB,WAAO,aAAa,MAAM,EAAE,cAAc,YAAU,SAAS,MAAM,EAAE,CAAC;AAAA,EACxE;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/state/read-write-state.ts"],"sourcesContent":["import { combineReducers, type ThunkAction, type ThunkDispatch } from '@reduxjs/toolkit'\n\nimport * as Documents from './modules/read-write/read-write-documents'\nimport * as BoxModels from './modules/read-write/box-models'\nimport * as Pointer from './modules/read-write/pointer'\nimport * as PropControllers from './modules/read-write/prop-controllers'\nimport * as ElementImperativeHandles from './modules/read-write/element-imperative-handles'\nimport * as ResolvedValueOverrides from './modules/read-write/resolved-value-overrides'\n\nimport { type Action } from './actions'\n\nimport { ElementImperativeHandle } from '../runtimes/react/element-imperative-handle'\n\nimport { BuilderAPIProxy } from './builder-api/proxy'\nimport * as ReadOnlyState from './read-only-state'\n\nexport type { Operation } from './modules/read-write/read-write-documents'\nexport type { BoxModelHandle } from './modules/read-write/box-models'\nexport { createBox, getBox, parse } from './modules/read-write/box-models'\nexport type { ResolvedValueKey, ResolvedValue } from './modules/read-write/resolved-value-overrides'\n\nconst reducers = {\n ...ReadOnlyState.reducers,\n documents: Documents.reducer,\n boxModels: BoxModels.reducer,\n pointer: Pointer.reducer,\n propControllers: PropControllers.reducer,\n elementImperativeHandles: ElementImperativeHandles.reducer,\n resolvedValueOverrides: ResolvedValueOverrides.reducer,\n}\n\nexport function createRootReducer() {\n return combineReducers(reducers)\n}\n\nexport type State = Omit<ReadOnlyState.State, 'documents'> & {\n documents: Documents.State\n boxModels: BoxModels.State\n pointer: Pointer.State\n propControllers: PropControllers.State\n elementImperativeHandles: ElementImperativeHandles.State\n resolvedValueOverrides: ResolvedValueOverrides.State\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nexport function getDocuments(state: State): Documents.State {\n return Documents.getDocuments(getDocumentsStateSlice(state))\n}\n\nexport function getDocument(state: State, documentKey: string): Documents.Document | null {\n return Documents.getDocument(getDocumentsStateSlice(state), documentKey)\n}\n\nfunction getBoxModelsStateSlice(state: State): BoxModels.State {\n return state.boxModels\n}\n\nexport function getMeasurables(state: State): Map<string, Map<string, BoxModels.Measurable>> {\n return BoxModels.getMeasurables(getBoxModelsStateSlice(state))\n}\n\nexport function getBoxModels(state: State): Map<string, Map<string, BoxModels.BoxDisplayModel>> {\n return BoxModels.getBoxModels(getBoxModelsStateSlice(state))\n}\n\nexport function getBoxModel(\n state: State,\n documentKey: string,\n elementKey: string,\n): BoxModels.BoxDisplayModel | null {\n return BoxModels.getBoxModel(getBoxModelsStateSlice(state), documentKey, elementKey)\n}\n\nexport function getPointer(state: State): Pointer.Point | null {\n return Pointer.getPointer(state.pointer)\n}\n\nexport function getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return ElementImperativeHandles.getElementImperativeHandles(state.elementImperativeHandles)\n}\n\nexport function getElementImperativeHandlesContainingElement(\n state: State,\n element: Element,\n): Map<string, Map<string, ElementImperativeHandle>> {\n const elementImperativeHandles = getElementImperativeHandles(state)\n const filteredElementImperativeHandles = new Map<string, Map<string, ElementImperativeHandle>>()\n\n for (const [documentKey, byElementKey] of elementImperativeHandles) {\n const filteredByElementKey = new Map<string, ElementImperativeHandle>()\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n const handleElement = elementImperativeHandle.getDomNode()\n\n if (handleElement?.contains(element)) {\n filteredByElementKey.set(elementKey, elementImperativeHandle)\n }\n }\n\n if (filteredByElementKey.size > 0) {\n filteredElementImperativeHandles.set(documentKey, filteredByElementKey)\n }\n }\n\n return filteredElementImperativeHandles\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nexport function getPropControllers(\n state: State,\n { documentKey, elementKey }: { documentKey: string; elementKey: string },\n) {\n return PropControllers.getPropControllers(\n getPropControllersStateSlice(state),\n documentKey,\n elementKey,\n )\n}\n\nexport function getPropControllersHandle(\n state: State,\n { documentKey, elementKey }: { documentKey: string; elementKey: string },\n) {\n return PropControllers.getPropControllersHandle(\n getPropControllersStateSlice(state),\n documentKey,\n elementKey,\n )\n}\n\nexport function getPropController(\n state: State,\n {\n documentKey,\n elementKey,\n propName,\n }: { documentKey: string; elementKey: string; propName: string },\n) {\n return PropControllers.getPropController(\n getPropControllersStateSlice(state),\n documentKey,\n elementKey,\n propName,\n )\n}\n\nfunction getResolvedValueOverridesStateSlice(state: State): ResolvedValueOverrides.State {\n return state.resolvedValueOverrides\n}\n\nexport function hasResolvedValueOverride(\n state: State,\n documentKey: string,\n instanceKey: ResolvedValueOverrides.ResolvedValueKey,\n): boolean {\n return ResolvedValueOverrides.hasValueOverride(\n getResolvedValueOverridesStateSlice(state),\n documentKey,\n instanceKey,\n )\n}\n\nexport function getResolvedValueOverride(\n state: State,\n documentKey: string,\n instanceKey: ResolvedValueOverrides.ResolvedValueKey,\n): ResolvedValueOverrides.ResolvedValue {\n return ResolvedValueOverrides.getValueOverride(\n getResolvedValueOverridesStateSlice(state),\n documentKey,\n instanceKey,\n )\n}\n\nexport function getResolvedValueOverridesGeneration(state: State): number {\n return ResolvedValueOverrides.getGeneration(getResolvedValueOverridesStateSlice(state))\n}\n\nexport function setupBuilderProxy(\n builderProxy: BuilderAPIProxy,\n): ThunkAction<VoidFunction, State, unknown, Action> {\n return dispatch => {\n return builderProxy.setup({ onHostAction: action => dispatch(action) })\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var window_exports = {};
|
|
20
|
+
__export(window_exports, {
|
|
21
|
+
windowMocks: () => windowMocks
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(window_exports);
|
|
24
|
+
function mockPostMessage() {
|
|
25
|
+
const postMessageMock = jest.spyOn(window, "postMessage").mockImplementation(() => {
|
|
26
|
+
});
|
|
27
|
+
const originalMessageChannel = window.MessageChannel;
|
|
28
|
+
const stubPort = () => ({ onmessage: null, postMessage: () => {
|
|
29
|
+
}, close: () => {
|
|
30
|
+
} });
|
|
31
|
+
window.MessageChannel = class {
|
|
32
|
+
port1 = stubPort();
|
|
33
|
+
port2 = stubPort();
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
mock: postMessageMock,
|
|
37
|
+
restore: () => {
|
|
38
|
+
postMessageMock.mockRestore();
|
|
39
|
+
window.MessageChannel = originalMessageChannel;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const windowMocks = {
|
|
44
|
+
mockPostMessage
|
|
45
|
+
};
|
|
46
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
47
|
+
0 && (module.exports = {
|
|
48
|
+
windowMocks
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=window.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/testing/window.ts"],"sourcesContent":["/*\n * Mock `window.postMessage` together with `MessageChannel`\n */\nfunction mockPostMessage(): { mock: jest.SpyInstance; restore: () => void } {\n const postMessageMock = jest.spyOn(window, 'postMessage').mockImplementation(() => {})\n\n const originalMessageChannel = window.MessageChannel\n const stubPort = () => ({ onmessage: null, postMessage: () => {}, close: () => {} })\n window.MessageChannel = class {\n port1 = stubPort()\n port2 = stubPort()\n } as unknown as typeof MessageChannel\n\n return {\n mock: postMessageMock,\n restore: () => {\n postMessageMock.mockRestore()\n window.MessageChannel = originalMessageChannel\n },\n }\n}\n\nexport const windowMocks = {\n mockPostMessage,\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,SAAS,kBAAmE;AAC1E,QAAM,kBAAkB,KAAK,MAAM,QAAQ,aAAa,EAAE,mBAAmB,MAAM;AAAA,EAAC,CAAC;AAErF,QAAM,yBAAyB,OAAO;AACtC,QAAM,WAAW,OAAO,EAAE,WAAW,MAAM,aAAa,MAAM;AAAA,EAAC,GAAG,OAAO,MAAM;AAAA,EAAC,EAAE;AAClF,SAAO,iBAAiB,MAAM;AAAA,IAC5B,QAAQ,SAAS;AAAA,IACjB,QAAQ,SAAS;AAAA,EACnB;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,MAAM;AACb,sBAAgB,YAAY;AAC5B,aAAO,iBAAiB;AAAA,IAC1B;AAAA,EACF;AACF;AAEO,MAAM,cAAc;AAAA,EACzB;AACF;","names":[]}
|
|
@@ -16,12 +16,19 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
|
|
19
|
+
var error_message_exports = {};
|
|
20
|
+
__export(error_message_exports, {
|
|
21
|
+
errorMessage: () => errorMessage,
|
|
22
|
+
isErrorWithMessage: () => isErrorWithMessage
|
|
22
23
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
+
module.exports = __toCommonJS(error_message_exports);
|
|
24
25
|
function isErrorWithMessage(error) {
|
|
25
26
|
return typeof error === "object" && error !== null && "message" in error && typeof error.message === "string";
|
|
26
27
|
}
|
|
27
|
-
|
|
28
|
+
const errorMessage = (error) => isErrorWithMessage(error) ? error.message : typeof error === "string" ? error : "Unknown error";
|
|
29
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
30
|
+
0 && (module.exports = {
|
|
31
|
+
errorMessage,
|
|
32
|
+
isErrorWithMessage
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=error-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/error-message.ts"],"sourcesContent":["type ErrorWithMessage = {\n message: string\n}\n\nexport function isErrorWithMessage(error: unknown): error is ErrorWithMessage {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof error.message === 'string'\n )\n}\n\nexport const errorMessage = (error: unknown) =>\n isErrorWithMessage(error) ? error.message : typeof error === 'string' ? error : 'Unknown error'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,SAAS,mBAAmB,OAA2C;AAC5E,SACE,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,OAAO,MAAM,YAAY;AAE7B;AAEO,MAAM,eAAe,CAAC,UAC3B,mBAAmB,KAAK,IAAI,MAAM,UAAU,OAAO,UAAU,WAAW,QAAQ;","names":[]}
|
|
@@ -4,7 +4,7 @@ class MakeswiftGraphQLApiClient {
|
|
|
4
4
|
graphqlClient;
|
|
5
5
|
constructor({ endpoint }) {
|
|
6
6
|
this.graphqlClient = new GraphQLClient(endpoint, {
|
|
7
|
-
"makeswift-runtime-version": "0.29.0-canary.
|
|
7
|
+
"makeswift-runtime-version": "0.29.0-canary.23"
|
|
8
8
|
});
|
|
9
9
|
}
|
|
10
10
|
async getUnversionedResources({
|
|
@@ -188,7 +188,7 @@ class MakeswiftRestAPIClient {
|
|
|
188
188
|
const requestHeaders = new Headers({
|
|
189
189
|
"x-api-key": this.apiKey,
|
|
190
190
|
"makeswift-site-api-key": this.apiKey,
|
|
191
|
-
"makeswift-runtime-version": "0.29.0-canary.
|
|
191
|
+
"makeswift-runtime-version": "0.29.0-canary.23"
|
|
192
192
|
});
|
|
193
193
|
if (siteVersion?.token) {
|
|
194
194
|
requestUrl.searchParams.set("version", siteVersion.version);
|
|
@@ -8,7 +8,7 @@ async function manifestHandler(req, { apiKey, manifest }) {
|
|
|
8
8
|
return ApiResponse.json({ message: "Unauthorized" }, { status: 401 });
|
|
9
9
|
}
|
|
10
10
|
return ApiResponse.json({
|
|
11
|
-
version: "0.29.0-canary.
|
|
11
|
+
version: "0.29.0-canary.23",
|
|
12
12
|
interactionMode: true,
|
|
13
13
|
clientSideNavigation: false,
|
|
14
14
|
elementFromPoint: false,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ApiResponse } from "../request-response";
|
|
2
|
-
import isErrorWithMessage from "../../utils/
|
|
2
|
+
import { isErrorWithMessage } from "../../utils/error-message";
|
|
3
3
|
async function mergeTranslatedDataHandler(req, { client }) {
|
|
4
4
|
const body = await req.json();
|
|
5
5
|
const { translatedData, elementTree } = body;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/api-handler/handlers/merge-translated-data.ts"],"sourcesContent":["import { type Element } from '../../state/read-only-state'\nimport { MakeswiftClient } from '../../client'\nimport { type ApiRequest, ApiResponse, type ErrorResponseBody } from '../request-response'\nimport isErrorWithMessage from '../../utils/
|
|
1
|
+
{"version":3,"sources":["../../../../src/api-handler/handlers/merge-translated-data.ts"],"sourcesContent":["import { type Element } from '../../state/read-only-state'\nimport { MakeswiftClient } from '../../client'\nimport { type ApiRequest, ApiResponse, type ErrorResponseBody } from '../request-response'\nimport { isErrorWithMessage } from '../../utils/error-message'\n\ntype TranslatedData = { elementTree: Element }\n\nexport async function mergeTranslatedDataHandler(\n req: ApiRequest,\n { client }: { client: MakeswiftClient },\n): Promise<ApiResponse<TranslatedData | ErrorResponseBody>> {\n const body = await req.json()\n const { translatedData, elementTree } = body\n\n if (translatedData == null) {\n return ApiResponse.json({ message: 'translatedData must be defined' }, { status: 400 })\n }\n\n if (elementTree == null) {\n return ApiResponse.json({ message: 'elementTree must be defined' }, { status: 400 })\n }\n\n try {\n const translatedElementTree = client.mergeTranslatedData(elementTree, translatedData)\n return ApiResponse.json({ elementTree: translatedElementTree })\n } catch (error) {\n if (isErrorWithMessage(error)) {\n return ApiResponse.json({ message: error.message }, { status: 500 })\n }\n return ApiResponse.json({ message: 'Error merging translated data' }, { status: 500 })\n }\n}\n"],"mappings":"AAEA,SAA0B,mBAA2C;AACrE,SAAS,0BAA0B;AAInC,eAAsB,2BACpB,KACA,EAAE,OAAO,GACiD;AAC1D,QAAM,OAAO,MAAM,IAAI,KAAK;AAC5B,QAAM,EAAE,gBAAgB,YAAY,IAAI;AAExC,MAAI,kBAAkB,MAAM;AAC1B,WAAO,YAAY,KAAK,EAAE,SAAS,iCAAiC,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,EACxF;AAEA,MAAI,eAAe,MAAM;AACvB,WAAO,YAAY,KAAK,EAAE,SAAS,8BAA8B,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,EACrF;AAEA,MAAI;AACF,UAAM,wBAAwB,OAAO,oBAAoB,aAAa,cAAc;AACpF,WAAO,YAAY,KAAK,EAAE,aAAa,sBAAsB,CAAC;AAAA,EAChE,SAAS,OAAO;AACd,QAAI,mBAAmB,KAAK,GAAG;AAC7B,aAAO,YAAY,KAAK,EAAE,SAAS,MAAM,QAAQ,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,IACrE;AACA,WAAO,YAAY,KAAK,EAAE,SAAS,gCAAgC,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,EACvF;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/api-handler/handlers/revalidate.ts"],"sourcesContent":["import isErrorWithMessage from '../../utils/
|
|
1
|
+
{"version":3,"sources":["../../../../src/api-handler/handlers/revalidate.ts"],"sourcesContent":["import { isErrorWithMessage } from '../../utils/error-message'\nimport {\n type ApiRequest,\n type ErrorResponseBody,\n ApiResponse,\n searchParams,\n} from '../request-response'\n\ntype RevalidationResult = { revalidated: boolean }\n\nexport async function revalidateHandler(\n req: ApiRequest,\n { apiKey, revalidatePath }: { apiKey: string; revalidatePath: (path: string) => Promise<void> },\n): Promise<ApiResponse<RevalidationResult | ErrorResponseBody>> {\n const params = searchParams(req)\n\n const secret = params.get('secret')\n if (secret !== apiKey) {\n return ApiResponse.json({ message: 'Unauthorized' }, { status: 401 })\n }\n\n const path = params.get('path')\n if (typeof path !== 'string') {\n return ApiResponse.json({ message: 'Bad Request' }, { status: 400 })\n }\n\n try {\n await revalidatePath(path)\n return ApiResponse.json({ revalidated: true })\n } catch (error) {\n if (isErrorWithMessage(error)) {\n return ApiResponse.json({ message: error.message }, { status: 500 })\n }\n\n return ApiResponse.json({ message: 'Error Revalidating' }, { status: 500 })\n }\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AACnC;AAAA,EAGE;AAAA,EACA;AAAA,OACK;AAIP,eAAsB,kBACpB,KACA,EAAE,QAAQ,eAAe,GACqC;AAC9D,QAAM,SAAS,aAAa,GAAG;AAE/B,QAAM,SAAS,OAAO,IAAI,QAAQ;AAClC,MAAI,WAAW,QAAQ;AACrB,WAAO,YAAY,KAAK,EAAE,SAAS,eAAe,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,EACtE;AAEA,QAAM,OAAO,OAAO,IAAI,MAAM;AAC9B,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO,YAAY,KAAK,EAAE,SAAS,cAAc,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,EACrE;AAEA,MAAI;AACF,UAAM,eAAe,IAAI;AACzB,WAAO,YAAY,KAAK,EAAE,aAAa,KAAK,CAAC;AAAA,EAC/C,SAAS,OAAO;AACd,QAAI,mBAAmB,KAAK,GAAG;AAC7B,aAAO,YAAY,KAAK,EAAE,SAAS,MAAM,QAAQ,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,IACrE;AAEA,WAAO,YAAY,KAAK,EAAE,SAAS,qBAAqB,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,EAC5E;AACF;","names":[]}
|