sygnal 7.0.0 → 7.2.0-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +632 -0
- package/dist/agent-ui.cjs.js +592 -0
- package/dist/agent-ui.cjs.js.map +1 -0
- package/dist/agent-ui.esm.js +582 -0
- package/dist/agent-ui.esm.js.map +1 -0
- package/dist/api.cjs.js +63 -0
- package/dist/api.cjs.js.map +1 -0
- package/dist/api.esm.js +2 -0
- package/dist/api.esm.js.map +1 -0
- package/dist/astro/index.cjs.js +968 -4
- package/dist/astro/index.cjs.js.map +1 -1
- package/dist/astro/index.mjs +968 -4
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/server.cjs.js +73 -45
- package/dist/astro/server.cjs.js.map +1 -1
- package/dist/astro/server.mjs +73 -45
- package/dist/astro/server.mjs.map +1 -1
- package/dist/canvas.cjs.js +2919 -0
- package/dist/canvas.cjs.js.map +1 -0
- package/dist/canvas.esm.js +2866 -0
- package/dist/canvas.esm.js.map +1 -0
- package/dist/devtools.cjs.js +38 -6
- package/dist/devtools.cjs.js.map +1 -1
- package/dist/devtools.esm.js +38 -6
- package/dist/devtools.esm.js.map +1 -1
- package/dist/diagnostics.cjs.js +224 -20
- package/dist/diagnostics.cjs.js.map +1 -1
- package/dist/diagnostics.esm.js +224 -20
- package/dist/diagnostics.esm.js.map +1 -1
- package/dist/guide/accessibility.md +1 -1
- package/dist/guide/ai-compose.md +150 -0
- package/dist/guide/behaviors.md +2 -1
- package/dist/guide/collaborative-state.md +265 -0
- package/dist/guide/element-commands.md +36 -2
- package/dist/guide/forms-reference.md +5 -5
- package/dist/guide/forms.md +3 -2
- package/dist/guide/http.md +28 -1
- package/dist/guide/islands.md +240 -0
- package/dist/guide/recipes/code-editor.md +1 -1
- package/dist/guide/renderers/agent-ui.md +138 -0
- package/dist/guide/renderers/custom-targets.md +126 -0
- package/dist/guide/renderers/overview.md +120 -0
- package/dist/guide/renderers/react-native.md +128 -0
- package/dist/guide/renderers/terminal.md +306 -0
- package/dist/guide/renderers/three.md +332 -0
- package/dist/guide/renderers/write-once.md +137 -0
- package/dist/guide/resources.md +2 -0
- package/dist/guide/sandboxed-components.md +223 -0
- package/dist/guide/timers.md +32 -5
- package/dist/guide/typed-apis.md +442 -0
- package/dist/guide/ui/accordion.md +11 -0
- package/dist/guide/ui/combobox.md +112 -8
- package/dist/guide/ui/dialog.md +96 -20
- package/dist/guide/ui/menu.md +57 -5
- package/dist/guide/ui/overview.md +8 -4
- package/dist/guide/ui/popover.md +69 -9
- package/dist/guide/ui/select.md +54 -4
- package/dist/guide/ui/tabs.md +1 -1
- package/dist/guide/ui/tooltip.md +7 -5
- package/dist/guide/virtual-collections.md +3 -0
- package/dist/guide/widgets.md +90 -1
- package/dist/host.cjs.js +2181 -0
- package/dist/host.cjs.js.map +1 -0
- package/dist/host.esm.js +2146 -0
- package/dist/host.esm.js.map +1 -0
- package/dist/index.cjs.js +3948 -586
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +584 -44
- package/dist/index.esm.js +3918 -586
- package/dist/index.esm.js.map +1 -1
- package/dist/primitives.cjs.js +143 -0
- package/dist/primitives.cjs.js.map +1 -0
- package/dist/primitives.esm.js +133 -0
- package/dist/primitives.esm.js.map +1 -0
- package/dist/react-native.cjs.js +248 -0
- package/dist/react-native.cjs.js.map +1 -0
- package/dist/react-native.esm.js +244 -0
- package/dist/react-native.esm.js.map +1 -0
- package/dist/replay.cjs.js +39 -0
- package/dist/replay.cjs.js.map +1 -0
- package/dist/replay.esm.js +2 -0
- package/dist/replay.esm.js.map +1 -0
- package/dist/sandbox-build.cjs.js +140 -0
- package/dist/sandbox-build.cjs.js.map +1 -0
- package/dist/sandbox-build.esm.js +137 -0
- package/dist/sandbox-build.esm.js.map +1 -0
- package/dist/sandbox-kernel.esm.js +212 -0
- package/dist/sandbox-kernel.esm.js.map +1 -0
- package/dist/sandbox-worker.cjs.js +857 -0
- package/dist/sandbox-worker.cjs.js.map +1 -0
- package/dist/sandbox-worker.esm.js +854 -0
- package/dist/sandbox-worker.esm.js.map +1 -0
- package/dist/sandbox.cjs.js +1425 -0
- package/dist/sandbox.cjs.js.map +1 -0
- package/dist/sandbox.esm.js +1406 -0
- package/dist/sandbox.esm.js.map +1 -0
- package/dist/sygnal.min.js +1 -1
- package/dist/sygnal.min.js.map +1 -1
- package/dist/terminal.cjs.js +1314 -0
- package/dist/terminal.cjs.js.map +1 -0
- package/dist/terminal.esm.js +1304 -0
- package/dist/terminal.esm.js.map +1 -0
- package/dist/three.cjs.js +1111 -0
- package/dist/three.cjs.js.map +1 -0
- package/dist/three.esm.js +1079 -0
- package/dist/three.esm.js.map +1 -0
- package/dist/ui-combobox.cjs.js +256 -18
- package/dist/ui-combobox.cjs.js.map +1 -1
- package/dist/ui-combobox.esm.js +256 -18
- package/dist/ui-combobox.esm.js.map +1 -1
- package/dist/ui-menu.cjs.js +150 -16
- package/dist/ui-menu.cjs.js.map +1 -1
- package/dist/ui-menu.esm.js +151 -17
- package/dist/ui-menu.esm.js.map +1 -1
- package/dist/ui-select.cjs.js +95 -9
- package/dist/ui-select.cjs.js.map +1 -1
- package/dist/ui-select.esm.js +95 -9
- package/dist/ui-select.esm.js.map +1 -1
- package/dist/ui.cjs.js +679 -173
- package/dist/ui.cjs.js.map +1 -1
- package/dist/ui.esm.js +679 -175
- package/dist/ui.esm.js.map +1 -1
- package/dist/vike/config/package.json +1 -1
- package/dist/vite/plugin.cjs.js +968 -4
- package/dist/vite/plugin.cjs.js.map +1 -1
- package/dist/vite/plugin.mjs +968 -4
- package/dist/vite/plugin.mjs.map +1 -1
- package/dist/worker-page.cjs.js +669 -0
- package/dist/worker-page.cjs.js.map +1 -0
- package/dist/worker-page.esm.js +665 -0
- package/dist/worker-page.esm.js.map +1 -0
- package/dist/worker.cjs.js +377 -0
- package/dist/worker.cjs.js.map +1 -0
- package/dist/worker.esm.js +374 -0
- package/dist/worker.esm.js.map +1 -0
- package/dist/yjs-testing.cjs.js +98 -0
- package/dist/yjs-testing.cjs.js.map +1 -0
- package/dist/yjs-testing.esm.js +77 -0
- package/dist/yjs-testing.esm.js.map +1 -0
- package/dist/yjs.cjs.js +923 -0
- package/dist/yjs.cjs.js.map +1 -0
- package/dist/yjs.esm.js +900 -0
- package/dist/yjs.esm.js.map +1 -0
- package/dist/zag.cjs.js +11 -1
- package/dist/zag.cjs.js.map +1 -1
- package/dist/zag.esm.js +11 -1
- package/dist/zag.esm.js.map +1 -1
- package/llms/ai.md +65 -0
- package/llms/collaboration.md +5 -0
- package/llms/graphics.md +10 -0
- package/llms/renderers.md +7 -0
- package/llms/replay.md +5 -0
- package/llms/sandbox.md +5 -0
- package/llms/typed-apis.md +5 -0
- package/llms/ui.md +10 -0
- package/llms-full.txt +444 -0
- package/llms.txt +37 -35
- package/package.json +139 -3
- package/src/agent-ui/mcp.ts +152 -0
- package/src/agent-ui/snapshot.ts +212 -0
- package/src/agent-ui.d.ts +106 -0
- package/src/agent-ui.ts +249 -0
- package/src/ai.d.ts +95 -2
- package/src/api.d.ts +303 -0
- package/src/api.ts +9 -0
- package/src/canvas/Canvas.ts +585 -0
- package/src/canvas/backend.ts +627 -0
- package/src/canvas/geometry.ts +187 -0
- package/src/canvas/gesture.ts +23 -0
- package/src/canvas/image.ts +197 -0
- package/src/canvas/kit.ts +130 -0
- package/src/canvas/paint.ts +260 -0
- package/src/canvas/pointer.ts +25 -0
- package/src/canvas/snap.ts +68 -0
- package/src/canvas/svg.ts +99 -0
- package/src/canvas.d.ts +373 -0
- package/src/canvas.ts +46 -0
- package/src/core/actions.ts +14 -3
- package/src/core/cell.ts +12 -4
- package/src/core/debug.ts +8 -3
- package/src/core/hooks.ts +16 -2
- package/src/core/hosts/collection.ts +1 -1
- package/src/core/hosts/switchable.ts +26 -8
- package/src/core/instance.ts +98 -45
- package/src/core/markers/portal.ts +4 -0
- package/src/core/registry.ts +4 -0
- package/src/core/runtime.ts +34 -25
- package/src/core/statics.ts +5 -5
- package/src/cycle/dom/EventDelegator.ts +37 -33
- package/src/cycle/dom/MainDOMSource.ts +16 -14
- package/src/cycle/dom/enrichEventStream.ts +13 -9
- package/src/cycle/dom/fromEvent.ts +6 -10
- package/src/cycle/dom/index.ts +11 -7
- package/src/cycle/dom/isolate.ts +13 -6
- package/src/cycle/dom/makeDOMDriver.ts +6 -2
- package/src/cycle/dom/utils.ts +9 -2
- package/src/cycle/run/adapt.ts +4 -12
- package/src/devtools.d.ts +9 -0
- package/src/devtools.ts +2 -1
- package/src/extra/ai/compose/catalog.ts +2 -1
- package/src/extra/ai/compose/decisions.ts +1 -2
- package/src/extra/ai/compose/generated.ts +234 -0
- package/src/extra/ai/compose/index.ts +6 -2
- package/src/extra/ai/compose/layout.ts +3 -1
- package/src/extra/ai/compose/llm.ts +7 -3
- package/src/extra/ai/compose/types.ts +2 -2
- package/src/extra/ai/transports/shared.ts +3 -1
- package/src/extra/api/contract.ts +485 -0
- package/src/extra/api/index.ts +26 -0
- package/src/extra/behaviors.ts +3 -3
- package/src/extra/controlled.ts +44 -0
- package/src/extra/copyAsTest.ts +22 -0
- package/src/extra/devtools.ts +5 -3
- package/src/extra/devtoolsActions.ts +8 -0
- package/src/extra/devtoolsNext.ts +1 -1
- package/src/extra/diagnostics/checks/actionLog.ts +8 -3
- package/src/extra/diagnostics/checks/behaviors.ts +25 -0
- package/src/extra/diagnostics/checks/elementCommands.ts +17 -5
- package/src/extra/diagnostics/checks/index.ts +1 -1
- package/src/extra/diagnostics/checks/next.ts +78 -4
- package/src/extra/diagnostics/checks/props.ts +6 -1
- package/src/extra/diagnostics/checks/replies.ts +11 -7
- package/src/extra/diagnostics/checks/timers.ts +8 -2
- package/src/extra/diagnostics/checks/virtual.ts +11 -0
- package/src/extra/diagnostics/codes.ts +51 -1
- package/src/extra/elementCommands.ts +20 -4
- package/src/extra/fetchDriver.ts +4 -1
- package/src/extra/fetchEventSource.ts +6 -2
- package/src/extra/field.ts +29 -0
- package/src/extra/form.ts +42 -16
- package/src/extra/frame.ts +54 -0
- package/src/extra/keymap.ts +41 -0
- package/src/extra/pager.ts +2 -0
- package/src/extra/persist.ts +2 -1
- package/src/extra/pointer.ts +262 -0
- package/src/extra/processForm.ts +34 -1
- package/src/extra/replay/address.ts +49 -0
- package/src/extra/replay/entropy.ts +99 -0
- package/src/extra/replay/format.ts +263 -0
- package/src/extra/replay/index.ts +8 -0
- package/src/extra/replay/inert.ts +22 -0
- package/src/extra/replay/recorder.ts +247 -0
- package/src/extra/replay/replayer.ts +234 -0
- package/src/extra/replay/report.ts +126 -0
- package/src/extra/replay/schema.ts +52 -0
- package/src/extra/replay/version.ts +3 -0
- package/src/extra/router.ts +7 -3
- package/src/extra/selection.ts +2 -0
- package/src/extra/socketDriver.ts +51 -6
- package/src/extra/ssr.ts +128 -42
- package/src/extra/testing.ts +295 -39
- package/src/extra/timers.ts +96 -7
- package/src/extra/undo.ts +2 -0
- package/src/extra/virtual.ts +25 -2
- package/src/extra/widget.ts +106 -17
- package/src/host/actions.ts +383 -0
- package/src/host/delegation.ts +101 -0
- package/src/host/dom.ts +553 -0
- package/src/host/driver.ts +185 -0
- package/src/host/selector.ts +119 -0
- package/src/host/style.ts +51 -0
- package/src/host.d.ts +298 -0
- package/src/host.ts +46 -0
- package/src/index.d.ts +302 -38
- package/src/index.ts +15 -3
- package/src/pragma/blocks.ts +211 -0
- package/src/pragma/index.ts +44 -10
- package/src/primitives.d.ts +54 -0
- package/src/primitives.ts +136 -0
- package/src/react-native.d.ts +57 -0
- package/src/react-native.ts +285 -0
- package/src/react-peers.d.ts +21 -3
- package/src/replay.d.ts +185 -0
- package/src/replay.ts +6 -0
- package/src/sandbox/build.ts +119 -0
- package/src/sandbox/create.ts +187 -0
- package/src/sandbox/engine.ts +267 -0
- package/src/sandbox/generated.ts +195 -0
- package/src/sandbox/kernel.ts +180 -0
- package/src/sandbox/mirror.ts +269 -0
- package/src/sandbox/protocol.ts +128 -0
- package/src/sandbox/quickjs.ts +74 -0
- package/src/sandbox/ssr.ts +41 -0
- package/src/sandbox/widget.ts +60 -0
- package/src/sandbox/worker-entry.ts +59 -0
- package/src/sandbox/worker.ts +137 -0
- package/src/sandbox-build.d.ts +12 -0
- package/src/sandbox-build.ts +6 -0
- package/src/sandbox.d.ts +299 -0
- package/src/sandbox.ts +25 -0
- package/src/shared.ts +12 -0
- package/src/terminal/paint.ts +712 -0
- package/src/terminal.d.ts +167 -0
- package/src/terminal.ts +530 -0
- package/src/three/assets.ts +170 -0
- package/src/three/host.ts +36 -0
- package/src/three/scene.ts +217 -0
- package/src/three/target.ts +252 -0
- package/src/three.d.ts +221 -0
- package/src/three.ts +30 -0
- package/src/ui/accordion.ts +21 -7
- package/src/ui/dialog.ts +192 -90
- package/src/ui/disclosure.ts +2 -0
- package/src/ui/dom.ts +30 -0
- package/src/ui/layers.ts +132 -0
- package/src/ui/popover.ts +120 -21
- package/src/ui/shared.ts +98 -12
- package/src/ui/stack.ts +18 -0
- package/src/ui/tabs.ts +2 -0
- package/src/ui/toaster.ts +16 -15
- package/src/ui/tooltip.ts +24 -8
- package/src/ui/tooltips.ts +26 -14
- package/src/ui/zag/combobox.ts +180 -13
- package/src/ui/zag/menu.ts +97 -17
- package/src/ui/zag/select.ts +15 -4
- package/src/ui/zag/shared.ts +60 -8
- package/src/ui-combobox.d.ts +16 -1
- package/src/ui-menu.d.ts +22 -7
- package/src/ui-zag-types.d.ts +13 -5
- package/src/ui.d.ts +62 -7
- package/src/ui.ts +2 -2
- package/src/vite/api.ts +186 -0
- package/src/vite/compile.ts +280 -0
- package/src/vite/plugin.d.ts +34 -0
- package/src/vite/plugin.ts +78 -4
- package/src/vite/sandbox.ts +16 -0
- package/src/worker/page.ts +396 -0
- package/src/worker/protocol.ts +48 -0
- package/src/worker/target.ts +282 -0
- package/src/worker-page.d.ts +42 -0
- package/src/worker-page.ts +12 -0
- package/src/worker.d.ts +65 -0
- package/src/worker.ts +16 -0
- package/src/yjs/driver.ts +253 -0
- package/src/yjs/mapping.ts +389 -0
- package/src/yjs/shared.ts +138 -0
- package/src/yjs/testing.ts +91 -0
- package/src/yjs-testing.d.ts +34 -0
- package/src/yjs-testing.ts +7 -0
- package/src/yjs.d.ts +109 -0
- package/src/yjs.ts +18 -0
- package/src/zag.d.ts +2 -0
- package/src/zag.ts +8 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yjs.cjs.js","sources":["../src/yjs/mapping.ts","../src/yjs/driver.ts","../src/yjs/shared.ts"],"sourcesContent":["/*\n * 'sygnal/yjs' (research: dev-plans/research/crdt-state): the mapping between a plain JSON state\n * slice and a Yjs document.\n *\n * Inferred from the value unless a `shape` declares it (shared({ shape }), D: Q1):\n * - a plain object -> Y.Map (one LWW register per key)\n * - an array of objects that all have `id` -> a *collection*: a Y.Map keyed by String(id), each item a\n * Y.Map of its fields plus `$o`, a fractional order key (`fractional-indexing`); the array is the\n * items sorted by ($o, id). Concurrent add / edit / move / delete of different items merge; a move\n * is one register write, so it never duplicates or drops an item, and an edit to a moved item\n * survives the move. An empty array is ambiguous: a collection unless the field already holds a\n * list (or the shape says 'list'); without a shape the driver warns once (SYG261, dev).\n * - any other array -> Y.Array of JSON values (spliced by common prefix / suffix)\n * - a string field named in `text` / 'text' in the shape -> Y.Text (character-level merge)\n * - anything else -> a JSON value in its parent (LWW)\n *\n * write(y, prev, next) turns the *local* change prev -> next into Yjs operations. It is a 3-way\n * write: keys / items the local change didn't touch are left alone even when Yjs holds newer remote\n * values for them, and every write is idempotent against the document's current content (a value\n * Yjs already holds isn't written again), so a prev older than the document never reverts or\n * duplicates a remote change. Items that are the same object as before are skipped without a\n * lookup (index identity first).\n *\n * read(y, path, prev, dirty) reads the slice; with `dirty` (the types a transaction changed) it\n * re-reads only those and keeps prev's objects everywhere else (incremental read).\n */\nimport * as Y from 'yjs'\nimport {generateKeyBetween} from 'fractional-indexing'\n\n/** a normalized shape node: k = 't' text, 'l' list, 'c' collection (i: the item's fields), 'm' map (f: fields), 'v' value */\nexport interface ShapeNode { k?: Kind; f?: Record<string, ShapeNode>; i?: Record<string, ShapeNode> }\nexport interface MapOptions {\n text?: string[]\n /** an empty array whose kind was guessed (no shape, no kind in the document yet): its path */\n ambiguous?: (path: string) => void\n}\n\nconst isPlain = (v: any) => v !== null && typeof v == 'object' && Object.getPrototypeOf(v) === Object.prototype\nconst hasId = (v: any) => isPlain(v) && (typeof v.id == 'string' || typeof v.id == 'number')\nconst isCollMap = (y: any) => y instanceof Y.Map && y.get('$c') === 1\nconst same = (a: any, b: any) => a === b || JSON.stringify(a) === JSON.stringify(b)\n\n// ---- shapes ------------------------------------------------------------------------------------\nconst COLL = Symbol.for('sygnal.yjs.collection')\nconst KINDS: Record<string, Kind> = {text: 't', list: 'l', collection: 'c', map: 'm', value: 'v'}\n/** shape: { items: collection({ text: 'text' }) }: an id-keyed collection whose items have these field shapes */\nexport const collection = (item: Record<string, any> = {}) => ({[COLL]: item})\n/** a public shape ({ title: 'text', items: collection(...), tags: 'list' }) as nodes */\nexport const normShape = (s: any): ShapeNode | undefined => {\n if (s == null) return undefined\n if (typeof s == 'string') {\n if (!KINDS[s]) throw new TypeError(`shared(): unknown shape '${s}'; use 'text', 'list', 'collection', 'map', 'value', collection({ ... }) or an object of fields`)\n return {k: KINDS[s]}\n }\n if (s[COLL]) return {k: 'c', i: fields(s[COLL])}\n if (isPlain(s)) return {k: 'm', f: fields(s)}\n throw new TypeError('shared(): a shape is a string, collection({ ... }) or an object of fields')\n}\nconst fields = (o: any) => {\n const f: Record<string, ShapeNode> = {}\n for (const k in o) f[k] = normShape(o[k])!\n return f\n}\n// the item shape of a collection field as a map node (its fields)\nconst itemNode = (sh?: ShapeNode): ShapeNode | undefined => sh?.i ? {k: 'm', f: sh.i} : undefined\n\n// ---- fractional order keys -----------------------------------------------------------------------\n// a key generateKeyBetween accepts (its default base-62 format: a head letter giving the integer\n// part's length, 'a' 2 .. 'z' 27 and 'Z' 2 .. 'A' 27, then digits; no fraction ending in '0'); any\n// other value (an older document's key) is rekeyed\nconst B62 = /^[0-9A-Za-z]+$/\nconst valid = (k: any): k is string => {\n if (typeof k != 'string' || !B62.test(k)) return false\n const c = k.charCodeAt(0), n = c >= 97 ? c - 95 : c <= 90 && c >= 65 ? 92 - c : 0\n return n > 0 && k.length >= n && (k.length == n || k[k.length - 1] != '0') && !/^A0{26}/.test(k)\n}\n\n// ---- splices -----------------------------------------------------------------------------------\ninterface Splice { i: number; del: number; ins: any }\nconst splice = (a: any, b: any, eq: (x: any, y: any) => boolean): Splice => {\n let i = 0, j = 0\n while (i < a.length && i < b.length && eq(a[i], b[i])) i++\n while (j < a.length - i && j < b.length - i && eq(a[a.length - 1 - j], b[b.length - 1 - j])) j++\n return {i, del: a.length - i - j, ins: b.slice(i, b.length - j)}\n}\n/**\n * The local splice prev -> next, moved onto a document whose content `cur` differs from prev by a\n * remote splice: shifted when it lies after the remote one, kept when before; an overlapping edit\n * is clamped (approximate; exact when the document matches either side).\n */\nconst rebase = (l: Splice, prev: any, cur: any, eq: any): Splice => {\n const r = splice(prev, cur, eq)\n if (l.i + l.del <= r.i) return l\n if (l.i >= r.i + r.del) return {...l, i: l.i + r.ins.length - r.del}\n const i = Math.min(l.i, r.i)\n return {i, del: Math.max(0, Math.min(l.del, cur.length - i)), ins: l.ins}\n}\n// eq compares elements (characters, list values)\nconst spliceInto = (cur: any, prev: any, next: any, eq: any, apply: (s: Splice) => void) => {\n const all = (a: any, b: any) => a === b || a.length === b.length && splice(a, b, eq).del === 0\n if (all(cur, next)) return // already there (a remote change, or no change)\n const l = splice(prev, next, eq)\n apply(all(cur, prev) ? l : rebase(l, prev, cur, eq))\n}\nconst strEq = (a: any, b: any) => a === b\n\n// ---- write -------------------------------------------------------------------------------------\n/*\n * Where a value lives. On the slice's object path (the slice itself, its plain-object fields, their\n * plain-object fields, ...: `path` is set) a structured value is a *root-level* shared type named by\n * its path ('board.items#c'), and the parent holds a marker ({ $y: 'c' }). Root-level types are\n * merged by name, so two clients that create `board.items` concurrently (offline, or both seeding an\n * empty document) get one collection with both clients' items. A nested Y.Map set under a key would\n * be a last-writer-wins register: one client's whole collection would be lost (the spike, §3.6).\n * Inside a collection item (`path` undefined) structured values are nested types: an item is created\n * by one client (its id), so the race is rarer, and a nested value there is LWW at creation.\n */\nexport type Kind = 't' | 'c' | 'm' | 'l' | 'v'\nconst kindOf = (k: string, n: any, cur: Kind | undefined, o: MapOptions, sh: ShapeNode | undefined, name: string): Kind => {\n const d = sh?.k\n if (d == 't' && typeof n == 'string' || d == 'l' && Array.isArray(n) || d == 'm' && isPlain(n) || d == 'v') return d\n if (d == 'c' && Array.isArray(n) && n.every(hasId)) return 'c'\n if (typeof n == 'string' && o.text?.includes(k)) return 't'\n if (Array.isArray(n) && n.every(hasId)) {\n if (n.length) return 'c'\n if (cur == 'l' || cur == 'c') return cur\n // an empty array the shape doesn't name: a guess (a collection); a list stays a list\n if (!d) o.ambiguous?.(name)\n return 'c'\n }\n return isPlain(n) ? 'm' : Array.isArray(n) ? 'l' : 'v'\n}\nconst nestedKind = (y: any): Kind | undefined =>\n y instanceof Y.Text ? 't' : isCollMap(y) ? 'c' : y instanceof Y.Map ? 'm' : y instanceof Y.Array ? 'l' : undefined\nexport const rootOf = (doc: Y.Doc, name: string, k: Kind): any =>\n k == 't' ? doc.getText(name + '#t') : k == 'l' ? doc.getArray(name + '#l') : doc.getMap(name + '#' + k)\nconst clear = (t: any) => {\n if (t instanceof Y.Map) for (const k of [...t.keys()]) t.delete(k)\n else if (t.length) t.delete(0, t.length)\n}\nconst marker = (v: any): Kind | undefined => isPlain(v) && typeof v.$y == 'string' ? v.$y : undefined\n\n/** the local change prev -> next of a map (the slice: writeMap(doc.getMap(key), last, value, o, key, shape)) */\nexport const writeMap = (y: Y.Map<any>, prev: any, next: any, o: MapOptions, path?: string, sh?: ShapeNode, label = path || ''): void => {\n prev = isPlain(prev) ? prev : {}\n for (const k in prev) if (!(k in next) && y.has(k)) {\n const m = path != null && marker(y.get(k))\n if (m) clear(rootOf(y.doc!, path + '.' + k, m))\n y.delete(k)\n }\n for (const k in next) if (!(k in prev) || prev[k] !== next[k] || !y.has(k)) writeValue(y, k, prev[k], next[k], o, path, sh?.f?.[k], label + '.' + k)\n}\n\nconst writeValue = (y: Y.Map<any>, k: string, p: any, n: any, o: MapOptions, path: string | undefined, sh: ShapeNode | undefined, label: string): void => {\n const cur = y.get(k), name = path != null ? path + '.' + k : undefined\n const had = name != null ? marker(cur) : nestedKind(cur), want = kindOf(k, n, had, o, sh, label)\n let t: any\n if (name != null) {\n if (had && had != want) clear(rootOf(y.doc!, name, had))\n if (want == 'v') { if (!same(cur, n)) y.set(k, n); return }\n if (had != want) { y.set(k, {$y: want}); p = undefined }\n t = rootOf(y.doc!, name, want)\n } else {\n if (want == 'v') { if (!same(cur, n)) y.set(k, n); return }\n if (had != want) {\n t = want == 't' ? new Y.Text() : want == 'l' ? new Y.Array() : new Y.Map()\n y.set(k, t); if (want == 'c') t.set('$c', 1); p = undefined\n } else t = cur\n }\n if (want == 't') {\n const s = t.toString()\n spliceInto(s, typeof p == 'string' ? p : s, n, strEq, ({i, del, ins}) => { if (del) t.delete(i, del); if (ins) t.insert(i, ins) })\n } else if (want == 'c') writeColl(t, Array.isArray(p) ? p : [], n, o, itemNode(sh), label)\n else if (want == 'm') writeMap(t, p, n, o, name, sh, label)\n else {\n const c = t.toArray()\n spliceInto(c, Array.isArray(p) ? p : c, n, same, ({i, del, ins}) => { if (del) t.delete(i, del); if (ins.length) t.insert(i, ins) })\n }\n}\n\n/** a collection: removed ids deleted, new ones added, changed ones written field by field, then order */\nconst writeColl = (m: Y.Map<any>, prev: any[], next: any[], o: MapOptions, sh: ShapeNode | undefined, label: string): void => {\n const item = (x: any, p: any) => {\n if (p === x) return\n const id = String(x.id), it = m.get(id)\n if (it instanceof Y.Map) { if (p !== x) writeMap(it, p ?? readItem(it), x, o, undefined, sh, label + '[]') }\n // new here. An id this side knew that is gone from the document was deleted remotely while it\n // was edited here: the delete wins (no resurrection)\n else if (!p) { const im = new Y.Map(); m.set(id, im); writeMap(im, {}, x, o, undefined, sh, label + '[]') }\n }\n // the common case (an edit, a toggle): the same ids in the same order. Unchanged items (the same\n // object) are skipped by index, no maps are built and the order is left alone\n if (prev.length == next.length && prev.every((x, i) => x === next[i] || x.id === next[i].id)) {\n for (let i = 0; i < next.length; i++) if (prev[i] !== next[i]) item(next[i], prev[i])\n return\n }\n // items added (an add, a paste) and nothing else moved: only the new items get keys, between\n // their neighbours' (the keys order() would give them)\n if (next.length > prev.length) {\n const added: number[] = []\n let j = 0\n for (let i = 0; i < next.length; i++) {\n if (j < prev.length && next[i].id === prev[j].id) item(next[i], prev[j++])\n else added.push(i)\n }\n if (j == prev.length) {\n for (const i of added) item(next[i], undefined)\n if (insertKeys(m, next, added)) return\n return order(m, next)\n }\n }\n const was = new Map(prev.map((x) => [String(x.id), x])), now = new Set(next.map((x) => String(x.id)))\n for (const id of was.keys()) if (!now.has(id) && m.has(id)) m.delete(id)\n for (const x of next) item(x, was.get(String(x.id)))\n // the ids or their order changed here (a local edit never reorders, even when the document holds\n // a remote move this side hasn't seen); removals alone leave the others' order as it was\n let j = 0\n for (const x of prev) if (j < next.length && x.id === next[j].id) j++\n if (j < next.length) order(m, next)\n}\n\n// keys for the items at `added` (indexes in next) between their neighbours' keys; false when a\n// neighbour's key is missing or out of order here (a remote move): order() then sorts it out\nconst insertKeys = (m: Y.Map<any>, next: any[], added: number[]): boolean => {\n const keyAt = (i: number) => m.get(String(next[i].id))?.get('$o')\n for (let a = 0; a < added.length; a++) {\n const i = added[a], it = m.get(String(next[i].id))\n if (!(it instanceof Y.Map)) continue\n let lo: string | null = null, hi: string | null = null\n for (let k = i - 1; k >= 0 && lo == null; k--) { const v = keyAt(k); if (v !== undefined) { if (!valid(v)) return false; lo = v } }\n // the next item that isn't new (new ones after this one get keys after it)\n for (let k = i + 1, b = a + 1; k < next.length; k++) {\n if (b < added.length && added[b] == k) { b++; continue }\n const v = keyAt(k)\n if (v === undefined) continue\n if (!valid(v)) return false\n hi = v\n break\n }\n if (lo != null && hi != null && lo >= hi) return false\n const cur = it.get('$o')\n if (!(valid(cur) && (lo == null || cur > lo) && (hi == null || cur < hi))) it.set('$o', generateKeyBetween(lo, hi))\n }\n return true\n}\n\n/**\n * The order keys: the longest run of items whose current keys already increase in `next`'s order\n * stays; every other item gets a key between its neighbours (fractional-indexing; deterministic, so\n * two clients seeding the same ids write the same keys). Idempotent: an order the document already\n * has writes nothing; one move writes one key.\n */\nconst order = (m: Y.Map<any>, next: any[]): void => {\n const items = next.map((x) => m.get(String(x.id))).filter((it) => it instanceof Y.Map)\n const keys = items.map((it) => { const k = it.get('$o'); return valid(k) ? k : undefined })\n const keep = lis(keys)\n let last: string | null = null\n items.forEach((it, i) => {\n if (keep.has(i)) { last = keys[i]!; return }\n let hi: string | null = null\n for (let j = i + 1; j < items.length; j++) if (keep.has(j) && (last == null || keys[j]! > last)) { hi = keys[j]!; break }\n last = generateKeyBetween(last, hi)\n it.set('$o', last)\n })\n}\n/** indexes of a longest strictly increasing subsequence (undefined keys never kept) */\nconst lis = (keys: (string | undefined)[]): Set<number> => {\n const tails: number[] = [], prev: number[] = []\n keys.forEach((k, i) => {\n if (k === undefined) return\n let lo = 0, hi = tails.length\n while (lo < hi) { const mid = (lo + hi) >> 1; keys[tails[mid]]! < k ? lo = mid + 1 : hi = mid }\n prev[i] = lo ? tails[lo - 1] : -1\n tails[lo] = i\n })\n const out = new Set<number>()\n for (let i = tails.length ? tails[tails.length - 1] : -1; i >= 0; i = prev[i]) out.add(i)\n return out\n}\n\n// ---- read --------------------------------------------------------------------------------------\n/**\n * What one transaction changed, for an incremental read: `types` the changed types and their\n * ancestors, `roots` the names of the root-level types among them, `changed` the transaction's own\n * map (type -> changed keys).\n */\nexport interface Dirty { types: Set<any>; roots: Set<string>; changed: Map<any, Set<string | null>> }\n\nconst dirtyHere = (y: any, path: string | undefined, d: Dirty) => {\n if (d.types.has(y)) return true\n if (path != null) for (const n of d.roots) if (n.startsWith(path + '.')) return true\n return false\n}\n\n/**\n * A slice's JSON: read(doc.getMap(key), key). With `d` and `prev` (the previous read), only what\n * the transaction changed is read again; everything else is prev's object.\n */\nexport const read = (y: any, path?: string, prev?: any, d?: Dirty): any => {\n if (!(y instanceof Y.AbstractType)) return y\n if (d && prev !== undefined && !dirtyHere(y, path, d)) return prev\n if (y instanceof Y.Text) return y.toString()\n if (y instanceof Y.Array) return reconcile(prev, y.toArray().map((v) => read(v)))\n if (y instanceof Y.Map) {\n if (isCollMap(y)) return readColl(y, d && Array.isArray(prev) ? prev : undefined, d)\n const out: any = {}, p = d && isPlain(prev) ? prev : undefined\n y.forEach((v, k) => {\n const m = path != null && marker(v)\n out[k] = !m ? read(v, undefined, p?.[k], d)\n : m == 'c' ? readColl(rootOf(y.doc!, path + '.' + k, m), d && Array.isArray(p?.[k]) ? p![k] : undefined, d)\n : read(rootOf(y.doc!, path + '.' + k, m), path + '.' + k, p?.[k], d)\n })\n // the fields were read against p's: p itself when every one is p's\n if (!p) return out\n let n = 0\n for (const k in out) if (out[k] !== p[k] || !(k in p)) return out; else n++\n return n == Object.keys(p).length ? p : out\n }\n return y\n}\nconst byKey = (a: [string, string, ...any[]], b: [string, string, ...any[]]) =>\n a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0\nconst readColl = (y: Y.Map<any>, prev?: any[], d?: Dirty): any[] => {\n if (!d || !prev) {\n const items: [string, string, Y.Map<any>][] = []\n y.forEach((v, k) => { if (v instanceof Y.Map) items.push([v.get('$o') ?? '', k, v]) })\n return items.sort(byKey).map(([, , v]) => readItem(v))\n }\n if (!d.types.has(y)) return prev\n // ids to place again (added, removed, replaced, or a new order key) and items edited in place\n const place = new Set<string>(), edited = new Set<string>()\n for (const k of d.changed.get(y) || []) if (k != null) place.add(k)\n for (const t of d.types) if (t._item?.parent === y && t._item.parentSub != null) {\n const id = t._item.parentSub\n if (d.changed.get(t)?.has('$o')) place.add(id)\n else edited.add(id)\n }\n // prev is sorted by ($o, id): the items that stay keep their order; the placed ones go in by binary search\n const was = new Map<string, any>(), out: any[] = []\n for (const x of prev) {\n const id = String(x.id)\n if (place.has(id)) was.set(id, x)\n else out.push(edited.has(id) ? readItem(y.get(id), x, d) : x)\n }\n if (place.size) {\n const key = (x: any): [string, string] => [y.get(String(x.id))?.get('$o') ?? '', String(x.id)]\n const ins: [string, string, Y.Map<any>][] = []\n for (const id of place) { const v = y.get(id); if (v instanceof Y.Map) ins.push([v.get('$o') ?? '', id, v]) }\n for (const e of ins.sort(byKey)) {\n let lo = 0, hi = out.length\n while (lo < hi) { const mid = (lo + hi) >> 1; byKey(key(out[mid]), e) < 0 ? lo = mid + 1 : hi = mid }\n out.splice(lo, 0, readItem(e[2], was.get(e[1]), d))\n }\n }\n return out.length == prev.length && out.every((x, i) => x === prev[i]) ? prev : out\n}\nconst readItem = (it: Y.Map<any>, prev?: any, d?: Dirty) => {\n const x: any = {}\n it.forEach((v, k) => { if (k != '$o') x[k] = read(v, undefined, prev?.[k], d) })\n return prev ? reconcile(prev, x) : x\n}\n\n/** next, reusing prev's objects wherever they are deep-equal (Collection items keep their identity) */\nexport const reconcile = (prev: any, next: any): any => {\n if (prev === next) return prev\n if (Array.isArray(next)) {\n if (!Array.isArray(prev)) return next\n let byId: Map<any, any> | undefined\n let changed = prev.length != next.length\n const out = next.map((x, i) => {\n // index first; by id only when the items moved\n let p = prev[i]\n if (x === p) return p\n if (hasId(x) && !(hasId(p) && p.id === x.id)) p = (byId ||= new Map(prev.filter(hasId).map((y) => [y.id, y]))).get(x.id)\n const r = reconcile(p, x)\n if (r !== prev[i]) changed = true\n return r\n })\n return changed ? out : prev\n }\n if (isPlain(next)) {\n if (!isPlain(prev)) return next\n let changed = Object.keys(prev).length != Object.keys(next).length\n const out: any = {}\n for (const k in next) { out[k] = reconcile(prev[k], next[k]); if (out[k] !== prev[k] || !(k in prev)) changed = true }\n return changed ? out : prev\n }\n return Object.is(prev, next) ? prev : next\n}\n","/*\n * 'sygnal/yjs' (research: dev-plans/research/crdt-state): makeYjsDriver, the driver that owns a Y.Doc\n * for `shared()` slices.\n *\n * const drivers = { SHARED: makeYjsDriver({ doc, provider, text: ['text'] }) }\n *\n * Sink commands (data, from model entries):\n * { key, value, shape?, seed? } state[key]'s new value (shared()'s `key.LOCAL`, coalesced per flush)\n * { undo: key } / { redo: key } this client's own changes to state[key] (a Y.UndoManager per slice)\n * { key, value, step } (sygnal/canvas history()) a new `step` closes this client's undo\n * step after the write; while steps come, edits merge by step, not by time\n * { presence: { ... } } this client's awareness state (merged)\n * { connect: boolean } provider.connect() / provider.disconnect() (go offline and back)\n * Sources: remote(key) ({ value, base }), presence() (the other clients), history(key)\n * ({ canUndo, canRedo }), doc.\n *\n * - Local: the new value is diffed against the last one the driver saw and written in one\n * transaction (mapping.ts writeMap, a 3-way idempotent write).\n * - Remote: every transaction from elsewhere (a peer, a sync, an undo) updates the driver's mirror of\n * the slice incrementally (only the types it changed are read again) and emits { value, base };\n * shared()'s REMOTE reducer applies it only while state[key] is still `base`.\n * - Seeding (Q3): `seed: 'whenSynced'` (default) waits for the provider's first sync, then seeds an\n * empty document from the app's value, or else takes the document's content (writing any edits\n * the app made before the sync onto it). `seed: 'ifEmpty'` seeds at once (a local-only document).\n * Without `provider` / `synced` the document counts as synced.\n */\nimport * as Y from 'yjs'\nimport {xs} from '../index'\nimport {writeMap, read, reconcile, normShape, type MapOptions, type ShapeNode, type Dirty} from './mapping'\n\nexport interface YjsDriverOptions {\n doc: Y.Doc\n /** a y-protocols Awareness for presence (default: provider.awareness) */\n awareness?: any\n /** y-websocket, Hocuspocus, y-webrtc, y-indexeddb, createNetwork()'s peer: its first sync, its awareness, connect / disconnect */\n provider?: any\n /** resolves when the document has synced (instead of provider's sync events) */\n synced?: PromiseLike<unknown>\n /** field names whose strings are Y.Text (character-level merge) */\n text?: string[]\n /** a Y.UndoManager per slice (default true); captureTimeout merges rapid local edits (default 500 ms) */\n undo?: boolean\n captureTimeout?: number\n}\n\ninterface Slice {\n key: string; y: Y.Map<any>; um?: Y.UndoManager\n // started: the slice is bound to the document (after seeding); first: the app's first value\n started: boolean; first: any; last: any; mirror: any\n // the REMOTE values sent since the last local write, and the latest one with its base\n emitted: Set<any>; sent: any; sentBase: any\n shape?: ShapeNode; seed: string\n out: Set<any>\n // history()'s step (sygnal/canvas): the last one seen\n step?: any\n}\n\nconst report = (code: string, message: string, fix: string, data: any) => {\n try {\n (globalThis as any).__SYGNAL_DIAGNOSTICS__?.report(code, {severity: 'warn', message, fix, data})\n } catch (e) { queueMicrotask(() => { throw e }) }\n}\n\n// the promise of a provider's first sync; null: synced now\nconst syncedOf = (o: YjsDriverOptions): PromiseLike<unknown> | null => {\n if (o.synced) return o.synced\n const p = o.provider\n if (!p || p.synced === true || p.isSynced === true) return null\n if (p.whenSynced?.then) return p.whenSynced\n if (typeof p.on != 'function') return null\n return new Promise<void>((r) => {\n // y-websocket: 'sync' (true); y-webrtc: 'synced' ({ synced }); Hocuspocus: 'synced' ({ state })\n const f = (x: any) => {\n if (x === false || x?.synced === false || x?.state === false) return\n for (const e of ['sync', 'synced']) p.off?.(e, f)\n r()\n }\n for (const e of ['sync', 'synced']) p.on(e, f)\n })\n}\n\nexport const makeYjsDriver = (o: YjsDriverOptions) => (sink$: any) => {\n const {doc} = o, provider = o.provider, awareness = o.awareness ?? provider?.awareness\n const local = {}, seed = {}, slices = new Map<string, Slice>(), warned = new Set<string>()\n const opts: MapOptions = {\n text: o.text,\n ambiguous: (path) => {\n if (warned.has(path)) return\n warned.add(path)\n report('SYG261', `shared(): '${path}' is an empty array, so its kind is a guess: an id-keyed collection. A list of plain values would be stored as a collection until it has items`,\n `Declare it: shared({ shape: { ${path.split('.').pop()}: 'list' } }) for plain values, or collection() for items with an id`, {path})\n },\n }\n const first = syncedOf(o)\n let synced = !first\n first?.then(() => {\n synced = true\n for (const s of slices.values()) if (!s.started && s.first !== undefined) start(s)\n })\n\n // the root-level types' names (doc.share), by type. Read again on a miss: a type that arrived in\n // an update is a placeholder until its first getMap() / getText(), which puts a new object in\n // doc.share under the same name (the size doesn't change)\n let names = new Map<any, string>()\n const nameOf = (t: any) => {\n let n = names.get(t)\n if (n === undefined) { names = new Map([...doc.share].map(([k, v]) => [v, k])); n = names.get(t) }\n return n\n }\n // what a transaction changed (mapping.ts Dirty)\n const dirtyOf = (tr: Y.Transaction): Dirty => {\n const types = new Set<any>(), roots = new Set<string>()\n for (const t of tr.changed.keys()) {\n let r: any = t\n types.add(r)\n while (r._item) { r = r._item.parent; types.add(r) }\n const n = nameOf(r)\n if (n) roots.add(n)\n }\n return {types, roots, changed: tr.changed as any}\n }\n const touches = (d: Dirty, k: string) => {\n for (const n of d.roots) if (n === k || n.startsWith(k + '.')) return true\n return false\n }\n\n const onTransaction = (tr: Y.Transaction) => {\n if (!slices.size || !tr.changed.size) return\n const d = dirtyOf(tr)\n for (const s of slices.values()) {\n if (!s.started || !touches(d, s.key)) continue\n s.mirror = read(s.y, s.key, s.mirror, d)\n if (tr.origin !== local && tr.origin !== seed) emit(s, !!s.um && tr.origin === s.um)\n }\n }\n doc.on('afterTransaction', onTransaction)\n\n const slice = (k: string): Slice => {\n let s = slices.get(k)\n if (s) return s\n s = {key: k, y: doc.getMap(k), started: false, first: undefined, last: undefined, mirror: undefined, emitted: new Set(), sent: undefined, sentBase: undefined, seed: 'whenSynced', out: new Set()}\n if (o.undo !== false) s.um = new Y.UndoManager(s.y, {trackedOrigins: new Set([local]), captureTimeout: o.captureTimeout ?? 500})\n slices.set(k, s)\n return s\n }\n // the slice's path-named root types join its undo scope inside the transaction that may create them\n const scope = (s: Slice) => {\n if (s.um) for (const [n, t] of doc.share) if (n.startsWith(s.key + '.')) s.um.addToScope(t as any)\n }\n const write = (s: Slice, prev: any, next: any, origin: any) =>\n doc.transact(() => { writeMap(s.y, prev, next, opts, s.key, s.shape); scope(s) }, origin)\n // the document's content as a REMOTE action, unless the app already has it (or has it on its way)\n const emit = (s: Slice, undo = false) => {\n // the mirror takes the app's objects wherever they are equal (Collection items keep their identity)\n if (s.mirror !== s.sent) s.mirror = reconcile(s.last, s.mirror)\n const value = s.mirror\n if (value === s.last || value === s.sent && s.sentBase === s.last) return\n s.sent = value; s.sentBase = s.last; s.emitted.add(value)\n for (const l of s.out) l.next(undo ? {value, base: s.last, undo} : {value, base: s.last})\n }\n // bind the slice to the document: seed an empty one from the app's value, or else take its\n // content (with the app's edits since its first value written onto it)\n const start = (s: Slice) => {\n s.started = true\n const v = s.last\n if (s.y.size == 0) write(s, {}, v, seed)\n else if (v !== s.first) write(s, s.first, v, local)\n s.mirror = read(s.y, s.key)\n emit(s)\n }\n\n /*\n * state[key]'s value: from `key.LOCAL` (coalesced per flush) and from every `key.REMOTE` (its\n * driver sink sends the state the REMOTE reducer committed: the REMOTE value when it applied,\n * else the app's own newer value). So the driver always diffs from a value the app really had.\n */\n const onLocal = (c: any) => {\n onValue(c)\n // history() (sygnal/canvas): one undo step per commit, however long the gesture took\n if (c.step === undefined) return\n const s = slice(c.key)\n if (s.um) s.um.captureTimeout = Infinity\n if (c.step !== s.step) { if (s.step !== undefined) s.um?.stopCapturing(); s.step = c.step }\n }\n const onValue = (c: any) => {\n const s = slice(c.key), v = c.value\n if (v === undefined) return\n if (!s.started) {\n if (s.first === undefined) { s.first = v; s.shape = normShape(c.shape); s.seed = c.seed || 'whenSynced' }\n s.last = v\n if (synced || s.seed == 'ifEmpty') start(s)\n return\n }\n // the app took a REMOTE value (or nothing changed): any newer document content follows\n if (v === s.last || s.emitted.has(v)) {\n // REMOTE actions run in order: the ones sent before this one were answered already\n if (v !== s.last) for (const e of s.emitted) { s.emitted.delete(e); if (e === v) break }\n s.last = v\n return emit(s)\n }\n write(s, s.last, v, local)\n s.last = v\n s.emitted.clear()\n emit(s)\n }\n\n sink$.addListener({\n next: (c: any) => {\n if (!c) return\n if ('value' in c && c.key) onLocal(c)\n if (c.undo) slice(c.undo).um?.undo()\n if (c.redo) slice(c.redo).um?.redo()\n if (c.presence && awareness) awareness.setLocalState({...awareness.getLocalState(), ...c.presence})\n if (typeof c.connect == 'boolean') c.connect ? provider?.connect?.() : provider?.disconnect?.()\n },\n error: () => {},\n complete: () => {\n doc.off('afterTransaction', onTransaction)\n for (const s of slices.values()) s.um?.destroy()\n },\n })\n const others = () => [...awareness.getStates()].filter(([id]) => id !== awareness.clientID).map(([id, st]: any) => ({id, ...st}))\n return {\n /** remote content for state[key], as { value, base } */\n remote: (k: string) => {\n let l: any\n return xs.create({start: (x: any) => { slice(k).out.add(l = x) }, stop: () => { slice(k).out.delete(l) }})\n },\n /** the other clients' presence states, on every awareness change */\n presence: () => {\n if (!awareness) return xs.empty()\n let f: any\n return xs.create({\n start: (l: any) => { f = () => l.next(others()); f(); awareness.on('change', f) },\n stop: () => { awareness.off('change', f) },\n })\n },\n /** { canUndo, canRedo } for state[key]'s per-user history */\n history: (k: string) => {\n let f: any\n const um = () => slice(k).um, ev = ['stack-item-added', 'stack-item-popped', 'stack-cleared']\n return xs.create({\n start: (l: any) => {\n const u = um()\n f = () => l.next({canUndo: !!u?.canUndo(), canRedo: !!u?.canRedo()})\n f(); for (const e of ev) u?.on(e as any, f)\n },\n stop: () => { for (const e of ev) um()?.off(e as any, f) },\n })\n },\n doc,\n }\n}\n","/*\n * 'sygnal/yjs' (research: dev-plans/research/crdt-state): shared(), the behavior that binds one\n * top-level state key to the Yjs driver's document.\n *\n * Board.uses = { board: shared({ presence: 'peers', history: 'history' }) } // state.board is shared\n * Board.model = {\n * ADD: (state, item) => ({ ...state, board: { ...state.board, items: [...state.board.items, item] } }),\n * UNDO: { SHARED: { undo: 'board' } }, // this user's changes only\n * HERE: { SHARED: (_, id) => ({ presence: { editing: id } }) },\n * }\n *\n * The model stays the only writer of state:\n * - `board.LOCAL`: every new value of state.board reaches the driver as data, once per flush (the\n * values of one flush coalesce: a burst of actions is one Yjs transaction).\n * - `board.REMOTE` ({ value, base }): a document change from elsewhere; it applies only while\n * state.board is still `base` (no unsynced local edit is overwritten), and its driver sink tells\n * the driver the state it committed either way.\n * - `board.PRESENCE` / `board.HISTORY` with `presence: 'peers'` / `history: 'history'`: the other\n * clients' awareness states and { canUndo, canRedo } in those state keys.\n * LOCAL and REMOTE are marked as built-in actions (`Symbol.for('sygnal.builtIn')` on their\n * handlers): the action log calls them 'built-in', so DevTools hides them with INITIALIZE (Q5).\n *\n * `ownsState: false`: the host's initialState keeps state[key] (the first value seeds an empty\n * document); the behavior adds no slice of its own, and sygnal-check's SYG127 reads the marker.\n * `undo()` on the same key reverts other users' changes: SYG260 (dev) points to `{ SHARED: { undo } }`.\n *\n * sygnal/canvas's `history(key)` routes here (maintainer decision 7, one API): model entries that\n * are its `undo` / `redo` become `{ [driver]: { undo: key } }` / `{ redo: key }`, its `commit`\n * bumps `state[step]` instead of keeping snapshots, and the LOCAL command carries that step, so the\n * driver closes this user's undo step at each commit (one step per gesture). `after` runs on the\n * state an undo / redo brings back. The marker is `Symbol.for('sygnal.history')`: no import.\n */\nimport {xs, ABORT} from '../index'\n\nexport interface SharedOptions {\n /** the driver's name (default 'SHARED') */\n driver?: string\n /** the state key that gets the other clients' presence states */\n presence?: string\n /** the state key that gets { canUndo, canRedo } of this client's history */\n history?: string\n /** the slice's shape; inferred where it says nothing */\n shape?: any\n /** 'whenSynced' (default): seed an empty document after the provider's first sync; 'ifEmpty': at once */\n seed?: 'whenSynced' | 'ifEmpty'\n}\n\nconst BUILT_IN = Symbol.for('sygnal.builtIn')\nconst HISTORY = Symbol.for('sygnal.history')\nconst builtIn = <F>(f: F): F => ((f as any)[BUILT_IN] = true, f)\n\n// SYG260: an undo() behavior of the host whose `key` is this shared key (reported once per use)\nconst reported = new WeakSet<object>()\nconst checkUndo = (c: any, k: string) => {\n const d = (globalThis as any).__SYGNAL_DIAGNOSTICS__, u = c.view?.uses\n if (!d || !u) return\n for (const n in u) {\n const b = u[n], key = b?.options?.key\n if (!b?.model?.UNDO || !b.model.REDO || !(key === k || Array.isArray(key) && key.includes(k)) || reported.has(b)) continue\n reported.add(b)\n try {\n d.report('SYG260', {\n severity: 'warn', component: c, data: {key: k, uses: n},\n message: `undo() (uses key '${n}') records '${k}', which shared() syncs: its UNDO restores a snapshot of the whole slice and reverts other users' changes made since`,\n fix: `Remove undo() for '${k}' and use the driver's per-user undo: UNDO: { SHARED: { undo: '${k}' } }, REDO: { SHARED: { redo: '${k}' } }, with shared({ history: 'history' }) for canUndo / canRedo`,\n })\n } catch (e) { queueMicrotask(() => { throw e }) }\n }\n}\n\n/** `uses = { [key]: shared(options) }`: state[key] lives in the Yjs driver's document */\nexport const shared = (opts: SharedOptions = {}) => ({\n options: opts,\n ownsState: false as const,\n merge(c: any, k: string) {\n const D = opts.driver || 'SHARED', S = c.stateSourceName || 'STATE', model = c.model = {...c.model}\n const {shape, seed} = opts\n checkUndo(c, k)\n // sygnal/canvas history(k): its undo / redo entries go to this user's UndoManager\n let hist: any = null\n for (const name in model) {\n const e = model[name], f = typeof e == 'function' ? e : e?.[S], h = f?.[HISTORY]\n if (!h || h.field !== k) continue\n hist = h\n const cmd = f === h.undo ? {undo: k} : {redo: k}, rest = typeof e == 'function' ? {} : {...e}\n delete rest[S]\n model[name] = {...rest, [D]: () => cmd}\n }\n if (hist) hist.shared = {history: opts.history}\n const step = hist?.step\n // the committed slice when the action runs (not the action's data: a REMOTE queued before it may have moved it on)\n model[k + '.LOCAL'] = {[D]: builtIn((s: any) => step ? {key: k, value: s?.[k], shape, seed, step: s?.[step] ?? 0} : {key: k, value: s?.[k], shape, seed})}\n model[k + '.REMOTE'] = {\n [S]: builtIn((s: any, d: any) => s?.[k] !== d.base ? ABORT : d.undo && hist ? hist.after({...s, [k]: d.value}) : {...s, [k]: d.value}),\n // the state the REMOTE committed (its value, or the app's own newer one) is the driver's new base\n [D]: builtIn((s: any) => ({key: k, value: s?.[k]})),\n }\n if (opts.presence) model[k + '.PRESENCE'] = {[S]: (s: any, peers: any) => ({...s, [opts.presence!]: peers})}\n if (opts.history) model[k + '.HISTORY'] = {[S]: (s: any, h: any) => ({...s, [opts.history!]: h})}\n const own = c.intent, owned = c._behaviorActions ||= {}\n for (const a of ['LOCAL', 'REMOTE', 'PRESENCE', 'HISTORY']) owned[k + '.' + a] = k\n c.intent = (so: any) => {\n // no Yjs driver (renderComponent without one: a fake source): the reducers still run\n const h = own?.(so) || {}, st = so[S], src = typeof so[D]?.remote == 'function' ? so[D] : null\n // state[key]'s latest value once per flush (a microtask after the first change of a burst)\n let prev: any, latest: any, queued = false, sub: any, prevStep: any, latestStep: any\n const local$ = xs.create({\n start: (l: any) => {\n sub = st.stream.subscribe({\n next: (s: any) => {\n latest = s?.[k]\n if (step) latestStep = s?.[step]\n if (queued) return\n queued = true\n queueMicrotask(() => {\n queued = false\n if (sub && latest !== undefined && (latest !== prev || latestStep !== prevStep)) prevStep = latestStep, l.next(prev = latest)\n })\n },\n error: () => {}, complete: () => {},\n })\n },\n stop: () => { sub?.unsubscribe(); sub = undefined },\n })\n const o: any = {\n [k + '.LOCAL']: local$,\n [k + '.REMOTE']: src ? src.remote(k) : xs.never(),\n ...(opts.presence && {[k + '.PRESENCE']: src ? src.presence() : xs.never()}),\n ...(opts.history && {[k + '.HISTORY']: src ? src.history(k) : xs.never()}),\n // the host's own actions (and renderComponent's simulateAction streams) win\n ...h,\n }\n // renderComponent's marker (non-enumerable) for a behavior merged after this one\n if (h.__sygnalTestActions) Object.defineProperty(o, '__sygnalTestActions', {value: h.__sygnalTestActions})\n return o\n }\n },\n})\n"],"names":["Y","generateKeyBetween","xs","ABORT"],"mappings":"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"}
|