@sectile/dom 0.5.0 → 0.7.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.
Files changed (58) hide show
  1. package/README.md +8 -0
  2. package/dist/calendar.d.ts +4 -3
  3. package/dist/calendar.d.ts.map +1 -1
  4. package/dist/calendar.js +6 -3
  5. package/dist/calendar.js.map +1 -1
  6. package/dist/date-field.d.ts +3 -3
  7. package/dist/date-field.d.ts.map +1 -1
  8. package/dist/date-field.js +4 -4
  9. package/dist/date-field.js.map +1 -1
  10. package/dist/date-picker.d.ts +4 -3
  11. package/dist/date-picker.d.ts.map +1 -1
  12. package/dist/date-picker.js +6 -5
  13. package/dist/date-picker.js.map +1 -1
  14. package/dist/date-range-field.d.ts +3 -3
  15. package/dist/date-range-field.d.ts.map +1 -1
  16. package/dist/date-range-field.js +4 -4
  17. package/dist/date-range-field.js.map +1 -1
  18. package/dist/date-range-picker.d.ts +4 -3
  19. package/dist/date-range-picker.d.ts.map +1 -1
  20. package/dist/date-range-picker.js +5 -4
  21. package/dist/date-range-picker.js.map +1 -1
  22. package/dist/date-time-field.d.ts +3 -3
  23. package/dist/date-time-field.d.ts.map +1 -1
  24. package/dist/date-time-field.js +4 -4
  25. package/dist/date-time-field.js.map +1 -1
  26. package/dist/date-time-picker.d.ts +4 -3
  27. package/dist/date-time-picker.d.ts.map +1 -1
  28. package/dist/date-time-picker.js +6 -4
  29. package/dist/date-time-picker.js.map +1 -1
  30. package/dist/date-time-range-picker.d.ts +4 -3
  31. package/dist/date-time-range-picker.d.ts.map +1 -1
  32. package/dist/date-time-range-picker.js +6 -4
  33. package/dist/date-time-range-picker.js.map +1 -1
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +1 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/internal/reference-date.d.ts +3 -0
  39. package/dist/internal/reference-date.d.ts.map +1 -0
  40. package/dist/internal/reference-date.js +8 -0
  41. package/dist/internal/reference-date.js.map +1 -0
  42. package/dist/internal/result.d.ts +19 -0
  43. package/dist/internal/result.d.ts.map +1 -0
  44. package/dist/internal/result.js +8 -0
  45. package/dist/internal/result.js.map +1 -0
  46. package/dist/time-field.d.ts +3 -3
  47. package/dist/time-field.d.ts.map +1 -1
  48. package/dist/time-field.js +4 -4
  49. package/dist/time-field.js.map +1 -1
  50. package/dist/time-range-field.d.ts +3 -3
  51. package/dist/time-range-field.d.ts.map +1 -1
  52. package/dist/time-range-field.js +4 -4
  53. package/dist/time-range-field.js.map +1 -1
  54. package/dist/virtual.d.ts +58 -0
  55. package/dist/virtual.d.ts.map +1 -0
  56. package/dist/virtual.js +325 -0
  57. package/dist/virtual.js.map +1 -0
  58. package/package.json +9 -3
@@ -0,0 +1,325 @@
1
+ import { unwrap } from '@sectile/core/result';
2
+ export function createVirtualizer(options) {
3
+ return new DOMVirtualizer(options);
4
+ }
5
+ export function createAxisMeasurementResolver(axis) {
6
+ return ({ element, placement }) => {
7
+ const bounds = element.getBoundingClientRect();
8
+ return Object.freeze({
9
+ index: placement.index,
10
+ extent: Object.freeze({
11
+ kind: 'exact',
12
+ value: axis === 'vertical' ? bounds.height : bounds.width,
13
+ }),
14
+ });
15
+ };
16
+ }
17
+ export function virtualContentStyle(plan) {
18
+ return Object.freeze({
19
+ position: 'relative',
20
+ width: `${plan.contentSize.width}px`,
21
+ height: `${plan.contentSize.height}px`,
22
+ });
23
+ }
24
+ export function virtualItemStyle(placement, options = {}) {
25
+ const style = {
26
+ position: 'absolute',
27
+ top: '0',
28
+ left: '0',
29
+ transform: `translate3d(${placement.rect.x}px, ${placement.rect.y}px, 0)`,
30
+ };
31
+ if (options.width === true)
32
+ style['width'] = `${placement.rect.width}px`;
33
+ if (options.height === true)
34
+ style['height'] = `${placement.rect.height}px`;
35
+ if ('zIndex' in placement && typeof placement['zIndex'] === 'number') {
36
+ style['zIndex'] = placement['zIndex'];
37
+ }
38
+ return Object.freeze(style);
39
+ }
40
+ class DOMVirtualizer {
41
+ #root;
42
+ #strategy;
43
+ #measure;
44
+ #readViewport;
45
+ #writeScroll;
46
+ #environment;
47
+ #onPlanChange;
48
+ #onStateChange;
49
+ #onError;
50
+ #rootObserver;
51
+ #itemObserver;
52
+ #items = new Map();
53
+ #itemIDs = new Map();
54
+ #pendingEntries = new Map();
55
+ #handleScroll;
56
+ #state;
57
+ #plan;
58
+ #overscan;
59
+ #frame = null;
60
+ #disconnected = false;
61
+ constructor(options) {
62
+ this.#root = options.root;
63
+ this.#state = options.state;
64
+ this.#strategy = options.strategy;
65
+ this.#overscan = options.overscan;
66
+ this.#measure = options.measure;
67
+ this.#readViewport = options.readViewport ?? defaultViewport;
68
+ this.#writeScroll = options.writeScroll ?? defaultScrollWriter;
69
+ this.#environment = options.environment ?? browserEnvironment(options.root);
70
+ this.#onPlanChange = options.onPlanChange;
71
+ this.#onStateChange = options.onStateChange;
72
+ this.#onError = options.onError;
73
+ this.#plan = unwrap(this.#query(this.#state, this.#overscan));
74
+ this.#handleScroll = () => {
75
+ this.refresh();
76
+ };
77
+ this.#rootObserver = this.#environment.createResizeObserver(() => {
78
+ this.refresh();
79
+ });
80
+ this.#itemObserver = this.#environment.createResizeObserver((entries) => {
81
+ for (const entry of entries) {
82
+ if (this.#itemIDs.has(entry.target))
83
+ this.#pendingEntries.set(entry.target, entry);
84
+ }
85
+ this.refresh();
86
+ });
87
+ this.#root.addEventListener('scroll', this.#handleScroll, {
88
+ passive: true,
89
+ });
90
+ this.#rootObserver.observe(this.#root);
91
+ this.#onPlanChange?.(this.#plan, this);
92
+ }
93
+ getState() {
94
+ return this.#state;
95
+ }
96
+ getPlan() {
97
+ return this.#plan;
98
+ }
99
+ setState(state) {
100
+ this.#requireConnected();
101
+ if (Object.is(state, this.#state))
102
+ return { ok: true, value: this.#plan };
103
+ const plan = this.#query(state, this.#overscan);
104
+ if (!plan.ok)
105
+ return this.#report(plan);
106
+ this.#state = state;
107
+ this.#publish(plan.value);
108
+ return plan;
109
+ }
110
+ setOverscan(overscan) {
111
+ this.#requireConnected();
112
+ const plan = this.#query(this.#state, overscan);
113
+ if (!plan.ok)
114
+ return this.#report(plan);
115
+ this.#overscan = overscan;
116
+ this.#publish(plan.value);
117
+ return plan;
118
+ }
119
+ registerItem(element, id) {
120
+ this.#requireConnected();
121
+ const previous = this.#items.get(id);
122
+ if (previous !== undefined && previous !== element) {
123
+ this.#itemObserver.unobserve(previous);
124
+ this.#itemIDs.delete(previous);
125
+ this.#pendingEntries.delete(previous);
126
+ }
127
+ const previousID = this.#itemIDs.get(element);
128
+ if (previousID !== undefined && previousID !== id) {
129
+ this.#items.delete(previousID);
130
+ this.#pendingEntries.delete(element);
131
+ if (this.#measure !== undefined)
132
+ this.#itemObserver.unobserve(element);
133
+ }
134
+ this.#items.set(id, element);
135
+ this.#itemIDs.set(element, id);
136
+ if (this.#measure !== undefined)
137
+ this.#itemObserver.observe(element);
138
+ return () => {
139
+ if (this.#items.get(id) !== element)
140
+ return;
141
+ this.#items.delete(id);
142
+ this.#itemIDs.delete(element);
143
+ this.#pendingEntries.delete(element);
144
+ this.#itemObserver.unobserve(element);
145
+ };
146
+ }
147
+ measure(measurements) {
148
+ this.#requireConnected();
149
+ const before = this.#query(this.#state, this.#overscan);
150
+ if (!before.ok)
151
+ return this.#reportFailure(before);
152
+ const result = this.#strategy.tryMeasure(this.#state, {
153
+ generation: before.value.generation,
154
+ measurements,
155
+ anchor: before.value.anchor,
156
+ });
157
+ if (!result.ok)
158
+ return this.#report(result);
159
+ this.#applyMutation(result.value);
160
+ this.#publishCurrent();
161
+ return result;
162
+ }
163
+ mutate(mutation) {
164
+ this.#requireConnected();
165
+ const before = this.#query(this.#state, this.#overscan);
166
+ if (!before.ok)
167
+ return this.#reportFailure(before);
168
+ const result = this.#strategy.tryMutate(this.#state, {
169
+ mutation,
170
+ anchor: before.value.anchor,
171
+ });
172
+ if (!result.ok)
173
+ return this.#report(result);
174
+ this.#applyMutation(result.value);
175
+ this.#publishCurrent();
176
+ return result;
177
+ }
178
+ scrollTo(id, alignment = 'nearest') {
179
+ this.#requireConnected();
180
+ const result = this.#strategy.tryScrollTarget(this.#state, id, this.#readViewport(this.#root), alignment);
181
+ if (!result.ok)
182
+ return this.#report(result);
183
+ this.#writeScroll(this.#root, result.value);
184
+ this.#publishCurrent();
185
+ return result;
186
+ }
187
+ refresh() {
188
+ if (this.#disconnected || this.#frame !== null)
189
+ return;
190
+ this.#frame = this.#environment.requestFrame(() => {
191
+ this.#frame = null;
192
+ this.flush();
193
+ });
194
+ }
195
+ flush() {
196
+ this.#requireConnected();
197
+ if (this.#frame !== null) {
198
+ this.#environment.cancelFrame(this.#frame);
199
+ this.#frame = null;
200
+ }
201
+ const before = this.#query(this.#state, this.#overscan);
202
+ if (!before.ok)
203
+ return this.#report(before);
204
+ const entries = [...this.#pendingEntries.values()];
205
+ this.#pendingEntries.clear();
206
+ if (this.#measure !== undefined && entries.length > 0) {
207
+ const placements = new Map(before.value.placements.map((placement) => [placement.id, placement]));
208
+ const measurements = [];
209
+ for (const entry of entries) {
210
+ const id = this.#itemIDs.get(entry.target);
211
+ if (id === undefined)
212
+ continue;
213
+ const placement = placements.get(id);
214
+ const element = this.#items.get(id);
215
+ if (placement === undefined || element === undefined)
216
+ continue;
217
+ const resolved = this.#measure({
218
+ element,
219
+ entry,
220
+ placement,
221
+ state: this.#state,
222
+ });
223
+ if (resolved === null)
224
+ continue;
225
+ if (Array.isArray(resolved))
226
+ measurements.push(...resolved);
227
+ else
228
+ measurements.push(resolved);
229
+ }
230
+ if (measurements.length > 0) {
231
+ const measured = this.#strategy.tryMeasure(this.#state, {
232
+ generation: before.value.generation,
233
+ measurements,
234
+ anchor: before.value.anchor,
235
+ });
236
+ if (!measured.ok)
237
+ return this.#reportFailure(measured);
238
+ this.#applyMutation(measured.value);
239
+ }
240
+ }
241
+ return this.#publishCurrent();
242
+ }
243
+ disconnect() {
244
+ if (this.#disconnected)
245
+ return;
246
+ this.#disconnected = true;
247
+ if (this.#frame !== null)
248
+ this.#environment.cancelFrame(this.#frame);
249
+ this.#frame = null;
250
+ this.#root.removeEventListener('scroll', this.#handleScroll);
251
+ this.#rootObserver.disconnect();
252
+ this.#itemObserver.disconnect();
253
+ this.#items.clear();
254
+ this.#itemIDs.clear();
255
+ this.#pendingEntries.clear();
256
+ }
257
+ #query(state, overscan) {
258
+ return this.#strategy.tryQuery(state, {
259
+ viewport: this.#readViewport(this.#root),
260
+ ...(overscan === undefined ? {} : { overscan }),
261
+ });
262
+ }
263
+ #applyMutation(mutation) {
264
+ this.#state = mutation.state;
265
+ if (mutation.scrollDelta.x !== 0 || mutation.scrollDelta.y !== 0) {
266
+ const viewport = this.#readViewport(this.#root);
267
+ this.#writeScroll(this.#root, {
268
+ x: viewport.x + mutation.scrollDelta.x,
269
+ y: viewport.y + mutation.scrollDelta.y,
270
+ });
271
+ }
272
+ this.#onStateChange?.(this.#state);
273
+ }
274
+ #publishCurrent() {
275
+ const plan = this.#query(this.#state, this.#overscan);
276
+ if (!plan.ok)
277
+ return this.#report(plan);
278
+ this.#publish(plan.value);
279
+ return plan;
280
+ }
281
+ #publish(plan) {
282
+ this.#plan = plan;
283
+ this.#onPlanChange?.(plan, this);
284
+ }
285
+ #report(result) {
286
+ if (!result.ok)
287
+ this.#onError?.(result.error);
288
+ return result;
289
+ }
290
+ #reportFailure(result) {
291
+ if (result.ok)
292
+ throw new TypeError('Expected a failed virtual layout result.');
293
+ this.#onError?.(result.error);
294
+ return { ok: false, error: result.error };
295
+ }
296
+ #requireConnected() {
297
+ if (this.#disconnected)
298
+ throw new TypeError('Virtualizer connection is disconnected.');
299
+ }
300
+ }
301
+ function defaultViewport(root) {
302
+ return Object.freeze({
303
+ x: Math.max(0, root.scrollLeft),
304
+ y: Math.max(0, root.scrollTop),
305
+ width: Math.max(0, root.clientWidth),
306
+ height: Math.max(0, root.clientHeight),
307
+ });
308
+ }
309
+ function defaultScrollWriter(root, point) {
310
+ root.scrollTo({ left: point.x, top: point.y, behavior: 'auto' });
311
+ }
312
+ function browserEnvironment(root) {
313
+ const view = root.ownerDocument.defaultView;
314
+ if (view === null || typeof view.ResizeObserver !== 'function') {
315
+ throw new TypeError('Virtualizer requires a browser window with ResizeObserver support.');
316
+ }
317
+ return Object.freeze({
318
+ requestFrame: (callback) => view.requestAnimationFrame(callback),
319
+ cancelFrame: (handle) => {
320
+ view.cancelAnimationFrame(handle);
321
+ },
322
+ createResizeObserver: (callback) => new view.ResizeObserver(callback),
323
+ });
324
+ }
325
+ //# sourceMappingURL=virtual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual.js","sourceRoot":"","sources":["../src/virtual.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sectile/dom",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "DOM host adapters for Sectile semantic interaction machines.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -331,13 +331,19 @@
331
331
  "import": "./dist/editable.js",
332
332
  "default": "./dist/editable.js"
333
333
  },
334
+ "./virtual": {
335
+ "types": "./dist/virtual.d.ts",
336
+ "import": "./dist/virtual.js",
337
+ "default": "./dist/virtual.js"
338
+ },
334
339
  "./package.json": "./package.json"
335
340
  },
336
341
  "dependencies": {
337
342
  "@floating-ui/dom": "^1.8.0",
338
343
  "@standard-schema/spec": "^1.1.0",
339
- "@sectile/core": "0.5.0",
340
- "@sectile/temporal": "0.5.0"
344
+ "@sectile/core": "0.7.0",
345
+ "@sectile/temporal": "0.7.0",
346
+ "@sectile/virtual": "0.7.0"
341
347
  },
342
348
  "devDependencies": {
343
349
  "happy-dom": "^20.11.6",