@deck.gl/widgets 9.3.0-alpha.6 → 9.3.0-beta.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.
- package/dist/compass-widget.d.ts +12 -0
- package/dist/compass-widget.d.ts.map +1 -1
- package/dist/compass-widget.js +9 -3
- package/dist/compass-widget.js.map +1 -1
- package/dist/dist.dev.js +205 -69
- package/dist/fullscreen-widget.d.ts +5 -0
- package/dist/fullscreen-widget.d.ts.map +1 -1
- package/dist/fullscreen-widget.js +18 -8
- package/dist/fullscreen-widget.js.map +1 -1
- package/dist/geocoder-widget.d.ts +13 -0
- package/dist/geocoder-widget.d.ts.map +1 -1
- package/dist/geocoder-widget.js +13 -1
- package/dist/geocoder-widget.js.map +1 -1
- package/dist/gimbal-widget.d.ts +12 -0
- package/dist/gimbal-widget.d.ts.map +1 -1
- package/dist/gimbal-widget.js +4 -1
- package/dist/gimbal-widget.js.map +1 -1
- package/dist/index.cjs +218 -70
- package/dist/index.cjs.map +2 -2
- package/dist/loading-widget.d.ts +5 -0
- package/dist/loading-widget.d.ts.map +1 -1
- package/dist/loading-widget.js +4 -1
- package/dist/loading-widget.js.map +1 -1
- package/dist/reset-view-widget.d.ts +9 -0
- package/dist/reset-view-widget.d.ts.map +1 -1
- package/dist/reset-view-widget.js +4 -1
- package/dist/reset-view-widget.js.map +1 -1
- package/dist/stats-widget.d.ts +18 -3
- package/dist/stats-widget.d.ts.map +1 -1
- package/dist/stats-widget.js +29 -12
- package/dist/stats-widget.js.map +1 -1
- package/dist/theme-widget.d.ts +20 -2
- package/dist/theme-widget.d.ts.map +1 -1
- package/dist/theme-widget.js +38 -14
- package/dist/theme-widget.js.map +1 -1
- package/dist/timeline-widget.d.ts +34 -3
- package/dist/timeline-widget.d.ts.map +1 -1
- package/dist/timeline-widget.js +98 -24
- package/dist/timeline-widget.js.map +1 -1
- package/dist/zoom-widget.d.ts +13 -1
- package/dist/zoom-widget.d.ts.map +1 -1
- package/dist/zoom-widget.js +7 -4
- package/dist/zoom-widget.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +2 -2
- package/src/compass-widget.tsx +23 -3
- package/src/fullscreen-widget.tsx +24 -9
- package/src/geocoder-widget.tsx +23 -1
- package/src/gimbal-widget.tsx +17 -1
- package/src/loading-widget.tsx +11 -1
- package/src/reset-view-widget.tsx +15 -1
- package/src/stats-widget.tsx +42 -13
- package/src/theme-widget.tsx +56 -17
- package/src/timeline-widget.tsx +123 -24
- package/src/zoom-widget.tsx +20 -4
package/dist/timeline-widget.js
CHANGED
|
@@ -7,33 +7,63 @@ import { render } from 'preact';
|
|
|
7
7
|
import { IconButton } from "./lib/components/icon-button.js";
|
|
8
8
|
import { RangeInput } from "./lib/components/range-input.js";
|
|
9
9
|
export class TimelineWidget extends Widget {
|
|
10
|
+
/**
|
|
11
|
+
* Returns the current time value.
|
|
12
|
+
* In controlled mode, returns the time prop.
|
|
13
|
+
* In uncontrolled mode, returns the internal state.
|
|
14
|
+
*/
|
|
15
|
+
getTime() {
|
|
16
|
+
return this.props.time ?? this.currentTime;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Returns the current playing state.
|
|
20
|
+
* In controlled mode, returns the playing prop.
|
|
21
|
+
* In uncontrolled mode, returns the internal state.
|
|
22
|
+
*/
|
|
23
|
+
getPlaying() {
|
|
24
|
+
return this.props.playing ?? this._playing;
|
|
25
|
+
}
|
|
10
26
|
constructor(props = {}) {
|
|
11
27
|
super(props);
|
|
12
28
|
this.id = 'timeline';
|
|
13
29
|
this.className = 'deck-widget-timeline';
|
|
14
30
|
this.placement = 'fill';
|
|
15
|
-
this.
|
|
31
|
+
this._playing = false;
|
|
16
32
|
this.timerId = null;
|
|
17
33
|
this.handlePlayPause = () => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
34
|
+
const isPlaying = this.getPlaying();
|
|
35
|
+
const nextPlaying = !isPlaying;
|
|
36
|
+
// Always call callback if provided
|
|
37
|
+
this.props.onPlayingChange?.(nextPlaying);
|
|
38
|
+
// Only update internal state if uncontrolled
|
|
39
|
+
if (this.props.playing === undefined) {
|
|
40
|
+
if (nextPlaying) {
|
|
41
|
+
this.play();
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.stop();
|
|
45
|
+
}
|
|
23
46
|
}
|
|
47
|
+
// In controlled mode, parent will update playing prop which triggers start/stop via setProps
|
|
24
48
|
};
|
|
25
49
|
this.handleTimeChange = ([value]) => {
|
|
26
|
-
|
|
27
|
-
this.props.timeline?.setTime(value);
|
|
50
|
+
// Always call callback
|
|
28
51
|
this.props.onTimeChange(value);
|
|
29
|
-
|
|
52
|
+
// Only update internal state if uncontrolled
|
|
53
|
+
if (this.props.time === undefined) {
|
|
54
|
+
this.currentTime = value;
|
|
55
|
+
this.props.timeline?.setTime(value);
|
|
56
|
+
this.updateHTML();
|
|
57
|
+
}
|
|
58
|
+
// In controlled mode, parent will update time prop which triggers updateHTML via setProps
|
|
30
59
|
};
|
|
31
60
|
this.tick = () => {
|
|
32
61
|
const { timeRange: [min, max], step, loop } = this.props;
|
|
33
62
|
if (step > 0) {
|
|
34
|
-
|
|
63
|
+
const currentTime = this.getTime();
|
|
64
|
+
let next = Math.round(currentTime / step) * step + step;
|
|
35
65
|
if (next > max) {
|
|
36
|
-
if (
|
|
66
|
+
if (currentTime < max) {
|
|
37
67
|
next = max;
|
|
38
68
|
}
|
|
39
69
|
else if (loop) {
|
|
@@ -41,14 +71,20 @@ export class TimelineWidget extends Widget {
|
|
|
41
71
|
}
|
|
42
72
|
else {
|
|
43
73
|
next = max;
|
|
44
|
-
this.
|
|
74
|
+
this._playing = false;
|
|
75
|
+
this.props.onPlayingChange?.(false);
|
|
45
76
|
}
|
|
46
77
|
}
|
|
47
|
-
|
|
78
|
+
// Always call callback
|
|
48
79
|
this.props.onTimeChange(next);
|
|
80
|
+
// Only update internal state if uncontrolled
|
|
81
|
+
if (this.props.time === undefined) {
|
|
82
|
+
this.currentTime = next;
|
|
83
|
+
this.props.timeline?.setTime(next);
|
|
84
|
+
}
|
|
49
85
|
this.updateHTML();
|
|
50
86
|
}
|
|
51
|
-
if (this.
|
|
87
|
+
if (this._playing) {
|
|
52
88
|
this.timerId = window.setTimeout(this.tick, this.props.playInterval);
|
|
53
89
|
}
|
|
54
90
|
else {
|
|
@@ -56,27 +92,51 @@ export class TimelineWidget extends Widget {
|
|
|
56
92
|
}
|
|
57
93
|
};
|
|
58
94
|
this.currentTime = this.props.initialTime ?? this.props.timeRange[0];
|
|
59
|
-
|
|
95
|
+
// In controlled mode, sync Timeline to the controlled time prop
|
|
96
|
+
const syncTime = this.props.time ?? this.currentTime;
|
|
97
|
+
this.props.timeline?.setTime(syncTime);
|
|
60
98
|
this.setProps(this.props);
|
|
61
99
|
}
|
|
62
100
|
setProps(props) {
|
|
101
|
+
const { playing: prevPlaying, time: prevTime } = this.props;
|
|
63
102
|
this.viewId = props.viewId ?? this.viewId;
|
|
64
103
|
super.setProps(props);
|
|
104
|
+
// Sync Timeline object when controlled time prop changes
|
|
105
|
+
if (props.time !== undefined && props.time !== prevTime) {
|
|
106
|
+
this.props.timeline?.setTime(props.time);
|
|
107
|
+
}
|
|
108
|
+
// Handle controlled playing state changes
|
|
109
|
+
if (props.playing !== undefined && props.playing !== prevPlaying) {
|
|
110
|
+
if (props.playing && !this._playing) {
|
|
111
|
+
this._startTimer();
|
|
112
|
+
}
|
|
113
|
+
else if (!props.playing && this._playing) {
|
|
114
|
+
this._stopTimer();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
65
117
|
}
|
|
66
118
|
onAdd() {
|
|
67
|
-
this.
|
|
119
|
+
this._playing = false;
|
|
68
120
|
this.timerId = null;
|
|
69
|
-
if (this.props.autoPlay)
|
|
70
|
-
this.
|
|
121
|
+
if (this.props.autoPlay) {
|
|
122
|
+
if (this.props.playing !== undefined) {
|
|
123
|
+
// In controlled mode, notify parent instead of starting directly
|
|
124
|
+
this.props.onPlayingChange?.(true);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.play();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
71
130
|
}
|
|
72
131
|
onRemove() {
|
|
73
132
|
this.stop();
|
|
74
133
|
}
|
|
75
134
|
onRenderHTML(rootElement) {
|
|
76
135
|
const { timeRange, step, formatLabel } = this.props;
|
|
77
|
-
const
|
|
136
|
+
const isPlaying = this.getPlaying();
|
|
137
|
+
const currentTime = this.getTime();
|
|
78
138
|
rootElement.dataset.placement = this.props.placement;
|
|
79
|
-
render(_jsxs("div", { className: "deck-widget-button-group", children: [
|
|
139
|
+
render(_jsxs("div", { className: "deck-widget-button-group", children: [isPlaying ? (_jsx(IconButton, { label: "Pause", className: "deck-widget-timeline-pause", onClick: this.handlePlayPause })) : (_jsx(IconButton, { label: "Play", className: "deck-widget-timeline-play", onClick: this.handlePlayPause })), _jsx(RangeInput, { min: timeRange[0], max: timeRange[1], orientation: "horizontal", step: step, value: [currentTime, currentTime], onChange: this.handleTimeChange, decorations: [
|
|
80
140
|
{
|
|
81
141
|
position: [currentTime, currentTime + step],
|
|
82
142
|
element: (_jsx("div", { className: "deck-widget-timeline-label deck-widget-timeline-label--current", children: formatLabel(currentTime) }))
|
|
@@ -84,22 +144,33 @@ export class TimelineWidget extends Widget {
|
|
|
84
144
|
] })] }), rootElement);
|
|
85
145
|
}
|
|
86
146
|
play() {
|
|
87
|
-
this.
|
|
147
|
+
this._playing = true;
|
|
88
148
|
const { timeRange: [min, max] } = this.props;
|
|
89
|
-
|
|
149
|
+
// In uncontrolled mode, reset to start if at end
|
|
150
|
+
if (this.props.time === undefined && this.getTime() >= max) {
|
|
90
151
|
this.currentTime = min;
|
|
91
152
|
this.props.onTimeChange(min);
|
|
153
|
+
this.props.timeline?.setTime(min);
|
|
92
154
|
}
|
|
93
155
|
this.updateHTML();
|
|
94
156
|
this.tick();
|
|
95
157
|
}
|
|
96
158
|
stop() {
|
|
97
|
-
this.
|
|
159
|
+
this._stopTimer();
|
|
160
|
+
this.updateHTML();
|
|
161
|
+
}
|
|
162
|
+
/** Start the playback timer (used internally) */
|
|
163
|
+
_startTimer() {
|
|
164
|
+
this._playing = true;
|
|
165
|
+
this.tick();
|
|
166
|
+
}
|
|
167
|
+
/** Stop the playback timer (used internally) */
|
|
168
|
+
_stopTimer() {
|
|
169
|
+
this._playing = false;
|
|
98
170
|
if (this.timerId !== null) {
|
|
99
171
|
window.clearTimeout(this.timerId);
|
|
100
172
|
this.timerId = null;
|
|
101
173
|
}
|
|
102
|
-
this.updateHTML();
|
|
103
174
|
}
|
|
104
175
|
}
|
|
105
176
|
TimelineWidget.defaultProps = {
|
|
@@ -111,10 +182,13 @@ TimelineWidget.defaultProps = {
|
|
|
111
182
|
timeRange: [0, 100],
|
|
112
183
|
step: 1,
|
|
113
184
|
initialTime: undefined,
|
|
185
|
+
time: undefined,
|
|
114
186
|
onTimeChange: () => { },
|
|
115
187
|
autoPlay: false,
|
|
116
188
|
loop: false,
|
|
117
189
|
playInterval: 1000,
|
|
190
|
+
playing: undefined,
|
|
191
|
+
onPlayingChange: () => { },
|
|
118
192
|
formatLabel: String
|
|
119
193
|
};
|
|
120
194
|
//# sourceMappingURL=timeline-widget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline-widget.js","sourceRoot":"","sources":["../src/timeline-widget.tsx"],"names":[],"mappings":";AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,MAAM,EAAyC,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAC,UAAU,EAAC,wCAAqC;AACxD,OAAO,EAAC,UAAU,EAAC,wCAAqC;
|
|
1
|
+
{"version":3,"file":"timeline-widget.js","sourceRoot":"","sources":["../src/timeline-widget.tsx"],"names":[],"mappings":"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"}
|
package/dist/zoom-widget.d.ts
CHANGED
|
@@ -13,6 +13,18 @@ export type ZoomWidgetProps = WidgetProps & {
|
|
|
13
13
|
zoomOutLabel?: string;
|
|
14
14
|
/** Zoom transition duration in ms. 0 disables the transition */
|
|
15
15
|
transitionDuration?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Callback when zoom buttons are clicked.
|
|
18
|
+
* Called for each viewport that will be zoomed.
|
|
19
|
+
*/
|
|
20
|
+
onZoom?: (params: {
|
|
21
|
+
/** The view being zoomed */
|
|
22
|
+
viewId: string;
|
|
23
|
+
/** Zoom direction: +1 for zoom in, -1 for zoom out */
|
|
24
|
+
delta: number;
|
|
25
|
+
/** The new zoom level */
|
|
26
|
+
zoom: number;
|
|
27
|
+
}) => void;
|
|
16
28
|
};
|
|
17
29
|
export declare class ZoomWidget extends Widget<ZoomWidgetProps> {
|
|
18
30
|
static defaultProps: Required<ZoomWidgetProps>;
|
|
@@ -21,7 +33,7 @@ export declare class ZoomWidget extends Widget<ZoomWidgetProps> {
|
|
|
21
33
|
constructor(props?: ZoomWidgetProps);
|
|
22
34
|
setProps(props: Partial<ZoomWidgetProps>): void;
|
|
23
35
|
onRenderHTML(rootElement: HTMLElement): void;
|
|
24
|
-
handleZoom(viewId: string, nextZoom: number): void;
|
|
36
|
+
handleZoom(viewId: string, nextZoom: number, delta: number): void;
|
|
25
37
|
handleZoomIn(): void;
|
|
26
38
|
handleZoomOut(): void;
|
|
27
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoom-widget.d.ts","sourceRoot":"","sources":["../src/zoom-widget.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAwC,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAC,WAAW,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAKhE,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAC1C,8DAA8D;IAC9D,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"zoom-widget.d.ts","sourceRoot":"","sources":["../src/zoom-widget.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAwC,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAC,WAAW,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAKhE,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAC1C,8DAA8D;IAC9D,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE;QAChB,4BAA4B;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,sDAAsD;QACtD,KAAK,EAAE,MAAM,CAAC;QACd,yBAAyB;QACzB,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,IAAI,CAAC;CACZ,CAAC;AAEF,qBAAa,UAAW,SAAQ,MAAM,CAAC,eAAe,CAAC;IACrD,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAU5C;IAEF,SAAS,SAAsB;IAC/B,SAAS,EAAE,eAAe,CAAc;gBAE5B,KAAK,GAAE,eAAoB;IAKvC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC;IAMxC,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAkB5C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAgC1D,YAAY;IAQZ,aAAa;CAOd"}
|
package/dist/zoom-widget.js
CHANGED
|
@@ -22,7 +22,7 @@ export class ZoomWidget extends Widget {
|
|
|
22
22
|
const ui = (_jsxs(ButtonGroup, { orientation: this.props.orientation, children: [_jsx(IconButton, { onClick: () => this.handleZoomIn(), label: this.props.zoomInLabel, className: "deck-widget-zoom-in" }), _jsx(IconButton, { onClick: () => this.handleZoomOut(), label: this.props.zoomOutLabel, className: "deck-widget-zoom-out" })] }));
|
|
23
23
|
render(ui, rootElement);
|
|
24
24
|
}
|
|
25
|
-
handleZoom(viewId, nextZoom) {
|
|
25
|
+
handleZoom(viewId, nextZoom, delta) {
|
|
26
26
|
// Respect minZoom/maxZoom constraints from the view state
|
|
27
27
|
const viewState = this.getViewState(viewId);
|
|
28
28
|
if (viewState) {
|
|
@@ -34,6 +34,8 @@ export class ZoomWidget extends Widget {
|
|
|
34
34
|
nextZoom = Math.min(maxZoom, nextZoom);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
// Call callback
|
|
38
|
+
this.props.onZoom?.({ viewId, delta, zoom: nextZoom });
|
|
37
39
|
const nextViewState = {
|
|
38
40
|
...viewState,
|
|
39
41
|
zoom: nextZoom
|
|
@@ -53,14 +55,14 @@ export class ZoomWidget extends Widget {
|
|
|
53
55
|
const viewIds = this.viewId ? [this.viewId] : (this.deck?.getViews().map(v => v.id) ?? []);
|
|
54
56
|
for (const viewId of viewIds) {
|
|
55
57
|
const viewState = this.getViewState(viewId);
|
|
56
|
-
this.handleZoom(viewId, viewState.zoom + 1);
|
|
58
|
+
this.handleZoom(viewId, viewState.zoom + 1, 1);
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
61
|
handleZoomOut() {
|
|
60
62
|
const viewIds = this.viewId ? [this.viewId] : (this.deck?.getViews().map(v => v.id) ?? []);
|
|
61
63
|
for (const viewId of viewIds) {
|
|
62
64
|
const viewState = this.getViewState(viewId);
|
|
63
|
-
this.handleZoom(viewId, viewState.zoom - 1);
|
|
65
|
+
this.handleZoom(viewId, viewState.zoom - 1, -1);
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
}
|
|
@@ -72,6 +74,7 @@ ZoomWidget.defaultProps = {
|
|
|
72
74
|
transitionDuration: 200,
|
|
73
75
|
zoomInLabel: 'Zoom In',
|
|
74
76
|
zoomOutLabel: 'Zoom Out',
|
|
75
|
-
viewId: null
|
|
77
|
+
viewId: null,
|
|
78
|
+
onZoom: () => { }
|
|
76
79
|
};
|
|
77
80
|
//# sourceMappingURL=zoom-widget.js.map
|
package/dist/zoom-widget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoom-widget.js","sourceRoot":"","sources":["../src/zoom-widget.tsx"],"names":[],"mappings":";AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAC,WAAW,EAAC,yCAAsC;AAC1D,OAAO,EAAC,UAAU,EAAC,wCAAqC;
|
|
1
|
+
{"version":3,"file":"zoom-widget.js","sourceRoot":"","sources":["../src/zoom-widget.tsx"],"names":[],"mappings":"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"}
|