@elaraai/e3-ui 1.0.68 → 1.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/bind/data.d.ts +193 -29
- package/dist/src/bind/data.d.ts.map +1 -1
- package/dist/src/bind/data.js +142 -1
- package/dist/src/bind/data.js.map +1 -1
- package/dist/src/decision/queue.d.ts +58 -0
- package/dist/src/decision/queue.d.ts.map +1 -1
- package/dist/src/decision/types.d.ts +2 -2
- package/dist/src/decision/types.js +2 -2
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +1 -1
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +1 -1
- package/dist/src/internal.js.map +1 -1
- package/dist/src/ui.js +6 -1
- package/dist/src/ui.js.map +1 -1
- package/dist/src/utils/derive.d.ts +9 -5
- package/dist/src/utils/derive.d.ts.map +1 -1
- package/dist/src/utils/derive.js +15 -1
- package/dist/src/utils/derive.js.map +1 -1
- package/dist/src/utils/manifest.d.ts +10 -3
- package/dist/src/utils/manifest.d.ts.map +1 -1
- package/dist/src/utils/manifest.js +8 -3
- package/dist/src/utils/manifest.js.map +1 -1
- package/dist/test/bind/data/data.examples.d.ts +71 -1
- package/dist/test/bind/data/data.examples.d.ts.map +1 -1
- package/dist/test/bind/data/data.examples.js +185 -2
- package/dist/test/bind/data/data.examples.js.map +1 -1
- package/package.json +8 -8
package/dist/src/bind/data.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
|
-
import { NullType, BooleanType, FunctionType, StructType, VariantType, OptionType, type EastType, type ExprType } from '@elaraai/east';
|
|
10
|
+
import { NullType, BooleanType, FunctionType, IntegerType, StringType, StructType, VariantType, OptionType, type EastType, type ExprType } from '@elaraai/east';
|
|
11
11
|
import type { DatasetDef, TaskDef } from '@elaraai/e3';
|
|
12
12
|
/**
|
|
13
13
|
* The two operating modes for {@link Data.bind}.
|
|
@@ -43,10 +43,10 @@ export type DataBindModeLiteral = "staged" | "direct";
|
|
|
43
43
|
*/
|
|
44
44
|
export declare const DiffBindingType: StructType<{
|
|
45
45
|
readonly source: import("@elaraai/east").ArrayType<VariantType<{
|
|
46
|
-
readonly field:
|
|
46
|
+
readonly field: StringType;
|
|
47
47
|
}>>;
|
|
48
48
|
readonly patch: OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
49
|
-
readonly field:
|
|
49
|
+
readonly field: StringType;
|
|
50
50
|
}>>>;
|
|
51
51
|
readonly mode: VariantType<{
|
|
52
52
|
readonly staged: NullType;
|
|
@@ -100,10 +100,10 @@ export declare const DataBindHandleType: <T extends EastType | string>(t: T) =>
|
|
|
100
100
|
}>>;
|
|
101
101
|
readonly binding: StructType<{
|
|
102
102
|
readonly source: import("@elaraai/east").ArrayType<VariantType<{
|
|
103
|
-
readonly field:
|
|
103
|
+
readonly field: StringType;
|
|
104
104
|
}>>;
|
|
105
105
|
readonly patch: OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
106
|
-
readonly field:
|
|
106
|
+
readonly field: StringType;
|
|
107
107
|
}>>>;
|
|
108
108
|
readonly mode: VariantType<{
|
|
109
109
|
readonly staged: NullType;
|
|
@@ -139,9 +139,9 @@ export type BoundValue<T extends EastType> = ExprType<ReturnType<typeof DataBind
|
|
|
139
139
|
* `bindPlatformFn.implement(...)`.
|
|
140
140
|
*/
|
|
141
141
|
export declare const bindPlatformFn: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
142
|
-
readonly field:
|
|
142
|
+
readonly field: StringType;
|
|
143
143
|
}>>, OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
144
|
-
readonly field:
|
|
144
|
+
readonly field: StringType;
|
|
145
145
|
}>>>, VariantType<{
|
|
146
146
|
readonly staged: NullType;
|
|
147
147
|
readonly direct: NullType;
|
|
@@ -162,10 +162,10 @@ export declare const bindPlatformFn: import("@elaraai/east").GenericPlatformDefi
|
|
|
162
162
|
}>>;
|
|
163
163
|
readonly binding: StructType<{
|
|
164
164
|
readonly source: import("@elaraai/east").ArrayType<VariantType<{
|
|
165
|
-
readonly field:
|
|
165
|
+
readonly field: StringType;
|
|
166
166
|
}>>;
|
|
167
167
|
readonly patch: OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
168
|
-
readonly field:
|
|
168
|
+
readonly field: StringType;
|
|
169
169
|
}>>>;
|
|
170
170
|
readonly mode: VariantType<{
|
|
171
171
|
readonly staged: NullType;
|
|
@@ -183,90 +183,90 @@ export declare const bindPlatformFn: import("@elaraai/east").GenericPlatformDefi
|
|
|
183
183
|
export declare const DataBindPrimitives: {
|
|
184
184
|
/** `data_read([T], source, patch, mode) -> T` — the binding's view (mode×patch). */
|
|
185
185
|
readonly read: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
186
|
-
readonly field:
|
|
186
|
+
readonly field: StringType;
|
|
187
187
|
}>>, OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
188
|
-
readonly field:
|
|
188
|
+
readonly field: StringType;
|
|
189
189
|
}>>>, VariantType<{
|
|
190
190
|
readonly staged: NullType;
|
|
191
191
|
readonly direct: NullType;
|
|
192
192
|
}>], "T">;
|
|
193
193
|
/** `data_source([T], source, patch, mode) -> T` — raw source, no overlay. */
|
|
194
194
|
readonly source: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
195
|
-
readonly field:
|
|
195
|
+
readonly field: StringType;
|
|
196
196
|
}>>, OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
197
|
-
readonly field:
|
|
197
|
+
readonly field: StringType;
|
|
198
198
|
}>>>, VariantType<{
|
|
199
199
|
readonly staged: NullType;
|
|
200
200
|
readonly direct: NullType;
|
|
201
201
|
}>], "T">;
|
|
202
202
|
/** `data_write([T], source, patch, mode, value) -> Null`. */
|
|
203
203
|
readonly write: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
204
|
-
readonly field:
|
|
204
|
+
readonly field: StringType;
|
|
205
205
|
}>>, OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
206
|
-
readonly field:
|
|
206
|
+
readonly field: StringType;
|
|
207
207
|
}>>>, VariantType<{
|
|
208
208
|
readonly staged: NullType;
|
|
209
209
|
readonly direct: NullType;
|
|
210
210
|
}>, "T"], NullType>;
|
|
211
211
|
/** `data_write_and_start([T], source, patch, mode, value) -> Null`. */
|
|
212
212
|
readonly writeAndStart: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
213
|
-
readonly field:
|
|
213
|
+
readonly field: StringType;
|
|
214
214
|
}>>, OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
215
|
-
readonly field:
|
|
215
|
+
readonly field: StringType;
|
|
216
216
|
}>>>, VariantType<{
|
|
217
217
|
readonly staged: NullType;
|
|
218
218
|
readonly direct: NullType;
|
|
219
219
|
}>, "T"], NullType>;
|
|
220
220
|
/** `data_start([T], source, patch, mode) -> Null`. */
|
|
221
221
|
readonly start: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
222
|
-
readonly field:
|
|
222
|
+
readonly field: StringType;
|
|
223
223
|
}>>, OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
224
|
-
readonly field:
|
|
224
|
+
readonly field: StringType;
|
|
225
225
|
}>>>, VariantType<{
|
|
226
226
|
readonly staged: NullType;
|
|
227
227
|
readonly direct: NullType;
|
|
228
228
|
}>], NullType>;
|
|
229
229
|
/** `data_pending([T], source, patch, mode) -> Bool`. */
|
|
230
230
|
readonly pending: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
231
|
-
readonly field:
|
|
231
|
+
readonly field: StringType;
|
|
232
232
|
}>>, OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
233
|
-
readonly field:
|
|
233
|
+
readonly field: StringType;
|
|
234
234
|
}>>>, VariantType<{
|
|
235
235
|
readonly staged: NullType;
|
|
236
236
|
readonly direct: NullType;
|
|
237
237
|
}>], BooleanType>;
|
|
238
238
|
/** `data_commit([T], source, patch, mode) -> Null`. */
|
|
239
239
|
readonly commit: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
240
|
-
readonly field:
|
|
240
|
+
readonly field: StringType;
|
|
241
241
|
}>>, OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
242
|
-
readonly field:
|
|
242
|
+
readonly field: StringType;
|
|
243
243
|
}>>>, VariantType<{
|
|
244
244
|
readonly staged: NullType;
|
|
245
245
|
readonly direct: NullType;
|
|
246
246
|
}>], NullType>;
|
|
247
247
|
/** `data_discard([T], source, patch, mode) -> Null`. */
|
|
248
248
|
readonly discard: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
249
|
-
readonly field:
|
|
249
|
+
readonly field: StringType;
|
|
250
250
|
}>>, OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
251
|
-
readonly field:
|
|
251
|
+
readonly field: StringType;
|
|
252
252
|
}>>>, VariantType<{
|
|
253
253
|
readonly staged: NullType;
|
|
254
254
|
readonly direct: NullType;
|
|
255
255
|
}>], NullType>;
|
|
256
256
|
/** `data_has([T], source, patch, mode) -> Bool`. */
|
|
257
257
|
readonly has: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
258
|
-
readonly field:
|
|
258
|
+
readonly field: StringType;
|
|
259
259
|
}>>, OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
260
|
-
readonly field:
|
|
260
|
+
readonly field: StringType;
|
|
261
261
|
}>>>, VariantType<{
|
|
262
262
|
readonly staged: NullType;
|
|
263
263
|
readonly direct: NullType;
|
|
264
264
|
}>], BooleanType>;
|
|
265
265
|
/** `data_status([T], source, patch, mode) -> DatasetStatus`. */
|
|
266
266
|
readonly status: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
267
|
-
readonly field:
|
|
267
|
+
readonly field: StringType;
|
|
268
268
|
}>>, OptionType<import("@elaraai/east").ArrayType<VariantType<{
|
|
269
|
-
readonly field:
|
|
269
|
+
readonly field: StringType;
|
|
270
270
|
}>>>, VariantType<{
|
|
271
271
|
readonly staged: NullType;
|
|
272
272
|
readonly direct: NullType;
|
|
@@ -361,6 +361,166 @@ export interface DataBindOptions {
|
|
|
361
361
|
* ```
|
|
362
362
|
*/
|
|
363
363
|
declare function bindData<T extends EastType>(dataset: DatasetDef<T> | TaskDef<T>, options?: DataBindOptions): BoundValue<T>;
|
|
364
|
+
/**
|
|
365
|
+
* The struct returned by every {@link Data.bindPaged} call — a WINDOWED view
|
|
366
|
+
* of a collection dataset, for sources too large to hold whole.
|
|
367
|
+
*
|
|
368
|
+
* @remarks
|
|
369
|
+
* Deliberately read-only: there is no `write` / `commit` / `binding`, because
|
|
370
|
+
* a window is not a value you can diff or stage. Bind the same dataset with
|
|
371
|
+
* {@link Data.bind} when you need to edit it.
|
|
372
|
+
*
|
|
373
|
+
* @property page - Read one window: `(offset, limit)` → the window's elements
|
|
374
|
+
* as a value of the dataset's own type. `none` means the window is still in
|
|
375
|
+
* flight — the call re-fires when it lands (use inside `Reactive.Root`). An
|
|
376
|
+
* EMPTY window means the source is exhausted at that offset, so a reader
|
|
377
|
+
* that walks offsets terminates on `some([])`, never on `none`.
|
|
378
|
+
* @property total - The source's total element count, once any window has
|
|
379
|
+
* landed; `none` until then.
|
|
380
|
+
* @property seek - Key search over the dataset, backed by the server's fence
|
|
381
|
+
* search (`datasetFindKey`). `none` for an Array-typed dataset: stream order
|
|
382
|
+
* has nothing to binary-search. Decided at bind time from the dataset's own
|
|
383
|
+
* type, so a component renders the affordance only where it works.
|
|
384
|
+
*/
|
|
385
|
+
export declare const DataPagedHandleType: <T extends EastType | string>(t: T) => StructType<{
|
|
386
|
+
readonly id: StringType;
|
|
387
|
+
readonly page: FunctionType<[IntegerType, IntegerType], OptionType<T>>;
|
|
388
|
+
readonly total: FunctionType<[], OptionType<IntegerType>>;
|
|
389
|
+
readonly seek: OptionType<FunctionType<[VariantType<{
|
|
390
|
+
readonly key: StringType;
|
|
391
|
+
readonly prefix: StringType;
|
|
392
|
+
readonly fields: StructType<{
|
|
393
|
+
readonly values: import("@elaraai/east").ArrayType<StringType>;
|
|
394
|
+
readonly prefix: OptionType<StringType>;
|
|
395
|
+
}>;
|
|
396
|
+
}>], OptionType<StructType<{
|
|
397
|
+
readonly found: BooleanType;
|
|
398
|
+
readonly row: IntegerType;
|
|
399
|
+
readonly count: IntegerType;
|
|
400
|
+
}>>>>;
|
|
401
|
+
}>;
|
|
402
|
+
/**
|
|
403
|
+
* The TypeScript type of a {@link Data.bindPaged} handle bound to source type
|
|
404
|
+
* `T` — the paged sibling of {@link BoundValue}.
|
|
405
|
+
*
|
|
406
|
+
* @remarks
|
|
407
|
+
* As with `BoundValue`, `T` rides **structurally** in the handle's method
|
|
408
|
+
* signatures, so a component requiring `PagedValue<ArrayType<OpsRow>>` rejects
|
|
409
|
+
* a handle bound to any other type at compile time. Components that consume a
|
|
410
|
+
* paged source structurally (east-ui's `Plan`, which must never import e3-ui)
|
|
411
|
+
* match on the `page` / `total` fields alone.
|
|
412
|
+
*
|
|
413
|
+
* @typeParam T - The East type of the bound dataset value (a collection type).
|
|
414
|
+
*/
|
|
415
|
+
export type PagedValue<T extends EastType> = ExprType<ReturnType<typeof DataPagedHandleType<T>>>;
|
|
416
|
+
/**
|
|
417
|
+
* The underlying `Data.bindPaged` platform-function definition. End-users
|
|
418
|
+
* should call {@link Data.bindPaged}; runtime implementations register
|
|
419
|
+
* against this raw definition via `bindPagedPlatformFn.implement(...)`.
|
|
420
|
+
*/
|
|
421
|
+
export declare const bindPagedPlatformFn: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
422
|
+
readonly field: StringType;
|
|
423
|
+
}>>], StructType<{
|
|
424
|
+
readonly id: StringType;
|
|
425
|
+
readonly page: FunctionType<[IntegerType, IntegerType], OptionType<string>>;
|
|
426
|
+
readonly total: FunctionType<[], OptionType<IntegerType>>;
|
|
427
|
+
readonly seek: OptionType<FunctionType<[VariantType<{
|
|
428
|
+
readonly key: StringType;
|
|
429
|
+
readonly prefix: StringType;
|
|
430
|
+
readonly fields: StructType<{
|
|
431
|
+
readonly values: import("@elaraai/east").ArrayType<StringType>;
|
|
432
|
+
readonly prefix: OptionType<StringType>;
|
|
433
|
+
}>;
|
|
434
|
+
}>], OptionType<StructType<{
|
|
435
|
+
readonly found: BooleanType;
|
|
436
|
+
readonly row: IntegerType;
|
|
437
|
+
readonly count: IntegerType;
|
|
438
|
+
}>>>>;
|
|
439
|
+
}>>;
|
|
440
|
+
/**
|
|
441
|
+
* Low-level platform primitives that back {@link Data.bindPaged}'s handle
|
|
442
|
+
* methods.
|
|
443
|
+
*
|
|
444
|
+
* @internal Not for direct use — author against {@link Data.bindPaged}.
|
|
445
|
+
*/
|
|
446
|
+
export declare const DataPagedPrimitives: {
|
|
447
|
+
/** `data_page([T], source, offset, limit) -> Option<T>` — one window (`none` = in flight). */
|
|
448
|
+
readonly page: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
449
|
+
readonly field: StringType;
|
|
450
|
+
}>>, IntegerType, IntegerType], OptionType<string>>;
|
|
451
|
+
/** `data_page_total([T], source) -> Option<Integer>` — total elements, once known. */
|
|
452
|
+
readonly total: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
453
|
+
readonly field: StringType;
|
|
454
|
+
}>>], OptionType<IntegerType>>;
|
|
455
|
+
/** `data_page_seek([T], source, query) -> Option<SeekRange>` — where a key
|
|
456
|
+
* query lands in the source's row order (`none` = search in flight). */
|
|
457
|
+
readonly seek: import("@elaraai/east").GenericPlatformDefinition<readonly ["T"], readonly [import("@elaraai/east").ArrayType<VariantType<{
|
|
458
|
+
readonly field: StringType;
|
|
459
|
+
}>>, VariantType<{
|
|
460
|
+
readonly key: StringType;
|
|
461
|
+
readonly prefix: StringType;
|
|
462
|
+
readonly fields: StructType<{
|
|
463
|
+
readonly values: import("@elaraai/east").ArrayType<StringType>;
|
|
464
|
+
readonly prefix: OptionType<StringType>;
|
|
465
|
+
}>;
|
|
466
|
+
}>], OptionType<StructType<{
|
|
467
|
+
readonly found: BooleanType;
|
|
468
|
+
readonly row: IntegerType;
|
|
469
|
+
readonly count: IntegerType;
|
|
470
|
+
}>>>;
|
|
471
|
+
};
|
|
472
|
+
/**
|
|
473
|
+
* Bind a collection dataset (Array / Set / Dict) to a WINDOWED reactive view
|
|
474
|
+
* of its contents — the paged sibling of {@link Data.bind}, for sources too
|
|
475
|
+
* large to fetch whole.
|
|
476
|
+
*
|
|
477
|
+
* Takes the {@link DatasetDef} returned by `e3.input` (or a {@link TaskDef},
|
|
478
|
+
* which binds its output dataset), exactly like {@link Data.bind}: the path
|
|
479
|
+
* and the value type both come from the def.
|
|
480
|
+
*
|
|
481
|
+
* @typeParam T - The East type of the source dataset value (a collection type).
|
|
482
|
+
* @param dataset - The dataset (or task) definition to bind.
|
|
483
|
+
* @returns A handle struct described by {@link DataPagedHandleType} — `page`
|
|
484
|
+
* and `total`.
|
|
485
|
+
*
|
|
486
|
+
* @remarks
|
|
487
|
+
* Each `page(offset, limit)` fetches exactly that window and decodes it
|
|
488
|
+
* against the dataset's own type — no blobs, no beast2, no manual fetch in
|
|
489
|
+
* user code. A window still in flight reads `none` and the call re-fires when
|
|
490
|
+
* it lands, so use it inside `Reactive.Root`; an empty window means the source
|
|
491
|
+
* is exhausted, which is how a walking reader terminates.
|
|
492
|
+
*
|
|
493
|
+
* Unlike {@link Data.bind}, a paged source is NOT preloaded or polled as a
|
|
494
|
+
* whole value — it is declared in the UI task's manifest under `pages`, which
|
|
495
|
+
* is the entire point of binding it paged.
|
|
496
|
+
*
|
|
497
|
+
* @example
|
|
498
|
+
* ```ts
|
|
499
|
+
* import { ArrayType, DictType, East, StringType } from "@elaraai/east";
|
|
500
|
+
* import { Plan, Reactive, UIComponentType } from "@elaraai/east-ui";
|
|
501
|
+
* import { Data } from "@elaraai/e3-ui";
|
|
502
|
+
* import * as e3 from "@elaraai/e3";
|
|
503
|
+
*
|
|
504
|
+
* // KEYED, because the Plan's canvas rows inherit the dataset's keys — the
|
|
505
|
+
* // same key space `page` windows and `seek` searches.
|
|
506
|
+
* const ops = e3.input("ops", DictType(StringType, OpsRow), new Map());
|
|
507
|
+
*
|
|
508
|
+
* // Mirrors `dataBindPagedPlan` in test/bind/data/data.examples.tsx.
|
|
509
|
+
* const dataBindPagedPlan = East.function([], UIComponentType, _$ => {
|
|
510
|
+
* return Reactive.Root(East.function([], UIComponentType, $ => {
|
|
511
|
+
* const paged = $.let(Data.bindPaged(ops));
|
|
512
|
+
* const series = $.const([…], ArrayType(Plan.Types.Series(OpsRow)));
|
|
513
|
+
* // A paged canvas DECLARES its window: fitting the axis to whatever
|
|
514
|
+
* // prefix has landed re-fits it on every window (#567 D8).
|
|
515
|
+
* const axis = $.const(Plan.axis({
|
|
516
|
+
* window: { min: week(24n), max: week(42n) }, resolution: "week",
|
|
517
|
+
* }));
|
|
518
|
+
* return Plan.Root({ axis, data: paged, series });
|
|
519
|
+
* }));
|
|
520
|
+
* });
|
|
521
|
+
* ```
|
|
522
|
+
*/
|
|
523
|
+
declare function bindDataPaged<T extends EastType>(dataset: DatasetDef<T> | TaskDef<T>): PagedValue<T>;
|
|
364
524
|
/**
|
|
365
525
|
* The Data namespace — reactive dataset binding for e3 UI tasks.
|
|
366
526
|
*
|
|
@@ -369,11 +529,15 @@ declare function bindData<T extends EastType>(dataset: DatasetDef<T> | TaskDef<T
|
|
|
369
529
|
* combinations of `mode` (staged | direct) and `patch` (absent | present).
|
|
370
530
|
* The full per-mode semantics matrix is documented on {@link Data.bind}.
|
|
371
531
|
*
|
|
532
|
+
* `Data.bindPaged` is its read-only, windowed sibling for collection datasets
|
|
533
|
+
* too large to hold whole — see {@link Data.bindPaged}.
|
|
534
|
+
*
|
|
372
535
|
* Use inside `Reactive.Root` for reactive re-rendering when the underlying
|
|
373
536
|
* datasets change.
|
|
374
537
|
*/
|
|
375
538
|
export declare const Data: {
|
|
376
539
|
readonly bind: typeof bindData;
|
|
540
|
+
readonly bindPaged: typeof bindDataPaged;
|
|
377
541
|
};
|
|
378
542
|
export {};
|
|
379
543
|
//# sourceMappingURL=data.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/bind/data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAEH,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,UAAU,EAIV,KAAK,QAAQ,EACb,KAAK,QAAQ,EAChB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/bind/data.ts"],"names":[],"mappings":"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"}
|
package/dist/src/bind/data.js
CHANGED
|
@@ -7,8 +7,12 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
|
-
import { East, NullType, BooleanType, FunctionType, StructType, VariantType, OptionType, none, some, variant, } from '@elaraai/east';
|
|
10
|
+
import { East, NullType, BooleanType, FunctionType, IntegerType, StringType, StructType, VariantType, OptionType, none, some, variant, } from '@elaraai/east';
|
|
11
11
|
import { TreePathType, DatasetStatusType } from '@elaraai/e3-types';
|
|
12
|
+
// The row-source contract is east-ui's (#567): a paged handle IS a
|
|
13
|
+
// `PagedSourceType` — same fields, same order — so Plan / Table / ValueTree
|
|
14
|
+
// take it without either package importing the other's data layer.
|
|
15
|
+
import { SeekQueryType, SeekRangeType } from '@elaraai/east-ui';
|
|
12
16
|
// ============================================================================
|
|
13
17
|
// Mode + binding descriptor types — shared with the Diff component.
|
|
14
18
|
// ============================================================================
|
|
@@ -238,6 +242,139 @@ function bindData(dataset, options) {
|
|
|
238
242
|
: East.value(some(options.patch.path), OptionType(TreePathType));
|
|
239
243
|
return bindPlatformFn([def.type], sourceValue, patchValue, modeValue);
|
|
240
244
|
}
|
|
245
|
+
// ============================================================================
|
|
246
|
+
// Paged binding — read a collection dataset one window at a time.
|
|
247
|
+
// ============================================================================
|
|
248
|
+
/**
|
|
249
|
+
* The struct returned by every {@link Data.bindPaged} call — a WINDOWED view
|
|
250
|
+
* of a collection dataset, for sources too large to hold whole.
|
|
251
|
+
*
|
|
252
|
+
* @remarks
|
|
253
|
+
* Deliberately read-only: there is no `write` / `commit` / `binding`, because
|
|
254
|
+
* a window is not a value you can diff or stage. Bind the same dataset with
|
|
255
|
+
* {@link Data.bind} when you need to edit it.
|
|
256
|
+
*
|
|
257
|
+
* @property page - Read one window: `(offset, limit)` → the window's elements
|
|
258
|
+
* as a value of the dataset's own type. `none` means the window is still in
|
|
259
|
+
* flight — the call re-fires when it lands (use inside `Reactive.Root`). An
|
|
260
|
+
* EMPTY window means the source is exhausted at that offset, so a reader
|
|
261
|
+
* that walks offsets terminates on `some([])`, never on `none`.
|
|
262
|
+
* @property total - The source's total element count, once any window has
|
|
263
|
+
* landed; `none` until then.
|
|
264
|
+
* @property seek - Key search over the dataset, backed by the server's fence
|
|
265
|
+
* search (`datasetFindKey`). `none` for an Array-typed dataset: stream order
|
|
266
|
+
* has nothing to binary-search. Decided at bind time from the dataset's own
|
|
267
|
+
* type, so a component renders the affordance only where it works.
|
|
268
|
+
*/
|
|
269
|
+
export const DataPagedHandleType = (t) => StructType({
|
|
270
|
+
id: StringType,
|
|
271
|
+
page: FunctionType([IntegerType, IntegerType], OptionType(t)),
|
|
272
|
+
total: FunctionType([], OptionType(IntegerType)),
|
|
273
|
+
seek: OptionType(FunctionType([SeekQueryType], OptionType(SeekRangeType))),
|
|
274
|
+
});
|
|
275
|
+
/**
|
|
276
|
+
* The underlying `Data.bindPaged` platform-function definition. End-users
|
|
277
|
+
* should call {@link Data.bindPaged}; runtime implementations register
|
|
278
|
+
* against this raw definition via `bindPagedPlatformFn.implement(...)`.
|
|
279
|
+
*/
|
|
280
|
+
export const bindPagedPlatformFn = East.genericPlatform("data_bind_paged", ["T"], [TreePathType], StructType({
|
|
281
|
+
id: StringType,
|
|
282
|
+
page: FunctionType([IntegerType, IntegerType], OptionType("T")),
|
|
283
|
+
total: FunctionType([], OptionType(IntegerType)),
|
|
284
|
+
seek: OptionType(FunctionType([SeekQueryType], OptionType(SeekRangeType))),
|
|
285
|
+
}), { optional: true });
|
|
286
|
+
// Low-level primitives backing a `Data.bindPaged` handle's methods — the same
|
|
287
|
+
// shape as the `Data.bind` primitives (issue #106): each handle method is a
|
|
288
|
+
// thin `East.function` over one of these, capturing only the plain-data source
|
|
289
|
+
// path (the value type rides as a type-arg), so a paged handle is ordinary
|
|
290
|
+
// serializable East data. Implemented by `PagedRuntime` in
|
|
291
|
+
// `@elaraai/e3-ui-components`.
|
|
292
|
+
const PAGED_DESCRIPTOR = [TreePathType];
|
|
293
|
+
const data_page = East.genericPlatform("data_page", ["T"], [...PAGED_DESCRIPTOR, IntegerType, IntegerType], OptionType("T"), { optional: true });
|
|
294
|
+
const data_page_total = East.genericPlatform("data_page_total", ["T"], [...PAGED_DESCRIPTOR], OptionType(IntegerType), { optional: true });
|
|
295
|
+
// Key search rides the SAME in-flight convention as a window: `none` while the
|
|
296
|
+
// server's fence search is running, `some(range)` when it lands. The row it
|
|
297
|
+
// returns is a global element index in the row space `data_page` windows serve.
|
|
298
|
+
const data_page_seek = East.genericPlatform("data_page_seek", ["T"], [...PAGED_DESCRIPTOR, SeekQueryType], OptionType(SeekRangeType), { optional: true });
|
|
299
|
+
/**
|
|
300
|
+
* Low-level platform primitives that back {@link Data.bindPaged}'s handle
|
|
301
|
+
* methods.
|
|
302
|
+
*
|
|
303
|
+
* @internal Not for direct use — author against {@link Data.bindPaged}.
|
|
304
|
+
*/
|
|
305
|
+
export const DataPagedPrimitives = {
|
|
306
|
+
/** `data_page([T], source, offset, limit) -> Option<T>` — one window (`none` = in flight). */
|
|
307
|
+
page: data_page,
|
|
308
|
+
/** `data_page_total([T], source) -> Option<Integer>` — total elements, once known. */
|
|
309
|
+
total: data_page_total,
|
|
310
|
+
/** `data_page_seek([T], source, query) -> Option<SeekRange>` — where a key
|
|
311
|
+
* query lands in the source's row order (`none` = search in flight). */
|
|
312
|
+
seek: data_page_seek,
|
|
313
|
+
};
|
|
314
|
+
/**
|
|
315
|
+
* Bind a collection dataset (Array / Set / Dict) to a WINDOWED reactive view
|
|
316
|
+
* of its contents — the paged sibling of {@link Data.bind}, for sources too
|
|
317
|
+
* large to fetch whole.
|
|
318
|
+
*
|
|
319
|
+
* Takes the {@link DatasetDef} returned by `e3.input` (or a {@link TaskDef},
|
|
320
|
+
* which binds its output dataset), exactly like {@link Data.bind}: the path
|
|
321
|
+
* and the value type both come from the def.
|
|
322
|
+
*
|
|
323
|
+
* @typeParam T - The East type of the source dataset value (a collection type).
|
|
324
|
+
* @param dataset - The dataset (or task) definition to bind.
|
|
325
|
+
* @returns A handle struct described by {@link DataPagedHandleType} — `page`
|
|
326
|
+
* and `total`.
|
|
327
|
+
*
|
|
328
|
+
* @remarks
|
|
329
|
+
* Each `page(offset, limit)` fetches exactly that window and decodes it
|
|
330
|
+
* against the dataset's own type — no blobs, no beast2, no manual fetch in
|
|
331
|
+
* user code. A window still in flight reads `none` and the call re-fires when
|
|
332
|
+
* it lands, so use it inside `Reactive.Root`; an empty window means the source
|
|
333
|
+
* is exhausted, which is how a walking reader terminates.
|
|
334
|
+
*
|
|
335
|
+
* Unlike {@link Data.bind}, a paged source is NOT preloaded or polled as a
|
|
336
|
+
* whole value — it is declared in the UI task's manifest under `pages`, which
|
|
337
|
+
* is the entire point of binding it paged.
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* ```ts
|
|
341
|
+
* import { ArrayType, DictType, East, StringType } from "@elaraai/east";
|
|
342
|
+
* import { Plan, Reactive, UIComponentType } from "@elaraai/east-ui";
|
|
343
|
+
* import { Data } from "@elaraai/e3-ui";
|
|
344
|
+
* import * as e3 from "@elaraai/e3";
|
|
345
|
+
*
|
|
346
|
+
* // KEYED, because the Plan's canvas rows inherit the dataset's keys — the
|
|
347
|
+
* // same key space `page` windows and `seek` searches.
|
|
348
|
+
* const ops = e3.input("ops", DictType(StringType, OpsRow), new Map());
|
|
349
|
+
*
|
|
350
|
+
* // Mirrors `dataBindPagedPlan` in test/bind/data/data.examples.tsx.
|
|
351
|
+
* const dataBindPagedPlan = East.function([], UIComponentType, _$ => {
|
|
352
|
+
* return Reactive.Root(East.function([], UIComponentType, $ => {
|
|
353
|
+
* const paged = $.let(Data.bindPaged(ops));
|
|
354
|
+
* const series = $.const([…], ArrayType(Plan.Types.Series(OpsRow)));
|
|
355
|
+
* // A paged canvas DECLARES its window: fitting the axis to whatever
|
|
356
|
+
* // prefix has landed re-fits it on every window (#567 D8).
|
|
357
|
+
* const axis = $.const(Plan.axis({
|
|
358
|
+
* window: { min: week(24n), max: week(42n) }, resolution: "week",
|
|
359
|
+
* }));
|
|
360
|
+
* return Plan.Root({ axis, data: paged, series });
|
|
361
|
+
* }));
|
|
362
|
+
* });
|
|
363
|
+
* ```
|
|
364
|
+
*/
|
|
365
|
+
function bindDataPaged(dataset) {
|
|
366
|
+
// A TaskDef binds its output dataset; a DatasetDef binds itself.
|
|
367
|
+
const def = dataset.kind === 'task' ? dataset.output : dataset;
|
|
368
|
+
// The source path comes from the def, so it is statically known by
|
|
369
|
+
// construction — `deriveManifest` reads it back as a single literal
|
|
370
|
+
// `Value` IR node, which `East.value(...)` forces.
|
|
371
|
+
const sourceValue = East.value(def.path, TreePathType);
|
|
372
|
+
// Two-step cast: the platform definition spells its window type with the
|
|
373
|
+
// `"T"` type-var, which TS reads as `some: string` inside the nested
|
|
374
|
+
// `Option`, so it does not overlap the instantiated handle directly. The
|
|
375
|
+
// East-side substitution is what actually types the value.
|
|
376
|
+
return bindPagedPlatformFn([def.type], sourceValue);
|
|
377
|
+
}
|
|
241
378
|
/**
|
|
242
379
|
* The Data namespace — reactive dataset binding for e3 UI tasks.
|
|
243
380
|
*
|
|
@@ -246,10 +383,14 @@ function bindData(dataset, options) {
|
|
|
246
383
|
* combinations of `mode` (staged | direct) and `patch` (absent | present).
|
|
247
384
|
* The full per-mode semantics matrix is documented on {@link Data.bind}.
|
|
248
385
|
*
|
|
386
|
+
* `Data.bindPaged` is its read-only, windowed sibling for collection datasets
|
|
387
|
+
* too large to hold whole — see {@link Data.bindPaged}.
|
|
388
|
+
*
|
|
249
389
|
* Use inside `Reactive.Root` for reactive re-rendering when the underlying
|
|
250
390
|
* datasets change.
|
|
251
391
|
*/
|
|
252
392
|
export const Data = {
|
|
253
393
|
bind: bindData,
|
|
394
|
+
bindPaged: bindDataPaged,
|
|
254
395
|
};
|
|
255
396
|
//# sourceMappingURL=data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/bind/data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EACH,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,OAAO,GAGV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/bind/data.ts"],"names":[],"mappings":"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"}
|