@sectile/dom 0.5.0 → 0.6.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 +322 -0
  57. package/dist/virtual.js.map +1 -0
  58. package/package.json +9 -3
@@ -0,0 +1,322 @@
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.#items.set(id, element);
131
+ this.#itemIDs.set(element, id);
132
+ if (this.#measure !== undefined)
133
+ this.#itemObserver.observe(element);
134
+ return () => {
135
+ if (this.#items.get(id) !== element)
136
+ return;
137
+ this.#items.delete(id);
138
+ this.#itemIDs.delete(element);
139
+ this.#pendingEntries.delete(element);
140
+ this.#itemObserver.unobserve(element);
141
+ };
142
+ }
143
+ measure(measurements) {
144
+ this.#requireConnected();
145
+ const before = this.#query(this.#state, this.#overscan);
146
+ if (!before.ok)
147
+ return this.#reportFailure(before);
148
+ const result = this.#strategy.tryMeasure(this.#state, {
149
+ generation: before.value.generation,
150
+ measurements,
151
+ anchor: before.value.anchor,
152
+ });
153
+ if (!result.ok)
154
+ return this.#report(result);
155
+ this.#applyMutation(result.value);
156
+ this.#publishCurrent();
157
+ return result;
158
+ }
159
+ mutate(mutation) {
160
+ this.#requireConnected();
161
+ const before = this.#query(this.#state, this.#overscan);
162
+ if (!before.ok)
163
+ return this.#reportFailure(before);
164
+ const result = this.#strategy.tryMutate(this.#state, {
165
+ mutation,
166
+ anchor: before.value.anchor,
167
+ });
168
+ if (!result.ok)
169
+ return this.#report(result);
170
+ this.#applyMutation(result.value);
171
+ this.#publishCurrent();
172
+ return result;
173
+ }
174
+ scrollTo(id, alignment = 'nearest') {
175
+ this.#requireConnected();
176
+ const result = this.#strategy.tryScrollTarget(this.#state, id, this.#readViewport(this.#root), alignment);
177
+ if (!result.ok)
178
+ return this.#report(result);
179
+ this.#writeScroll(this.#root, result.value);
180
+ this.#publishCurrent();
181
+ return result;
182
+ }
183
+ refresh() {
184
+ if (this.#disconnected || this.#frame !== null)
185
+ return;
186
+ this.#frame = this.#environment.requestFrame(() => {
187
+ this.#frame = null;
188
+ this.flush();
189
+ });
190
+ }
191
+ flush() {
192
+ this.#requireConnected();
193
+ if (this.#frame !== null) {
194
+ this.#environment.cancelFrame(this.#frame);
195
+ this.#frame = null;
196
+ }
197
+ const before = this.#query(this.#state, this.#overscan);
198
+ if (!before.ok)
199
+ return this.#report(before);
200
+ const entries = [...this.#pendingEntries.values()];
201
+ this.#pendingEntries.clear();
202
+ if (this.#measure !== undefined && entries.length > 0) {
203
+ const placements = new Map(before.value.placements.map((placement) => [placement.id, placement]));
204
+ const measurements = [];
205
+ for (const entry of entries) {
206
+ const id = this.#itemIDs.get(entry.target);
207
+ if (id === undefined)
208
+ continue;
209
+ const placement = placements.get(id);
210
+ const element = this.#items.get(id);
211
+ if (placement === undefined || element === undefined)
212
+ continue;
213
+ const resolved = this.#measure({
214
+ element,
215
+ entry,
216
+ placement,
217
+ state: this.#state,
218
+ });
219
+ if (resolved === null)
220
+ continue;
221
+ if (Array.isArray(resolved))
222
+ measurements.push(...resolved);
223
+ else
224
+ measurements.push(resolved);
225
+ }
226
+ if (measurements.length > 0) {
227
+ const measured = this.#strategy.tryMeasure(this.#state, {
228
+ generation: before.value.generation,
229
+ measurements,
230
+ anchor: before.value.anchor,
231
+ });
232
+ if (!measured.ok)
233
+ this.#report(measured);
234
+ else
235
+ this.#applyMutation(measured.value);
236
+ }
237
+ }
238
+ return this.#publishCurrent();
239
+ }
240
+ disconnect() {
241
+ if (this.#disconnected)
242
+ return;
243
+ this.#disconnected = true;
244
+ if (this.#frame !== null)
245
+ this.#environment.cancelFrame(this.#frame);
246
+ this.#frame = null;
247
+ this.#root.removeEventListener('scroll', this.#handleScroll);
248
+ this.#rootObserver.disconnect();
249
+ this.#itemObserver.disconnect();
250
+ this.#items.clear();
251
+ this.#itemIDs.clear();
252
+ this.#pendingEntries.clear();
253
+ }
254
+ #query(state, overscan) {
255
+ return this.#strategy.tryQuery(state, {
256
+ viewport: this.#readViewport(this.#root),
257
+ ...(overscan === undefined ? {} : { overscan }),
258
+ });
259
+ }
260
+ #applyMutation(mutation) {
261
+ this.#state = mutation.state;
262
+ if (mutation.scrollDelta.x !== 0 || mutation.scrollDelta.y !== 0) {
263
+ const viewport = this.#readViewport(this.#root);
264
+ this.#writeScroll(this.#root, {
265
+ x: viewport.x + mutation.scrollDelta.x,
266
+ y: viewport.y + mutation.scrollDelta.y,
267
+ });
268
+ }
269
+ this.#onStateChange?.(this.#state);
270
+ }
271
+ #publishCurrent() {
272
+ const plan = this.#query(this.#state, this.#overscan);
273
+ if (!plan.ok)
274
+ return this.#report(plan);
275
+ this.#publish(plan.value);
276
+ return plan;
277
+ }
278
+ #publish(plan) {
279
+ this.#plan = plan;
280
+ this.#onPlanChange?.(plan, this);
281
+ }
282
+ #report(result) {
283
+ if (!result.ok)
284
+ this.#onError?.(result.error);
285
+ return result;
286
+ }
287
+ #reportFailure(result) {
288
+ if (result.ok)
289
+ throw new TypeError('Expected a failed virtual layout result.');
290
+ this.#onError?.(result.error);
291
+ return { ok: false, error: result.error };
292
+ }
293
+ #requireConnected() {
294
+ if (this.#disconnected)
295
+ throw new TypeError('Virtualizer connection is disconnected.');
296
+ }
297
+ }
298
+ function defaultViewport(root) {
299
+ return Object.freeze({
300
+ x: Math.max(0, root.scrollLeft),
301
+ y: Math.max(0, root.scrollTop),
302
+ width: Math.max(0, root.clientWidth),
303
+ height: Math.max(0, root.clientHeight),
304
+ });
305
+ }
306
+ function defaultScrollWriter(root, point) {
307
+ root.scrollTo({ left: point.x, top: point.y, behavior: 'auto' });
308
+ }
309
+ function browserEnvironment(root) {
310
+ const view = root.ownerDocument.defaultView;
311
+ if (view === null || typeof view.ResizeObserver !== 'function') {
312
+ throw new TypeError('Virtualizer requires a browser window with ResizeObserver support.');
313
+ }
314
+ return Object.freeze({
315
+ requestFrame: (callback) => view.requestAnimationFrame(callback),
316
+ cancelFrame: (handle) => {
317
+ view.cancelAnimationFrame(handle);
318
+ },
319
+ createResizeObserver: (callback) => new view.ResizeObserver(callback),
320
+ });
321
+ }
322
+ //# 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.6.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.6.0",
345
+ "@sectile/temporal": "0.6.0",
346
+ "@sectile/virtual": "0.6.0"
341
347
  },
342
348
  "devDependencies": {
343
349
  "happy-dom": "^20.11.6",