@pilotiq/pilotiq 0.10.0 → 0.12.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 +128 -0
- package/dist/react/AppShell.d.ts +1 -1
- package/dist/react/AppShell.d.ts.map +1 -1
- package/dist/react/AppShell.js +7 -1
- package/dist/react/AppShell.js.map +1 -1
- package/dist/react/CollabTextRendererRegistry.d.ts +75 -0
- package/dist/react/CollabTextRendererRegistry.d.ts.map +1 -0
- package/dist/react/CollabTextRendererRegistry.js +18 -0
- package/dist/react/CollabTextRendererRegistry.js.map +1 -0
- package/dist/react/CurrentUserContext.d.ts +39 -0
- package/dist/react/CurrentUserContext.d.ts.map +1 -0
- package/dist/react/CurrentUserContext.js +27 -0
- package/dist/react/CurrentUserContext.js.map +1 -0
- package/dist/react/FormCollabBindingRegistry.d.ts +161 -17
- package/dist/react/FormCollabBindingRegistry.d.ts.map +1 -1
- package/dist/react/FormCollabBindingRegistry.js.map +1 -1
- package/dist/react/FormStateContext.d.ts +39 -1
- package/dist/react/FormStateContext.d.ts.map +1 -1
- package/dist/react/FormStateContext.js +126 -33
- package/dist/react/FormStateContext.js.map +1 -1
- package/dist/react/fields/BuilderInput.d.ts.map +1 -1
- package/dist/react/fields/BuilderInput.js +112 -10
- package/dist/react/fields/BuilderInput.js.map +1 -1
- package/dist/react/fields/MarkdownInput.d.ts.map +1 -1
- package/dist/react/fields/MarkdownInput.js +60 -1
- package/dist/react/fields/MarkdownInput.js.map +1 -1
- package/dist/react/fields/RepeaterInput.d.ts.map +1 -1
- package/dist/react/fields/RepeaterInput.js +113 -10
- package/dist/react/fields/RepeaterInput.js.map +1 -1
- package/dist/react/fields/TextLikeInput.d.ts.map +1 -1
- package/dist/react/fields/TextLikeInput.js +83 -6
- package/dist/react/fields/TextLikeInput.js.map +1 -1
- package/dist/react/formStateHelpers.d.ts +102 -0
- package/dist/react/formStateHelpers.d.ts.map +1 -1
- package/dist/react/formStateHelpers.js +234 -0
- package/dist/react/formStateHelpers.js.map +1 -1
- package/dist/react/index.d.ts +4 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +3 -1
- package/dist/react/index.js.map +1 -1
- package/package.json +5 -5
- package/src/react/AppShell.tsx +11 -1
- package/src/react/CollabTextRendererRegistry.ts +84 -0
- package/src/react/CurrentUserContext.tsx +50 -0
- package/src/react/FormCollabBindingRegistry.ts +160 -17
- package/src/react/FormStateContext.tsx +157 -34
- package/src/react/fields/BuilderInput.tsx +97 -8
- package/src/react/fields/MarkdownInput.tsx +118 -1
- package/src/react/fields/RepeaterInput.tsx +97 -8
- package/src/react/fields/TextLikeInput.tsx +129 -5
- package/src/react/formStateHelpers.test.ts +312 -0
- package/src/react/formStateHelpers.ts +246 -0
- package/src/react/index.ts +15 -0
|
@@ -227,4 +227,238 @@ export function readNestedValue(root, path) {
|
|
|
227
227
|
}
|
|
228
228
|
return cursor;
|
|
229
229
|
}
|
|
230
|
+
/**
|
|
231
|
+
* Phase F.5 — parse a dotted form-field name into row-array coordinates
|
|
232
|
+
* when it matches a Repeater or Builder row-leaf shape; return `null`
|
|
233
|
+
* otherwise. Used by `FormStateProvider` to route row-leaf writes
|
|
234
|
+
* through `FormCollabBinding.setRow` instead of skipping them.
|
|
235
|
+
*
|
|
236
|
+
* `tags.0.label` → { arrayName: 'tags', index: 0, fieldName: 'label' } (Repeater)
|
|
237
|
+
* `blocks.0.data.body` → { arrayName: 'blocks', index: 0, fieldName: 'body' } (Builder)
|
|
238
|
+
* `tags.0.__id` → null (row identity — handled by addRow / reorderRows)
|
|
239
|
+
* `blocks.0.type` → null (Builder block discriminator — not a user field)
|
|
240
|
+
* `foo` → null (top-level field — top-level binding.set path)
|
|
241
|
+
* `tags.notnum.label` → null (malformed)
|
|
242
|
+
*
|
|
243
|
+
* Nested Repeaters / Builders (e.g. `articles.0.comments.1.body`) are
|
|
244
|
+
* out of scope v1 — they return `null` here too. F.5b's binding impl
|
|
245
|
+
* therefore never sees them and they continue to ride the local-state
|
|
246
|
+
* path until a future phase opens the door.
|
|
247
|
+
*/
|
|
248
|
+
export function parseRowFieldPath(path) {
|
|
249
|
+
const segments = path.split('.');
|
|
250
|
+
if (segments.length === 3) {
|
|
251
|
+
const [arrayName, idxRaw, fieldName] = segments;
|
|
252
|
+
if (!/^\d+$/.test(idxRaw))
|
|
253
|
+
return null;
|
|
254
|
+
if (!arrayName || !fieldName)
|
|
255
|
+
return null;
|
|
256
|
+
if (fieldName === '__id' || fieldName === 'type')
|
|
257
|
+
return null;
|
|
258
|
+
return { arrayName, index: Number(idxRaw), fieldName };
|
|
259
|
+
}
|
|
260
|
+
if (segments.length === 4 && segments[2] === 'data') {
|
|
261
|
+
const [arrayName, idxRaw, , fieldName] = segments;
|
|
262
|
+
if (!/^\d+$/.test(idxRaw))
|
|
263
|
+
return null;
|
|
264
|
+
if (!arrayName || !fieldName)
|
|
265
|
+
return null;
|
|
266
|
+
return { arrayName, index: Number(idxRaw), fieldName };
|
|
267
|
+
}
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Phase F.5 — resolve the stable `__id` of the row at `arrayName[index]`
|
|
272
|
+
* from a flat dotted-path values map. The renderer mints `__id` on every
|
|
273
|
+
* row insert (UUID for new / DB PK for relationship-backed) so callers
|
|
274
|
+
* here are looking up an id that already exists; returns `null` only
|
|
275
|
+
* when the row hasn't been registered yet (e.g. the binding observed a
|
|
276
|
+
* remote insert before the local renderer rebuilt its row map).
|
|
277
|
+
*
|
|
278
|
+
* The lookup always reads from the flat shape (`${arrayName}.${index}.__id`)
|
|
279
|
+
* since both `FormStateProvider`'s `valuesRef` and server-resolve responses
|
|
280
|
+
* use flat dotted-path keys.
|
|
281
|
+
*/
|
|
282
|
+
export function rowIdAtIndex(values, arrayName, index) {
|
|
283
|
+
const flat = values[`${arrayName}.${index}.__id`];
|
|
284
|
+
if (typeof flat === 'string' && flat.length > 0)
|
|
285
|
+
return flat;
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Phase F2 — returns `true` iff the named field has explicitly opted out
|
|
290
|
+
* of realtime collab via `Field.collab(false)`. Sparse meta — absent =
|
|
291
|
+
* inherit the panel default (collab on). Walks the form meta tree the
|
|
292
|
+
* same way `findFieldMeta` does. Cheap (one map lookup per write).
|
|
293
|
+
*
|
|
294
|
+
* Exposed so `routeBindingWrite` can compose against it from this
|
|
295
|
+
* module instead of FormStateContext's private helper.
|
|
296
|
+
*/
|
|
297
|
+
export function fieldOptsOutOfCollab(formMeta, name) {
|
|
298
|
+
const meta = findFieldMeta(formMeta, name);
|
|
299
|
+
return meta?.collab === false;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Phase F.5 — route a single (name, value) write through the collab
|
|
303
|
+
* binding by name shape:
|
|
304
|
+
*
|
|
305
|
+
* - top-level name → `binding.set(name, value)` (F2 path)
|
|
306
|
+
* - row leaf → `binding.setRow(arrayName, rowId, fieldName, value)`
|
|
307
|
+
* when the binding implements F.5; falls through
|
|
308
|
+
* to no-op otherwise (v1 skip-on-dot behaviour).
|
|
309
|
+
*
|
|
310
|
+
* Skips when no binding is registered or the field opted out via
|
|
311
|
+
* `.collab(false)`. `valuesForLookup` supplies the rowId map — pass the
|
|
312
|
+
* latest snapshot the caller has access to (`valuesRef.current` for
|
|
313
|
+
* local writes; merged `valuesRef + serverValues` for server-resolve).
|
|
314
|
+
*
|
|
315
|
+
* Shared between `setValue` (local edits) and the server-resolve overlay
|
|
316
|
+
* inside `performLivePost` so both routing decisions stay in lockstep.
|
|
317
|
+
*/
|
|
318
|
+
export function routeBindingWrite(binding, formMeta, valuesForLookup, name, value) {
|
|
319
|
+
if (!binding)
|
|
320
|
+
return;
|
|
321
|
+
if (formMeta && fieldOptsOutOfCollab(formMeta, name))
|
|
322
|
+
return;
|
|
323
|
+
if (!name.includes('.')) {
|
|
324
|
+
binding.set(name, value);
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
if (!binding.setRow)
|
|
328
|
+
return; // pre-F.5 binding — row leaves stay local
|
|
329
|
+
const parsed = parseRowFieldPath(name);
|
|
330
|
+
if (!parsed)
|
|
331
|
+
return; // nested-Repeater / malformed — out of scope v1
|
|
332
|
+
const rowId = rowIdAtIndex(valuesForLookup, parsed.arrayName, parsed.index);
|
|
333
|
+
if (!rowId)
|
|
334
|
+
return; // row not yet stamped — local-only until id lands
|
|
335
|
+
binding.setRow(parsed.arrayName, rowId, parsed.fieldName, value);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Phase F.5 — walk a form's meta tree for top-level Repeater / Builder
|
|
339
|
+
* field names. Used by `FormStateProvider` to build the per-array
|
|
340
|
+
* `RowBindingApi` map from a single meta walk at binding mount.
|
|
341
|
+
*
|
|
342
|
+
* Stops at the array boundary itself — we want the array's own field
|
|
343
|
+
* name, not the inner-row fields inside it (which address through
|
|
344
|
+
* `setRow`'s dotted-path routing, not through their own row bindings).
|
|
345
|
+
* Skips fields opted out via `.collab(false)` so the array is left on
|
|
346
|
+
* the v1 local-state path.
|
|
347
|
+
*/
|
|
348
|
+
export function collectRowArrayFieldNames(formMeta) {
|
|
349
|
+
const out = [];
|
|
350
|
+
walk(formMeta);
|
|
351
|
+
return out;
|
|
352
|
+
function walk(node) {
|
|
353
|
+
if (node.type === 'field') {
|
|
354
|
+
const fieldType = node['fieldType'];
|
|
355
|
+
if (fieldType === 'repeater' || fieldType === 'builder') {
|
|
356
|
+
if (node.collab !== false) {
|
|
357
|
+
const name = String(node['name'] ?? '');
|
|
358
|
+
if (name)
|
|
359
|
+
out.push(name);
|
|
360
|
+
}
|
|
361
|
+
// Don't descend — inner row fields address through dotted-path
|
|
362
|
+
// routing, not their own row bindings.
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
const children = node.children;
|
|
367
|
+
if (Array.isArray(children)) {
|
|
368
|
+
for (const child of children)
|
|
369
|
+
walk(child);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Phase F.5c — text-shaped fieldTypes whose row-leaf values should be
|
|
375
|
+
* routed through `Y.Text` instead of `Y.Map` LWW. Mirrors the same
|
|
376
|
+
* allowlist `@pilotiq-pro/collab`'s top-level binding uses; consumers
|
|
377
|
+
* registering character-level CRDT for additional plain-text-shaped
|
|
378
|
+
* fields update both copies in lockstep until a cross-repo shared
|
|
379
|
+
* constants module exists.
|
|
380
|
+
*/
|
|
381
|
+
const ROW_TEXT_FIELD_TYPES = new Set([
|
|
382
|
+
'text', 'textarea', 'email', 'slug', 'markdown',
|
|
383
|
+
]);
|
|
384
|
+
/**
|
|
385
|
+
* Phase F.5c — per-Repeater/Builder set of inner-field names that
|
|
386
|
+
* carry text-shaped leaves eligible for character-level CRDT. Drives
|
|
387
|
+
* `useFieldState(dottedName).textBinding` resolution: only fields in
|
|
388
|
+
* the per-array set go through `binding.getRowTextBinding`; everything
|
|
389
|
+
* else stays on row-level Y.Map LWW.
|
|
390
|
+
*
|
|
391
|
+
* Repeater rows expose their schema directly under `meta.children`;
|
|
392
|
+
* Builder rows nest schemas under `meta.blocks[i].template`. The
|
|
393
|
+
* walker descends through every block's template so a `markdown` leaf
|
|
394
|
+
* inside any block-type lands in the array's allowlist. Nested
|
|
395
|
+
* Repeaters / Builders inside row schemas are out of scope v1 (their
|
|
396
|
+
* dotted paths are 5+ segments and `parseRowFieldPath` rejects them).
|
|
397
|
+
*/
|
|
398
|
+
export function collectRowTextLeavesByArray(formMeta) {
|
|
399
|
+
const out = new Map();
|
|
400
|
+
walkTop(formMeta);
|
|
401
|
+
return out;
|
|
402
|
+
function walkTop(node) {
|
|
403
|
+
if (node.type === 'field') {
|
|
404
|
+
const fieldType = String(node['fieldType'] ?? '');
|
|
405
|
+
if (fieldType === 'repeater' || fieldType === 'builder') {
|
|
406
|
+
if (node.collab === false)
|
|
407
|
+
return;
|
|
408
|
+
const name = String(node['name'] ?? '');
|
|
409
|
+
if (!name)
|
|
410
|
+
return;
|
|
411
|
+
const set = new Set();
|
|
412
|
+
// Repeater's `toMeta()` emits the row schema under `template` (not
|
|
413
|
+
// `children` — that's per-resolved-row). Builder nests row schemas
|
|
414
|
+
// under `blocks[i].template`. Reading `children` here pre-fix gave
|
|
415
|
+
// every Repeater an empty text-leaf set → row text never CRDT'd.
|
|
416
|
+
if (fieldType === 'repeater')
|
|
417
|
+
walkRow(node.template, set);
|
|
418
|
+
else
|
|
419
|
+
walkBlocks(node.blocks, set);
|
|
420
|
+
if (set.size > 0)
|
|
421
|
+
out.set(name, set);
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
const children = node.children;
|
|
426
|
+
if (Array.isArray(children)) {
|
|
427
|
+
for (const child of children)
|
|
428
|
+
walkTop(child);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
function walkRow(children, set) {
|
|
432
|
+
if (!Array.isArray(children))
|
|
433
|
+
return;
|
|
434
|
+
for (const child of children)
|
|
435
|
+
walkRowEl(child, set);
|
|
436
|
+
}
|
|
437
|
+
function walkRowEl(node, set) {
|
|
438
|
+
if (node.type === 'field') {
|
|
439
|
+
const fieldType = String(node['fieldType'] ?? '');
|
|
440
|
+
if (fieldType === 'repeater' || fieldType === 'builder')
|
|
441
|
+
return; // nested array
|
|
442
|
+
if (node.collab === false)
|
|
443
|
+
return;
|
|
444
|
+
const name = String(node['name'] ?? '');
|
|
445
|
+
if (name && ROW_TEXT_FIELD_TYPES.has(fieldType))
|
|
446
|
+
set.add(name);
|
|
447
|
+
return;
|
|
448
|
+
}
|
|
449
|
+
const children = node.children;
|
|
450
|
+
if (Array.isArray(children)) {
|
|
451
|
+
for (const child of children)
|
|
452
|
+
walkRowEl(child, set);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
function walkBlocks(blocks, set) {
|
|
456
|
+
if (!Array.isArray(blocks))
|
|
457
|
+
return;
|
|
458
|
+
for (const block of blocks) {
|
|
459
|
+
const tpl = block.template;
|
|
460
|
+
walkRow(tpl, set);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
230
464
|
//# sourceMappingURL=formStateHelpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formStateHelpers.js","sourceRoot":"","sources":["../../src/react/formStateHelpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"formStateHelpers.js","sourceRoot":"","sources":["../../src/react/formStateHelpers.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -8,14 +8,15 @@ 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 {
|
|
11
|
+
export { registerCollabTextRenderer, getCollabTextRenderer, type CollabTextRenderer, type CollabTextRendererProps, } from './CollabTextRendererRegistry.js';
|
|
12
|
+
export { registerFormCollabBinding, getFormCollabBinding, type FormCollabBinding, type FormCollabBindingFactory, type FormCollabBindingFactoryArgs, type TextBinding, type TextDelta, type RowsEvent, type RowBindingApi, } from './FormCollabBindingRegistry.js';
|
|
12
13
|
export { registerFieldPresenceComponent, getFieldPresenceComponent, type FieldPresenceProps, } from './FieldPresenceRegistry.js';
|
|
13
14
|
export { registerFieldFocusReporter, getFieldFocusReporter, type FieldFocusReporter, type FieldFocusEvent, } from './FieldFocusReporterRegistry.js';
|
|
14
15
|
export { registerRecordWrapper, getRecordWrapper, type RecordWrapperProps, } from './RecordWrapperRegistry.js';
|
|
15
16
|
export { RecordWrapperGate, type RecordWrapperGateProps, } from './RecordWrapperGate.js';
|
|
16
17
|
export { parseRecordPageUrl, parseRecordEditUrl, type RecordPageIdentity, type RecordPageRole, type RecordEditIdentity, } from './parseRecordEditUrl.js';
|
|
17
18
|
export { registerWidgetRenderer, getWidgetRenderer, type WidgetRendererProps, } from './widgetRegistry.js';
|
|
18
|
-
export { FormStateProvider, useFieldState, useFormState, type FormStateApi, type FormStateProviderProps, type UseFieldStateResult, } from './FormStateContext.js';
|
|
19
|
+
export { FormStateProvider, useFieldState, useFormState, useRowBinding, type FormStateApi, type FormStateProviderProps, type UseFieldStateResult, } from './FormStateContext.js';
|
|
19
20
|
export { parseFormDataToNested } from './formStateHelpers.js';
|
|
20
21
|
export { NavigateProvider, useNavigate, type NavigateFn } from './navigate.js';
|
|
21
22
|
export { ToasterProvider, useToast } from './Toaster.js';
|
|
@@ -26,6 +27,7 @@ export { RightSidebar, type RightSidebarProps, } from './RightSidebar.js';
|
|
|
26
27
|
export { RightSidebarTrigger } from './RightSidebarTrigger.js';
|
|
27
28
|
export { SearchTrigger } from './SearchTrigger.js';
|
|
28
29
|
export { useResizableWidth, clampPanelWidth, type UseResizableWidthOptions, type UseResizableWidthApi, } from './useResizableWidth.js';
|
|
30
|
+
export { CurrentUserProvider, useCurrentUser, type CurrentUser, } from './CurrentUserContext.js';
|
|
29
31
|
export { ThemeProvider, useTheme } from './ThemeProvider.js';
|
|
30
32
|
export { ThemeToggle } from './ThemeToggle.js';
|
|
31
33
|
export { ThemeSettingsPage } from './ThemeSettingsPage.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,EACjC,KAAK,WAAW,EAChB,KAAK,SAAS,
|
|
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
|
@@ -8,6 +8,7 @@ export { PendingSuggestionsContext, usePendingSuggestions, usePendingSuggestions
|
|
|
8
8
|
export { registerPendingSuggestionApplier, getPendingSuggestionApplier, } from './PendingSuggestionApplierRegistry.js';
|
|
9
9
|
export { CollabRoomContext, useCollabRoom, } from './CollabRoomContext.js';
|
|
10
10
|
export { registerCollabExtensions, getCollabExtensions, } from './CollabExtensionFactoryRegistry.js';
|
|
11
|
+
export { registerCollabTextRenderer, getCollabTextRenderer, } from './CollabTextRendererRegistry.js';
|
|
11
12
|
export { registerFormCollabBinding, getFormCollabBinding, } from './FormCollabBindingRegistry.js';
|
|
12
13
|
export { registerFieldPresenceComponent, getFieldPresenceComponent, } from './FieldPresenceRegistry.js';
|
|
13
14
|
export { registerFieldFocusReporter, getFieldFocusReporter, } from './FieldFocusReporterRegistry.js';
|
|
@@ -15,7 +16,7 @@ export { registerRecordWrapper, getRecordWrapper, } from './RecordWrapperRegistr
|
|
|
15
16
|
export { RecordWrapperGate, } from './RecordWrapperGate.js';
|
|
16
17
|
export { parseRecordPageUrl, parseRecordEditUrl, } from './parseRecordEditUrl.js';
|
|
17
18
|
export { registerWidgetRenderer, getWidgetRenderer, } from './widgetRegistry.js';
|
|
18
|
-
export { FormStateProvider, useFieldState, useFormState, } from './FormStateContext.js';
|
|
19
|
+
export { FormStateProvider, useFieldState, useFormState, useRowBinding, } from './FormStateContext.js';
|
|
19
20
|
export { parseFormDataToNested } from './formStateHelpers.js';
|
|
20
21
|
export { NavigateProvider, useNavigate } from './navigate.js';
|
|
21
22
|
export { ToasterProvider, useToast } from './Toaster.js';
|
|
@@ -26,6 +27,7 @@ export { RightSidebar, } from './RightSidebar.js';
|
|
|
26
27
|
export { RightSidebarTrigger } from './RightSidebarTrigger.js';
|
|
27
28
|
export { SearchTrigger } from './SearchTrigger.js';
|
|
28
29
|
export { useResizableWidth, clampPanelWidth, } from './useResizableWidth.js';
|
|
30
|
+
export { CurrentUserProvider, useCurrentUser, } from './CurrentUserContext.js';
|
|
29
31
|
export { ThemeProvider, useTheme } from './ThemeProvider.js';
|
|
30
32
|
export { ThemeToggle } from './ThemeToggle.js';
|
|
31
33
|
export { ThemeSettingsPage } from './ThemeSettingsPage.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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pilotiq/pilotiq",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "View-based admin panel for RudderJS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -81,10 +81,10 @@
|
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"@base-ui/react": "^1",
|
|
84
|
-
"@rudderjs/contracts": "^1.
|
|
85
|
-
"@rudderjs/core": "^1.1.
|
|
86
|
-
"@rudderjs/router": "^1.
|
|
87
|
-
"@rudderjs/view": "^1.0
|
|
84
|
+
"@rudderjs/contracts": "^1.6.0",
|
|
85
|
+
"@rudderjs/core": "^1.1.4",
|
|
86
|
+
"@rudderjs/router": "^1.2.0",
|
|
87
|
+
"@rudderjs/view": "^1.1.0",
|
|
88
88
|
"@types/node": "^20",
|
|
89
89
|
"@types/react": "^19",
|
|
90
90
|
"@types/sanitize-html": "^2.16.1",
|
package/src/react/AppShell.tsx
CHANGED
|
@@ -16,6 +16,7 @@ import type { NavItem, UserMenuMeta, DatabaseNotificationsMeta, RightSidebarMeta
|
|
|
16
16
|
import type { RenderHookMap } from '../RenderHook.js'
|
|
17
17
|
import { RenderHookSlot } from './RenderHookSlot.js'
|
|
18
18
|
import type { ComponentSlotRegistry } from './component-slots.js'
|
|
19
|
+
import { CurrentUserProvider } from './CurrentUserContext.js'
|
|
19
20
|
|
|
20
21
|
export interface AppShellProps {
|
|
21
22
|
panel: {
|
|
@@ -180,7 +181,16 @@ export function AppShell({ layout = 'sidebar', notifications, componentRegistry,
|
|
|
180
181
|
props.basePath,
|
|
181
182
|
)
|
|
182
183
|
|
|
183
|
-
|
|
184
|
+
// `CurrentUserProvider` sits OUTSIDE the layout-provider chain so
|
|
185
|
+
// plugin-registered providers (e.g. `@pilotiq-pro/collab`'s
|
|
186
|
+
// CollabProvider, which threads the user into CollaborationCaret
|
|
187
|
+
// presence labels) can read the active user via `useCurrentUser()`.
|
|
188
|
+
// Value source mirrors what the top-right user dropdown renders.
|
|
189
|
+
return (
|
|
190
|
+
<CurrentUserProvider value={props.panel.userMenu?.user ?? null}>
|
|
191
|
+
{wrapped}
|
|
192
|
+
</CurrentUserProvider>
|
|
193
|
+
)
|
|
184
194
|
}
|
|
185
195
|
|
|
186
196
|
/**
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { ComponentType } from 'react'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Module-level registry slot for the collab-aware plain-text editor renderer.
|
|
5
|
+
*
|
|
6
|
+
* Wiring posture (mirrors `CollabExtensionFactoryRegistry` /
|
|
7
|
+
* `FormCollabBindingRegistry`):
|
|
8
|
+
* - `@pilotiq/tiptap`'s `registerTiptap(...)` calls `registerCollabTextRenderer(...)`
|
|
9
|
+
* once at boot. The registered component closes over `@tiptap/*` imports so
|
|
10
|
+
* pilotiq core stays free of any tiptap peer dep — same posture as the
|
|
11
|
+
* existing rich-text renderer registry.
|
|
12
|
+
* - `TextLikeInput` checks for the registered component when a `<RecordCollabRoom>`
|
|
13
|
+
* is mounted up-tree AND the field hasn't opted out via `.collab(false)` AND
|
|
14
|
+
* the field has no `.mask()`. If present, the legacy `BoundTextInput`
|
|
15
|
+
* (Y.Text + `computeDelta` + heuristic `preserveCursor`) is bypassed in
|
|
16
|
+
* favour of a y-prosemirror-backed Tiptap editor that anchors selections to
|
|
17
|
+
* `Yjs.RelativePosition` — the architectural fix for the cursor-jump and
|
|
18
|
+
* two-peer concurrent-insert races documented in
|
|
19
|
+
* `docs/plans/text-fields-tiptap-backed-collab.md`.
|
|
20
|
+
*
|
|
21
|
+
* Wire props are deliberately framework-agnostic — the renderer doesn't take a
|
|
22
|
+
* `binding` since it consumes the room's `ydoc` directly via the existing
|
|
23
|
+
* `useCollabRoom()` + `getCollabExtensions()` plumbing on its own side. Core
|
|
24
|
+
* keeps the seam narrow: handler callbacks + DOM chrome only.
|
|
25
|
+
*/
|
|
26
|
+
export interface CollabTextRendererProps {
|
|
27
|
+
/** Field name — drives the `Y.XmlFragment` selector inside the collab adapter. */
|
|
28
|
+
name: string
|
|
29
|
+
/** `true` for textarea-like (multiple paragraphs); `false` for input-like. */
|
|
30
|
+
multiline: boolean
|
|
31
|
+
/**
|
|
32
|
+
* Server-rendered default value. The renderer is expected to seed the
|
|
33
|
+
* `Y.XmlFragment` from this on first connect when the room has no
|
|
34
|
+
* persisted state for this field (i.e. brand-new record).
|
|
35
|
+
*/
|
|
36
|
+
defaultValue: string
|
|
37
|
+
/** Optional placeholder hint. */
|
|
38
|
+
placeholder?: string
|
|
39
|
+
/** Disabled / read-only state. */
|
|
40
|
+
disabled?: boolean
|
|
41
|
+
/** Fired on every editor `update` with the editor's current plain text. */
|
|
42
|
+
onChange: (text: string) => void
|
|
43
|
+
/** Fired on editor blur — host wires this to live-onBlur trigger semantics. */
|
|
44
|
+
onBlur: () => void
|
|
45
|
+
/**
|
|
46
|
+
* Single-line submit — fired when `multiline: false` AND the user presses
|
|
47
|
+
* Enter. The renderer is expected to blur the editor after invoking this.
|
|
48
|
+
* Multiline mode ignores it (Enter inserts a paragraph instead).
|
|
49
|
+
*/
|
|
50
|
+
onSubmit?: () => void
|
|
51
|
+
/**
|
|
52
|
+
* Tailwind className applied to the editor's contenteditable wrapper so the
|
|
53
|
+
* rendered editor matches the native `<input>` / `<textarea>` chrome it
|
|
54
|
+
* replaces. The host owns the styling — the adapter just forwards.
|
|
55
|
+
*/
|
|
56
|
+
className?: string
|
|
57
|
+
/**
|
|
58
|
+
* Additional DOM attributes for the editor's contenteditable wrapper —
|
|
59
|
+
* typically `id`, `aria-*`, `autocomplete`, etc.
|
|
60
|
+
*/
|
|
61
|
+
editorAttributes?: Record<string, string>
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export type CollabTextRenderer = ComponentType<CollabTextRendererProps>
|
|
65
|
+
|
|
66
|
+
let _renderer: CollabTextRenderer | null = null
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Register the collab plain-text editor component. Called once at boot by
|
|
70
|
+
* `@pilotiq/tiptap`'s `registerTiptap()` (or directly by an app that imports
|
|
71
|
+
* the renderer). Calling with `null` clears the registry — useful for tests.
|
|
72
|
+
*
|
|
73
|
+
* No-op behaviour when no renderer is registered: `TextLikeInput` falls back
|
|
74
|
+
* to the legacy `BoundTextInput` path (or the plain controlled / uncontrolled
|
|
75
|
+
* input when no collab room is mounted).
|
|
76
|
+
*/
|
|
77
|
+
export function registerCollabTextRenderer(component: CollabTextRenderer | null): void {
|
|
78
|
+
_renderer = component
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Returns the registered component, or `null` when no adapter is installed. */
|
|
82
|
+
export function getCollabTextRenderer(): CollabTextRenderer | null {
|
|
83
|
+
return _renderer
|
|
84
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createContext, useContext, type ReactNode } from 'react'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Resolved identity of the user driving the current page. Mirrors the
|
|
5
|
+
* `UserMenuMeta.user` shape that `panelInfo()` ships to the renderer —
|
|
6
|
+
* whichever fields the `Pilotiq.user(req => …)` resolver populated.
|
|
7
|
+
*
|
|
8
|
+
* `null` is the no-user state: either the panel never wired a resolver,
|
|
9
|
+
* or the resolver returned `null` for this request. Consumers should
|
|
10
|
+
* gracefully fall back (no avatar, no presence label, etc.) rather than
|
|
11
|
+
* treating absence as an error.
|
|
12
|
+
*/
|
|
13
|
+
export interface CurrentUser {
|
|
14
|
+
name?: string
|
|
15
|
+
email?: string
|
|
16
|
+
avatar?: string
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const CurrentUserContext = createContext<CurrentUser | null>(null)
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Mounted by `AppShell` around the layout-provider chain so plugins
|
|
23
|
+
* (collab user presence, audit-trail attribution, analytics
|
|
24
|
+
* client-side opt-outs, …) can read the active user via
|
|
25
|
+
* `useCurrentUser()` without prop-drilling through `panel`.
|
|
26
|
+
*
|
|
27
|
+
* Value source is `viewProps.panel.userMenu?.user` — the same shape the
|
|
28
|
+
* top-right dropdown renders. The provider sits OUTSIDE
|
|
29
|
+
* `layoutProviderRegistry` so plugin-registered layout providers can
|
|
30
|
+
* subscribe.
|
|
31
|
+
*/
|
|
32
|
+
export function CurrentUserProvider({
|
|
33
|
+
value,
|
|
34
|
+
children,
|
|
35
|
+
}: {
|
|
36
|
+
value: CurrentUser | null
|
|
37
|
+
children: ReactNode
|
|
38
|
+
}): ReactNode {
|
|
39
|
+
return <CurrentUserContext.Provider value={value}>{children}</CurrentUserContext.Provider>
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Read the active user inside any descendant of `<AppShell>`. Returns
|
|
44
|
+
* `null` outside an `AppShell` mount (defensive — keeps storybook /
|
|
45
|
+
* isolated-render tests from throwing) and when no user resolved for
|
|
46
|
+
* the request.
|
|
47
|
+
*/
|
|
48
|
+
export function useCurrentUser(): CurrentUser | null {
|
|
49
|
+
return useContext(CurrentUserContext)
|
|
50
|
+
}
|