@sectile/virtual 0.6.0 → 0.8.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/README.md +3 -3
- package/dist/error.d.ts +1 -2
- package/dist/extent-index.d.ts +7 -1
- package/dist/extent-index.js +93 -83
- package/dist/extent-index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/internal/blocked-vector.d.ts +20 -0
- package/dist/internal/blocked-vector.js +171 -0
- package/dist/internal/blocked-vector.js.map +1 -0
- package/dist/internal/foundation.d.ts +0 -2
- package/dist/internal/foundation.js +3 -13
- package/dist/internal/foundation.js.map +1 -1
- package/dist/internal/repair-diagnostics.d.ts +11 -0
- package/dist/internal/repair-diagnostics.js +8 -0
- package/dist/internal/repair-diagnostics.js.map +1 -0
- package/dist/internal/track.d.ts +0 -1
- package/dist/layout.d.ts +18 -20
- package/dist/layout.js +7 -21
- package/dist/layout.js.map +1 -1
- package/dist/linear-layout.d.ts +4 -1
- package/dist/linear-layout.js +40 -4
- package/dist/linear-layout.js.map +1 -1
- package/dist/masonry-layout.d.ts +4 -1
- package/dist/masonry-layout.js +86 -20
- package/dist/masonry-layout.js.map +1 -1
- package/dist/partitioned-track-grid-layout.d.ts +87 -0
- package/dist/partitioned-track-grid-layout.js +585 -0
- package/dist/partitioned-track-grid-layout.js.map +1 -0
- package/dist/spatial-layout.d.ts +9 -4
- package/dist/spatial-layout.js +221 -56
- package/dist/spatial-layout.js.map +1 -1
- package/dist/track-grid-layout.d.ts +19 -3
- package/dist/track-grid-layout.js +215 -15
- package/dist/track-grid-layout.js.map +1 -1
- package/package.json +8 -3
- package/dist/error.d.ts.map +0 -1
- package/dist/extent-index.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/internal/foundation.d.ts.map +0 -1
- package/dist/internal/machine.d.ts +0 -4
- package/dist/internal/machine.d.ts.map +0 -1
- package/dist/internal/machine.js +0 -8
- package/dist/internal/machine.js.map +0 -1
- package/dist/internal/track.d.ts.map +0 -1
- package/dist/layout.d.ts.map +0 -1
- package/dist/linear-layout.d.ts.map +0 -1
- package/dist/masonry-layout.d.ts.map +0 -1
- package/dist/spatial-layout.d.ts.map +0 -1
- package/dist/track-grid-layout.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foundation.js","sourceRoot":"","sources":["../../src/internal/foundation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"foundation.js","sourceRoot":"","sources":["../../src/internal/foundation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG5D,MAAM,UAAU,EAAE,CAAI,KAAQ;IAC5B,OAAO,QAAQ,CAAsB,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,UAAsB,EACtB,IAAU,EACV,OAAe,EACf,OAA2C;IAE3C,OAAO,UAAU,CAAU,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,OAAO;QACL,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,+CAA+C;QACxD,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;KAC7B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface VirtualRepairDiagnostics {
|
|
2
|
+
readonly mode: 'incremental' | 'rebuild';
|
|
3
|
+
readonly changed: number;
|
|
4
|
+
readonly touchedBlocks: number;
|
|
5
|
+
readonly copiedNodes: number;
|
|
6
|
+
readonly copiedEntries: number;
|
|
7
|
+
readonly rebuiltItems: number;
|
|
8
|
+
readonly repairBound: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function recordRepairDiagnostics(state: object, value: VirtualRepairDiagnostics): void;
|
|
11
|
+
export declare function readRepairDiagnostics(state: object): VirtualRepairDiagnostics | null;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const diagnostics = new WeakMap();
|
|
2
|
+
export function recordRepairDiagnostics(state, value) {
|
|
3
|
+
diagnostics.set(state, Object.freeze({ ...value }));
|
|
4
|
+
}
|
|
5
|
+
export function readRepairDiagnostics(state) {
|
|
6
|
+
return diagnostics.get(state) ?? null;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=repair-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-diagnostics.js","sourceRoot":"","sources":["../../src/internal/repair-diagnostics.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,GAAG,IAAI,OAAO,EAAoC,CAAC;AAEpE,MAAM,UAAU,uBAAuB,CAAC,KAAa,EAAE,KAA+B;IACpF,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACxC,CAAC"}
|
package/dist/internal/track.d.ts
CHANGED
package/dist/layout.d.ts
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import type { StableID } from '@sectile/core';
|
|
2
|
+
import { ZERO_INSETS, ZERO_POINT, pointDelta, rectanglesIntersect, type Insets, type Point, type Rect, type Size } from '@sectile/core/geometry';
|
|
2
3
|
import type { VirtualResult } from './error.js';
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export interface
|
|
8
|
-
|
|
9
|
-
readonly
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
readonly
|
|
4
|
+
export type VirtualPoint = Point;
|
|
5
|
+
export type VirtualSize = Size;
|
|
6
|
+
export type VirtualRect = Rect;
|
|
7
|
+
export type VirtualInsets = Insets;
|
|
8
|
+
export interface VirtualIndexedView<T> {
|
|
9
|
+
/** Constant-time cardinality. */
|
|
10
|
+
readonly size: number;
|
|
11
|
+
/** Indexed lookup; O(log n) worst-case across Virtual representations. */
|
|
12
|
+
at(index: number): T | undefined;
|
|
13
|
+
/** Lazy full traversal in O(n) time without snapshot allocation. */
|
|
14
|
+
iterate(): IterableIterator<T>;
|
|
15
|
+
/** Full traversal in O(n) time without snapshot allocation. */
|
|
16
|
+
forEach(callback: (value: T, index: number) => void): void;
|
|
17
|
+
/** Explicit immutable snapshot materialization in O(n) time and output space. */
|
|
18
|
+
toArray(): readonly T[];
|
|
18
19
|
}
|
|
19
20
|
export interface VirtualQueryInput {
|
|
20
21
|
readonly viewport: VirtualRect;
|
|
@@ -25,6 +26,7 @@ export interface VirtualPlacement<ID extends StableID = StableID> {
|
|
|
25
26
|
readonly index: number;
|
|
26
27
|
readonly rect: VirtualRect;
|
|
27
28
|
readonly visible: boolean;
|
|
29
|
+
readonly zIndex?: number;
|
|
28
30
|
}
|
|
29
31
|
export interface VirtualAnchor<ID extends StableID = StableID> {
|
|
30
32
|
readonly id: ID;
|
|
@@ -59,15 +61,11 @@ export interface VirtualLayoutStrategy<State, ID extends StableID, Measurement,
|
|
|
59
61
|
tryMutate(state: State, input: VirtualMutationInput<Mutation, ID>): VirtualResult<VirtualLayoutMutation<State>>;
|
|
60
62
|
tryScrollTarget(state: State, id: ID, viewport: VirtualRect, alignment?: VirtualScrollAlignment): VirtualResult<VirtualPoint>;
|
|
61
63
|
}
|
|
62
|
-
export
|
|
63
|
-
export declare const ZERO_INSETS: VirtualInsets;
|
|
64
|
+
export { ZERO_INSETS, ZERO_POINT, pointDelta, rectanglesIntersect };
|
|
64
65
|
export declare function normalizeQuery(input: VirtualQueryInput): VirtualResult<{
|
|
65
66
|
readonly viewport: VirtualRect;
|
|
66
67
|
readonly overscan: VirtualInsets;
|
|
67
68
|
readonly renderBounds: VirtualRect;
|
|
68
69
|
}>;
|
|
69
|
-
export declare function rectanglesIntersect(left: VirtualRect, right: VirtualRect): boolean;
|
|
70
|
-
export declare function pointDelta(before: VirtualRect, after: VirtualRect): VirtualPoint;
|
|
71
70
|
export declare function anchorForPlan<ID extends StableID>(viewport: VirtualRect, placements: readonly VirtualPlacement<ID>[]): VirtualAnchor<ID> | null;
|
|
72
71
|
export declare function alignedScrollOffset(itemStart: number, itemExtent: number, viewportStart: number, viewportExtent: number, contentExtent: number, alignment: VirtualScrollAlignment): number;
|
|
73
|
-
//# sourceMappingURL=layout.d.ts.map
|
package/dist/layout.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
1
|
+
import { ZERO_INSETS, ZERO_POINT, pointDelta, rectanglesIntersect, tryCreateInsets, tryCreateRect, } from '@sectile/core/geometry';
|
|
2
|
+
export { ZERO_INSETS, ZERO_POINT, pointDelta, rectanglesIntersect };
|
|
3
3
|
export function normalizeQuery(input) {
|
|
4
|
-
const
|
|
5
|
-
if (
|
|
4
|
+
const viewportResult = tryCreateRect(input.viewport);
|
|
5
|
+
if (!viewportResult.ok || viewportResult.value.x < 0 || viewportResult.value.y < 0)
|
|
6
6
|
return invalidGeometry('Viewport coordinates and extents must be finite and non-negative.', input.viewport);
|
|
7
|
+
const viewport = viewportResult.value;
|
|
7
8
|
const overscan = normalizeInsets(input.overscan);
|
|
8
9
|
if (overscan === null)
|
|
9
10
|
return invalidGeometry('Overscan must contain finite non-negative extents.', input.overscan);
|
|
@@ -20,13 +21,6 @@ export function normalizeQuery(input) {
|
|
|
20
21
|
}),
|
|
21
22
|
}) };
|
|
22
23
|
}
|
|
23
|
-
export function rectanglesIntersect(left, right) {
|
|
24
|
-
return left.x < right.x + right.width && right.x < left.x + left.width
|
|
25
|
-
&& left.y < right.y + right.height && right.y < left.y + left.height;
|
|
26
|
-
}
|
|
27
|
-
export function pointDelta(before, after) {
|
|
28
|
-
return Object.freeze({ x: after.x - before.x, y: after.y - before.y });
|
|
29
|
-
}
|
|
30
24
|
export function anchorForPlan(viewport, placements) {
|
|
31
25
|
let anchor = null;
|
|
32
26
|
for (const placement of placements) {
|
|
@@ -55,19 +49,11 @@ export function alignedScrollOffset(itemStart, itemExtent, viewportStart, viewpo
|
|
|
55
49
|
target = viewportStart;
|
|
56
50
|
return Math.min(Math.max(0, target), Math.max(0, contentExtent - viewportExtent));
|
|
57
51
|
}
|
|
58
|
-
function freezeRect(value) {
|
|
59
|
-
if (value === null || typeof value !== 'object' || !Number.isFinite(value.x) || !Number.isFinite(value.y)
|
|
60
|
-
|| !Number.isFinite(value.width) || !Number.isFinite(value.height) || value.x < 0 || value.y < 0 || value.width < 0 || value.height < 0)
|
|
61
|
-
return null;
|
|
62
|
-
return Object.freeze({ x: value.x, y: value.y, width: value.width, height: value.height });
|
|
63
|
-
}
|
|
64
52
|
function normalizeInsets(value) {
|
|
65
53
|
if (value === undefined)
|
|
66
54
|
return ZERO_INSETS;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const result = { top: value.top ?? 0, right: value.right ?? 0, bottom: value.bottom ?? 0, left: value.left ?? 0 };
|
|
70
|
-
return Object.values(result).every((item) => Number.isFinite(item) && item >= 0) ? Object.freeze(result) : null;
|
|
55
|
+
const result = tryCreateInsets(value);
|
|
56
|
+
return result.ok ? result.value : null;
|
|
71
57
|
}
|
|
72
58
|
function invalidGeometry(message, value) {
|
|
73
59
|
return { ok: false, error: { class: 'construction', code: 'virtual-layout-geometry-invalid', message, details: { value } } };
|
package/dist/layout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
|
package/dist/linear-layout.d.ts
CHANGED
|
@@ -19,7 +19,11 @@ export interface LinearLayoutState<ID extends StableID = StableID> {
|
|
|
19
19
|
readonly generation: number;
|
|
20
20
|
}
|
|
21
21
|
export interface LinearLayoutSnapshot<ID extends StableID = StableID> {
|
|
22
|
+
readonly schemaVersion: 1;
|
|
23
|
+
readonly kind: 'linear';
|
|
22
24
|
readonly ids: readonly ID[];
|
|
25
|
+
readonly sequenceMaxItems: number;
|
|
26
|
+
readonly sequenceMaxIDCodeUnits: number;
|
|
23
27
|
readonly extents: readonly Extent[];
|
|
24
28
|
readonly extentMaxItems: number;
|
|
25
29
|
readonly axis: LinearAxis;
|
|
@@ -76,4 +80,3 @@ export declare function tryLinearScrollTarget<ID extends StableID>(state: Linear
|
|
|
76
80
|
export declare function linearRectAt<ID extends StableID>(state: LinearLayoutState<ID>, index: number): VirtualRect | null;
|
|
77
81
|
export declare function collectionWindowEventForLinearPlan<ID extends StableID>(plan: VirtualLayoutPlan<ID>, collection: CollectionWindowState<ID>, loadedDomain: Sequence<ID>): VirtualResult<CollectionWindowEvent<ID> | null>;
|
|
78
82
|
export {};
|
|
79
|
-
//# sourceMappingURL=linear-layout.d.ts.map
|
package/dist/linear-layout.js
CHANGED
|
@@ -35,7 +35,11 @@ export function snapshotLinearLayout(state) {
|
|
|
35
35
|
if (extents === null)
|
|
36
36
|
throw new Error('Internal invariant breach: linear extent range is invalid.');
|
|
37
37
|
return Object.freeze({
|
|
38
|
+
schemaVersion: 1,
|
|
39
|
+
kind: 'linear',
|
|
38
40
|
ids: Object.freeze([...state.domain.ids]),
|
|
41
|
+
sequenceMaxItems: state.domain.maxItems,
|
|
42
|
+
sequenceMaxIDCodeUnits: state.domain.maxIDCodeUnits,
|
|
39
43
|
extents,
|
|
40
44
|
extentMaxItems: state.extents.maxItems,
|
|
41
45
|
axis: state.axis,
|
|
@@ -53,7 +57,8 @@ export function tryRestoreLinearLayout(snapshot) {
|
|
|
53
57
|
if (!validSnapshotHeader(snapshot))
|
|
54
58
|
return snapshotFailure();
|
|
55
59
|
const domain = tryCreateSequence(snapshot.ids, {
|
|
56
|
-
maxItems:
|
|
60
|
+
maxItems: snapshot.sequenceMaxItems,
|
|
61
|
+
maxIDCodeUnits: snapshot.sequenceMaxIDCodeUnits,
|
|
57
62
|
});
|
|
58
63
|
if (!domain.ok)
|
|
59
64
|
return domain;
|
|
@@ -148,7 +153,7 @@ export function tryApplyLinearPatch(state, input, anchor = null) {
|
|
|
148
153
|
return fail('transition-rejection', 'virtual-layout-inserted-extents-mismatch', 'Every inserted identity requires one extent.');
|
|
149
154
|
if (input.patch.type === 'move' && inserted.length !== 0)
|
|
150
155
|
return fail('transition-rejection', 'virtual-layout-inserted-extents-mismatch', 'Move patches cannot insert extents.');
|
|
151
|
-
const domain = tryApplySequencePatch(state.domain, input.patch
|
|
156
|
+
const domain = tryApplySequencePatch(state.domain, input.patch);
|
|
152
157
|
if (!domain.ok)
|
|
153
158
|
return domain;
|
|
154
159
|
const extents = input.patch.type === 'splice'
|
|
@@ -159,9 +164,12 @@ export function tryApplyLinearPatch(state, input, anchor = null) {
|
|
|
159
164
|
const generation = nextGeneration(state.generation);
|
|
160
165
|
if (!generation.ok)
|
|
161
166
|
return generation;
|
|
162
|
-
const before = anchorRect(state, anchor);
|
|
163
167
|
const next = freezeState({ ...state, domain: domain.value, extents: extents.value, generation: generation.value });
|
|
164
|
-
|
|
168
|
+
const activeAnchor = survivingLinearAnchor(state, next, anchor);
|
|
169
|
+
return ok(Object.freeze({
|
|
170
|
+
state: next,
|
|
171
|
+
scrollDelta: anchorDelta(anchorRect(state, activeAnchor), anchorRect(next, activeAnchor)),
|
|
172
|
+
}));
|
|
165
173
|
}
|
|
166
174
|
export function linearScrollTarget(state, id, viewport, alignment = 'nearest') {
|
|
167
175
|
return unwrap(tryLinearScrollTarget(state, id, viewport, alignment));
|
|
@@ -216,6 +224,28 @@ function anchorRect(state, anchor) {
|
|
|
216
224
|
const index = state.domain.indexOf(anchor.id);
|
|
217
225
|
return index === null ? null : rectAt(state, index);
|
|
218
226
|
}
|
|
227
|
+
function survivingLinearAnchor(previous, next, anchor) {
|
|
228
|
+
if (anchor === null || anchor === undefined)
|
|
229
|
+
return null;
|
|
230
|
+
if (next.domain.indexOf(anchor.id) !== null)
|
|
231
|
+
return anchor;
|
|
232
|
+
const anchorIndex = previous.domain.indexOf(anchor.id);
|
|
233
|
+
if (anchorIndex === null)
|
|
234
|
+
return null;
|
|
235
|
+
for (let index = anchorIndex + 1; index < previous.domain.size; index += 1) {
|
|
236
|
+
const id = previous.domain.at(index);
|
|
237
|
+
if (id !== null && next.domain.indexOf(id) !== null) {
|
|
238
|
+
return Object.freeze({ id, viewportOffset: anchor.viewportOffset });
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
for (let index = anchorIndex - 1; index >= 0; index -= 1) {
|
|
242
|
+
const id = previous.domain.at(index);
|
|
243
|
+
if (id !== null && next.domain.indexOf(id) !== null) {
|
|
244
|
+
return Object.freeze({ id, viewportOffset: anchor.viewportOffset });
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
219
249
|
function anchorDelta(before, after) { return before === null || after === null ? ZERO_POINT : pointDelta(before, after); }
|
|
220
250
|
function mainContentExtent(state) { return trackContentExtent(state.extents, state.gap); }
|
|
221
251
|
function sizeOf(state) {
|
|
@@ -232,8 +262,14 @@ function freezeState(state) {
|
|
|
232
262
|
function validSnapshotHeader(snapshot) {
|
|
233
263
|
return snapshot !== null
|
|
234
264
|
&& typeof snapshot === 'object'
|
|
265
|
+
&& snapshot.schemaVersion === 1
|
|
266
|
+
&& snapshot.kind === 'linear'
|
|
235
267
|
&& Array.isArray(snapshot.ids)
|
|
236
268
|
&& Array.isArray(snapshot.extents)
|
|
269
|
+
&& Number.isSafeInteger(snapshot.sequenceMaxItems)
|
|
270
|
+
&& snapshot.sequenceMaxItems >= snapshot.ids.length
|
|
271
|
+
&& Number.isSafeInteger(snapshot.sequenceMaxIDCodeUnits)
|
|
272
|
+
&& snapshot.sequenceMaxIDCodeUnits > 0
|
|
237
273
|
&& Number.isSafeInteger(snapshot.generation)
|
|
238
274
|
&& snapshot.generation >= 0
|
|
239
275
|
&& Number.isSafeInteger(snapshot.extentMaxItems)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear-layout.js","sourceRoot":"","sources":["../src/linear-layout.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"linear-layout.js","sourceRoot":"","sources":["../src/linear-layout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAA0D,MAAM,iCAAiC,CAAC;AACrI,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAqC,MAAM,wBAAwB,CAAC;AACrH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAoD,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACL,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,GAIhG,MAAM,aAAa,CAAC;AAKrB,MAAM,sBAAsB,GAAkB,MAAM,CAAC,0BAA0B,CAAC,CAAC;AA0CjF,MAAM,CAAC,MAAM,oBAAoB,GAAuF,MAAM,CAAC,MAAM,CAAC;IACpI,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,KAAwB,EAAE,KAAwB,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;IACpG,UAAU,EAAE,CAAC,KAAwB,EAAE,KAAiD,EAAE,EAAE,CAAC,0BAA0B,CAAC,KAAK,EAAE,KAAK,CAAC;IACrI,SAAS,EAAE,CAAC,KAAwB,EAAE,KAAiF,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;IACpL,eAAe,EAAE,CAAC,KAAwB,EAAE,EAAY,EAAE,QAAqB,EAAE,SAAkC,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC;CAC9K,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAsB,MAAoB,EAAE,OAAoB,EAAE,KAAK,GAAsB,EAAE;IAC/H,OAAO,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAsB,MAAoB,EAAE,OAAoB,EAAE,KAAK,GAAsB,EAAE;IAClI,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,cAAc,EAAE,gCAAgC,EAAE,yDAAyD,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAClN,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IACrC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC;WAC3F,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QACnG,OAAO,eAAe,CAAC,yDAAyD,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAA4B;IAE5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,IAAI;QAClB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,aAAa,EAAE,CAAC;QAChB,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;QACvC,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;QACnD,OAAO;QACP,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;QACtC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAkC;IAElC,OAAO,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAkC;IAElC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QAAE,OAAO,eAAe,EAAE,CAAC;IAC7D,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC7C,QAAQ,EAAE,QAAQ,CAAC,gBAAgB;QACnC,cAAc,EAAE,QAAQ,CAAC,sBAAsB;KAChD,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC;IAC9B,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,OAAO,EAAE;QACrD,QAAQ,EAAE,QAAQ,CAAC,cAAc;KAClC,CAAC,CAAC;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9E,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAsB,KAA4B,EAAE,KAAwB;IAC3G,OAAO,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAsB,KAA4B,EAAE,KAAwB;IAC9G,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC;IAC9B,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAChD,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtF,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,cAAc,EAAE,gCAAgC,EAAE,uDAAuD,CAAC,CAAC;IAC7I,IAAI,YAAY,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;IAClH,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;QAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACzE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC;QAC9G,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,UAAU;YACpC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAClG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACrG,YAAY,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;QAClC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC;YAAE,SAAS;QACtE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACzC,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACzL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAsB,KAA4B,EAAE,KAAwB;IAC3G,OAAO,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAsB,KAA4B,EAAE,KAAwB;IAC9G,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,MAAmB,EAAoD,EAAE;QACtF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACzG,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ;QACnC,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY;QAC3C,WAAW,EAAE,MAAM,CAAC,KAAK;QACzB,SAAS,EAAE,MAAM,CAAC,GAAG;QACrB,YAAY,EAAE,OAAO,CAAC,KAAK;QAC3B,UAAU,EAAE,OAAO,CAAC,GAAG;KACxB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAsB,KAA4B,EAAE,KAAqD;IAC9I,OAAO,MAAM,CAAC,0BAA0B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAsB,KAA4B,EAAE,KAAqD;IACjJ,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,kCAAkC,EAAE,kCAAkC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7N,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAClG,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAuC,CAAC,CAAC;IACpF,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7F,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9G,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAsB,KAA4B,EAAE,KAAsB,EAAE,MAAM,GAA6B,IAAI;IACjJ,OAAO,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAsB,KAA4B,EAAE,KAAsB,EAAE,MAAM,GAA6B,IAAI;IACpJ,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC;IAC7C,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,0CAA0C,EAAE,8CAA8C,CAAC,CAAC;IACtN,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,0CAA0C,EAAE,qCAAqC,CAAC,CAAC;IACjL,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC3C,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC;QAC5E,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5E,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IACnH,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QACtB,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,WAAW,CACtB,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,EAC/B,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAC/B;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAsB,KAA4B,EAAE,EAAM,EAAE,QAAqB,EAAE,SAAS,GAA2B,SAAS;IAChK,OAAO,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAsB,KAA4B,EAAE,EAAM,EAAE,QAAqB,EAAE,SAAS,GAA2B,SAAS;IACnK,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,sCAAsC,EAAE,gDAAgD,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzJ,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;QAC/C,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;QACxH,CAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5H,CAAC;AAED,MAAM,UAAU,YAAY,CAAsB,KAA4B,EAAE,KAAa;IAC3F,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,IAA2B,EAC3B,UAAqC,EACrC,YAA0B;IAE1B,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,gCAAgC,EAAE,+DAA+D,CAAC,CAAC;IAClL,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IACjF,IAAI,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC1C,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC3C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QACrD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,SAAS,CAAC,OAAO;YAAE,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;IACrD,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC;IACnD,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,MAAM,SAAS,GAAG,YAAY,GAAG,UAAU,CAAC,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3H,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9F,MAAM,MAAM,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACpG,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,MAAM,CAAsB,KAA4B,EAAE,KAAa;IAC9E,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;QAC9B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACvG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5G,CAAC;AAED,SAAS,UAAU,CAAsB,KAA4B,EAAE,MAA4C;IACjH,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9C,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAA+B,EAC/B,IAA2B,EAC3B,MAA4C;IAE5C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACtC,KAAK,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3E,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,KAAK,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,MAA0B,EAAE,KAAyB,IAAkB,OAAO,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAChL,SAAS,iBAAiB,CAAsB,KAA4B,IAAY,OAAO,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9I,SAAS,MAAM,CAAsB,KAA4B;IAC/D,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACpL,CAAC;AACD,SAAS,SAAS,CAAC,IAAgB,EAAE,IAAiB,IAAY,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjH,SAAS,UAAU,CAAC,IAAgB,EAAE,IAAiB,IAAY,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3H,SAAS,cAAc,CAAC,UAAkB,IAA2B,OAAO,UAAU,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,qCAAqC,EAAE,qDAAqD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrQ,SAAS,WAAW,CAAsB,KAAiE;IACzG,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,sBAAsB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAA0B,CAAC;AACvD,CAAC;AACD,SAAS,mBAAmB,CAAsB,QAAkC;IAClF,OAAO,QAAQ,KAAK,IAAI;WACnB,OAAO,QAAQ,KAAK,QAAQ;WAC5B,QAAQ,CAAC,aAAa,KAAK,CAAC;WAC5B,QAAQ,CAAC,IAAI,KAAK,QAAQ;WAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;WAC3B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;WAC/B,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC;WAC/C,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM;WAChD,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,sBAAsB,CAAC;WACrD,QAAQ,CAAC,sBAAsB,GAAG,CAAC;WACnC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;WACzC,QAAQ,CAAC,UAAU,IAAI,CAAC;WACxB,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC;WAC7C,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1D,CAAC;AACD,SAAS,eAAe,KAA0B,OAAO,IAAI,CAAC,cAAc,EAAE,iCAAiC,EAAE,oCAAoC,CAAC,CAAC,CAAC,CAAC;AACzJ,SAAS,iBAAiB,CAAC,KAAa,IAAa,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AACnG,SAAS,eAAe,CAAI,OAAe,IAAsB,OAAO,IAAI,CAAC,cAAc,EAAE,iCAAiC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/masonry-layout.d.ts
CHANGED
|
@@ -21,7 +21,11 @@ export interface MasonryLayoutState<ID extends StableID = StableID> {
|
|
|
21
21
|
readonly generation: number;
|
|
22
22
|
}
|
|
23
23
|
export interface MasonryLayoutSnapshot<ID extends StableID = StableID> {
|
|
24
|
+
readonly schemaVersion: 1;
|
|
25
|
+
readonly kind: 'masonry';
|
|
24
26
|
readonly ids: readonly ID[];
|
|
27
|
+
readonly sequenceMaxItems: number;
|
|
28
|
+
readonly sequenceMaxIDCodeUnits: number;
|
|
25
29
|
readonly extents: readonly Extent[];
|
|
26
30
|
readonly extentMaxItems: number;
|
|
27
31
|
readonly axis: LinearAxis;
|
|
@@ -84,4 +88,3 @@ export declare function masonryScrollTarget<ID extends StableID>(state: MasonryL
|
|
|
84
88
|
export declare function tryMasonryScrollTarget<ID extends StableID>(state: MasonryLayoutState<ID>, id: ID, viewport: VirtualRect, alignment?: VirtualScrollAlignment): VirtualResult<VirtualPoint>;
|
|
85
89
|
export declare function masonryRectAt<ID extends StableID>(state: MasonryLayoutState<ID>, id: ID): VirtualRect | null;
|
|
86
90
|
export {};
|
|
87
|
-
//# sourceMappingURL=masonry-layout.d.ts.map
|
package/dist/masonry-layout.js
CHANGED
|
@@ -29,7 +29,11 @@ export function snapshotMasonryLayout(state) {
|
|
|
29
29
|
if (extents === null)
|
|
30
30
|
throw new Error('Internal invariant breach: masonry extent range is invalid.');
|
|
31
31
|
return Object.freeze({
|
|
32
|
+
schemaVersion: 1,
|
|
33
|
+
kind: 'masonry',
|
|
32
34
|
ids: Object.freeze([...state.domain.ids]),
|
|
35
|
+
sequenceMaxItems: state.domain.maxItems,
|
|
36
|
+
sequenceMaxIDCodeUnits: state.domain.maxIDCodeUnits,
|
|
33
37
|
extents,
|
|
34
38
|
extentMaxItems: state.extents.maxItems,
|
|
35
39
|
axis: state.axis,
|
|
@@ -50,7 +54,8 @@ export function tryRestoreMasonryLayout(snapshot) {
|
|
|
50
54
|
if (!validSnapshotHeader(snapshot))
|
|
51
55
|
return snapshotFailure();
|
|
52
56
|
const domain = tryCreateSequence(snapshot.ids, {
|
|
53
|
-
maxItems:
|
|
57
|
+
maxItems: snapshot.sequenceMaxItems,
|
|
58
|
+
maxIDCodeUnits: snapshot.sequenceMaxIDCodeUnits,
|
|
54
59
|
});
|
|
55
60
|
if (!domain.ok)
|
|
56
61
|
return domain;
|
|
@@ -114,7 +119,13 @@ export function tryApplyMasonryMeasurements(state, batch) {
|
|
|
114
119
|
const generation = nextGeneration(state.generation);
|
|
115
120
|
if (!generation.ok)
|
|
116
121
|
return generation;
|
|
117
|
-
const
|
|
122
|
+
const data = getInternals(state);
|
|
123
|
+
if (!data.ok)
|
|
124
|
+
return data;
|
|
125
|
+
const next = createState({ ...state, extents: updated.value, generation: generation.value }, {
|
|
126
|
+
previous: data.value,
|
|
127
|
+
recomputeStart: firstChangedExtentIndex(state.extents, batch.measurements),
|
|
128
|
+
});
|
|
118
129
|
return ok(Object.freeze({ state: next, scrollDelta: anchorDelta(before, anchorRect(next, batch.anchor)) }));
|
|
119
130
|
}
|
|
120
131
|
export function applyMasonryMutation(state, mutation, anchor = null) {
|
|
@@ -125,14 +136,14 @@ export function tryApplyMasonryMutation(state, mutation, anchor = null) {
|
|
|
125
136
|
return fail('transition-rejection', 'virtual-layout-mutation-invalid', 'Masonry mutation type is unsupported.', { mutation });
|
|
126
137
|
const before = anchorRect(state, anchor);
|
|
127
138
|
let partial;
|
|
139
|
+
let recomputeStart = null;
|
|
128
140
|
if (mutation.type === 'items') {
|
|
129
141
|
const inserted = mutation.insertedExtents ?? [];
|
|
130
142
|
if (mutation.patch.type === 'splice' && inserted.length !== mutation.patch.inserted.length)
|
|
131
143
|
return fail('transition-rejection', 'virtual-layout-inserted-extents-mismatch', 'Every inserted identity requires one extent.');
|
|
132
144
|
if (mutation.patch.type === 'move' && inserted.length !== 0)
|
|
133
145
|
return fail('transition-rejection', 'virtual-layout-inserted-extents-mismatch', 'Move patches cannot insert extents.');
|
|
134
|
-
const
|
|
135
|
-
const domain = tryApplySequencePatch(state.domain, mutation.patch, { maxItems: Math.max(1, size) });
|
|
146
|
+
const domain = tryApplySequencePatch(state.domain, mutation.patch);
|
|
136
147
|
if (!domain.ok)
|
|
137
148
|
return domain;
|
|
138
149
|
const extents = mutation.patch.type === 'splice'
|
|
@@ -141,6 +152,9 @@ export function tryApplyMasonryMutation(state, mutation, anchor = null) {
|
|
|
141
152
|
if (!extents.ok)
|
|
142
153
|
return extents;
|
|
143
154
|
partial = { ...state, domain: domain.value, extents: extents.value };
|
|
155
|
+
recomputeStart = mutation.patch.type === 'splice'
|
|
156
|
+
? mutation.patch.index
|
|
157
|
+
: Math.min(mutation.patch.from, mutation.patch.to);
|
|
144
158
|
}
|
|
145
159
|
else {
|
|
146
160
|
const geometry = normalizeGeometry({
|
|
@@ -160,7 +174,15 @@ export function tryApplyMasonryMutation(state, mutation, anchor = null) {
|
|
|
160
174
|
const generation = nextGeneration(state.generation);
|
|
161
175
|
if (!generation.ok)
|
|
162
176
|
return generation;
|
|
163
|
-
const
|
|
177
|
+
const data = recomputeStart === null ? null : getInternals(state);
|
|
178
|
+
if (data !== null && !data.ok)
|
|
179
|
+
return data;
|
|
180
|
+
const next = createState({ ...partial, generation: generation.value }, data === null
|
|
181
|
+
? undefined
|
|
182
|
+
: {
|
|
183
|
+
previous: data.value,
|
|
184
|
+
recomputeStart: Math.min(recomputeStart ?? 0, partial.domain.size),
|
|
185
|
+
});
|
|
164
186
|
return ok(Object.freeze({ state: next, scrollDelta: anchorDelta(before, anchorRect(next, anchor)) }));
|
|
165
187
|
}
|
|
166
188
|
export function masonryScrollTarget(state, id, viewport, alignment = 'nearest') {
|
|
@@ -170,7 +192,8 @@ export function tryMasonryScrollTarget(state, id, viewport, alignment = 'nearest
|
|
|
170
192
|
const data = getInternals(state);
|
|
171
193
|
if (!data.ok)
|
|
172
194
|
return data;
|
|
173
|
-
const
|
|
195
|
+
const index = state.domain.indexOf(id);
|
|
196
|
+
const logical = index === null ? undefined : data.value.placements[index];
|
|
174
197
|
if (logical === undefined)
|
|
175
198
|
return fail('transition-rejection', 'virtual-layout-scroll-target-invalid', 'Scroll target must exist in the masonry domain.', { id });
|
|
176
199
|
const rect = placementRect(state, data.value.contentMain, logical);
|
|
@@ -181,35 +204,50 @@ export function tryMasonryScrollTarget(state, id, viewport, alignment = 'nearest
|
|
|
181
204
|
}
|
|
182
205
|
export function masonryRectAt(state, id) {
|
|
183
206
|
const data = internals.get(state);
|
|
184
|
-
const
|
|
207
|
+
const index = state.domain.indexOf(id);
|
|
208
|
+
const logical = index === null ? undefined : data?.placements[index];
|
|
185
209
|
return logical === undefined || data === undefined ? null : placementRect(state, data.contentMain, logical);
|
|
186
210
|
}
|
|
187
|
-
function createState(state) {
|
|
211
|
+
function createState(state, reuse) {
|
|
188
212
|
Object.defineProperty(state, masonryLayoutStateBrand, { value: true });
|
|
189
213
|
const frozen = Object.freeze(state);
|
|
190
|
-
internals.set(frozen, buildInternals(frozen));
|
|
214
|
+
internals.set(frozen, buildInternals(frozen, reuse));
|
|
191
215
|
return frozen;
|
|
192
216
|
}
|
|
193
|
-
function buildInternals(state) {
|
|
217
|
+
function buildInternals(state, reuse) {
|
|
194
218
|
const laneEnds = Array(state.laneCount).fill(0);
|
|
219
|
+
const lanes = Array.from({ length: state.laneCount }, () => []);
|
|
220
|
+
const recomputeStart = reuse === undefined
|
|
221
|
+
? 0
|
|
222
|
+
: Math.min(Math.max(0, reuse.recomputeStart), state.domain.size);
|
|
223
|
+
const placements = reuse === undefined
|
|
224
|
+
? []
|
|
225
|
+
: reuse.previous.placements.slice(0, recomputeStart);
|
|
226
|
+
if (reuse !== undefined && recomputeStart > 0) {
|
|
227
|
+
for (let lane = 0; lane < state.laneCount; lane += 1) {
|
|
228
|
+
const previous = reuse.previous.lanes[lane] ?? [];
|
|
229
|
+
const end = firstIndexAtOrAfter(previous, recomputeStart);
|
|
230
|
+
const prefix = previous.slice(0, end);
|
|
231
|
+
lanes[lane].push(...prefix);
|
|
232
|
+
const last = prefix[prefix.length - 1];
|
|
233
|
+
if (last !== undefined)
|
|
234
|
+
laneEnds[lane] = last.start + last.extent + state.itemGap;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
195
237
|
const heap = state.placementPolicy === 'shortest' && state.laneCount > 16
|
|
196
|
-
? Array.from({ length: state.laneCount }, (_, lane) => ({ lane, end:
|
|
238
|
+
? Array.from({ length: state.laneCount }, (_, lane) => ({ lane, end: laneEnds[lane] })).sort(compareLane)
|
|
197
239
|
: null;
|
|
198
|
-
const
|
|
199
|
-
const placements = [];
|
|
200
|
-
const byID = new Map();
|
|
201
|
-
const extents = state.extents.slice(0, state.extents.size);
|
|
240
|
+
const extents = state.extents.slice(recomputeStart, state.extents.size);
|
|
202
241
|
if (extents === null)
|
|
203
242
|
throw new Error('Internal invariant breach: masonry extent range is invalid.');
|
|
204
|
-
for (let index =
|
|
243
|
+
for (let index = recomputeStart; index < state.domain.size; index += 1) {
|
|
205
244
|
const id = state.domain.at(index);
|
|
206
|
-
const extent = extentValue(extents[index]);
|
|
245
|
+
const extent = extentValue(extents[index - recomputeStart]);
|
|
207
246
|
const lane = state.placementPolicy === 'round-robin' ? index % state.laneCount : heap === null ? shortestLane(laneEnds) : heap[0].lane;
|
|
208
247
|
const start = laneEnds[lane];
|
|
209
|
-
const placement =
|
|
248
|
+
const placement = { id, index, lane, start, extent };
|
|
210
249
|
placements.push(placement);
|
|
211
250
|
lanes[lane].push(placement);
|
|
212
|
-
byID.set(id, placement);
|
|
213
251
|
laneEnds[lane] = start + extent + state.itemGap;
|
|
214
252
|
if (heap !== null) {
|
|
215
253
|
heap[0] = { lane, end: laneEnds[lane] };
|
|
@@ -219,7 +257,29 @@ function buildInternals(state) {
|
|
|
219
257
|
let contentMain = 0;
|
|
220
258
|
for (const end of laneEnds)
|
|
221
259
|
contentMain = Math.max(contentMain, end === 0 ? 0 : end - state.itemGap);
|
|
222
|
-
return Object.freeze({ placements: Object.freeze(placements), lanes: Object.freeze(lanes.map((lane) => Object.freeze(lane))),
|
|
260
|
+
return Object.freeze({ placements: Object.freeze(placements), lanes: Object.freeze(lanes.map((lane) => Object.freeze(lane))), contentMain });
|
|
261
|
+
}
|
|
262
|
+
function firstIndexAtOrAfter(lane, itemIndex) {
|
|
263
|
+
let low = 0;
|
|
264
|
+
let high = lane.length;
|
|
265
|
+
while (low < high) {
|
|
266
|
+
const middle = (low + high) >>> 1;
|
|
267
|
+
if (lane[middle].index < itemIndex)
|
|
268
|
+
low = middle + 1;
|
|
269
|
+
else
|
|
270
|
+
high = middle;
|
|
271
|
+
}
|
|
272
|
+
return low;
|
|
273
|
+
}
|
|
274
|
+
function firstChangedExtentIndex(index, measurements) {
|
|
275
|
+
let first = index.size;
|
|
276
|
+
for (const measurement of measurements) {
|
|
277
|
+
const previous = index.extentAt(measurement.index);
|
|
278
|
+
if (previous === null || extentValue(previous) !== extentValue(measurement.extent)) {
|
|
279
|
+
first = Math.min(first, measurement.index);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return first;
|
|
223
283
|
}
|
|
224
284
|
function normalizeGeometry(input) {
|
|
225
285
|
const axis = input.axis ?? 'vertical';
|
|
@@ -309,8 +369,14 @@ function getInternals(state) {
|
|
|
309
369
|
function validSnapshotHeader(snapshot) {
|
|
310
370
|
return snapshot !== null
|
|
311
371
|
&& typeof snapshot === 'object'
|
|
372
|
+
&& snapshot.schemaVersion === 1
|
|
373
|
+
&& snapshot.kind === 'masonry'
|
|
312
374
|
&& Array.isArray(snapshot.ids)
|
|
313
375
|
&& Array.isArray(snapshot.extents)
|
|
376
|
+
&& Number.isSafeInteger(snapshot.sequenceMaxItems)
|
|
377
|
+
&& snapshot.sequenceMaxItems >= snapshot.ids.length
|
|
378
|
+
&& Number.isSafeInteger(snapshot.sequenceMaxIDCodeUnits)
|
|
379
|
+
&& snapshot.sequenceMaxIDCodeUnits > 0
|
|
314
380
|
&& Number.isSafeInteger(snapshot.generation)
|
|
315
381
|
&& snapshot.generation >= 0
|
|
316
382
|
&& Number.isSafeInteger(snapshot.extentMaxItems)
|