@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
package/dist/spatial-layout.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { StableID } from '@sectile/core';
|
|
2
2
|
import type { VirtualResult } from './error.js';
|
|
3
|
-
import { type Sequence } from '@sectile/core/sequence';
|
|
4
|
-
import { type VirtualAnchor, type VirtualLayoutMutation, type VirtualLayoutPlan, type VirtualLayoutStrategy, type VirtualMeasurementBatch, type VirtualPlacement, type VirtualPoint, type VirtualQueryInput, type VirtualRect, type VirtualScrollAlignment } from './layout.js';
|
|
3
|
+
import { type Sequence, type SequencePatch } from '@sectile/core/sequence';
|
|
4
|
+
import { type VirtualAnchor, type VirtualLayoutMutation, type VirtualLayoutPlan, type VirtualLayoutStrategy, type VirtualMeasurementBatch, type VirtualPlacement, type VirtualPoint, type VirtualQueryInput, type VirtualIndexedView, type VirtualRect, type VirtualScrollAlignment } from './layout.js';
|
|
5
5
|
export interface SpatialItem<ID extends StableID = StableID> {
|
|
6
6
|
readonly id: ID;
|
|
7
7
|
readonly rect: VirtualRect;
|
|
@@ -11,11 +11,13 @@ declare const spatialLayoutStateBrand: unique symbol;
|
|
|
11
11
|
export interface SpatialLayoutState<ID extends StableID = StableID> {
|
|
12
12
|
readonly [spatialLayoutStateBrand]: true;
|
|
13
13
|
readonly domain: Sequence<ID>;
|
|
14
|
-
readonly items:
|
|
14
|
+
readonly items: VirtualIndexedView<SpatialItem<ID>>;
|
|
15
15
|
readonly maxItems: number;
|
|
16
16
|
readonly generation: number;
|
|
17
17
|
}
|
|
18
18
|
export interface SpatialLayoutSnapshot<ID extends StableID = StableID> {
|
|
19
|
+
readonly schemaVersion: 1;
|
|
20
|
+
readonly kind: 'spatial';
|
|
19
21
|
readonly items: readonly SpatialItem<ID>[];
|
|
20
22
|
readonly maxItems: number;
|
|
21
23
|
readonly generation: number;
|
|
@@ -34,6 +36,10 @@ export type SpatialMutation<ID extends StableID = StableID> = {
|
|
|
34
36
|
readonly type: 'update';
|
|
35
37
|
readonly upsert?: readonly SpatialItem<ID>[];
|
|
36
38
|
readonly remove?: readonly ID[];
|
|
39
|
+
} | {
|
|
40
|
+
readonly type: 'patch';
|
|
41
|
+
readonly patch: SequencePatch<ID>;
|
|
42
|
+
readonly inserted: readonly SpatialItem<ID>[];
|
|
37
43
|
};
|
|
38
44
|
export interface SpatialPlacement<ID extends StableID = StableID> extends VirtualPlacement<ID> {
|
|
39
45
|
readonly zIndex: number;
|
|
@@ -57,4 +63,3 @@ export declare function spatialScrollTarget<ID extends StableID>(state: SpatialL
|
|
|
57
63
|
export declare function trySpatialScrollTarget<ID extends StableID>(state: SpatialLayoutState<ID>, id: ID, viewport: VirtualRect, alignment?: VirtualScrollAlignment): VirtualResult<VirtualPoint>;
|
|
58
64
|
export declare function spatialRectAt<ID extends StableID>(state: SpatialLayoutState<ID>, id: ID): VirtualRect | null;
|
|
59
65
|
export {};
|
|
60
|
-
//# sourceMappingURL=spatial-layout.d.ts.map
|
package/dist/spatial-layout.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { tryCreateSequence } from '@sectile/core/sequence';
|
|
1
|
+
import { tryApplySequencePatch, tryCreateSequence, } from '@sectile/core/sequence';
|
|
2
2
|
import { unwrap } from '@sectile/core/result';
|
|
3
|
+
import { boundsOfRects, createRect, isFiniteRect } from '@sectile/core/geometry';
|
|
4
|
+
import { blockedRepairBound, createBlockedVector, createOwnedBlockedVector, useBlockedRepair } from './internal/blocked-vector.js';
|
|
3
5
|
import { fail, ok } from './internal/foundation.js';
|
|
6
|
+
import { recordRepairDiagnostics } from './internal/repair-diagnostics.js';
|
|
4
7
|
import { alignedScrollOffset, anchorForPlan, normalizeQuery, pointDelta, rectanglesIntersect, ZERO_POINT, } from './layout.js';
|
|
5
8
|
const spatialLayoutStateBrand = Symbol('SectileSpatialLayoutState');
|
|
6
|
-
const LEAF_SIZE =
|
|
9
|
+
const LEAF_SIZE = 64;
|
|
7
10
|
const internals = new WeakMap();
|
|
8
11
|
export const spatialLayoutStrategy = Object.freeze({
|
|
9
12
|
kind: 'spatial',
|
|
@@ -25,12 +28,16 @@ export function tryCreateSpatialLayout(items, input = {}) {
|
|
|
25
28
|
return ok(createState(validated.value.domain, validated.value.items, maxItems, 0));
|
|
26
29
|
}
|
|
27
30
|
export function snapshotSpatialLayout(state) {
|
|
31
|
+
const items = [];
|
|
32
|
+
state.items.forEach((item) => items.push(Object.freeze({
|
|
33
|
+
id: item.id,
|
|
34
|
+
rect: Object.freeze({ ...item.rect }),
|
|
35
|
+
...(item.zIndex === undefined ? {} : { zIndex: item.zIndex }),
|
|
36
|
+
})));
|
|
28
37
|
return Object.freeze({
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
...(item.zIndex === undefined ? {} : { zIndex: item.zIndex }),
|
|
33
|
-
}))),
|
|
38
|
+
schemaVersion: 1,
|
|
39
|
+
kind: 'spatial',
|
|
40
|
+
items: Object.freeze(items),
|
|
34
41
|
maxItems: state.maxItems,
|
|
35
42
|
generation: state.generation,
|
|
36
43
|
});
|
|
@@ -46,7 +53,7 @@ export function tryRestoreSpatialLayout(snapshot) {
|
|
|
46
53
|
});
|
|
47
54
|
if (!restored.ok)
|
|
48
55
|
return restored;
|
|
49
|
-
return ok(createState(restored.value.domain, restored.value.items, restored.value.maxItems, snapshot.generation));
|
|
56
|
+
return ok(createState(restored.value.domain, restored.value.items.toArray(), restored.value.maxItems, snapshot.generation));
|
|
50
57
|
}
|
|
51
58
|
export function querySpatialLayout(state, input) {
|
|
52
59
|
return unwrap(tryQuerySpatialLayout(state, input));
|
|
@@ -90,24 +97,81 @@ export function tryApplySpatialMeasurements(state, batch) {
|
|
|
90
97
|
return data;
|
|
91
98
|
const replacements = new Map();
|
|
92
99
|
for (const measurement of batch.measurements) {
|
|
93
|
-
|
|
100
|
+
const index = data.value.byID.get(measurement.id);
|
|
101
|
+
if (index === undefined || replacements.has(index) || !validRect(measurement.rect))
|
|
94
102
|
return fail('transition-rejection', 'virtual-layout-measurement-invalid', 'Spatial measurements require unique existing IDs and valid rectangles.', { measurement });
|
|
95
|
-
|
|
103
|
+
const current = data.value.items.at(index);
|
|
104
|
+
const rect = createRect(measurement.rect);
|
|
105
|
+
if (!sameRect(current.rect, rect))
|
|
106
|
+
replacements.set(index, Object.freeze({ ...current, rect }));
|
|
96
107
|
}
|
|
108
|
+
if (replacements.size === 0)
|
|
109
|
+
return ok(Object.freeze({ state, scrollDelta: ZERO_POINT }));
|
|
97
110
|
const before = anchorRect(state, batch.anchor);
|
|
98
|
-
const items = state.items.map((item) => replacements.has(item.id) ? Object.freeze({ ...item, rect: replacements.get(item.id) }) : item);
|
|
99
111
|
const generation = nextGeneration(state.generation);
|
|
100
112
|
if (!generation.ok)
|
|
101
113
|
return generation;
|
|
102
|
-
|
|
114
|
+
if (state.items.size < 1_024 || replacements.size >= state.items.size / 2) {
|
|
115
|
+
const items = new Array(data.value.items.size);
|
|
116
|
+
data.value.items.forEach((item, index) => { items[index] = replacements.get(index) ?? item; });
|
|
117
|
+
const next = createOwnedState(state.domain, items, state.maxItems, generation.value);
|
|
118
|
+
const blockCeiling = Math.ceil(state.items.size / LEAF_SIZE);
|
|
119
|
+
const touchedPartitions = Math.min(replacements.size, blockCeiling) * 2;
|
|
120
|
+
recordRepairDiagnostics(next, {
|
|
121
|
+
mode: 'rebuild',
|
|
122
|
+
changed: replacements.size,
|
|
123
|
+
touchedBlocks: touchedPartitions,
|
|
124
|
+
copiedNodes: 0,
|
|
125
|
+
copiedEntries: 0,
|
|
126
|
+
rebuiltItems: state.items.size,
|
|
127
|
+
repairBound: blockedRepairBound(replacements.size, state.items.size, touchedPartitions),
|
|
128
|
+
});
|
|
129
|
+
return ok(Object.freeze({ state: next, scrollDelta: anchorDelta(before, anchorRect(next, batch.anchor)) }));
|
|
130
|
+
}
|
|
131
|
+
const changes = [...replacements].sort(([left], [right]) => left - right);
|
|
132
|
+
const touchedLeaves = [...new Set(changes.map(([index]) => data.value.leafIndexByItemIndex[index]))].sort((left, right) => left - right);
|
|
133
|
+
const touchedVectorBlocks = new Set(changes.map(([index]) => Math.floor(index / LEAF_SIZE))).size;
|
|
134
|
+
const touchedPartitions = touchedVectorBlocks + touchedLeaves.length;
|
|
135
|
+
const repairBound = blockedRepairBound(changes.length, state.items.size, touchedPartitions);
|
|
136
|
+
let next;
|
|
137
|
+
if (useBlockedRepair(changes.length, state.items.size, touchedPartitions)) {
|
|
138
|
+
const vector = data.value.items.updateDetailed(changes);
|
|
139
|
+
const work = { copiedNodes: vector.copiedNodes };
|
|
140
|
+
next = createMeasuredState(state, data.value, vector.vector, touchedLeaves, generation.value, work);
|
|
141
|
+
recordRepairDiagnostics(next, {
|
|
142
|
+
mode: 'incremental',
|
|
143
|
+
changed: changes.length,
|
|
144
|
+
touchedBlocks: touchedPartitions,
|
|
145
|
+
copiedNodes: work.copiedNodes,
|
|
146
|
+
copiedEntries: vector.copiedEntries,
|
|
147
|
+
rebuiltItems: 0,
|
|
148
|
+
repairBound,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const items = new Array(data.value.items.size);
|
|
153
|
+
data.value.items.forEach((item, index) => { items[index] = replacements.get(index) ?? item; });
|
|
154
|
+
next = createOwnedState(state.domain, items, state.maxItems, generation.value);
|
|
155
|
+
recordRepairDiagnostics(next, {
|
|
156
|
+
mode: 'rebuild',
|
|
157
|
+
changed: changes.length,
|
|
158
|
+
touchedBlocks: touchedPartitions,
|
|
159
|
+
copiedNodes: 0,
|
|
160
|
+
copiedEntries: 0,
|
|
161
|
+
rebuiltItems: state.items.size,
|
|
162
|
+
repairBound,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
103
165
|
return ok(Object.freeze({ state: next, scrollDelta: anchorDelta(before, anchorRect(next, batch.anchor)) }));
|
|
104
166
|
}
|
|
105
167
|
export function applySpatialMutation(state, mutation, anchor = null) {
|
|
106
168
|
return unwrap(tryApplySpatialMutation(state, mutation, anchor));
|
|
107
169
|
}
|
|
108
170
|
export function tryApplySpatialMutation(state, mutation, anchor = null) {
|
|
109
|
-
if (mutation.type !== 'replace' && mutation.type !== 'update')
|
|
171
|
+
if (mutation.type !== 'replace' && mutation.type !== 'update' && mutation.type !== 'patch')
|
|
110
172
|
return fail('transition-rejection', 'virtual-layout-mutation-invalid', 'Spatial mutation type is unsupported.', { mutation });
|
|
173
|
+
if (mutation.type === 'patch')
|
|
174
|
+
return tryApplySpatialPatch(state, mutation, anchor);
|
|
111
175
|
let items;
|
|
112
176
|
if (mutation.type === 'replace')
|
|
113
177
|
items = mutation.items;
|
|
@@ -127,7 +191,7 @@ export function tryApplySpatialMutation(state, mutation, anchor = null) {
|
|
|
127
191
|
updated.set(item.id, item);
|
|
128
192
|
}
|
|
129
193
|
const next = [];
|
|
130
|
-
for (const item of state.items) {
|
|
194
|
+
for (const item of state.items.iterate()) {
|
|
131
195
|
if (removed.has(item.id))
|
|
132
196
|
continue;
|
|
133
197
|
next.push(updated.get(item.id) ?? item);
|
|
@@ -150,6 +214,46 @@ export function tryApplySpatialMutation(state, mutation, anchor = null) {
|
|
|
150
214
|
const next = createState(validated.value.domain, validated.value.items, state.maxItems, generation.value);
|
|
151
215
|
return ok(Object.freeze({ state: next, scrollDelta: anchorDelta(before, anchorRect(next, anchor)) }));
|
|
152
216
|
}
|
|
217
|
+
function tryApplySpatialPatch(state, mutation, anchor) {
|
|
218
|
+
if (mutation.patch.type !== 'splice') {
|
|
219
|
+
return fail('transition-rejection', 'virtual-layout-mutation-invalid', 'Spatial item patches must use splice semantics.');
|
|
220
|
+
}
|
|
221
|
+
const patch = mutation.patch;
|
|
222
|
+
if (patch.inserted.length !== mutation.inserted.length
|
|
223
|
+
|| mutation.inserted.some((item, index) => item.id !== patch.inserted[index])) {
|
|
224
|
+
return fail('transition-rejection', 'virtual-layout-mutation-invalid', 'Spatial inserted items must match the patched identities.');
|
|
225
|
+
}
|
|
226
|
+
const frozenInserted = [];
|
|
227
|
+
for (const item of mutation.inserted) {
|
|
228
|
+
if (!validRect(item.rect) || (item.zIndex !== undefined && !Number.isSafeInteger(item.zIndex))) {
|
|
229
|
+
return fail('transition-rejection', 'virtual-layout-geometry-invalid', 'Spatial items require finite non-negative rectangles and safe-integer z-indices.', { item });
|
|
230
|
+
}
|
|
231
|
+
frozenInserted.push(Object.freeze({
|
|
232
|
+
id: item.id,
|
|
233
|
+
rect: createRect(item.rect),
|
|
234
|
+
...(item.zIndex === undefined || item.zIndex === 0 ? {} : { zIndex: item.zIndex }),
|
|
235
|
+
}));
|
|
236
|
+
}
|
|
237
|
+
const domain = tryApplySequencePatch(state.domain, patch, {
|
|
238
|
+
maxItems: state.maxItems,
|
|
239
|
+
});
|
|
240
|
+
if (!domain.ok)
|
|
241
|
+
return domain;
|
|
242
|
+
const data = getInternals(state);
|
|
243
|
+
if (!data.ok)
|
|
244
|
+
return data;
|
|
245
|
+
const items = Array.from(data.value.items.iterate());
|
|
246
|
+
items.splice(patch.index, patch.deleteCount, ...frozenInserted);
|
|
247
|
+
const before = anchorRect(state, anchor);
|
|
248
|
+
const generation = nextGeneration(state.generation);
|
|
249
|
+
if (!generation.ok)
|
|
250
|
+
return generation;
|
|
251
|
+
const next = createState(domain.value, items, state.maxItems, generation.value);
|
|
252
|
+
return ok(Object.freeze({
|
|
253
|
+
state: next,
|
|
254
|
+
scrollDelta: anchorDelta(before, anchorRect(next, anchor)),
|
|
255
|
+
}));
|
|
256
|
+
}
|
|
153
257
|
export function spatialScrollTarget(state, id, viewport, alignment = 'nearest') {
|
|
154
258
|
return unwrap(trySpatialScrollTarget(state, id, viewport, alignment));
|
|
155
259
|
}
|
|
@@ -157,29 +261,55 @@ export function trySpatialScrollTarget(state, id, viewport, alignment = 'nearest
|
|
|
157
261
|
const data = getInternals(state);
|
|
158
262
|
if (!data.ok)
|
|
159
263
|
return data;
|
|
160
|
-
const
|
|
264
|
+
const index = data.value.byID.get(id);
|
|
265
|
+
const item = index === undefined ? undefined : data.value.items.at(index);
|
|
161
266
|
if (item === undefined)
|
|
162
267
|
return fail('transition-rejection', 'virtual-layout-scroll-target-invalid', 'Scroll target must exist in the spatial domain.', { id });
|
|
163
268
|
return ok(Object.freeze({
|
|
164
|
-
x: alignedScrollOffset(item.
|
|
165
|
-
y: alignedScrollOffset(item.
|
|
269
|
+
x: alignedScrollOffset(item.rect.x, item.rect.width, viewport.x, viewport.width, data.value.contentSize.width, alignment),
|
|
270
|
+
y: alignedScrollOffset(item.rect.y, item.rect.height, viewport.y, viewport.height, data.value.contentSize.height, alignment),
|
|
166
271
|
}));
|
|
167
272
|
}
|
|
168
273
|
export function spatialRectAt(state, id) {
|
|
169
|
-
|
|
274
|
+
const data = internals.get(state);
|
|
275
|
+
const index = data?.byID.get(id);
|
|
276
|
+
return index === undefined ? null : data?.items.at(index)?.rect ?? null;
|
|
170
277
|
}
|
|
171
278
|
function createState(domain, items, maxItems, generation) {
|
|
172
|
-
const
|
|
279
|
+
const vector = createBlockedVector(items);
|
|
280
|
+
return createStateFromVector(domain, vector, maxItems, generation);
|
|
281
|
+
}
|
|
282
|
+
function createOwnedState(domain, items, maxItems, generation) {
|
|
283
|
+
return createStateFromVector(domain, createOwnedBlockedVector(items), maxItems, generation);
|
|
284
|
+
}
|
|
285
|
+
function createStateFromVector(domain, vector, maxItems, generation) {
|
|
286
|
+
const mutable = { domain, items: vector.view, maxItems, generation };
|
|
173
287
|
Object.defineProperty(mutable, spatialLayoutStateBrand, { value: true });
|
|
174
288
|
const state = Object.freeze(mutable);
|
|
175
|
-
const indexed =
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
289
|
+
const indexed = [];
|
|
290
|
+
vector.forEach((value, index) => { indexed.push(Object.freeze({ value, index, zIndex: value.zIndex ?? 0 })); });
|
|
291
|
+
const packed = buildPackedTree(indexed);
|
|
292
|
+
internals.set(state, {
|
|
293
|
+
root: packed.root,
|
|
294
|
+
byID: new Map(indexed.map((item) => [item.value.id, item.index])),
|
|
295
|
+
items: vector,
|
|
296
|
+
leafIndexByItemIndex: packed.leafIndexByItemIndex,
|
|
297
|
+
contentSize: contentSize(packed.root),
|
|
298
|
+
});
|
|
299
|
+
return state;
|
|
300
|
+
}
|
|
301
|
+
function createMeasuredState(previous, data, items, touchedLeaves, generation, work) {
|
|
302
|
+
const root = data.root === null ? null : repairSpatialTree(data.root, 0, touchedLeaves, 0, touchedLeaves.length, items, work);
|
|
303
|
+
const mutable = { domain: previous.domain, items: items.view, maxItems: previous.maxItems, generation };
|
|
304
|
+
Object.defineProperty(mutable, spatialLayoutStateBrand, { value: true });
|
|
305
|
+
const state = Object.freeze(mutable);
|
|
306
|
+
internals.set(state, {
|
|
307
|
+
root,
|
|
308
|
+
byID: data.byID,
|
|
309
|
+
items,
|
|
310
|
+
leafIndexByItemIndex: data.leafIndexByItemIndex,
|
|
311
|
+
contentSize: contentSize(root),
|
|
312
|
+
});
|
|
183
313
|
return state;
|
|
184
314
|
}
|
|
185
315
|
function validateItems(items, maxItems) {
|
|
@@ -192,26 +322,73 @@ function validateItems(items, maxItems) {
|
|
|
192
322
|
for (const item of items) {
|
|
193
323
|
if (!validRect(item.rect) || (item.zIndex !== undefined && (!Number.isSafeInteger(item.zIndex))))
|
|
194
324
|
return fail('construction', 'virtual-layout-geometry-invalid', 'Spatial items require finite non-negative rectangles and safe-integer z-indices.', { item });
|
|
195
|
-
frozen.push(Object.freeze({ id: item.id, rect:
|
|
325
|
+
frozen.push(Object.freeze({ id: item.id, rect: createRect(item.rect), ...(item.zIndex === undefined || item.zIndex === 0 ? {} : { zIndex: item.zIndex }) }));
|
|
196
326
|
}
|
|
197
327
|
return ok(Object.freeze({ domain: domain.value, items: Object.freeze(frozen) }));
|
|
198
328
|
}
|
|
199
329
|
function buildPackedTree(items) {
|
|
200
330
|
if (items.length === 0)
|
|
201
|
-
return null;
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
331
|
+
return Object.freeze({ root: null, leafIndexByItemIndex: Object.freeze([]) });
|
|
332
|
+
const leafIndexByItemIndex = [];
|
|
333
|
+
let level = packedGroups(items, (item) => item.value.rect).map((group, leafIndex) => {
|
|
334
|
+
for (const item of group)
|
|
335
|
+
leafIndexByItemIndex[item.index] = leafIndex;
|
|
336
|
+
return Object.freeze({
|
|
337
|
+
bounds: boundsOfRects(group.map((item) => item.value.rect)),
|
|
338
|
+
items: Object.freeze(group),
|
|
339
|
+
children: null,
|
|
340
|
+
leafCount: 1,
|
|
341
|
+
});
|
|
342
|
+
});
|
|
207
343
|
while (level.length > 1) {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
344
|
+
const next = [];
|
|
345
|
+
for (let start = 0; start < level.length; start += 2) {
|
|
346
|
+
const children = level.slice(start, start + 2);
|
|
347
|
+
next.push(Object.freeze({
|
|
348
|
+
bounds: boundsOfRects(children.map((node) => node.bounds)),
|
|
349
|
+
items: null,
|
|
350
|
+
children: Object.freeze(children),
|
|
351
|
+
leafCount: children.reduce((total, child) => total + child.leafCount, 0),
|
|
352
|
+
}));
|
|
353
|
+
}
|
|
354
|
+
level = next;
|
|
355
|
+
}
|
|
356
|
+
return Object.freeze({ root: level[0], leafIndexByItemIndex: Object.freeze(leafIndexByItemIndex) });
|
|
357
|
+
}
|
|
358
|
+
function repairSpatialTree(node, leafStart, touched, from, to, items, work) {
|
|
359
|
+
if (from === to)
|
|
360
|
+
return node;
|
|
361
|
+
if (node.items !== null) {
|
|
362
|
+
work.copiedNodes += 1;
|
|
363
|
+
const repaired = node.items.map((item) => Object.freeze({ ...item, value: items.at(item.index) }));
|
|
364
|
+
return Object.freeze({
|
|
365
|
+
bounds: boundsOfRects(repaired.map((item) => item.value.rect)),
|
|
366
|
+
items: Object.freeze(repaired),
|
|
367
|
+
children: null,
|
|
368
|
+
leafCount: 1,
|
|
369
|
+
});
|
|
213
370
|
}
|
|
214
|
-
|
|
371
|
+
const children = node.children;
|
|
372
|
+
const leftLeaves = children[0].leafCount;
|
|
373
|
+
const boundary = leafStart + leftLeaves;
|
|
374
|
+
let middle = from;
|
|
375
|
+
while (middle < to && touched[middle] < boundary)
|
|
376
|
+
middle += 1;
|
|
377
|
+
const left = repairSpatialTree(children[0], leafStart, touched, from, middle, items, work);
|
|
378
|
+
const right = children.length === 1 ? null : repairSpatialTree(children[1], boundary, touched, middle, to, items, work);
|
|
379
|
+
const repairedChildren = right === null ? Object.freeze([left]) : Object.freeze([left, right]);
|
|
380
|
+
work.copiedNodes += 1;
|
|
381
|
+
return Object.freeze({
|
|
382
|
+
bounds: boundsOfRects(repairedChildren.map((child) => child.bounds)),
|
|
383
|
+
items: null,
|
|
384
|
+
children: repairedChildren,
|
|
385
|
+
leafCount: node.leafCount,
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
function contentSize(root) {
|
|
389
|
+
return root === null
|
|
390
|
+
? Object.freeze({ width: 0, height: 0 })
|
|
391
|
+
: Object.freeze({ width: root.bounds.x + root.bounds.width, height: root.bounds.y + root.bounds.height });
|
|
215
392
|
}
|
|
216
393
|
function queryNode(node, bounds, output) {
|
|
217
394
|
if (node === null || !rectanglesIntersect(node.bounds, bounds))
|
|
@@ -240,27 +417,16 @@ function packedGroups(values, rectOf) {
|
|
|
240
417
|
}
|
|
241
418
|
return groups;
|
|
242
419
|
}
|
|
243
|
-
function boundsOfRects(rects) {
|
|
244
|
-
let minX = Number.POSITIVE_INFINITY;
|
|
245
|
-
let minY = Number.POSITIVE_INFINITY;
|
|
246
|
-
let maxX = 0;
|
|
247
|
-
let maxY = 0;
|
|
248
|
-
for (const rect of rects) {
|
|
249
|
-
minX = Math.min(minX, rect.x);
|
|
250
|
-
minY = Math.min(minY, rect.y);
|
|
251
|
-
maxX = Math.max(maxX, rect.x + rect.width);
|
|
252
|
-
maxY = Math.max(maxY, rect.y + rect.height);
|
|
253
|
-
}
|
|
254
|
-
return Object.freeze({ x: minX, y: minY, width: maxX - minX, height: maxY - minY });
|
|
255
|
-
}
|
|
256
420
|
function center(rect, axis) { return axis === 'x' ? rect.x + rect.width / 2 : rect.y + rect.height / 2; }
|
|
257
|
-
function
|
|
258
|
-
function
|
|
421
|
+
function sameRect(left, right) { return left.x === right.x && left.y === right.y && left.width === right.width && left.height === right.height; }
|
|
422
|
+
function validRect(rect) { return isFiniteRect(rect) && rect.x >= 0 && rect.y >= 0; }
|
|
259
423
|
function anchorRect(state, anchor) { return anchor === null || anchor === undefined ? null : spatialRectAt(state, anchor.id); }
|
|
260
424
|
function getInternals(state) { const value = internals.get(state); return value === undefined ? fail('construction', 'virtual-layout-domain-mismatch', 'Spatial state must be created by createSpatialLayout().') : ok(value); }
|
|
261
425
|
function validSnapshotHeader(snapshot) {
|
|
262
426
|
return snapshot !== null
|
|
263
427
|
&& typeof snapshot === 'object'
|
|
428
|
+
&& snapshot.schemaVersion === 1
|
|
429
|
+
&& snapshot.kind === 'spatial'
|
|
264
430
|
&& Array.isArray(snapshot.items)
|
|
265
431
|
&& Number.isSafeInteger(snapshot.maxItems)
|
|
266
432
|
&& snapshot.maxItems >= snapshot.items.length
|
|
@@ -270,5 +436,4 @@ function validSnapshotHeader(snapshot) {
|
|
|
270
436
|
function snapshotFailure() { return fail('construction', 'virtual-layout-snapshot-invalid', 'Spatial layout snapshot is invalid.'); }
|
|
271
437
|
function anchorDelta(before, after) { return before === null || after === null ? ZERO_POINT : pointDelta(before, after); }
|
|
272
438
|
function nextGeneration(generation) { return generation === Number.MAX_SAFE_INTEGER ? fail('resource-rejection', 'virtual-layout-generation-exhausted', 'Layout generation reached the safe-integer ceiling.') : ok(generation + 1); }
|
|
273
|
-
function finiteNonNegative(value) { return Number.isFinite(value) && value >= 0; }
|
|
274
439
|
//# sourceMappingURL=spatial-layout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spatial-layout.js","sourceRoot":"","sources":["../src/spatial-layout.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spatial-layout.js","sourceRoot":"","sources":["../src/spatial-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { StableID } from '@sectile/core';
|
|
2
2
|
import type { VirtualResult } from './error.js';
|
|
3
|
+
import { type SequencePatch } from '@sectile/core/sequence';
|
|
3
4
|
import { type Extent, type ExtentIndex } from './extent-index.js';
|
|
4
5
|
import { type TrackRange } from './internal/track.js';
|
|
5
6
|
import type { LinearFlow } from './linear-layout.js';
|
|
6
|
-
import { type VirtualAnchor, type VirtualLayoutMutation, type VirtualLayoutPlan, type VirtualLayoutStrategy, type VirtualMeasurementBatch, type VirtualPoint, type VirtualQueryInput, type VirtualRect, type VirtualScrollAlignment } from './layout.js';
|
|
7
|
+
import { type VirtualAnchor, type VirtualLayoutMutation, type VirtualLayoutPlan, type VirtualLayoutStrategy, type VirtualMeasurementBatch, type VirtualPoint, type VirtualQueryInput, type VirtualIndexedView, type VirtualRect, type VirtualScrollAlignment } from './layout.js';
|
|
7
8
|
export interface GridRegion<ID extends StableID = StableID> {
|
|
8
9
|
readonly id: ID;
|
|
9
10
|
readonly row: number;
|
|
@@ -16,7 +17,7 @@ export interface TrackGridLayoutState<ID extends StableID = StableID> {
|
|
|
16
17
|
readonly [trackGridLayoutStateBrand]: true;
|
|
17
18
|
readonly rows: ExtentIndex;
|
|
18
19
|
readonly columns: ExtentIndex;
|
|
19
|
-
readonly regions:
|
|
20
|
+
readonly regions: VirtualIndexedView<GridRegion<ID>>;
|
|
20
21
|
readonly rowGap: number;
|
|
21
22
|
readonly columnGap: number;
|
|
22
23
|
readonly rowFlow: LinearFlow;
|
|
@@ -25,6 +26,8 @@ export interface TrackGridLayoutState<ID extends StableID = StableID> {
|
|
|
25
26
|
readonly generation: number;
|
|
26
27
|
}
|
|
27
28
|
export interface TrackGridLayoutSnapshot<ID extends StableID = StableID> {
|
|
29
|
+
readonly schemaVersion: 1;
|
|
30
|
+
readonly kind: 'track-grid';
|
|
28
31
|
readonly rows: readonly Extent[];
|
|
29
32
|
readonly rowMaxItems: number;
|
|
30
33
|
readonly columns: readonly Extent[];
|
|
@@ -49,15 +52,28 @@ export interface GridTrackMeasurement {
|
|
|
49
52
|
readonly index: number;
|
|
50
53
|
readonly extent: Extent;
|
|
51
54
|
}
|
|
55
|
+
export interface TrackGridExtentPatch {
|
|
56
|
+
readonly index: number;
|
|
57
|
+
readonly deleteCount: number;
|
|
58
|
+
readonly inserted: readonly Extent[];
|
|
59
|
+
}
|
|
52
60
|
export type TrackGridMutation<ID extends StableID = StableID> = {
|
|
53
61
|
readonly type: 'replace-regions';
|
|
54
62
|
readonly regions: readonly GridRegion<ID>[];
|
|
63
|
+
} | {
|
|
64
|
+
readonly type: 'patch-dense-regions';
|
|
65
|
+
readonly patch: SequencePatch<ID>;
|
|
55
66
|
} | {
|
|
56
67
|
readonly type: 'splice-tracks';
|
|
57
68
|
readonly axis: 'row' | 'column';
|
|
58
69
|
readonly index: number;
|
|
59
70
|
readonly deleteCount: number;
|
|
60
71
|
readonly inserted: readonly Extent[];
|
|
72
|
+
} | {
|
|
73
|
+
readonly type: 'reconfigure-dense';
|
|
74
|
+
readonly rowPatch?: TrackGridExtentPatch;
|
|
75
|
+
readonly columnPatch?: TrackGridExtentPatch;
|
|
76
|
+
readonly regionPatch?: SequencePatch<ID>;
|
|
61
77
|
};
|
|
62
78
|
export interface TrackGridLayoutPlan<ID extends StableID = StableID> extends VirtualLayoutPlan<ID> {
|
|
63
79
|
readonly rowRange: TrackRange;
|
|
@@ -65,6 +81,7 @@ export interface TrackGridLayoutPlan<ID extends StableID = StableID> extends Vir
|
|
|
65
81
|
}
|
|
66
82
|
export declare const trackGridLayoutStrategy: VirtualLayoutStrategy<TrackGridLayoutState, StableID, GridTrackMeasurement, TrackGridMutation>;
|
|
67
83
|
export declare function createTrackGridLayout<ID extends StableID>(rows: ExtentIndex, columns: ExtentIndex, regions: readonly GridRegion<ID>[], input?: TrackGridLayoutInput): TrackGridLayoutState<ID>;
|
|
84
|
+
export declare function createDenseTrackGridLayout<ID extends StableID>(rows: ExtentIndex, columns: ExtentIndex, ids: readonly ID[], input?: TrackGridLayoutInput): TrackGridLayoutState<ID>;
|
|
68
85
|
export declare function tryCreateTrackGridLayout<ID extends StableID>(rows: ExtentIndex, columns: ExtentIndex, regions: readonly GridRegion<ID>[], input?: TrackGridLayoutInput): VirtualResult<TrackGridLayoutState<ID>>;
|
|
69
86
|
export declare function snapshotTrackGridLayout<ID extends StableID>(state: TrackGridLayoutState<ID>): TrackGridLayoutSnapshot<ID>;
|
|
70
87
|
export declare function restoreTrackGridLayout<ID extends StableID>(snapshot: TrackGridLayoutSnapshot<ID>): TrackGridLayoutState<ID>;
|
|
@@ -79,4 +96,3 @@ export declare function trackGridScrollTarget<ID extends StableID>(state: TrackG
|
|
|
79
96
|
export declare function tryTrackGridScrollTarget<ID extends StableID>(state: TrackGridLayoutState<ID>, id: ID, viewport: VirtualRect, alignment?: VirtualScrollAlignment): VirtualResult<VirtualPoint>;
|
|
80
97
|
export declare function trackGridRegionRect<ID extends StableID>(state: TrackGridLayoutState<ID>, id: ID): VirtualRect | null;
|
|
81
98
|
export {};
|
|
82
|
-
//# sourceMappingURL=track-grid-layout.d.ts.map
|