@makeswift/runtime 0.28.4-canary.0 → 0.28.4-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api-handler/handlers/manifest.js +1 -1
- package/dist/cjs/builder/serialization.js +78 -0
- package/dist/cjs/builder/serialization.js.map +1 -0
- package/dist/cjs/client/index.js +3 -3
- package/dist/cjs/controls/serialization/base/index.js +76 -0
- package/dist/cjs/controls/serialization/base/index.js.map +1 -0
- package/dist/cjs/controls/{visitors/message-port-serializer/client-message-port-serialization-visitor.js → serialization/base/visitor.js} +9 -22
- package/dist/cjs/controls/serialization/base/visitor.js.map +1 -0
- package/dist/cjs/controls/serialization/index.js +55 -0
- package/dist/cjs/controls/serialization/index.js.map +1 -0
- package/dist/cjs/controls/serialization/message-port/function-serialization.js.map +1 -0
- package/dist/cjs/{builder/serialization → controls/serialization/message-port}/index.js +6 -6
- package/dist/cjs/controls/serialization/message-port/index.js.map +1 -0
- package/dist/cjs/controls/{visitors/message-port-serializer/index.js → serialization/message-port/visitor.js} +25 -13
- package/dist/cjs/controls/serialization/message-port/visitor.js.map +1 -0
- package/dist/cjs/{builder/serialization/control-serialization.js → prop-controllers/serialization.js} +41 -144
- package/dist/cjs/prop-controllers/serialization.js.map +1 -0
- package/dist/cjs/state/modules/element-trees.js +45 -19
- package/dist/cjs/state/modules/element-trees.js.map +1 -1
- package/dist/esm/api-handler/handlers/manifest.js +1 -1
- package/dist/esm/builder/serialization.js +59 -0
- package/dist/esm/builder/serialization.js.map +1 -0
- package/dist/esm/client/index.js +3 -3
- package/dist/esm/controls/serialization/base/index.js +74 -0
- package/dist/esm/controls/serialization/base/index.js.map +1 -0
- package/dist/esm/controls/{visitors/message-port-serializer/client-message-port-serialization-visitor.js → serialization/base/visitor.js} +6 -20
- package/dist/esm/controls/serialization/base/visitor.js.map +1 -0
- package/dist/esm/controls/serialization/index.js +30 -0
- package/dist/esm/controls/serialization/index.js.map +1 -0
- package/dist/esm/controls/serialization/message-port/function-serialization.js.map +1 -0
- package/dist/esm/controls/serialization/message-port/index.js +3 -0
- package/dist/esm/controls/serialization/message-port/index.js.map +1 -0
- package/dist/esm/controls/serialization/message-port/visitor.js +24 -0
- package/dist/esm/controls/serialization/message-port/visitor.js.map +1 -0
- package/dist/esm/{builder/serialization/control-serialization.js → prop-controllers/serialization.js} +11 -136
- package/dist/esm/prop-controllers/serialization.js.map +1 -0
- package/dist/esm/state/modules/element-trees.js +46 -20
- package/dist/esm/state/modules/element-trees.js.map +1 -1
- package/dist/types/api-handler/handlers/webhook/types.d.ts +4 -4
- package/dist/types/builder/serialization.d.ts +23 -0
- package/dist/types/builder/serialization.d.ts.map +1 -0
- package/dist/types/builder/serialization.test.d.ts +2 -0
- package/dist/types/builder/serialization.test.d.ts.map +1 -0
- package/dist/types/client/index.d.ts +4 -4
- package/dist/types/controls/serialization/base/index.d.ts +10 -0
- package/dist/types/controls/serialization/base/index.d.ts.map +1 -0
- package/dist/types/controls/serialization/base/visitor.d.ts +7 -0
- package/dist/types/controls/serialization/base/visitor.d.ts.map +1 -0
- package/dist/types/controls/serialization/index.d.ts +10 -0
- package/dist/types/controls/serialization/index.d.ts.map +1 -0
- package/dist/types/controls/{visitors/message-port-serializer → serialization/message-port}/function-serialization.d.ts +1 -1
- package/dist/types/controls/serialization/message-port/function-serialization.d.ts.map +1 -0
- package/dist/types/controls/serialization/message-port/function-serialization.test.d.ts.map +1 -0
- package/dist/types/controls/serialization/message-port/index.d.ts +3 -0
- package/dist/types/controls/serialization/message-port/index.d.ts.map +1 -0
- package/dist/types/controls/serialization/message-port/visitor.d.ts +7 -0
- package/dist/types/controls/serialization/message-port/visitor.d.ts.map +1 -0
- package/dist/types/{builder/serialization/control-serialization.d.ts → prop-controllers/serialization.d.ts} +11 -29
- package/dist/types/prop-controllers/serialization.d.ts.map +1 -0
- package/dist/types/slate/BlockPlugin/index.d.ts +3 -3
- package/dist/types/state/modules/__tests__/fixtures/element-trees-demo-component.d.ts +4 -0
- package/dist/types/state/modules/__tests__/fixtures/element-trees-demo-component.d.ts.map +1 -1
- package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts +7 -0
- package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/builder/serialization/control-serialization.js.map +0 -1
- package/dist/cjs/builder/serialization/controls/types.js +0 -17
- package/dist/cjs/builder/serialization/controls/types.js.map +0 -1
- package/dist/cjs/builder/serialization/function-serialization.js +0 -57
- package/dist/cjs/builder/serialization/function-serialization.js.map +0 -1
- package/dist/cjs/builder/serialization/index.js.map +0 -1
- package/dist/cjs/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js.map +0 -1
- package/dist/cjs/controls/visitors/message-port-serializer/function-serialization.js.map +0 -1
- package/dist/cjs/controls/visitors/message-port-serializer/index.js.map +0 -1
- package/dist/esm/builder/serialization/control-serialization.js.map +0 -1
- package/dist/esm/builder/serialization/controls/types.js +0 -1
- package/dist/esm/builder/serialization/controls/types.js.map +0 -1
- package/dist/esm/builder/serialization/function-serialization.js +0 -31
- package/dist/esm/builder/serialization/function-serialization.js.map +0 -1
- package/dist/esm/builder/serialization/index.js +0 -3
- package/dist/esm/builder/serialization/index.js.map +0 -1
- package/dist/esm/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js.map +0 -1
- package/dist/esm/controls/visitors/message-port-serializer/function-serialization.js.map +0 -1
- package/dist/esm/controls/visitors/message-port-serializer/index.js +0 -13
- package/dist/esm/controls/visitors/message-port-serializer/index.js.map +0 -1
- package/dist/types/builder/serialization/control-serialization.d.ts.map +0 -1
- package/dist/types/builder/serialization/control-serialization.test.d.ts +0 -2
- package/dist/types/builder/serialization/control-serialization.test.d.ts.map +0 -1
- package/dist/types/builder/serialization/controls/types.d.ts +0 -10
- package/dist/types/builder/serialization/controls/types.d.ts.map +0 -1
- package/dist/types/builder/serialization/function-serialization.d.ts +0 -12
- package/dist/types/builder/serialization/function-serialization.d.ts.map +0 -1
- package/dist/types/builder/serialization/function-serialization.test.d.ts.map +0 -1
- package/dist/types/builder/serialization/index.d.ts +0 -4
- package/dist/types/builder/serialization/index.d.ts.map +0 -1
- package/dist/types/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.d.ts +0 -9
- package/dist/types/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.d.ts.map +0 -1
- package/dist/types/controls/visitors/message-port-serializer/function-serialization.d.ts.map +0 -1
- package/dist/types/controls/visitors/message-port-serializer/function-serialization.test.d.ts +0 -2
- package/dist/types/controls/visitors/message-port-serializer/function-serialization.test.d.ts.map +0 -1
- package/dist/types/controls/visitors/message-port-serializer/index.d.ts +0 -3
- package/dist/types/controls/visitors/message-port-serializer/index.d.ts.map +0 -1
- /package/dist/cjs/controls/{visitors/message-port-serializer → serialization/message-port}/function-serialization.js +0 -0
- /package/dist/esm/controls/{visitors/message-port-serializer → serialization/message-port}/function-serialization.js +0 -0
- /package/dist/types/{builder/serialization → controls/serialization/message-port}/function-serialization.test.d.ts +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getIn } from "immutable";
|
|
1
|
+
import { getIn, removeIn, setIn } from "immutable";
|
|
2
2
|
import { isElementReference } from "@makeswift/controls";
|
|
3
3
|
import * as Introspection from "../../prop-controllers/introspection";
|
|
4
4
|
import { isKnownAction } from "../actions";
|
|
@@ -180,11 +180,11 @@ function deleteElement({ elements, elementIds }, deletedElement, propName, descr
|
|
|
180
180
|
}
|
|
181
181
|
function applyDelete(elementTree, descriptors, rootElements, path) {
|
|
182
182
|
const [deleteElementPath, ...parentElementPaths] = getChangedElementsPaths(path);
|
|
183
|
-
const [deletedElement, propName] = getElementAndPropName(rootElements.
|
|
183
|
+
const [deletedElement, propName] = getElementAndPropName(rootElements.before, deleteElementPath);
|
|
184
184
|
const elements = new Map(elementTree.elements);
|
|
185
185
|
const elementIds = new Map(elementTree.elementIds);
|
|
186
186
|
deleteElement({ elements, elementIds }, deletedElement, propName, descriptors);
|
|
187
|
-
updateParentElements(elements, parentElementPaths, rootElements.
|
|
187
|
+
updateParentElements(elements, parentElementPaths, rootElements.after);
|
|
188
188
|
return {
|
|
189
189
|
elements,
|
|
190
190
|
elementIds
|
|
@@ -211,11 +211,11 @@ function insertElement({ elements, elementIds }, insertedElement, propName, desc
|
|
|
211
211
|
}
|
|
212
212
|
function applyInsert(elementTree, descriptors, rootElements, path) {
|
|
213
213
|
const [insertedElementPath, ...parentElementPaths] = getChangedElementsPaths(path);
|
|
214
|
-
const [insertedElement, propName] = getElementAndPropName(rootElements.
|
|
214
|
+
const [insertedElement, propName] = getElementAndPropName(rootElements.after, insertedElementPath);
|
|
215
215
|
const elements = new Map(elementTree.elements);
|
|
216
216
|
const elementIds = new Map(elementTree.elementIds);
|
|
217
217
|
insertElement({ elements, elementIds }, insertedElement, propName, descriptors);
|
|
218
|
-
updateParentElements(elements, parentElementPaths, rootElements.
|
|
218
|
+
updateParentElements(elements, parentElementPaths, rootElements.after);
|
|
219
219
|
return {
|
|
220
220
|
elements,
|
|
221
221
|
elementIds
|
|
@@ -223,31 +223,57 @@ function applyInsert(elementTree, descriptors, rootElements, path) {
|
|
|
223
223
|
}
|
|
224
224
|
function applyUpdate(elementTree, descriptors, rootElements, path) {
|
|
225
225
|
const [updateElementPath, ...parentElementPaths] = getChangedElementsPaths(path);
|
|
226
|
-
const [deletedElement, propName] = getElementAndPropName(rootElements.
|
|
227
|
-
const [insertedElement, _] = getElementAndPropName(rootElements.
|
|
226
|
+
const [deletedElement, propName] = getElementAndPropName(rootElements.before, updateElementPath);
|
|
227
|
+
const [insertedElement, _] = getElementAndPropName(rootElements.after, updateElementPath);
|
|
228
228
|
const elements = new Map(elementTree.elements);
|
|
229
229
|
const elementIds = new Map(elementTree.elementIds);
|
|
230
230
|
deleteElement({ elements, elementIds }, deletedElement, propName, descriptors);
|
|
231
231
|
insertElement({ elements, elementIds }, insertedElement, propName, descriptors);
|
|
232
|
-
updateParentElements(elements, parentElementPaths, rootElements.
|
|
232
|
+
updateParentElements(elements, parentElementPaths, rootElements.after);
|
|
233
233
|
return {
|
|
234
234
|
elements,
|
|
235
235
|
elementIds
|
|
236
236
|
};
|
|
237
237
|
}
|
|
238
|
+
function applyOpComponent(root, component) {
|
|
239
|
+
let applied = root;
|
|
240
|
+
if ("ld" in component || "od" in component) {
|
|
241
|
+
applied = removeIn(applied, component.p);
|
|
242
|
+
}
|
|
243
|
+
if ("li" in component) {
|
|
244
|
+
applied = setIn(applied, component.p, component.li);
|
|
245
|
+
}
|
|
246
|
+
if ("oi" in component) {
|
|
247
|
+
applied = setIn(applied, component.p, component.oi);
|
|
248
|
+
}
|
|
249
|
+
return applied;
|
|
250
|
+
}
|
|
251
|
+
function selectTreeTransform(op) {
|
|
252
|
+
const hasDelete = "ld" in op || "od" in op;
|
|
253
|
+
const hasInsert = "li" in op || "oi" in op;
|
|
254
|
+
if (hasDelete && hasInsert)
|
|
255
|
+
return applyUpdate;
|
|
256
|
+
if (hasDelete)
|
|
257
|
+
return applyDelete;
|
|
258
|
+
if (hasInsert)
|
|
259
|
+
return applyInsert;
|
|
260
|
+
return (elementTree) => elementTree;
|
|
261
|
+
}
|
|
238
262
|
function applyChanges(elementTree, descriptors, rootElements, operation) {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
263
|
+
const result = operation.reduce(
|
|
264
|
+
(acc, op) => {
|
|
265
|
+
const rootBefore = acc.rootBefore;
|
|
266
|
+
const rootAfter = operation.length > 1 ? applyOpComponent(rootBefore, op) : rootElements.new;
|
|
267
|
+
const roots = { before: rootBefore, after: rootAfter };
|
|
268
|
+
const applyChange = selectTreeTransform(op);
|
|
269
|
+
return {
|
|
270
|
+
elementTree: applyChange(acc.elementTree, descriptors, roots, op.p),
|
|
271
|
+
rootBefore: rootAfter
|
|
272
|
+
};
|
|
273
|
+
},
|
|
274
|
+
{ elementTree, rootBefore: rootElements.old }
|
|
275
|
+
);
|
|
276
|
+
return result.elementTree;
|
|
251
277
|
}
|
|
252
278
|
export {
|
|
253
279
|
buildElementTree,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/state/modules/element-trees.ts"],"sourcesContent":["import { type Operation } from 'ot-json0'\nimport { getIn } from 'immutable'\n\nimport { type Element, type ElementData, isElementReference } from '@makeswift/controls'\n\nimport * as Introspection from '../../prop-controllers/introspection'\n\nimport { type Action, type UnknownAction, isKnownAction } from '../actions'\n\nimport { ReadOnlyActionTypes } from '../actions/internal/read-only-actions'\nimport { ReadWriteActionTypes } from '../actions/internal/read-write-actions'\n\nimport { getRootElement, type Document } from './read-only-documents'\nimport { type DescriptorsByComponentType } from './prop-controllers'\n\nexport type ElementTree = {\n elements: Map<string, Element>\n elementIds: Map<string, string>\n}\n\nexport type State = Map<string, ElementTree>\n\nexport function getInitialState(\n documents?: Map<string, Document>,\n descriptors?: DescriptorsByComponentType,\n): State {\n const state = new Map<string, ElementTree>()\n if (documents == null || descriptors == null) return state\n\n for (const [documentKey, document] of documents) {\n state.set(documentKey, buildElementTree(getRootElement(document), descriptors))\n }\n\n return state\n}\n\nfunction getElementTree(state: State, documentKey: string): ElementTree | null {\n return state.get(documentKey) ?? null\n}\n\nexport function getElements(state: State, documentKey: string): Map<string, Element> {\n return getElementTree(state, documentKey)?.elements ?? new Map()\n}\n\nexport function getElementIds(state: State, documentKey: string): Map<string, string> {\n return getElementTree(state, documentKey)?.elementIds ?? new Map()\n}\n\nexport function getElement(state: State, documentKey: string, elementKey: string): Element | null {\n return getElements(state, documentKey).get(elementKey) ?? null\n}\n\nexport function getElementId(state: State, documentKey: string, elementKey: string): string | null {\n return getElementIds(state, documentKey).get(elementKey) ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ReadOnlyActionTypes.CREATE_ELEMENT_TREE: {\n const { document, descriptors } = action.payload\n return new Map(state).set(\n document.key,\n buildElementTree(getRootElement(document), descriptors),\n )\n }\n\n case ReadOnlyActionTypes.DELETE_ELEMENT_TREE: {\n const nextState = new Map(state)\n const deleted = nextState.delete(action.payload.documentKey)\n return deleted ? nextState : state\n }\n\n case ReadWriteActionTypes.CHANGE_ELEMENT_TREE: {\n const { oldDocument, newDocument, descriptors, operation } = action.payload\n const documentKey = oldDocument.key\n console.assert(\n documentKey === newDocument.key,\n `Mismatching document keys ${documentKey} !== ${newDocument.key}`,\n )\n\n const elementTree = state.get(documentKey)\n if (elementTree == null) return state\n\n const updatedElementTree = applyChanges(\n elementTree,\n descriptors,\n {\n old: getRootElement(oldDocument),\n new: getRootElement(newDocument),\n },\n operation,\n )\n\n return new Map(state).set(documentKey, updatedElementTree)\n }\n\n default:\n return state\n }\n}\n\nexport function* traverseElementTree(\n element: Element,\n descriptors: DescriptorsByComponentType,\n): Generator<Element> {\n yield element\n if (isElementReference(element)) return\n\n const elementDescriptors = descriptors.get(element.type)\n if (elementDescriptors == null) return\n\n for (const [propKey, descriptor] of Object.entries(elementDescriptors)) {\n const children = Introspection.getElementChildren(descriptor, element.props[propKey])\n for (const child of children) {\n yield* traverseElementTree(child, descriptors)\n }\n }\n}\n\nfunction getElementIdProp(\n element: ElementData,\n descriptors: DescriptorsByComponentType,\n): string | null {\n const elementDescriptors = descriptors.get(element.type)\n if (elementDescriptors == null) return null\n\n for (const [propName, descriptor] of Object.entries(elementDescriptors)) {\n const elementId = Introspection.getElementId(descriptor, element.props[propName])\n if (elementId != null) return elementId\n }\n\n return null\n}\n\nexport function buildElementTree(\n rootElement: Element,\n descriptors: DescriptorsByComponentType,\n): ElementTree {\n const elements = new Map<string, Element>()\n const elementIds = new Map<string, string>()\n\n for (const element of traverseElementTree(rootElement, descriptors)) {\n elements.set(element.key, element)\n if (!isElementReference(element)) {\n const elementId = getElementIdProp(element, descriptors)\n if (elementId != null) elementIds.set(element.key, elementId)\n }\n }\n\n return {\n elements,\n elementIds,\n }\n}\n\ntype OperationPath = Operation[number]['p']\n\n// performance-sensitive function, intentionally not using `elementData` schema here\nfunction isElement(item: unknown): item is Element {\n return (\n typeof item === 'object' &&\n item != null &&\n 'key' in item &&\n 'type' in item &&\n typeof item.key === 'string' &&\n typeof item.type === 'string'\n )\n}\n\ntype ElementOperationPath = { elementPath: OperationPath; propName: string | null }\n\nfunction getElementOperationPath(path: OperationPath): ElementOperationPath {\n if (path.length === 0) {\n return { elementPath: [], propName: null }\n }\n\n const i = path.findLastIndex(\n (fragment, i) =>\n typeof fragment === 'number' && (i === path.length - 1 || path[i + 1] === 'props'),\n )\n\n if ((i === -1 && path[0] !== 'props') || path.length - i < 3) {\n console.error('Operation path does not point to an element property', { path })\n return { elementPath: [], propName: null }\n }\n\n return { elementPath: path.slice(0, i + 1), propName: `${path.slice(i + 1).at(1)}` }\n}\n\nexport function getChangedElementsPaths(\n path: OperationPath,\n): [ElementOperationPath, ...ElementOperationPath[]] {\n let elementOp = getElementOperationPath(path)\n const result: [ElementOperationPath, ...ElementOperationPath[]] = [elementOp]\n while (elementOp.elementPath.length > 0) {\n elementOp = getElementOperationPath(elementOp.elementPath.slice(0, -1))\n result.push(elementOp)\n }\n\n return result\n}\n\nfunction getElementByPath(rootElement: Element, elementPath: OperationPath): Element | null {\n const item = getIn(rootElement, elementPath)\n if (!isElement(item)) {\n console.error('Expected an element, got', item, {\n rootElement,\n elementPath,\n })\n\n return null\n }\n\n return item\n}\n\nfunction getElementAndPropName(\n rootElement: Element,\n { elementPath, propName }: ElementOperationPath,\n): [Element, string | null] {\n const element = getElementByPath(rootElement, elementPath)\n return element != null ? [element, propName] : [rootElement, null]\n}\n\nfunction updateParentElements(\n elements: ElementTree['elements'],\n elementPaths: ElementOperationPath[],\n rootElement: Element,\n): void {\n elementPaths.forEach(({ elementPath }) => {\n const element = getElementByPath(rootElement, elementPath)\n if (element != null) elements.set(element.key, element)\n })\n}\n\nfunction hasChildren(\n element: Element,\n propName: string,\n descriptors: DescriptorsByComponentType,\n): boolean {\n if (isElementReference(element)) return false\n\n const propDescriptor = descriptors.get(element.type)?.[propName]\n if (propDescriptor == null) return false\n\n const children = Introspection.getElementChildren(propDescriptor, element.props[propName])\n return children.length > 0\n}\n\nfunction deleteElement(\n { elements, elementIds }: ElementTree,\n deletedElement: Element,\n propName: string | null,\n descriptors: DescriptorsByComponentType,\n) {\n if (propName == null || hasChildren(deletedElement, propName, descriptors)) {\n for (const element of traverseElementTree(deletedElement, descriptors)) {\n elements.delete(element.key)\n elementIds.delete(element.key)\n }\n } else {\n elements.delete(deletedElement.key)\n elementIds.delete(deletedElement.key)\n }\n}\n\nfunction applyDelete(\n elementTree: ElementTree,\n descriptors: DescriptorsByComponentType,\n rootElements: { old: Element; new: Element },\n path: OperationPath,\n): ElementTree {\n const [deleteElementPath, ...parentElementPaths] = getChangedElementsPaths(path)\n const [deletedElement, propName] = getElementAndPropName(rootElements.old, deleteElementPath)\n\n const elements = new Map(elementTree.elements)\n const elementIds = new Map(elementTree.elementIds)\n\n deleteElement({ elements, elementIds }, deletedElement, propName, descriptors)\n updateParentElements(elements, parentElementPaths, rootElements.new)\n\n return {\n elements,\n elementIds,\n }\n}\n\nfunction insertElement(\n { elements, elementIds }: ElementTree,\n insertedElement: Element,\n propName: string | null,\n descriptors: DescriptorsByComponentType,\n) {\n if (propName == null || hasChildren(insertedElement, propName, descriptors)) {\n for (const element of traverseElementTree(insertedElement, descriptors)) {\n elements.set(element.key, element)\n if (!isElementReference(element)) {\n const elementId = getElementIdProp(element, descriptors)\n if (elementId != null) elementIds.set(element.key, elementId)\n }\n }\n } else {\n elements.set(insertedElement.key, insertedElement)\n if (!isElementReference(insertedElement)) {\n const elementId = getElementIdProp(insertedElement, descriptors)\n if (elementId != null) elementIds.set(insertedElement.key, elementId)\n }\n }\n}\n\nfunction applyInsert(\n elementTree: ElementTree,\n descriptors: DescriptorsByComponentType,\n rootElements: { old: Element; new: Element },\n path: OperationPath,\n): ElementTree {\n const [insertedElementPath, ...parentElementPaths] = getChangedElementsPaths(path)\n const [insertedElement, propName] = getElementAndPropName(rootElements.new, insertedElementPath)\n\n const elements = new Map(elementTree.elements)\n const elementIds = new Map(elementTree.elementIds)\n\n insertElement({ elements, elementIds }, insertedElement, propName, descriptors)\n updateParentElements(elements, parentElementPaths, rootElements.new)\n\n return {\n elements,\n elementIds,\n }\n}\n\nfunction applyUpdate(\n elementTree: ElementTree,\n descriptors: DescriptorsByComponentType,\n rootElements: { old: Element; new: Element },\n path: OperationPath,\n): ElementTree {\n const [updateElementPath, ...parentElementPaths] = getChangedElementsPaths(path)\n const [deletedElement, propName] = getElementAndPropName(rootElements.old, updateElementPath)\n const [insertedElement, _] = getElementAndPropName(rootElements.new, updateElementPath)\n\n const elements = new Map(elementTree.elements)\n const elementIds = new Map(elementTree.elementIds)\n\n deleteElement({ elements, elementIds }, deletedElement, propName, descriptors)\n insertElement({ elements, elementIds }, insertedElement, propName, descriptors)\n\n updateParentElements(elements, parentElementPaths, rootElements.new)\n\n return {\n elements,\n elementIds,\n }\n}\n\nfunction applyChanges(\n elementTree: ElementTree,\n descriptors: DescriptorsByComponentType,\n rootElements: { old: Element; new: Element },\n operation: Operation,\n): ElementTree {\n return operation.reduce((tree, op) => {\n const hasDelete = 'ld' in op || 'od' in op\n const hasInsert = 'li' in op || 'oi' in op\n if (hasDelete && hasInsert) {\n return applyUpdate(tree, descriptors, rootElements, op.p)\n }\n\n if (hasDelete) return applyDelete(tree, descriptors, rootElements, op.p)\n if (hasInsert) return applyInsert(tree, descriptors, rootElements, op.p)\n return tree\n }, elementTree)\n}\n"],"mappings":"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","names":["i"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/modules/element-trees.ts"],"sourcesContent":["import { type Operation } from 'ot-json0'\nimport { getIn, removeIn, setIn } from 'immutable'\n\nimport { type Element, type ElementData, isElementReference } from '@makeswift/controls'\n\nimport * as Introspection from '../../prop-controllers/introspection'\n\nimport { type Action, type UnknownAction, isKnownAction } from '../actions'\n\nimport { ReadOnlyActionTypes } from '../actions/internal/read-only-actions'\nimport { ReadWriteActionTypes } from '../actions/internal/read-write-actions'\n\nimport { getRootElement, type Document } from './read-only-documents'\nimport { type DescriptorsByComponentType } from './prop-controllers'\n\nexport type ElementTree = {\n elements: Map<string, Element>\n elementIds: Map<string, string>\n}\n\nexport type State = Map<string, ElementTree>\n\nexport function getInitialState(\n documents?: Map<string, Document>,\n descriptors?: DescriptorsByComponentType,\n): State {\n const state = new Map<string, ElementTree>()\n if (documents == null || descriptors == null) return state\n\n for (const [documentKey, document] of documents) {\n state.set(documentKey, buildElementTree(getRootElement(document), descriptors))\n }\n\n return state\n}\n\nfunction getElementTree(state: State, documentKey: string): ElementTree | null {\n return state.get(documentKey) ?? null\n}\n\nexport function getElements(state: State, documentKey: string): Map<string, Element> {\n return getElementTree(state, documentKey)?.elements ?? new Map()\n}\n\nexport function getElementIds(state: State, documentKey: string): Map<string, string> {\n return getElementTree(state, documentKey)?.elementIds ?? new Map()\n}\n\nexport function getElement(state: State, documentKey: string, elementKey: string): Element | null {\n return getElements(state, documentKey).get(elementKey) ?? null\n}\n\nexport function getElementId(state: State, documentKey: string, elementKey: string): string | null {\n return getElementIds(state, documentKey).get(elementKey) ?? null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action | UnknownAction): State {\n if (!isKnownAction(action)) return state\n\n switch (action.type) {\n case ReadOnlyActionTypes.CREATE_ELEMENT_TREE: {\n const { document, descriptors } = action.payload\n return new Map(state).set(\n document.key,\n buildElementTree(getRootElement(document), descriptors),\n )\n }\n\n case ReadOnlyActionTypes.DELETE_ELEMENT_TREE: {\n const nextState = new Map(state)\n const deleted = nextState.delete(action.payload.documentKey)\n return deleted ? nextState : state\n }\n\n case ReadWriteActionTypes.CHANGE_ELEMENT_TREE: {\n const { oldDocument, newDocument, descriptors, operation } = action.payload\n const documentKey = oldDocument.key\n console.assert(\n documentKey === newDocument.key,\n `Mismatching document keys ${documentKey} !== ${newDocument.key}`,\n )\n\n const elementTree = state.get(documentKey)\n if (elementTree == null) return state\n\n const updatedElementTree = applyChanges(\n elementTree,\n descriptors,\n {\n old: getRootElement(oldDocument),\n new: getRootElement(newDocument),\n },\n operation,\n )\n\n return new Map(state).set(documentKey, updatedElementTree)\n }\n\n default:\n return state\n }\n}\n\nexport function* traverseElementTree(\n element: Element,\n descriptors: DescriptorsByComponentType,\n): Generator<Element> {\n yield element\n if (isElementReference(element)) return\n\n const elementDescriptors = descriptors.get(element.type)\n if (elementDescriptors == null) return\n\n for (const [propKey, descriptor] of Object.entries(elementDescriptors)) {\n const children = Introspection.getElementChildren(descriptor, element.props[propKey])\n for (const child of children) {\n yield* traverseElementTree(child, descriptors)\n }\n }\n}\n\nfunction getElementIdProp(\n element: ElementData,\n descriptors: DescriptorsByComponentType,\n): string | null {\n const elementDescriptors = descriptors.get(element.type)\n if (elementDescriptors == null) return null\n\n for (const [propName, descriptor] of Object.entries(elementDescriptors)) {\n const elementId = Introspection.getElementId(descriptor, element.props[propName])\n if (elementId != null) return elementId\n }\n\n return null\n}\n\nexport function buildElementTree(\n rootElement: Element,\n descriptors: DescriptorsByComponentType,\n): ElementTree {\n const elements = new Map<string, Element>()\n const elementIds = new Map<string, string>()\n\n for (const element of traverseElementTree(rootElement, descriptors)) {\n elements.set(element.key, element)\n if (!isElementReference(element)) {\n const elementId = getElementIdProp(element, descriptors)\n if (elementId != null) elementIds.set(element.key, elementId)\n }\n }\n\n return {\n elements,\n elementIds,\n }\n}\n\ntype OperationPath = Operation[number]['p']\n\n// performance-sensitive function, intentionally not using `elementData` schema here\nfunction isElement(item: unknown): item is Element {\n return (\n typeof item === 'object' &&\n item != null &&\n 'key' in item &&\n 'type' in item &&\n typeof item.key === 'string' &&\n typeof item.type === 'string'\n )\n}\n\ntype ElementOperationPath = { elementPath: OperationPath; propName: string | null }\n\nfunction getElementOperationPath(path: OperationPath): ElementOperationPath {\n if (path.length === 0) {\n return { elementPath: [], propName: null }\n }\n\n const i = path.findLastIndex(\n (fragment, i) =>\n typeof fragment === 'number' && (i === path.length - 1 || path[i + 1] === 'props'),\n )\n\n if ((i === -1 && path[0] !== 'props') || path.length - i < 3) {\n console.error('Operation path does not point to an element property', { path })\n return { elementPath: [], propName: null }\n }\n\n return { elementPath: path.slice(0, i + 1), propName: `${path.slice(i + 1).at(1)}` }\n}\n\nexport function getChangedElementsPaths(\n path: OperationPath,\n): [ElementOperationPath, ...ElementOperationPath[]] {\n let elementOp = getElementOperationPath(path)\n const result: [ElementOperationPath, ...ElementOperationPath[]] = [elementOp]\n while (elementOp.elementPath.length > 0) {\n elementOp = getElementOperationPath(elementOp.elementPath.slice(0, -1))\n result.push(elementOp)\n }\n\n return result\n}\n\nfunction getElementByPath(rootElement: Element, elementPath: OperationPath): Element | null {\n const item = getIn(rootElement, elementPath)\n if (!isElement(item)) {\n console.error('Expected an element, got', item, {\n rootElement,\n elementPath,\n })\n\n return null\n }\n\n return item\n}\n\nfunction getElementAndPropName(\n rootElement: Element,\n { elementPath, propName }: ElementOperationPath,\n): [Element, string | null] {\n const element = getElementByPath(rootElement, elementPath)\n return element != null ? [element, propName] : [rootElement, null]\n}\n\nfunction updateParentElements(\n elements: ElementTree['elements'],\n elementPaths: ElementOperationPath[],\n rootElement: Element,\n): void {\n elementPaths.forEach(({ elementPath }) => {\n const element = getElementByPath(rootElement, elementPath)\n if (element != null) elements.set(element.key, element)\n })\n}\n\nfunction hasChildren(\n element: Element,\n propName: string,\n descriptors: DescriptorsByComponentType,\n): boolean {\n if (isElementReference(element)) return false\n\n const propDescriptor = descriptors.get(element.type)?.[propName]\n if (propDescriptor == null) return false\n\n const children = Introspection.getElementChildren(propDescriptor, element.props[propName])\n return children.length > 0\n}\n\nfunction deleteElement(\n { elements, elementIds }: ElementTree,\n deletedElement: Element,\n propName: string | null,\n descriptors: DescriptorsByComponentType,\n) {\n if (propName == null || hasChildren(deletedElement, propName, descriptors)) {\n for (const element of traverseElementTree(deletedElement, descriptors)) {\n elements.delete(element.key)\n elementIds.delete(element.key)\n }\n } else {\n elements.delete(deletedElement.key)\n elementIds.delete(deletedElement.key)\n }\n}\n\nfunction applyDelete(\n elementTree: ElementTree,\n descriptors: DescriptorsByComponentType,\n rootElements: { before: Element; after: Element },\n path: OperationPath,\n): ElementTree {\n const [deleteElementPath, ...parentElementPaths] = getChangedElementsPaths(path)\n const [deletedElement, propName] = getElementAndPropName(rootElements.before, deleteElementPath)\n\n const elements = new Map(elementTree.elements)\n const elementIds = new Map(elementTree.elementIds)\n\n deleteElement({ elements, elementIds }, deletedElement, propName, descriptors)\n\n // Use the \"after\" state to efficiently update all of parent subtrees in the state\n updateParentElements(elements, parentElementPaths, rootElements.after)\n\n return {\n elements,\n elementIds,\n }\n}\n\nfunction insertElement(\n { elements, elementIds }: ElementTree,\n insertedElement: Element,\n propName: string | null,\n descriptors: DescriptorsByComponentType,\n) {\n if (propName == null || hasChildren(insertedElement, propName, descriptors)) {\n for (const element of traverseElementTree(insertedElement, descriptors)) {\n elements.set(element.key, element)\n if (!isElementReference(element)) {\n const elementId = getElementIdProp(element, descriptors)\n if (elementId != null) elementIds.set(element.key, elementId)\n }\n }\n } else {\n elements.set(insertedElement.key, insertedElement)\n if (!isElementReference(insertedElement)) {\n const elementId = getElementIdProp(insertedElement, descriptors)\n if (elementId != null) elementIds.set(insertedElement.key, elementId)\n }\n }\n}\n\nfunction applyInsert(\n elementTree: ElementTree,\n descriptors: DescriptorsByComponentType,\n rootElements: { before: Element; after: Element },\n path: OperationPath,\n): ElementTree {\n const [insertedElementPath, ...parentElementPaths] = getChangedElementsPaths(path)\n const [insertedElement, propName] = getElementAndPropName(rootElements.after, insertedElementPath)\n\n const elements = new Map(elementTree.elements)\n const elementIds = new Map(elementTree.elementIds)\n\n insertElement({ elements, elementIds }, insertedElement, propName, descriptors)\n\n // Use the \"after\" state to efficiently update all of parent subtrees in the state\n updateParentElements(elements, parentElementPaths, rootElements.after)\n\n return {\n elements,\n elementIds,\n }\n}\n\nfunction applyUpdate(\n elementTree: ElementTree,\n descriptors: DescriptorsByComponentType,\n rootElements: { before: Element; after: Element },\n path: OperationPath,\n): ElementTree {\n const [updateElementPath, ...parentElementPaths] = getChangedElementsPaths(path)\n const [deletedElement, propName] = getElementAndPropName(rootElements.before, updateElementPath)\n const [insertedElement, _] = getElementAndPropName(rootElements.after, updateElementPath)\n\n const elements = new Map(elementTree.elements)\n const elementIds = new Map(elementTree.elementIds)\n\n deleteElement({ elements, elementIds }, deletedElement, propName, descriptors)\n insertElement({ elements, elementIds }, insertedElement, propName, descriptors)\n\n // Use the \"after\" state to efficiently update all of parent subtrees in the state\n updateParentElements(elements, parentElementPaths, rootElements.after)\n\n return {\n elements,\n elementIds,\n }\n}\n\nfunction applyOpComponent(root: Element, component: Operation[number]): Element {\n let applied: Element = root\n\n if ('ld' in component || 'od' in component) {\n applied = removeIn(applied, component.p)\n }\n\n if ('li' in component) {\n applied = setIn(applied, component.p, component.li)\n }\n\n if ('oi' in component) {\n applied = setIn(applied, component.p, component.oi)\n }\n\n return applied\n}\n\nfunction selectTreeTransform(op: Operation[number]): typeof applyUpdate {\n const hasDelete = 'ld' in op || 'od' in op\n const hasInsert = 'li' in op || 'oi' in op\n\n if (hasDelete && hasInsert) return applyUpdate\n if (hasDelete) return applyDelete\n if (hasInsert) return applyInsert\n\n return elementTree => elementTree\n}\n\nfunction applyChanges(\n elementTree: ElementTree,\n descriptors: DescriptorsByComponentType,\n rootElements: { old: Element; new: Element },\n operation: Operation,\n): ElementTree {\n // Updates the element tree \"cache\" based on the provided operation, which can\n // be composed of 1-n component ops. We apply each component op sequentially\n // to the 'old' root element to determine the changed elements and update the\n // cache accordingly at each intermediate step.\n const result = operation.reduce(\n (acc, op) => {\n const rootBefore = acc.rootBefore\n\n // If there's only one component op, we can skip the application of the op\n // and assume that the result will be the 'new' root element provided to\n // us by the builder.\n const rootAfter = operation.length > 1 ? applyOpComponent(rootBefore, op) : rootElements.new\n\n const roots = { before: rootBefore, after: rootAfter }\n const applyChange = selectTreeTransform(op)\n\n return {\n elementTree: applyChange(acc.elementTree, descriptors, roots, op.p),\n rootBefore: rootAfter,\n }\n },\n { elementTree, rootBefore: rootElements.old },\n )\n\n return result.elementTree\n}\n"],"mappings":"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","names":["i"]}
|
|
@@ -304,7 +304,6 @@ export declare const sitePublishedWebhookPayloadSchema: z.ZodObject<{
|
|
|
304
304
|
unstable_defaultLocale?: unknown;
|
|
305
305
|
}>;
|
|
306
306
|
}, "strip", z.ZodTypeAny, {
|
|
307
|
-
type: "site.published";
|
|
308
307
|
data: {
|
|
309
308
|
at: number;
|
|
310
309
|
siteId: string;
|
|
@@ -381,8 +380,8 @@ export declare const sitePublishedWebhookPayloadSchema: z.ZodObject<{
|
|
|
381
380
|
}, z.ZodTypeAny, "passthrough"> | null | undefined;
|
|
382
381
|
unstable_defaultLocale?: string | null | undefined;
|
|
383
382
|
};
|
|
384
|
-
}, {
|
|
385
383
|
type: "site.published";
|
|
384
|
+
}, {
|
|
386
385
|
data: {
|
|
387
386
|
at: number;
|
|
388
387
|
siteId: string;
|
|
@@ -393,6 +392,7 @@ export declare const sitePublishedWebhookPayloadSchema: z.ZodObject<{
|
|
|
393
392
|
unstable_diff?: unknown;
|
|
394
393
|
unstable_defaultLocale?: unknown;
|
|
395
394
|
};
|
|
395
|
+
type: "site.published";
|
|
396
396
|
}>;
|
|
397
397
|
export type SitePublishedWebhookPayload = z.infer<typeof sitePublishedWebhookPayloadSchema>;
|
|
398
398
|
export type SitePublishedWebhookPayloadData = z.infer<typeof sitePublishedWebhookPayloadSchema>['data'];
|
|
@@ -697,7 +697,6 @@ declare const webhookPayloadSchema: z.ZodObject<{
|
|
|
697
697
|
unstable_defaultLocale?: unknown;
|
|
698
698
|
}>;
|
|
699
699
|
}, "strip", z.ZodTypeAny, {
|
|
700
|
-
type: "site.published";
|
|
701
700
|
data: {
|
|
702
701
|
at: number;
|
|
703
702
|
siteId: string;
|
|
@@ -774,8 +773,8 @@ declare const webhookPayloadSchema: z.ZodObject<{
|
|
|
774
773
|
}, z.ZodTypeAny, "passthrough"> | null | undefined;
|
|
775
774
|
unstable_defaultLocale?: string | null | undefined;
|
|
776
775
|
};
|
|
777
|
-
}, {
|
|
778
776
|
type: "site.published";
|
|
777
|
+
}, {
|
|
779
778
|
data: {
|
|
780
779
|
at: number;
|
|
781
780
|
siteId: string;
|
|
@@ -786,6 +785,7 @@ declare const webhookPayloadSchema: z.ZodObject<{
|
|
|
786
785
|
unstable_diff?: unknown;
|
|
787
786
|
unstable_defaultLocale?: unknown;
|
|
788
787
|
};
|
|
788
|
+
type: "site.published";
|
|
789
789
|
}>;
|
|
790
790
|
export type WebhookPayloadSchema = z.infer<typeof webhookPayloadSchema>;
|
|
791
791
|
type WebhookSuccessBody = {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Data, ControlDefinition as UnifiedControlDefinition, type SerializedRecord, DeserializationPlugin } from '@makeswift/controls';
|
|
2
|
+
import { type SerializedLegacyControl, type DeserializedLegacyControl } from '../prop-controllers/serialization';
|
|
3
|
+
import { type Descriptor } from '../prop-controllers/descriptors';
|
|
4
|
+
import { type DeserializedFunction, type SerializedFunction } from '../controls/serialization/message-port';
|
|
5
|
+
import { type DeserializeControlRecordsOptions } from '../controls/serialization';
|
|
6
|
+
export * from '../prop-controllers/serialization';
|
|
7
|
+
export type SerializedControl<T extends Data = Data> = SerializedLegacyControl<T> | SerializedRecord;
|
|
8
|
+
export type DeserializedControl<T extends Data = Data> = DeserializedLegacyControl<T> | UnifiedControlDefinition;
|
|
9
|
+
export declare function serializeControl<T extends Data>(control: Descriptor<T>): [SerializedControl<T>, Transferable[]];
|
|
10
|
+
export type DeserializeControlOptions = {
|
|
11
|
+
plugins?: DeserializationPlugin<any>[];
|
|
12
|
+
};
|
|
13
|
+
export declare function deserializeControl<T extends Data>(serializedControl: SerializedControl<T>, options?: DeserializeControlOptions): DeserializedControl<T>;
|
|
14
|
+
export declare function serializeControls(controls: Record<string, Descriptor>): [Record<string, SerializedControl>, Transferable[]];
|
|
15
|
+
export declare function deserializeControls(serializedControls: Record<string, unknown>, { onError, plugins }?: DeserializeControlRecordsOptions): Record<string, DeserializedControl>;
|
|
16
|
+
type AnyFunction = (...args: any[]) => any;
|
|
17
|
+
export type Serialize<T> = T extends AnyFunction ? SerializedFunction<T> : T extends Record<string, unknown> ? {
|
|
18
|
+
[K in keyof T]: Serialize<T[K]>;
|
|
19
|
+
} : T;
|
|
20
|
+
export type Deserialize<T> = T extends SerializedFunction<infer U> ? DeserializedFunction<U> : T extends Record<string, unknown> ? {
|
|
21
|
+
[K in keyof T]: Deserialize<T[K]>;
|
|
22
|
+
} : T;
|
|
23
|
+
//# sourceMappingURL=serialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../../src/builder/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,iBAAiB,IAAI,wBAAwB,EAC7C,KAAK,gBAAgB,EACrB,qBAAqB,EAEtB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAG/B,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EAAE,KAAK,UAAU,EAAsB,MAAM,iCAAiC,CAAA;AAGrF,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAGxB,MAAM,wCAAwC,CAAA;AAE/C,OAAO,EACL,KAAK,gCAAgC,EAEtC,MAAM,2BAA2B,CAAA;AAElC,cAAc,mCAAmC,CAAA;AAEjD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,IAAI,uBAAuB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAA;AAEpG,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,IACjD,yBAAyB,CAAC,CAAC,CAAC,GAC5B,wBAAwB,CAAA;AAE5B,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,IAAI,EAC7C,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GACrB,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAQxC;AAQD,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAA;CACvC,CAAA;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,IAAI,EAC/C,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACvC,OAAO,CAAC,EAAE,yBAAyB,GAClC,mBAAmB,CAAC,CAAC,CAAC,CAYxB;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GACnC,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC,CASrD;AAED,wBAAgB,mBAAmB,CACjC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,EAAE,OAAO,EAAE,OAAO,EAAE,GAAE,gCAAqC,GAC1D,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAMrC;AAED,KAAK,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;AAE1C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,GAC5C,kBAAkB,CAAC,CAAC,CAAC,GACrB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACnC,CAAC,CAAA;AAEP,MAAM,MAAM,WAAW,CAAC,CAAC,IACvB,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,CAAC,GACjC,oBAAoB,CAAC,CAAC,CAAC,GACvB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACrC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.test.d.ts","sourceRoot":"","sources":["../../../src/builder/serialization.test.ts"],"names":[],"mappings":""}
|
|
@@ -330,7 +330,6 @@ declare const makeswiftComponentDocumentSchema: z.ZodObject<{
|
|
|
330
330
|
siteId: z.ZodString;
|
|
331
331
|
inheritsFromParent: z.ZodBoolean;
|
|
332
332
|
}, "strip", z.ZodTypeAny, {
|
|
333
|
-
id: string;
|
|
334
333
|
data: ({
|
|
335
334
|
type: string;
|
|
336
335
|
key: string;
|
|
@@ -396,12 +395,12 @@ declare const makeswiftComponentDocumentSchema: z.ZodObject<{
|
|
|
396
395
|
value: string;
|
|
397
396
|
key: string;
|
|
398
397
|
} | undefined);
|
|
398
|
+
id: string;
|
|
399
399
|
name: string | null;
|
|
400
400
|
locale: string | null;
|
|
401
401
|
siteId: string;
|
|
402
402
|
inheritsFromParent: boolean;
|
|
403
403
|
}, {
|
|
404
|
-
id: string;
|
|
405
404
|
data: ({
|
|
406
405
|
type: string;
|
|
407
406
|
key: string;
|
|
@@ -467,6 +466,7 @@ declare const makeswiftComponentDocumentSchema: z.ZodObject<{
|
|
|
467
466
|
value: string;
|
|
468
467
|
key: string;
|
|
469
468
|
} | undefined);
|
|
469
|
+
id: string;
|
|
470
470
|
name: string | null;
|
|
471
471
|
locale: string | null;
|
|
472
472
|
siteId: string;
|
|
@@ -478,12 +478,12 @@ declare const makeswiftComponentDocumentFallbackSchema: z.ZodObject<{
|
|
|
478
478
|
locale: z.ZodNullable<z.ZodString>;
|
|
479
479
|
data: z.ZodNull;
|
|
480
480
|
}, "strip", z.ZodTypeAny, {
|
|
481
|
-
id: string;
|
|
482
481
|
data: null;
|
|
482
|
+
id: string;
|
|
483
483
|
locale: string | null;
|
|
484
484
|
}, {
|
|
485
|
-
id: string;
|
|
486
485
|
data: null;
|
|
486
|
+
id: string;
|
|
487
487
|
locale: string | null;
|
|
488
488
|
}>;
|
|
489
489
|
export type MakeswiftComponentDocumentFallback = z.infer<typeof makeswiftComponentDocumentFallbackSchema>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ControlDefinition, type SerializedRecord, type DeserializedRecord, DeserializationPlugin } from '@makeswift/controls';
|
|
2
|
+
import { BaseControlSerializationVisitor } from './visitor';
|
|
3
|
+
export { type SerializedRecord, type DeserializedRecord } from '@makeswift/controls';
|
|
4
|
+
export declare function serializeControls(controls: Record<string, ControlDefinition>, visitor: BaseControlSerializationVisitor): Record<string, SerializedRecord>;
|
|
5
|
+
export type DeserializeControlOptions = {
|
|
6
|
+
plugins: DeserializationPlugin<any>[];
|
|
7
|
+
};
|
|
8
|
+
export declare function deserializeControl(serializedControl: SerializedRecord, options: DeserializeControlOptions): ControlDefinition;
|
|
9
|
+
export declare function deserializeUnifiedControlDef(record: DeserializedRecord): ControlDefinition;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/controls/serialization/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,qBAAqB,EAEtB,MAAM,qBAAqB,CAAA;AAyB5B,OAAO,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAA;AAE3D,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAEpF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC3C,OAAO,EAAE,+BAA+B,GACvC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAOlC;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAA;CACtC,CAAA;AAED,wBAAgB,kBAAkB,CAChC,iBAAiB,EAAE,gBAAgB,EACnC,OAAO,EAAE,yBAAyB,GACjC,iBAAiB,CAInB;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,CAsC1F"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SerializedRecord, SerializationPlugin, ControlSerializationVisitor } from '@makeswift/controls';
|
|
2
|
+
import { RichTextV2Definition } from '../../rich-text-v2';
|
|
3
|
+
export declare class BaseControlSerializationVisitor extends ControlSerializationVisitor {
|
|
4
|
+
constructor(plugins: SerializationPlugin<any>[]);
|
|
5
|
+
visitRichTextV2(def: RichTextV2Definition): SerializedRecord;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=visitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visitor.d.ts","sourceRoot":"","sources":["../../../../../src/controls/serialization/base/visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAEhB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzD,qBAAa,+BAAgC,SAAQ,2BAA2B;gBAClE,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE;IAS/C,eAAe,CAAC,GAAG,EAAE,oBAAoB,GAAG,gBAAgB;CAyB7D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type SerializedRecord, type DeserializeControlOptions } from './base';
|
|
2
|
+
export declare function isSerializedRecord(r: unknown): r is SerializedRecord;
|
|
3
|
+
export type DeserializeControlRecordsOptions = {
|
|
4
|
+
onError?: (err: Error, context: {
|
|
5
|
+
key: string;
|
|
6
|
+
serializedControl: unknown;
|
|
7
|
+
}) => void;
|
|
8
|
+
} & Partial<Pick<DeserializeControlOptions, 'plugins'>>;
|
|
9
|
+
export declare function deserializeControlRecords<T>(serializedControls: Record<string, unknown>, deserialize: (serializedControl: SerializedRecord, options?: Partial<DeserializeControlOptions>) => T, { onError, plugins }?: DeserializeControlRecordsOptions): Record<string, T>;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/controls/serialization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,yBAAyB,EAAE,MAAM,QAAQ,CAAA;AAE9E,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAEpE;AAED,MAAM,MAAM,gCAAgC,GAAG;IAC7C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;CACrF,GAAG,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC,CAAA;AAEvD,wBAAgB,yBAAyB,CAAC,CAAC,EACzC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,WAAW,EAAE,CACX,iBAAiB,EAAE,gBAAgB,EACnC,OAAO,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,KACzC,CAAC,EACN,EAAE,OAAO,EAAE,OAAO,EAAE,GAAE,gCAAqC,GAC1D,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CA0BnB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DeserializationPlugin, type AnyFunction, type SerializedFunctionReturnType, type DeserializedFunction } from '@makeswift/controls';
|
|
2
|
+
export { type DeserializedFunction } from '@makeswift/controls';
|
|
2
3
|
declare const SerializedFunctionTag: unique symbol;
|
|
3
4
|
type ResolveCallPromise<T extends AnyFunction> = (value: SerializedFunctionReturnType<T>) => void;
|
|
4
5
|
type OnMessageHandler<T extends AnyFunction> = MessagePort['onmessage'] & {
|
|
@@ -12,5 +13,4 @@ export declare function isSerializedFunction(value: any): value is SerializedFun
|
|
|
12
13
|
export declare function serializeFunction<T extends AnyFunction>(func: T): SerializedFunction<T>;
|
|
13
14
|
export declare function deserializeFunction<T extends AnyFunction>(serializedFunction: SerializedFunction<T>): DeserializedFunction<T>;
|
|
14
15
|
export declare const functionDeserializationPlugin: DeserializationPlugin<SerializedFunction<AnyFunction>, DeserializedFunction<AnyFunction>>;
|
|
15
|
-
export {};
|
|
16
16
|
//# sourceMappingURL=function-serialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-serialization.d.ts","sourceRoot":"","sources":["../../../../../src/controls/serialization/message-port/function-serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE/D,OAAO,CAAC,MAAM,qBAAqB,EAAE,OAAO,MAAM,CAAA;AAElD,KAAK,kBAAkB,CAAC,CAAC,SAAS,WAAW,IAAI,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;AAEjG,KAAK,gBAAgB,CAAC,CAAC,SAAS,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG;IACxE,OAAO,CAAC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,WAAW,IAAI,WAAW,GAAG;IACpE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC9B,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAA;CACpC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAEzF;AAID,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAYvF;AAqBD,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,WAAW,EACvD,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAC,GACxC,oBAAoB,CAAC,CAAC,CAAC,CAkBzB;AAED,eAAO,MAAM,6BAA6B,EAAE,qBAAqB,CAC/D,kBAAkB,CAAC,WAAW,CAAC,EAC/B,oBAAoB,CAAC,WAAW,CAAC,CAIlC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-serialization.test.d.ts","sourceRoot":"","sources":["../../../../../src/controls/serialization/message-port/function-serialization.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/controls/serialization/message-port/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BaseControlSerializationVisitor } from '../base/visitor';
|
|
2
|
+
export declare class ClientMessagePortSerializationVisitor extends BaseControlSerializationVisitor {
|
|
3
|
+
private transferables;
|
|
4
|
+
constructor();
|
|
5
|
+
getTransferables(): Transferable[];
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=visitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visitor.d.ts","sourceRoot":"","sources":["../../../../../src/controls/serialization/message-port/visitor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAA;AAGjE,qBAAa,qCAAsC,SAAQ,+BAA+B;IACxF,OAAO,CAAC,aAAa,CAAqB;;IAe1C,gBAAgB,IAAI,YAAY,EAAE;CAGnC"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { type LegacyDescriptor } from '../../prop-controllers/descriptors';
|
|
8
|
-
import { type DeserializedRecord } from '@makeswift/controls';
|
|
1
|
+
import { type Data, type Device, type RichTextValue as RichTextControlValue } from '@makeswift/controls';
|
|
2
|
+
import { type Descriptor, type PropDef, type OptionsType, CheckboxDescriptor as CheckboxControl, CheckboxPropControllerData, DateDescriptor as DateControl, DatePropControllerData, ImageDescriptor as ImageControl, ImageData as ImageControlValue, GapData, GapX, GapYDescriptor, GapYPropControllerData, LinkData, LinkDescriptor as LinkControl, LinkPropControllerData, NumberDescriptor, NumberOptions, NumberPropControllerData, ResponsiveColorDescriptor, ResponsiveColorPropControllerData, ResponsiveIconRadioGroup, ResponsiveLengthDescriptor, ResponsiveLengthOptions, ResponsiveLengthPropControllerData, ResponsiveNumber, ResponsiveSelect, Types as PropControllerTypes, TextStyleDescriptor as TextStyleControl, TextStylePropControllerData, TextInputDescriptor as TextInputControl } from '@makeswift/prop-controllers';
|
|
3
|
+
import { type DeserializedFunction, type SerializedFunction } from '../controls/serialization/message-port/function-serialization';
|
|
4
|
+
import { PanelDescriptorType as PanelControlType } from './descriptors';
|
|
5
|
+
import { DELETED_PROP_CONTROLLER_TYPES, ListDescriptor as ListControl, ListOptions as ListControlConfig, ListValue as ListControlValue, ShapeDescriptor as ShapeControl, ShapeValue as ShapeControlValue, TypeaheadDescriptor as TypeaheadControl, TypeaheadOptions as TypeaheadControlConfig, TypeaheadValue as TypeaheadControlValue, RichTextDescriptor as RichTextControl } from './deleted';
|
|
6
|
+
import { type LegacyDescriptor } from './descriptors';
|
|
9
7
|
type SerializedShapeControlConfig<T extends Record<string, SerializedPanelControl>> = {
|
|
10
8
|
type: T;
|
|
11
9
|
preset?: {
|
|
@@ -215,32 +213,16 @@ type DeserializedRichTextControl<_T = RichTextControlValue> = {
|
|
|
215
213
|
options: DeserializedConfig<RichTextControlConfig>;
|
|
216
214
|
};
|
|
217
215
|
export type SerializedLegacyControl<T extends Data = Data> = Exclude<LegacyDescriptor<T>, ListControl<T extends ListControlValue ? T : ListControlValue> | ShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any> | TypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue> | Descriptor<typeof GapX> | GapYDescriptor<T> | Descriptor<typeof ResponsiveNumber> | CheckboxControl<T> | ResponsiveColorDescriptor<T> | NumberDescriptor<T> | Descriptor<typeof ResponsiveIconRadioGroup> | Descriptor<typeof ResponsiveSelect> | ResponsiveLengthDescriptor<T> | DateControl<T> | LinkControl<T> | TextInputControl<T> | TextStyleControl<T> | ImageControl<T> | RichTextControl<T>> | SerializedListControl<T extends ListControlValue ? T : ListControlValue> | SerializedShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any> | SerializedTypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue> | SerializedControlDef<typeof GapX> | SerializedGapYControl<T> | SerializedControlDef<typeof ResponsiveNumber> | SerializedCheckboxControl<T> | SerializedResponsiveColorControl<T> | SerializedNumberControl<T> | SerializedControlDef<typeof ResponsiveIconRadioGroup> | SerializedControlDef<typeof ResponsiveSelect> | SerializedResponsiveLengthControl<T> | SerializedDateControl<T> | SerializedLinkControl<T> | SerializedTextInputControl<T> | SerializedTextStyleControl<T> | SerializedImageControl<T> | SerializedRichTextControl<T>;
|
|
218
|
-
|
|
219
|
-
type SerializedPanelControl<T extends Data = Data> = Extract<SerializedControl<T>, {
|
|
216
|
+
type SerializedPanelControl<T extends Data = Data> = Extract<SerializedLegacyControl<T>, {
|
|
220
217
|
type: PanelControlType;
|
|
221
218
|
}>;
|
|
222
219
|
type SerializedPanelControlValueType<T extends SerializedPanelControl> = T extends SerializedPanelControl<infer U> ? U : never;
|
|
223
220
|
export type DeserializedLegacyControl<T extends Data = Data> = Exclude<LegacyDescriptor<T>, ListControl<T extends ListControlValue ? T : ListControlValue> | ShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any> | TypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue> | Descriptor<typeof GapX> | GapYDescriptor<T> | Descriptor<typeof ResponsiveNumber> | CheckboxControl<T> | ResponsiveColorDescriptor<T> | NumberDescriptor<T> | Descriptor<typeof ResponsiveIconRadioGroup> | Descriptor<typeof ResponsiveSelect> | ResponsiveLengthDescriptor<T> | DateControl<T> | LinkControl<T> | TextInputControl<T> | TextStyleControl<T> | ImageControl<T> | RichTextControl<T>> | DeserializedListControl<T extends ListControlValue ? T : ListControlValue> | DeserializedShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any> | DeserializedTypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue> | DeserializedControlDef<typeof GapX> | DeserializedGapYControl<T> | DeserializedControlDef<typeof ResponsiveNumber> | DeserializedCheckboxControl<T> | DeserializedResponsiveColorControl<T> | DeserializedNumberControl<T> | DeserializedControlDef<typeof ResponsiveIconRadioGroup> | DeserializedControlDef<typeof ResponsiveSelect> | DeserializedResponsiveLengthControl<T> | DeserializedDateControl<T> | DeserializedLinkControl<T> | DeserializedTextInputControl<T> | DeserializedTextStyleControl<T> | DeserializedImageControl<T> | DeserializedRichTextControl<T>;
|
|
224
|
-
export type
|
|
225
|
-
export type DeserializedPanelControl<T extends Data = Data> = Extract<DeserializedControl<T>, {
|
|
221
|
+
export type DeserializedPanelControl<T extends Data = Data> = Extract<DeserializedLegacyControl<T>, {
|
|
226
222
|
type: PanelControlType;
|
|
227
223
|
}>;
|
|
228
224
|
type DeserializedPanelControlValueType<T extends DeserializedPanelControl> = T extends DeserializedPanelControl<infer U> ? U : never;
|
|
229
|
-
export declare function
|
|
230
|
-
export declare function
|
|
231
|
-
export declare function deserializeLegacyControl<T extends Data>(serializedControl: SerializedLegacyControl<T>): DeserializedControl<T>;
|
|
232
|
-
export type DeserializeControlOptions = {
|
|
233
|
-
plugins?: DeserializationPlugin<any>[];
|
|
234
|
-
};
|
|
235
|
-
export declare function deserializeControl<T extends Data>(serializedControl: SerializedControl<T>, options?: DeserializeControlOptions): DeserializedControl<T>;
|
|
236
|
-
export declare function deserializeUnifiedControlDef(record: DeserializedRecord): UnifiedControlDefinition;
|
|
237
|
-
export declare function serializeControls(controls: Record<string, ControlDefinition>): [Record<string, SerializedControl>, Transferable[]];
|
|
238
|
-
export type DeserializeControlsOptions = {
|
|
239
|
-
onError?: (err: Error, context: {
|
|
240
|
-
key: string;
|
|
241
|
-
serializedControl: unknown;
|
|
242
|
-
}) => void;
|
|
243
|
-
} & Pick<DeserializeControlOptions, 'plugins'>;
|
|
244
|
-
export declare function deserializeControls(serializedControls: Record<string, unknown>, { onError, plugins, }?: DeserializeControlsOptions): Record<string, DeserializedControl>;
|
|
225
|
+
export declare function serializeLegacyControl<T extends Data>(control: LegacyDescriptor<T>): [SerializedLegacyControl<T>, Transferable[]];
|
|
226
|
+
export declare function deserializeLegacyControl<T extends Data>(serializedControl: SerializedLegacyControl<T>): DeserializedLegacyControl<T>;
|
|
245
227
|
export {};
|
|
246
|
-
//# sourceMappingURL=
|
|
228
|
+
//# sourceMappingURL=serialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../../src/prop-controllers/serialization.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,9 +27,9 @@ export declare const ListActions: {
|
|
|
27
27
|
export declare function onKeyDown(e: KeyboardEvent, editor: Editor): void;
|
|
28
28
|
export declare function withBlock(editor: Editor): import("../../slate/types").MakeswiftEditor;
|
|
29
29
|
export declare function BlockPlugin(): {
|
|
30
|
-
control: import("@makeswift/controls").RichTextPluginControl<import("@makeswift/controls").SelectDefinition<import("@makeswift/controls").SelectConfig<"
|
|
31
|
-
readonly defaultValue: "
|
|
32
|
-
}>, "
|
|
30
|
+
control: import("@makeswift/controls").RichTextPluginControl<import("@makeswift/controls").SelectDefinition<import("@makeswift/controls").SelectConfig<"paragraph" | "heading-one" | "heading-two" | "heading-three" | "heading-four" | "heading-five" | "heading-six" | "blockquote" | "unordered-list" | "ordered-list"> & {
|
|
31
|
+
readonly defaultValue: "paragraph" | "heading-one" | "heading-two" | "heading-three" | "heading-four" | "heading-five" | "heading-six" | "blockquote" | "unordered-list" | "ordered-list";
|
|
32
|
+
}>, "paragraph" | "heading-one" | "heading-two" | "heading-three" | "heading-four" | "heading-five" | "heading-six" | "blockquote" | "unordered-list" | "ordered-list"> | undefined;
|
|
33
33
|
withPlugin: ((editor: Editor) => Editor) | undefined;
|
|
34
34
|
onKeyDown: ((event: KeyboardEvent, editor: Editor) => void) | undefined;
|
|
35
35
|
renderElement: ((renderElement: RenderElement, value: any) => (props: RenderElementProps) => import("react").ReactNode) | undefined;
|
|
@@ -4,4 +4,8 @@ export declare function ElementTreesDemo({ left, right }: {
|
|
|
4
4
|
left: ReactNode;
|
|
5
5
|
right: ReactNode;
|
|
6
6
|
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const SLOT_DEMO_COMPONENT_TYPE = "SlotDemo";
|
|
8
|
+
export declare function SlotDemo({ children }: {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
11
|
//# sourceMappingURL=element-trees-demo-component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-trees-demo-component.d.ts","sourceRoot":"","sources":["../../../../../../src/state/modules/__tests__/fixtures/element-trees-demo-component.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,eAAO,MAAM,gCAAgC,SAAS,CAAA;AAEtD,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,2CAOtF"}
|
|
1
|
+
{"version":3,"file":"element-trees-demo-component.d.ts","sourceRoot":"","sources":["../../../../../../src/state/modules/__tests__/fixtures/element-trees-demo-component.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,eAAO,MAAM,gCAAgC,SAAS,CAAA;AAEtD,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,2CAOtF;AAED,eAAO,MAAM,wBAAwB,aAAa,CAAA;AAElD,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAE7D"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type Operation } from 'ot-json0';
|
|
2
|
+
import { type ElementData } from '@makeswift/controls';
|
|
1
3
|
export declare const homePage: {
|
|
2
4
|
key: string;
|
|
3
5
|
props: {
|
|
@@ -1781,4 +1783,9 @@ export declare const resetElementTree: {
|
|
|
1781
1783
|
};
|
|
1782
1784
|
};
|
|
1783
1785
|
};
|
|
1786
|
+
export declare const reparentingElementTree: {
|
|
1787
|
+
before: ElementData;
|
|
1788
|
+
after: ElementData;
|
|
1789
|
+
op: Operation;
|
|
1790
|
+
};
|
|
1784
1791
|
//# sourceMappingURL=element-trees.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-trees.d.ts","sourceRoot":"","sources":["../../../../../../src/state/modules/__tests__/fixtures/element-trees.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAy6HpB,CAAA;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqR5B,CAAA"}
|
|
1
|
+
{"version":3,"file":"element-trees.d.ts","sourceRoot":"","sources":["../../../../../../src/state/modules/__tests__/fixtures/element-trees.ts"],"names":[],"mappings":"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"}
|