@pilotiq/pilotiq 0.8.2 → 0.9.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/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +165 -0
- package/dist/Resource.d.ts +39 -0
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +30 -0
- package/dist/Resource.js.map +1 -1
- package/dist/pageData/navigation.d.ts +17 -1
- package/dist/pageData/navigation.d.ts.map +1 -1
- package/dist/pageData/navigation.js +14 -0
- package/dist/pageData/navigation.js.map +1 -1
- package/dist/react/AppShell.d.ts +5 -0
- package/dist/react/AppShell.d.ts.map +1 -1
- package/dist/react/AppShell.js +1 -1
- package/dist/react/AppShell.js.map +1 -1
- package/dist/react/FormCollabBindingRegistry.d.ts +71 -1
- package/dist/react/FormCollabBindingRegistry.d.ts.map +1 -1
- package/dist/react/FormCollabBindingRegistry.js.map +1 -1
- package/dist/react/FormStateContext.d.ts +17 -0
- package/dist/react/FormStateContext.d.ts.map +1 -1
- package/dist/react/FormStateContext.js +44 -3
- package/dist/react/FormStateContext.js.map +1 -1
- package/dist/react/RecordWrapperGate.d.ts +19 -6
- package/dist/react/RecordWrapperGate.d.ts.map +1 -1
- package/dist/react/RecordWrapperGate.js +18 -8
- package/dist/react/RecordWrapperGate.js.map +1 -1
- package/dist/react/fields/MarkdownInput.d.ts.map +1 -1
- package/dist/react/fields/MarkdownInput.js +105 -3
- package/dist/react/fields/MarkdownInput.js.map +1 -1
- package/dist/react/fields/TextLikeInput.d.ts +10 -0
- package/dist/react/fields/TextLikeInput.d.ts.map +1 -1
- package/dist/react/fields/TextLikeInput.js +179 -0
- package/dist/react/fields/TextLikeInput.js.map +1 -1
- package/dist/react/fields/textDelta.d.ts +44 -0
- package/dist/react/fields/textDelta.d.ts.map +1 -0
- package/dist/react/fields/textDelta.js +80 -0
- package/dist/react/fields/textDelta.js.map +1 -0
- package/dist/react/index.d.ts +2 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/parseRecordEditUrl.d.ts +33 -9
- package/dist/react/parseRecordEditUrl.d.ts.map +1 -1
- package/dist/react/parseRecordEditUrl.js +40 -2
- package/dist/react/parseRecordEditUrl.js.map +1 -1
- package/package.json +1 -1
- package/src/Resource.test.ts +44 -0
- package/src/Resource.ts +58 -0
- package/src/pageData/navigation.ts +32 -1
- package/src/pageData.test.ts +36 -0
- package/src/react/AppShell.tsx +6 -1
- package/src/react/FormCollabBindingRegistry.ts +63 -1
- package/src/react/FormStateContext.tsx +62 -3
- package/src/react/RecordWrapperGate.tsx +26 -8
- package/src/react/fields/MarkdownInput.tsx +100 -3
- package/src/react/fields/TextLikeInput.tsx +203 -1
- package/src/react/fields/textDelta.test.ts +141 -0
- package/src/react/fields/textDelta.ts +86 -0
- package/src/react/index.ts +9 -1
- package/src/react/parseRecordEditUrl.test.ts +48 -1
- package/src/react/parseRecordEditUrl.ts +52 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownInput.js","sourceRoot":"","sources":["../../../src/react/fields/MarkdownInput.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MarkdownInput.js","sourceRoot":"","sources":["../../../src/react/fields/MarkdownInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,16 @@ import type { ElementMeta } from '../../schema/Element.js';
|
|
|
6
6
|
* `live()` fields, the input is bound to the context's values map and
|
|
7
7
|
* fires the live trigger on change/blur according to the field's `live`
|
|
8
8
|
* config. Outside a controlled form, falls back to plain `defaultValue`.
|
|
9
|
+
*
|
|
10
|
+
* **Phase F.6 — character-level CRDT branch.** When a `<RecordCollabRoom>`
|
|
11
|
+
* is mounted up-tree AND `@pilotiq-pro/collab`'s binding registered a
|
|
12
|
+
* `TextBinding` for this field (text-shaped fieldType + `.collab() !== false`),
|
|
13
|
+
* the input takes the `BoundTextInput` path: edits emit `TextDelta`s to
|
|
14
|
+
* the binding's `Y.Text`, remote changes flow back via `observe`, and
|
|
15
|
+
* cursor position survives both. The legacy whole-string LWW path
|
|
16
|
+
* still runs for non-text fields, non-collab forms, and masked inputs
|
|
17
|
+
* (mask + character-level CRDT is incompatible — peers would see raw
|
|
18
|
+
* keystrokes desynced from the rendered mask).
|
|
9
19
|
*/
|
|
10
20
|
export declare function TextLikeInput({ el, name, common, type, extraProps, multiline, applyMask, }: {
|
|
11
21
|
el: ElementMeta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextLikeInput.d.ts","sourceRoot":"","sources":["../../../src/react/fields/TextLikeInput.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TextLikeInput.d.ts","sourceRoot":"","sources":["../../../src/react/fields/TextLikeInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAO1D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GACzD,EAAE;IACD,EAAE,EAAU,WAAW,CAAA;IACvB,IAAI,EAAQ,MAAM,CAAA;IAClB,MAAM,EAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,IAAI,EAAQ,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,SAAS,EAAG,OAAO,CAAA;IACnB;;oDAEgD;IAChD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CACtC,GAAG,KAAK,CAAC,YAAY,CAmErB"}
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
3
|
import { useFieldState } from '../FormStateContext.js';
|
|
3
4
|
import { Input } from '../ui/input.js';
|
|
4
5
|
import { Textarea } from '../ui/textarea.js';
|
|
6
|
+
import { computeDelta, preserveCursor } from './textDelta.js';
|
|
5
7
|
/**
|
|
6
8
|
* Bridge between controlled (FormStateProvider) and uncontrolled
|
|
7
9
|
* (defaultValue) modes for text-style inputs. When inside a form with
|
|
8
10
|
* `live()` fields, the input is bound to the context's values map and
|
|
9
11
|
* fires the live trigger on change/blur according to the field's `live`
|
|
10
12
|
* config. Outside a controlled form, falls back to plain `defaultValue`.
|
|
13
|
+
*
|
|
14
|
+
* **Phase F.6 — character-level CRDT branch.** When a `<RecordCollabRoom>`
|
|
15
|
+
* is mounted up-tree AND `@pilotiq-pro/collab`'s binding registered a
|
|
16
|
+
* `TextBinding` for this field (text-shaped fieldType + `.collab() !== false`),
|
|
17
|
+
* the input takes the `BoundTextInput` path: edits emit `TextDelta`s to
|
|
18
|
+
* the binding's `Y.Text`, remote changes flow back via `observe`, and
|
|
19
|
+
* cursor position survives both. The legacy whole-string LWW path
|
|
20
|
+
* still runs for non-text fields, non-collab forms, and masked inputs
|
|
21
|
+
* (mask + character-level CRDT is incompatible — peers would see raw
|
|
22
|
+
* keystrokes desynced from the rendered mask).
|
|
11
23
|
*/
|
|
12
24
|
export function TextLikeInput({ el, name, common, type, extraProps, multiline, applyMask, }) {
|
|
13
25
|
const fs = useFieldState(name);
|
|
@@ -17,6 +29,16 @@ export function TextLikeInput({ el, name, common, type, extraProps, multiline, a
|
|
|
17
29
|
: {});
|
|
18
30
|
const onBlurMode = liveOpts.onBlur === true;
|
|
19
31
|
const mask = applyMask ?? identity;
|
|
32
|
+
// Phase F.6 — character-level CRDT path. Masking is mutually exclusive
|
|
33
|
+
// with character-level CRDT (peers would see raw keystrokes diverged
|
|
34
|
+
// from the local mask render); masked fields fall through to LWW.
|
|
35
|
+
// We read the mask from the field meta directly — `applyMask` is a
|
|
36
|
+
// `useCallback`-wrapped fn that's *always* defined (identity when no
|
|
37
|
+
// mask), so its truthiness can't gate the branch.
|
|
38
|
+
const hasMask = typeof el['mask'] === 'string';
|
|
39
|
+
if (fs.textBinding && !hasMask) {
|
|
40
|
+
return (_jsx(BoundTextInput, { binding: fs.textBinding, name: name, triggerLive: fs.triggerLive, onBlurMode: onBlurMode, common: common, extraProps: extraProps, type: type, multiline: multiline }));
|
|
41
|
+
}
|
|
20
42
|
if (fs.controlled) {
|
|
21
43
|
const ctxValue = fs.value !== undefined && fs.value !== null ? String(fs.value) : '';
|
|
22
44
|
const onChange = (e) => {
|
|
@@ -57,5 +79,162 @@ export function TextLikeInput({ el, name, common, type, extraProps, multiline, a
|
|
|
57
79
|
return _jsx(Textarea, { ...common, ...extraProps });
|
|
58
80
|
return _jsx(Input, { ...common, type: type, ...extraProps });
|
|
59
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Phase F.6 — CRDT-bound text input. Owns its own controlled state
|
|
84
|
+
* because the binding's `Y.Text` is the source of truth (not the
|
|
85
|
+
* form's `values` map). Mirrors every committed value back into the
|
|
86
|
+
* form context via `fs.setValue` so submission / live re-resolve see
|
|
87
|
+
* the latest string.
|
|
88
|
+
*
|
|
89
|
+
* Lifecycle:
|
|
90
|
+
* - Mount: seed local state from `binding.read()`; mirror it into
|
|
91
|
+
* the form's `values` map.
|
|
92
|
+
* - Local edit: compute a `TextDelta` (insert / delete / replace)
|
|
93
|
+
* from the before/after strings and `applyDelta` to the binding.
|
|
94
|
+
* Eagerly update local state in the same React render so the
|
|
95
|
+
* controlled input doesn't lag the keystroke.
|
|
96
|
+
* - Remote edit: `binding.observe` fires with the post-change
|
|
97
|
+
* string; we replace local state and best-effort preserve the
|
|
98
|
+
* local cursor via `preserveCursor`. The local-echo of our own
|
|
99
|
+
* `applyDelta` is collapsed by the value-equality check.
|
|
100
|
+
* - IME composition: `applyDelta` is deferred to `compositionend`
|
|
101
|
+
* so the binding never sees intermediate composing chars (which
|
|
102
|
+
* would emit one delta per keystroke and confuse downstream
|
|
103
|
+
* observers).
|
|
104
|
+
*/
|
|
105
|
+
function BoundTextInput({ binding, name, triggerLive, onBlurMode, common, extraProps, type, multiline, }) {
|
|
106
|
+
const fs = useFieldState(name);
|
|
107
|
+
// SSR-rendered default. Captured once at mount; used as display
|
|
108
|
+
// fallback while the room's `Y.Text` is still empty (the seed race
|
|
109
|
+
// for Y.Text isn't safe across concurrent first-mounters, so no peer
|
|
110
|
+
// populates it client-side — see `@pilotiq-pro/collab` for the
|
|
111
|
+
// rationale). First user edit emits a replace-from-empty delta that
|
|
112
|
+
// atomically lifts the displayed value into the CRDT.
|
|
113
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
114
|
+
const fallback = useMemo(() => stringValue(fs.value), []);
|
|
115
|
+
const [value, setValueLocal] = useState(() => binding.read() || fallback);
|
|
116
|
+
const valueRef = useRef(value);
|
|
117
|
+
const isComposing = useRef(false);
|
|
118
|
+
const inputRef = useRef(null);
|
|
119
|
+
useEffect(() => { valueRef.current = value; }, [value]);
|
|
120
|
+
// Stable ref to the form-mirror writer so the observer effect below
|
|
121
|
+
// doesn't tear down on every render (fs.setValue is a fresh arrow on
|
|
122
|
+
// every useFieldState call).
|
|
123
|
+
const mirrorRef = useRef(() => { });
|
|
124
|
+
useEffect(() => {
|
|
125
|
+
mirrorRef.current = (v) => { fs.setValue(v); };
|
|
126
|
+
});
|
|
127
|
+
// On mount / binding swap: read the binding's current state. If
|
|
128
|
+
// non-empty (i.e. someone else has already typed), display it and
|
|
129
|
+
// mirror into the form values map. If empty, leave the fallback
|
|
130
|
+
// showing — no client-side seed (see file-header comment).
|
|
131
|
+
useEffect(() => {
|
|
132
|
+
const initial = binding.read();
|
|
133
|
+
if (initial.length > 0) {
|
|
134
|
+
setValueLocal(initial);
|
|
135
|
+
valueRef.current = initial;
|
|
136
|
+
mirrorRef.current(initial);
|
|
137
|
+
}
|
|
138
|
+
}, [binding]);
|
|
139
|
+
// Subscribe to text-CRDT changes. Yjs fires this for BOTH local and
|
|
140
|
+
// remote transactions — local echoes are collapsed by the
|
|
141
|
+
// `next === prev` guard.
|
|
142
|
+
useEffect(() => {
|
|
143
|
+
const unsubscribe = binding.observe((next) => {
|
|
144
|
+
const prev = valueRef.current;
|
|
145
|
+
if (next === prev)
|
|
146
|
+
return;
|
|
147
|
+
const el = inputRef.current;
|
|
148
|
+
const cursor = el?.selectionStart ?? next.length;
|
|
149
|
+
const restored = preserveCursor(prev, next, cursor);
|
|
150
|
+
setValueLocal(next);
|
|
151
|
+
valueRef.current = next;
|
|
152
|
+
mirrorRef.current(next);
|
|
153
|
+
// Defer cursor restore until after React commits. Only reapply
|
|
154
|
+
// when the input is still focused — yanking the selection on a
|
|
155
|
+
// blurred field would steal focus across the page.
|
|
156
|
+
requestAnimationFrame(() => {
|
|
157
|
+
if (!el)
|
|
158
|
+
return;
|
|
159
|
+
if (document.activeElement !== el)
|
|
160
|
+
return;
|
|
161
|
+
try {
|
|
162
|
+
el.setSelectionRange(restored, restored);
|
|
163
|
+
}
|
|
164
|
+
catch { /* setSelectionRange unsupported on some input types — defensive */ }
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
return unsubscribe;
|
|
168
|
+
}, [binding]);
|
|
169
|
+
const commitDelta = useCallback((after) => {
|
|
170
|
+
// Compute the delta against the binding's *current* Y.Text contents
|
|
171
|
+
// — not the renderer's `before` ref. The two can diverge in three
|
|
172
|
+
// cases that all converge correctly under this approach:
|
|
173
|
+
// 1. First edit when Y.Text is empty: delta = `insert@0 <whole>`,
|
|
174
|
+
// which atomically lifts the displayed fallback into the CRDT
|
|
175
|
+
// without a separate seed op.
|
|
176
|
+
// 2. After a remote-applied update: Y.Text holds the peer's value;
|
|
177
|
+
// computing against it avoids "ghost" deltas that re-emit ops
|
|
178
|
+
// against a stale local ref.
|
|
179
|
+
// 3. After a server-resolve `triggerLive` replace: same as (2).
|
|
180
|
+
const before = binding.read();
|
|
181
|
+
if (after === before)
|
|
182
|
+
return;
|
|
183
|
+
const delta = computeDelta(before, after);
|
|
184
|
+
if (!delta)
|
|
185
|
+
return;
|
|
186
|
+
binding.applyDelta(delta);
|
|
187
|
+
// Eager local + form-map update so the controlled input doesn't
|
|
188
|
+
// wait on the observer echo to render the new keystroke. Observer
|
|
189
|
+
// will fire with the same string and short-circuit via the equality
|
|
190
|
+
// check above.
|
|
191
|
+
setValueLocal(after);
|
|
192
|
+
valueRef.current = after;
|
|
193
|
+
mirrorRef.current(after);
|
|
194
|
+
if (!onBlurMode)
|
|
195
|
+
triggerLive(after);
|
|
196
|
+
}, [binding, onBlurMode, triggerLive]);
|
|
197
|
+
const onChange = (e) => {
|
|
198
|
+
if (isComposing.current) {
|
|
199
|
+
// IME mid-composition — paint locally, hold the delta until commit.
|
|
200
|
+
setValueLocal(e.target.value);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
commitDelta(e.target.value);
|
|
204
|
+
};
|
|
205
|
+
const onCompositionStart = () => { isComposing.current = true; };
|
|
206
|
+
const onCompositionEnd = (e) => {
|
|
207
|
+
isComposing.current = false;
|
|
208
|
+
commitDelta(e.currentTarget.value);
|
|
209
|
+
};
|
|
210
|
+
const onBlur = () => {
|
|
211
|
+
if (onBlurMode)
|
|
212
|
+
triggerLive(valueRef.current);
|
|
213
|
+
};
|
|
214
|
+
const setRef = (el) => {
|
|
215
|
+
inputRef.current = el;
|
|
216
|
+
};
|
|
217
|
+
const props = {
|
|
218
|
+
...common,
|
|
219
|
+
...extraProps,
|
|
220
|
+
defaultValue: undefined,
|
|
221
|
+
value,
|
|
222
|
+
onChange,
|
|
223
|
+
onBlur,
|
|
224
|
+
onCompositionStart,
|
|
225
|
+
onCompositionEnd,
|
|
226
|
+
ref: setRef,
|
|
227
|
+
};
|
|
228
|
+
if (multiline)
|
|
229
|
+
return _jsx(Textarea, { ...props });
|
|
230
|
+
return _jsx(Input, { ...props, type: type });
|
|
231
|
+
}
|
|
60
232
|
function identity(v) { return v; }
|
|
233
|
+
function stringValue(v) {
|
|
234
|
+
if (v === undefined || v === null)
|
|
235
|
+
return '';
|
|
236
|
+
if (typeof v === 'string')
|
|
237
|
+
return v;
|
|
238
|
+
return String(v);
|
|
239
|
+
}
|
|
61
240
|
//# sourceMappingURL=TextLikeInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextLikeInput.js","sourceRoot":"","sources":["../../../src/react/fields/TextLikeInput.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"TextLikeInput.js","sourceRoot":"","sources":["../../../src/react/fields/TextLikeInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { TextDelta } from '../FormCollabBindingRegistry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Phase F.6 — derive a single character-level edit op from two strings.
|
|
4
|
+
*
|
|
5
|
+
* Strategy: find the longest common prefix and suffix between `before`
|
|
6
|
+
* and `after`; whatever's left in the middle is the changed region.
|
|
7
|
+
*
|
|
8
|
+
* - middle-after empty + middle-before non-empty → `delete`
|
|
9
|
+
* - middle-before empty + middle-after non-empty → `insert`
|
|
10
|
+
* - both non-empty → `replace`
|
|
11
|
+
* - both empty (identical strings) → `null`
|
|
12
|
+
*
|
|
13
|
+
* This correctly handles the common edit shapes: single-key insert,
|
|
14
|
+
* single-key backspace, multi-char paste replacing a selection, IME
|
|
15
|
+
* commits, accent-key composition. It does NOT preserve user intent
|
|
16
|
+
* when the same character appears at multiple positions and the edit
|
|
17
|
+
* could be attributed to either occurrence — Yjs's per-character
|
|
18
|
+
* identity makes that distinction lossy at the string-diff layer
|
|
19
|
+
* (the `Y.Text` itself maintains item identity internally). For v1
|
|
20
|
+
* we accept the ambiguity; the CRDT semantics still converge.
|
|
21
|
+
*/
|
|
22
|
+
export declare function computeDelta(before: string, after: string): TextDelta | null;
|
|
23
|
+
/**
|
|
24
|
+
* Phase F.6 — best-effort cursor anchor across a remote-applied edit.
|
|
25
|
+
*
|
|
26
|
+
* - Edit landed AFTER cursor (cursor inside the common prefix) → keep
|
|
27
|
+
* cursor where it is.
|
|
28
|
+
* - Edit landed BEFORE cursor → shift
|
|
29
|
+
* cursor by `after.length − before.length` so its character-offset
|
|
30
|
+
* into the post-edit string matches its pre-edit anchor.
|
|
31
|
+
* - Edit landed OVERLAPPING the cursor → cursor
|
|
32
|
+
* ends up at the boundary between the changed region and the
|
|
33
|
+
* unchanged suffix (which `Math.max(0, cursor + delta)` produces
|
|
34
|
+
* naturally and clamps to the new bounds).
|
|
35
|
+
*
|
|
36
|
+
* This is a heuristic, not a Yjs `RelativePosition`. Two peers typing
|
|
37
|
+
* at the exact same insertion point can still see a one-character cursor
|
|
38
|
+
* twitch on the remote-mirror side; v2 (in-input remote carets) would
|
|
39
|
+
* upgrade to relative positions if/when a consumer asks. Native input
|
|
40
|
+
* cursors are clamped to `[0, after.length]` by every browser, so this
|
|
41
|
+
* function does the same to avoid `setSelectionRange` throwing.
|
|
42
|
+
*/
|
|
43
|
+
export declare function preserveCursor(before: string, after: string, cursor: number): number;
|
|
44
|
+
//# sourceMappingURL=textDelta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textDelta.d.ts","sourceRoot":"","sources":["../../../src/react/fields/textDelta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAEhE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CA8B5E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAWpF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase F.6 — derive a single character-level edit op from two strings.
|
|
3
|
+
*
|
|
4
|
+
* Strategy: find the longest common prefix and suffix between `before`
|
|
5
|
+
* and `after`; whatever's left in the middle is the changed region.
|
|
6
|
+
*
|
|
7
|
+
* - middle-after empty + middle-before non-empty → `delete`
|
|
8
|
+
* - middle-before empty + middle-after non-empty → `insert`
|
|
9
|
+
* - both non-empty → `replace`
|
|
10
|
+
* - both empty (identical strings) → `null`
|
|
11
|
+
*
|
|
12
|
+
* This correctly handles the common edit shapes: single-key insert,
|
|
13
|
+
* single-key backspace, multi-char paste replacing a selection, IME
|
|
14
|
+
* commits, accent-key composition. It does NOT preserve user intent
|
|
15
|
+
* when the same character appears at multiple positions and the edit
|
|
16
|
+
* could be attributed to either occurrence — Yjs's per-character
|
|
17
|
+
* identity makes that distinction lossy at the string-diff layer
|
|
18
|
+
* (the `Y.Text` itself maintains item identity internally). For v1
|
|
19
|
+
* we accept the ambiguity; the CRDT semantics still converge.
|
|
20
|
+
*/
|
|
21
|
+
export function computeDelta(before, after) {
|
|
22
|
+
if (before === after)
|
|
23
|
+
return null;
|
|
24
|
+
let prefix = 0;
|
|
25
|
+
const minLen = Math.min(before.length, after.length);
|
|
26
|
+
while (prefix < minLen && before[prefix] === after[prefix])
|
|
27
|
+
prefix++;
|
|
28
|
+
// Walk back from each end, capped so suffix can't overlap the prefix
|
|
29
|
+
// on either side. Without the cap, identical strings of repeated
|
|
30
|
+
// chars (e.g. 'aaa' → 'aa') would consume the same byte from both
|
|
31
|
+
// directions and produce an empty middle on both sides.
|
|
32
|
+
let suffix = 0;
|
|
33
|
+
const maxSuffix = Math.min(before.length - prefix, after.length - prefix);
|
|
34
|
+
while (suffix < maxSuffix &&
|
|
35
|
+
before[before.length - 1 - suffix] === after[after.length - 1 - suffix]) {
|
|
36
|
+
suffix++;
|
|
37
|
+
}
|
|
38
|
+
const beforeMid = before.slice(prefix, before.length - suffix);
|
|
39
|
+
const afterMid = after.slice(prefix, after.length - suffix);
|
|
40
|
+
if (beforeMid.length === 0 && afterMid.length > 0) {
|
|
41
|
+
return { kind: 'insert', index: prefix, text: afterMid };
|
|
42
|
+
}
|
|
43
|
+
if (afterMid.length === 0 && beforeMid.length > 0) {
|
|
44
|
+
return { kind: 'delete', index: prefix, length: beforeMid.length };
|
|
45
|
+
}
|
|
46
|
+
return { kind: 'replace', from: prefix, to: prefix + beforeMid.length, text: afterMid };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Phase F.6 — best-effort cursor anchor across a remote-applied edit.
|
|
50
|
+
*
|
|
51
|
+
* - Edit landed AFTER cursor (cursor inside the common prefix) → keep
|
|
52
|
+
* cursor where it is.
|
|
53
|
+
* - Edit landed BEFORE cursor → shift
|
|
54
|
+
* cursor by `after.length − before.length` so its character-offset
|
|
55
|
+
* into the post-edit string matches its pre-edit anchor.
|
|
56
|
+
* - Edit landed OVERLAPPING the cursor → cursor
|
|
57
|
+
* ends up at the boundary between the changed region and the
|
|
58
|
+
* unchanged suffix (which `Math.max(0, cursor + delta)` produces
|
|
59
|
+
* naturally and clamps to the new bounds).
|
|
60
|
+
*
|
|
61
|
+
* This is a heuristic, not a Yjs `RelativePosition`. Two peers typing
|
|
62
|
+
* at the exact same insertion point can still see a one-character cursor
|
|
63
|
+
* twitch on the remote-mirror side; v2 (in-input remote carets) would
|
|
64
|
+
* upgrade to relative positions if/when a consumer asks. Native input
|
|
65
|
+
* cursors are clamped to `[0, after.length]` by every browser, so this
|
|
66
|
+
* function does the same to avoid `setSelectionRange` throwing.
|
|
67
|
+
*/
|
|
68
|
+
export function preserveCursor(before, after, cursor) {
|
|
69
|
+
if (before === after)
|
|
70
|
+
return cursor;
|
|
71
|
+
let prefix = 0;
|
|
72
|
+
const minLen = Math.min(before.length, after.length);
|
|
73
|
+
while (prefix < minLen && before[prefix] === after[prefix])
|
|
74
|
+
prefix++;
|
|
75
|
+
if (cursor <= prefix)
|
|
76
|
+
return Math.min(cursor, after.length);
|
|
77
|
+
const delta = after.length - before.length;
|
|
78
|
+
return Math.max(0, Math.min(after.length, cursor + delta));
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=textDelta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textDelta.js","sourceRoot":"","sources":["../../../src/react/fields/textDelta.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,KAAa;IACxD,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,IAAI,CAAA;IAEjC,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACpD,OAAO,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC;QAAE,MAAM,EAAE,CAAA;IAEpE,qEAAqE;IACrE,iEAAiE;IACjE,kEAAkE;IAClE,wDAAwD;IACxD,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IACzE,OACE,MAAM,GAAG,SAAS;QAClB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,EACvE,CAAC;QACD,MAAM,EAAE,CAAA;IACV,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAC9D,MAAM,QAAQ,GAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAE5D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAC1D,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAA;IACpE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AACzF,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,KAAa,EAAE,MAAc;IAC1E,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,MAAM,CAAA;IAEnC,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACpD,OAAO,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC;QAAE,MAAM,EAAE,CAAA;IAEpE,IAAI,MAAM,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAE3D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAA;AAC5D,CAAC"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -8,12 +8,12 @@ export { PendingSuggestionsContext, usePendingSuggestions, usePendingSuggestions
|
|
|
8
8
|
export { registerPendingSuggestionApplier, getPendingSuggestionApplier, type PendingSuggestionApplier, } from './PendingSuggestionApplierRegistry.js';
|
|
9
9
|
export { CollabRoomContext, useCollabRoom, type CollabRoom, } from './CollabRoomContext.js';
|
|
10
10
|
export { registerCollabExtensions, getCollabExtensions, type CollabExtensionFactory, type CollabExtensionFactoryArgs, } from './CollabExtensionFactoryRegistry.js';
|
|
11
|
-
export { registerFormCollabBinding, getFormCollabBinding, type FormCollabBinding, type FormCollabBindingFactory, type FormCollabBindingFactoryArgs, } from './FormCollabBindingRegistry.js';
|
|
11
|
+
export { registerFormCollabBinding, getFormCollabBinding, type FormCollabBinding, type FormCollabBindingFactory, type FormCollabBindingFactoryArgs, type TextBinding, type TextDelta, } from './FormCollabBindingRegistry.js';
|
|
12
12
|
export { registerFieldPresenceComponent, getFieldPresenceComponent, type FieldPresenceProps, } from './FieldPresenceRegistry.js';
|
|
13
13
|
export { registerFieldFocusReporter, getFieldFocusReporter, type FieldFocusReporter, type FieldFocusEvent, } from './FieldFocusReporterRegistry.js';
|
|
14
14
|
export { registerRecordWrapper, getRecordWrapper, type RecordWrapperProps, } from './RecordWrapperRegistry.js';
|
|
15
15
|
export { RecordWrapperGate, type RecordWrapperGateProps, } from './RecordWrapperGate.js';
|
|
16
|
-
export { parseRecordEditUrl, type RecordEditIdentity } from './parseRecordEditUrl.js';
|
|
16
|
+
export { parseRecordPageUrl, parseRecordEditUrl, type RecordPageIdentity, type RecordPageRole, type RecordEditIdentity, } from './parseRecordEditUrl.js';
|
|
17
17
|
export { registerWidgetRenderer, getWidgetRenderer, type WidgetRendererProps, } from './widgetRegistry.js';
|
|
18
18
|
export { FormStateProvider, useFieldState, useFormState, type FormStateApi, type FormStateProviderProps, type UseFieldStateResult, } from './FormStateContext.js';
|
|
19
19
|
export { parseFormDataToNested } from './formStateHelpers.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,UAAU,EACV,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,EACxB,UAAU,EACV,KAAK,eAAe,GACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAChG,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjH,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAC3B,KAAK,6BAA6B,GACnC,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,6BAA6B,EAC7B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,GAC3B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAC3B,KAAK,wBAAwB,GAC9B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,UAAU,GAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,GAChC,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.js
CHANGED
|
@@ -13,7 +13,7 @@ export { registerFieldPresenceComponent, getFieldPresenceComponent, } from './Fi
|
|
|
13
13
|
export { registerFieldFocusReporter, getFieldFocusReporter, } from './FieldFocusReporterRegistry.js';
|
|
14
14
|
export { registerRecordWrapper, getRecordWrapper, } from './RecordWrapperRegistry.js';
|
|
15
15
|
export { RecordWrapperGate, } from './RecordWrapperGate.js';
|
|
16
|
-
export { parseRecordEditUrl } from './parseRecordEditUrl.js';
|
|
16
|
+
export { parseRecordPageUrl, parseRecordEditUrl, } from './parseRecordEditUrl.js';
|
|
17
17
|
export { registerWidgetRenderer, getWidgetRenderer, } from './widgetRegistry.js';
|
|
18
18
|
export { FormStateProvider, useFieldState, useFormState, } from './FormStateContext.js';
|
|
19
19
|
export { parseFormDataToNested } from './formStateHelpers.js';
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAA;AAC5D,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,UAAU,GAEX,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,cAAc,EAEd,UAAU,GAEX,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAA2B,MAAM,eAAe,CAAA;AAChG,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAA4B,MAAM,6BAA6B,CAAA;AACjH,OAAO,EACL,gCAAgC,EAChC,2BAA2B,GAE5B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,6BAA6B,GAI9B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,gCAAgC,EAChC,2BAA2B,GAE5B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,iBAAiB,EACjB,aAAa,GAEd,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GAGpB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,yBAAyB,EACzB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* URL → record-page identity parser. Used by `RecordWrapperGate` (and any
|
|
3
|
+
* plugin that wants to reason about record-bound URLs) to decide whether
|
|
4
|
+
* the current page is a record-edit or record-view route.
|
|
4
5
|
*
|
|
5
6
|
* A URL matches when:
|
|
6
7
|
* 1. it starts with the panel's `basePath`
|
|
7
|
-
* 2. after stripping the prefix it ends with `/edit`
|
|
8
|
+
* 2. after stripping the prefix it ends with `/edit` or `/view`
|
|
8
9
|
* 3. there are at least three remaining segments (resource slug,
|
|
9
|
-
* record id,
|
|
10
|
+
* record id, terminal token)
|
|
10
11
|
*
|
|
11
12
|
* The `resourceSlug` is the slash-joined chain of every segment up to
|
|
12
13
|
* the record id — this gives clustered resources (`${base}/blog/articles/123/edit`)
|
|
@@ -14,13 +15,36 @@
|
|
|
14
15
|
* distinct slugs so two URLs that target different records always
|
|
15
16
|
* produce different room names downstream.
|
|
16
17
|
*
|
|
17
|
-
* `/admin/articles/123/edit` → {
|
|
18
|
-
* `/admin/
|
|
19
|
-
* `/admin/articles/123/
|
|
20
|
-
* `/admin/articles/123/comments`
|
|
21
|
-
* `/admin/articles/123/comments
|
|
18
|
+
* `/admin/articles/123/edit` → { slug: 'articles', id: '123', role: 'edit' }
|
|
19
|
+
* `/admin/articles/123/view` → { slug: 'articles', id: '123', role: 'view' }
|
|
20
|
+
* `/admin/blog/articles/123/edit` → { slug: 'blog/articles', id: '123', role: 'edit' }
|
|
21
|
+
* `/admin/articles/123/comments/456/edit` → { slug: 'articles/123/comments', id: '456', role: 'edit' }
|
|
22
|
+
* `/admin/articles/123/comments` → null (no trailing /edit or /view)
|
|
23
|
+
* `/admin/articles/123/comments/create` → null (terminal token isn't edit|view)
|
|
22
24
|
* `/site/articles/123/edit` → null (basePath mismatch when basePath='/admin')
|
|
23
25
|
*/
|
|
26
|
+
/** Page roles `parseRecordPageUrl` recognizes. `'edit'` and `'view'`
|
|
27
|
+
* are the two record-scoped page roles where collab and other
|
|
28
|
+
* record-bound plugins want to mount their per-record wrapper. */
|
|
29
|
+
export type RecordPageRole = 'edit' | 'view';
|
|
30
|
+
export interface RecordPageIdentity {
|
|
31
|
+
resourceSlug: string;
|
|
32
|
+
recordId: string;
|
|
33
|
+
/** Which terminal URL segment matched — `'edit'` for the writable edit
|
|
34
|
+
* page, `'view'` for the read-only view page. Lets the gate decide per
|
|
35
|
+
* resource whether collab activates on this role (defaults to `'edit'`
|
|
36
|
+
* only; resources opt into `'view'` for presence-only experiences). */
|
|
37
|
+
role: RecordPageRole;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Parse a pilotiq URL into a `{ slug, id, role }` identity. Returns
|
|
41
|
+
* `null` for any URL that isn't a record-edit or record-view page.
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseRecordPageUrl(currentPath: string, basePath: string): RecordPageIdentity | null;
|
|
44
|
+
/** Legacy alias: parse a URL into an edit-only identity. Returns `null`
|
|
45
|
+
* for view URLs (and any non-edit URL). Kept for back-compat with the
|
|
46
|
+
* pre-`parseRecordPageUrl` public API; new code should call
|
|
47
|
+
* `parseRecordPageUrl` and branch on `role`. */
|
|
24
48
|
export interface RecordEditIdentity {
|
|
25
49
|
resourceSlug: string;
|
|
26
50
|
recordId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseRecordEditUrl.d.ts","sourceRoot":"","sources":["../../src/react/parseRecordEditUrl.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"parseRecordEditUrl.d.ts","sourceRoot":"","sources":["../../src/react/parseRecordEditUrl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;kEAEkE;AAClE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAA;AAE5C,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAM,MAAM,CAAA;IACpB;;;2EAGuE;IACvE,IAAI,EAAU,cAAc,CAAA;CAC7B;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAK,MAAM,GAClB,kBAAkB,GAAG,IAAI,CAyB3B;AAED;;;gDAGgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAM,MAAM,CAAA;CACrB;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAK,MAAM,GAClB,kBAAkB,GAAG,IAAI,CAI3B"}
|