@deck.gl/widgets 9.3.6 → 9.4.0-alpha.1

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.
@@ -0,0 +1,588 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { assertViewLayout, getViewLayoutChildren, getViewLayoutType, isViewLayout } from "./view-layout.js";
5
+ /**
6
+ * Compiles one `ViewLayout` tree into concrete deck.gl views and resolved rectangles.
7
+ *
8
+ * @param args - Root layout plus the current canvas size and optional previous compilation.
9
+ * @returns Concrete views with numeric bounds plus resolved rectangles keyed by view id.
10
+ */
11
+ export function buildViewsFromViewLayout(args) {
12
+ assertViewLayout(args.layout);
13
+ const rootRect = {
14
+ x: 0,
15
+ y: 0,
16
+ width: Math.max(1, args.width),
17
+ height: Math.max(1, args.height)
18
+ };
19
+ const previousViewsById = new Map((args.previous?.views ?? [])
20
+ .map(view => [getViewId(view), view])
21
+ .filter((entry) => Boolean(entry[0])));
22
+ const outputViews = [];
23
+ const rectsById = {};
24
+ const splittersById = {};
25
+ compileLayoutItem({
26
+ item: args.layout,
27
+ rect: rootRect,
28
+ rootRect,
29
+ outputViews,
30
+ rectsById,
31
+ splittersById,
32
+ previousViewsById,
33
+ splitValues: args.splitValues ?? {},
34
+ viewPropsById: args.viewPropsById ?? {}
35
+ });
36
+ return {
37
+ views: outputViews,
38
+ rectsById,
39
+ splittersById
40
+ };
41
+ }
42
+ /**
43
+ * Compiles one validated layout node inside the given parent rectangle.
44
+ *
45
+ * @param args - Layout item, allocated bounds, and compilation accumulators.
46
+ */
47
+ function compileLayoutItem(args) {
48
+ const { item } = args;
49
+ const type = getViewLayoutType(item);
50
+ switch (type) {
51
+ case 'row':
52
+ compileStackLayout({
53
+ ...args,
54
+ item: item,
55
+ orientation: 'row',
56
+ children: getViewLayoutChildren(item)
57
+ });
58
+ return;
59
+ case 'column':
60
+ compileStackLayout({
61
+ ...args,
62
+ item: item,
63
+ orientation: 'column',
64
+ children: getViewLayoutChildren(item)
65
+ });
66
+ return;
67
+ case 'overlay':
68
+ compileOverlayLayout({
69
+ ...args,
70
+ item: item,
71
+ children: getViewLayoutChildren(item)
72
+ });
73
+ return;
74
+ case 'spacer':
75
+ return;
76
+ default:
77
+ throw new Error(`Unsupported view layout item: ${String(type)}`);
78
+ }
79
+ }
80
+ /**
81
+ * Compiles one stack container by splitting the stack axis across its children.
82
+ *
83
+ * @param args - Stack orientation, children, and compilation accumulators.
84
+ */
85
+ function compileStackLayout(args) {
86
+ const containerRect = applyInsets(args.rect, args.item.inset);
87
+ const children = args.children.filter(isPresentChild);
88
+ if (children.length === 0) {
89
+ return;
90
+ }
91
+ const containerAxisLength = args.orientation === 'row' ? containerRect.width : containerRect.height;
92
+ const stackAxisConfig = getStackAxisConfig({
93
+ children,
94
+ containerAxisLength,
95
+ item: args.item,
96
+ orientation: args.orientation,
97
+ splitValues: args.splitValues
98
+ });
99
+ let cursor = args.orientation === 'row' ? containerRect.x : containerRect.y;
100
+ for (const splitConfig of stackAxisConfig.splitConfigs) {
101
+ args.splittersById[splitConfig.splitId] = {
102
+ id: splitConfig.splitId,
103
+ orientation: args.orientation === 'row' ? 'horizontal' : 'vertical',
104
+ x: (containerRect.x / args.rootRect.width) * 100,
105
+ y: (containerRect.y / args.rootRect.height) * 100,
106
+ width: (containerRect.width / args.rootRect.width) * 100,
107
+ height: (containerRect.height / args.rootRect.height) * 100,
108
+ split: splitConfig.split,
109
+ minSplit: splitConfig.minSplit,
110
+ maxSplit: splitConfig.maxSplit
111
+ };
112
+ }
113
+ children.forEach((child, index) => {
114
+ const childAxisLength = stackAxisConfig.childAxisLengths[index];
115
+ const childRect = args.orientation === 'row'
116
+ ? {
117
+ x: cursor,
118
+ y: containerRect.y,
119
+ width: childAxisLength,
120
+ height: containerRect.height
121
+ }
122
+ : {
123
+ x: containerRect.x,
124
+ y: cursor,
125
+ width: containerRect.width,
126
+ height: childAxisLength
127
+ };
128
+ cursor += childAxisLength;
129
+ compileLayoutChild({
130
+ child,
131
+ rect: childRect,
132
+ rootRect: args.rootRect,
133
+ outputViews: args.outputViews,
134
+ rectsById: args.rectsById,
135
+ splittersById: args.splittersById,
136
+ previousViewsById: args.previousViewsById,
137
+ splitValues: args.splitValues,
138
+ viewPropsById: args.viewPropsById
139
+ });
140
+ });
141
+ }
142
+ /**
143
+ * Compiles one overlay container by giving every child the same parent rectangle.
144
+ *
145
+ * @param args - Overlay children, parent rectangle, and compilation accumulators.
146
+ */
147
+ function compileOverlayLayout(args) {
148
+ const containerRect = applyInsets(args.rect, args.item.inset);
149
+ args.children.filter(isPresentChild).forEach(child => compileLayoutChild({
150
+ child,
151
+ rect: containerRect,
152
+ rootRect: args.rootRect,
153
+ outputViews: args.outputViews,
154
+ rectsById: args.rectsById,
155
+ splittersById: args.splittersById,
156
+ previousViewsById: args.previousViewsById,
157
+ splitValues: args.splitValues,
158
+ viewPropsById: args.viewPropsById
159
+ }));
160
+ }
161
+ /**
162
+ * Compiles one child entry, which may be a nested layout object or a raw deck view.
163
+ *
164
+ * @param args - Child node plus the rectangle allocated for it.
165
+ */
166
+ function compileLayoutChild(args) {
167
+ if (isViewLayout(args.child)) {
168
+ compileLayoutItem({
169
+ item: args.child,
170
+ rect: args.rect,
171
+ rootRect: args.rootRect,
172
+ outputViews: args.outputViews,
173
+ rectsById: args.rectsById,
174
+ splittersById: args.splittersById,
175
+ previousViewsById: args.previousViewsById,
176
+ splitValues: args.splitValues,
177
+ viewPropsById: args.viewPropsById
178
+ });
179
+ return;
180
+ }
181
+ compileResolvedView({
182
+ view: args.child,
183
+ rect: args.rect,
184
+ outputViews: args.outputViews,
185
+ rectsById: args.rectsById,
186
+ previousViewsById: args.previousViewsById,
187
+ viewPropsById: args.viewPropsById
188
+ });
189
+ }
190
+ function getStackAxisConfig(args) {
191
+ const constraints = args.children.map(child => getStackChildAxisConstraints(child, args.orientation, args.containerAxisLength));
192
+ if (args.item.splitId) {
193
+ return getSplitStackAxisConfig({ ...args, constraints });
194
+ }
195
+ return {
196
+ childAxisLengths: getConstrainedStackChildAxisLengths(args.containerAxisLength, constraints),
197
+ splitConfigs: []
198
+ };
199
+ }
200
+ function getSplitStackAxisConfig(args) {
201
+ const axisLength = Math.max(args.containerAxisLength, 1);
202
+ const boundaries = getDefaultSplitBoundaries(args);
203
+ const splitConfigs = [];
204
+ for (let index = 0; index < boundaries.length; index++) {
205
+ const splitId = getSplitId(args.item.splitId, args.children.length, index);
206
+ const desiredSplit = args.splitValues[splitId] ??
207
+ (args.children.length === 2 ? args.item.initialSplit : undefined) ??
208
+ boundaries[index];
209
+ const { minSplit, maxSplit } = getSplitBoundaryLimits({
210
+ index,
211
+ boundaries,
212
+ constraints: args.constraints,
213
+ axisLength,
214
+ item: args.item
215
+ });
216
+ const split = Math.min(Math.max(desiredSplit, minSplit), maxSplit);
217
+ boundaries[index] = split;
218
+ splitConfigs.push({ splitId, split, minSplit, maxSplit });
219
+ }
220
+ return {
221
+ childAxisLengths: getStackAxisLengthsFromBoundaries(args.containerAxisLength, boundaries),
222
+ splitConfigs
223
+ };
224
+ }
225
+ function getDefaultSplitBoundaries(args) {
226
+ const childAxisLengths = getConstrainedStackChildAxisLengths(args.containerAxisLength, args.constraints);
227
+ const totalLength = childAxisLengths.reduce((sum, length) => sum + length, 0);
228
+ if (totalLength <= 0) {
229
+ return args.children.slice(1).map((_, index) => (index + 1) / args.children.length);
230
+ }
231
+ let cursor = 0;
232
+ return childAxisLengths.slice(0, -1).map(length => {
233
+ cursor += length;
234
+ return cursor / totalLength;
235
+ });
236
+ }
237
+ function getSplitBoundaryLimits(args) {
238
+ const previousSplit = args.index === 0 ? 0 : args.boundaries[args.index - 1];
239
+ const nextSplit = args.index === args.boundaries.length - 1 ? 1 : args.boundaries[args.index + 1];
240
+ const leftConstraints = args.constraints[args.index];
241
+ const rightConstraints = args.constraints[args.index + 1];
242
+ const leftMaxSplit = Number.isFinite(leftConstraints.maxPixels)
243
+ ? previousSplit + leftConstraints.maxPixels / args.axisLength
244
+ : 1;
245
+ const rightMaxSplit = Number.isFinite(rightConstraints.maxPixels)
246
+ ? nextSplit - rightConstraints.maxPixels / args.axisLength
247
+ : 0;
248
+ const minSplit = Math.max(args.item.minSplit ?? 0.05, previousSplit + leftConstraints.minPixels / args.axisLength, rightMaxSplit);
249
+ const maxSplit = Math.max(minSplit, Math.min(args.item.maxSplit ?? 0.95, nextSplit - rightConstraints.minPixels / args.axisLength, leftMaxSplit));
250
+ return { minSplit, maxSplit };
251
+ }
252
+ function getSplitId(splitId, childCount, index) {
253
+ return childCount === 2 ? splitId : `${splitId}-${index}`;
254
+ }
255
+ function getStackAxisLengthsFromBoundaries(containerAxisLength, boundaries) {
256
+ let previousBoundary = 0;
257
+ const childAxisLengths = boundaries.map(boundary => {
258
+ const length = containerAxisLength * (boundary - previousBoundary);
259
+ previousBoundary = boundary;
260
+ return length;
261
+ });
262
+ childAxisLengths.push(containerAxisLength * (1 - previousBoundary));
263
+ return childAxisLengths;
264
+ }
265
+ function getConstrainedStackChildAxisLengths(containerAxisLength, constraints) {
266
+ const { childAxisLengths, flexibleChildIndexes, fixedLength } = getInitialStackChildAxisLengths(constraints);
267
+ let remainingLength = Math.max(containerAxisLength - fixedLength, 0);
268
+ let unsettledIndexes = flexibleChildIndexes;
269
+ while (unsettledIndexes.length > 0) {
270
+ const sharedLength = remainingLength / unsettledIndexes.length;
271
+ const nextIndexes = [];
272
+ let didClamp = false;
273
+ for (const index of unsettledIndexes) {
274
+ const { minPixels, maxPixels } = constraints[index];
275
+ if (sharedLength < minPixels) {
276
+ childAxisLengths[index] = minPixels;
277
+ remainingLength -= minPixels;
278
+ didClamp = true;
279
+ }
280
+ else if (sharedLength > maxPixels) {
281
+ childAxisLengths[index] = maxPixels;
282
+ remainingLength -= maxPixels;
283
+ didClamp = true;
284
+ }
285
+ else {
286
+ nextIndexes.push(index);
287
+ }
288
+ }
289
+ if (!didClamp) {
290
+ for (const index of unsettledIndexes) {
291
+ childAxisLengths[index] = sharedLength;
292
+ }
293
+ break;
294
+ }
295
+ unsettledIndexes = nextIndexes;
296
+ }
297
+ return childAxisLengths.map(length => length ?? 0);
298
+ }
299
+ function getInitialStackChildAxisLengths(constraints) {
300
+ const childAxisLengths = constraints.map(({ explicitLength }) => explicitLength);
301
+ const flexibleChildIndexes = [];
302
+ let fixedLength = 0;
303
+ childAxisLengths.forEach((length, index) => {
304
+ if (length === undefined) {
305
+ flexibleChildIndexes.push(index);
306
+ }
307
+ else {
308
+ fixedLength += length;
309
+ }
310
+ });
311
+ return { childAxisLengths, flexibleChildIndexes, fixedLength };
312
+ }
313
+ /**
314
+ * Resolves one raw deck view against a parent rectangle and reuses a previous instance when equal.
315
+ *
316
+ * @param args - View instance, allocated rectangle, and compilation accumulators.
317
+ */
318
+ function compileResolvedView(args) {
319
+ const viewId = getRequiredViewId(args.view);
320
+ const resolvedRect = resolveViewRectWithinParent(args.view, args.rect, args.viewPropsById[viewId]);
321
+ args.rectsById[viewId] = resolvedRect;
322
+ const nextProps = {
323
+ ...args.view.props,
324
+ x: resolvedRect.x,
325
+ y: resolvedRect.y,
326
+ width: resolvedRect.width,
327
+ height: resolvedRect.height
328
+ };
329
+ const previousView = args.previousViewsById.get(viewId);
330
+ const nextView = previousView &&
331
+ previousView.constructor === args.view.constructor &&
332
+ arePropsEqual(previousView.props, nextProps)
333
+ ? previousView
334
+ : instantiateView(args.view, nextProps);
335
+ args.outputViews.push(nextView);
336
+ }
337
+ /**
338
+ * Resolves one stack child's sizing constraints in the active stack axis.
339
+ *
340
+ * @param child - Stack child to inspect.
341
+ * @param orientation - Active stack orientation.
342
+ * @param parentAxisLength - Parent length in the active stack axis.
343
+ * @returns Explicit length and pixel constraints in the active stack axis.
344
+ */
345
+ function getStackChildAxisConstraints(child, orientation, parentAxisLength) {
346
+ const axisValue = getAxisLengthValue(child, orientation);
347
+ const minPixels = getPixelConstraintValue(child, 'minPixels') ?? 0;
348
+ const maxPixels = getPixelConstraintValue(child, 'maxPixels') ?? Number.POSITIVE_INFINITY;
349
+ if (axisValue === undefined) {
350
+ return { minPixels, maxPixels };
351
+ }
352
+ const explicitLength = Math.min(Math.max(resolveLength(axisValue, parentAxisLength), minPixels), maxPixels);
353
+ return { explicitLength, minPixels, maxPixels };
354
+ }
355
+ /**
356
+ * Resolves one raw deck view rectangle within the given parent rectangle.
357
+ *
358
+ * @param view - Raw deck view instance to position.
359
+ * @param parentRect - Parent rectangle allocated by the layout compiler.
360
+ * @returns Concrete rectangle for the compiled view.
361
+ */
362
+ function resolveViewRectWithinParent(view, parentRect, overrides) {
363
+ const props = { ...view.props, ...overrides };
364
+ const x = parentRect.x + resolveOffset(props.x, parentRect.width);
365
+ const y = parentRect.y + resolveOffset(props.y, parentRect.height);
366
+ const width = resolveDimension(props.width, parentRect.width, parentRect.width);
367
+ const height = resolveDimension(props.height, parentRect.height, parentRect.height);
368
+ return {
369
+ x,
370
+ y,
371
+ width,
372
+ height
373
+ };
374
+ }
375
+ /**
376
+ * Re-instantiates one deck view with a new resolved props object.
377
+ *
378
+ * @param view - Existing deck view instance whose constructor should be reused.
379
+ * @param props - Resolved props for the compiled view.
380
+ * @returns Fresh deck view instance with resolved numeric bounds.
381
+ */
382
+ function instantiateView(view, props) {
383
+ const ViewConstructor = view.constructor;
384
+ return new ViewConstructor(props);
385
+ }
386
+ /**
387
+ * Reads the stack-axis length expression from one child, whether nested or raw.
388
+ *
389
+ * @param child - Candidate child entry.
390
+ * @param orientation - Active stack orientation.
391
+ * @returns Width for rows, height for columns, or `undefined` for flexible children.
392
+ */
393
+ function getAxisLengthValue(child, orientation) {
394
+ if (isViewLayout(child)) {
395
+ return orientation === 'row' ? child.width : child.height;
396
+ }
397
+ const props = child.props;
398
+ return orientation === 'row' ? props.width : props.height;
399
+ }
400
+ function getPixelConstraintValue(child, propName) {
401
+ const value = isViewLayout(child)
402
+ ? child[propName]
403
+ : child.props[propName];
404
+ return typeof value === 'number' ? value : undefined;
405
+ }
406
+ /**
407
+ * Shrinks one rectangle by optional insets.
408
+ *
409
+ * @param rect - Rectangle allocated by the parent layout step.
410
+ * @param inset - Insets to apply inside that rectangle.
411
+ * @returns Inset rectangle clamped to non-negative size.
412
+ */
413
+ function applyInsets(rect, inset) {
414
+ if (!inset) {
415
+ return rect;
416
+ }
417
+ const top = inset.top ?? 0;
418
+ const right = inset.right ?? 0;
419
+ const bottom = inset.bottom ?? 0;
420
+ const left = inset.left ?? 0;
421
+ return {
422
+ x: rect.x + left,
423
+ y: rect.y + top,
424
+ width: Math.max(0, rect.width - left - right),
425
+ height: Math.max(0, rect.height - top - bottom)
426
+ };
427
+ }
428
+ /**
429
+ * Resolves one optional x/y offset against a parent length.
430
+ *
431
+ * @param value - Authored offset expression.
432
+ * @param parentLength - Parent width or height used for percentage resolution.
433
+ * @returns Numeric offset in deck pixels.
434
+ */
435
+ function resolveOffset(value, parentLength) {
436
+ if (value === undefined || value === null) {
437
+ return 0;
438
+ }
439
+ return resolveLength(value, parentLength);
440
+ }
441
+ /**
442
+ * Resolves one optional width or height against a parent length.
443
+ *
444
+ * @param value - Authored dimension expression.
445
+ * @param parentLength - Parent width or height used for percentage resolution.
446
+ * @param fallback - Fallback dimension used when no explicit expression is provided.
447
+ * @returns Numeric dimension in deck pixels.
448
+ */
449
+ function resolveDimension(value, parentLength, fallback) {
450
+ if (value === undefined || value === null) {
451
+ return fallback;
452
+ }
453
+ return resolveLength(value, parentLength);
454
+ }
455
+ /**
456
+ * Resolves one numeric, percentage, or `calc(...)` length expression.
457
+ *
458
+ * @param value - Authored length expression.
459
+ * @param parentLength - Parent length used for percentage resolution.
460
+ * @returns Numeric length in deck pixels.
461
+ */
462
+ function resolveLength(value, parentLength) {
463
+ if (typeof value === 'number') {
464
+ return value;
465
+ }
466
+ const normalized = value.trim();
467
+ if (normalized.length === 0) {
468
+ throw new Error('View layout length must not be empty.');
469
+ }
470
+ if (normalized.startsWith('calc(') && normalized.endsWith(')')) {
471
+ return resolveCalcExpression(normalized.slice(5, -1), parentLength);
472
+ }
473
+ return resolveLengthTerm(normalized, parentLength);
474
+ }
475
+ /**
476
+ * Resolves one simple `calc(...)` expression made of additive length terms.
477
+ *
478
+ * @param expression - Inner `calc(...)` expression without the wrapper.
479
+ * @param parentLength - Parent length used for percentage resolution.
480
+ * @returns Numeric length in deck pixels.
481
+ */
482
+ function resolveCalcExpression(expression, parentLength) {
483
+ const sanitized = expression.replace(/\s+/g, '');
484
+ const terms = sanitized.match(/[+-]?[^+-]+/g);
485
+ if (!terms) {
486
+ throw new Error(`Unsupported calc expression: calc(${expression})`);
487
+ }
488
+ return terms.reduce((sum, term) => sum + resolveLengthTerm(term, parentLength), 0);
489
+ }
490
+ /**
491
+ * Resolves one atomic length term such as `10`, `10px`, or `50%`.
492
+ *
493
+ * @param term - One atomic length term.
494
+ * @param parentLength - Parent length used for percentage resolution.
495
+ * @returns Numeric length in deck pixels.
496
+ */
497
+ function resolveLengthTerm(term, parentLength) {
498
+ if (term.endsWith('%')) {
499
+ return (Number.parseFloat(term.slice(0, -1)) / 100) * parentLength;
500
+ }
501
+ if (term.endsWith('px')) {
502
+ return Number.parseFloat(term.slice(0, -2));
503
+ }
504
+ return Number.parseFloat(term);
505
+ }
506
+ /**
507
+ * Reads the string id from one deck view when present.
508
+ *
509
+ * @param view - Deck view instance to inspect.
510
+ * @returns String id or `null` when absent.
511
+ */
512
+ function getViewId(view) {
513
+ const viewId = view.props.id;
514
+ return typeof viewId === 'string' && viewId.length > 0 ? viewId : null;
515
+ }
516
+ /**
517
+ * Reads the required id from one deck view, throwing when missing.
518
+ *
519
+ * @param view - Deck view instance to inspect.
520
+ * @returns Non-empty string id.
521
+ */
522
+ function getRequiredViewId(view) {
523
+ const viewId = getViewId(view);
524
+ if (!viewId) {
525
+ throw new Error('Every compiled deck view must have a string id.');
526
+ }
527
+ return viewId;
528
+ }
529
+ /**
530
+ * Compares two props objects for structural equality.
531
+ *
532
+ * @param left - Previous props object.
533
+ * @param right - Next props object.
534
+ * @returns Whether both props objects are structurally equal.
535
+ */
536
+ function arePropsEqual(left, right) {
537
+ if (left === right) {
538
+ return true;
539
+ }
540
+ const leftKeys = Object.keys(left);
541
+ const rightKeys = Object.keys(right);
542
+ if (leftKeys.length !== rightKeys.length) {
543
+ return false;
544
+ }
545
+ return leftKeys.every(key => areValuesEqual(left[key], right[key]));
546
+ }
547
+ /**
548
+ * Recursively compares two primitive, array, or plain-object values.
549
+ *
550
+ * @param left - Previous value.
551
+ * @param right - Next value.
552
+ * @returns Whether both values are structurally equal.
553
+ */
554
+ function areValuesEqual(left, right) {
555
+ if (Object.is(left, right)) {
556
+ return true;
557
+ }
558
+ if (Array.isArray(left) && Array.isArray(right)) {
559
+ return (left.length === right.length &&
560
+ left.every((value, index) => areValuesEqual(value, right[index])));
561
+ }
562
+ if (isPlainObject(left) && isPlainObject(right)) {
563
+ const leftEntries = Object.keys(left);
564
+ const rightEntries = Object.keys(right);
565
+ return (leftEntries.length === rightEntries.length &&
566
+ leftEntries.every(key => areValuesEqual(left[key], right[key])));
567
+ }
568
+ return false;
569
+ }
570
+ /**
571
+ * Detects plain object records used by structural equality.
572
+ *
573
+ * @param value - Candidate value.
574
+ * @returns Whether the value is a plain object record.
575
+ */
576
+ function isPlainObject(value) {
577
+ return (Boolean(value) && typeof value === 'object' && Object.getPrototypeOf(value) === Object.prototype);
578
+ }
579
+ /**
580
+ * Removes falsey optional children from authored child arrays.
581
+ *
582
+ * @param child - Candidate authored child entry.
583
+ * @returns Whether the child should be compiled.
584
+ */
585
+ function isPresentChild(child) {
586
+ return Boolean(child);
587
+ }
588
+ //# sourceMappingURL=build-views-from-view-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-views-from-view-layout.js","sourceRoot":"","sources":["../../src/view-layout/build-views-from-view-layout.ts"],"names":[],"mappings":"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"}