@deck.gl/widgets 9.3.0-alpha.6 → 9.3.0-beta.2
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 +285 -93
- 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 +278 -90
- package/dist/index.cjs.map +3 -3
- 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 +22 -1
- package/dist/zoom-widget.d.ts.map +1 -1
- package/dist/zoom-widget.js +62 -15
- package/dist/zoom-widget.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +3 -3
- 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 +43 -14
- package/src/theme-widget.tsx +56 -17
- package/src/timeline-widget.tsx +123 -24
- package/src/zoom-widget.tsx +108 -17
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,26 @@ export type ZoomWidgetProps = WidgetProps & {
|
|
|
13
13
|
zoomOutLabel?: string;
|
|
14
14
|
/** Zoom transition duration in ms. 0 disables the transition */
|
|
15
15
|
transitionDuration?: number;
|
|
16
|
+
/** Which axes to apply zoom to. One of 'X', 'Y' or 'all'.
|
|
17
|
+
* Only effective if the current view is OrthographicView.
|
|
18
|
+
*/
|
|
19
|
+
zoomAxis?: 'X' | 'Y' | 'all';
|
|
20
|
+
/**
|
|
21
|
+
* Callback when zoom buttons are clicked.
|
|
22
|
+
* Called for each viewport that will be zoomed.
|
|
23
|
+
*/
|
|
24
|
+
onZoom?: (params: {
|
|
25
|
+
/** The view being zoomed */
|
|
26
|
+
viewId: string;
|
|
27
|
+
/** Zoom direction: +1 for zoom in, -1 for zoom out */
|
|
28
|
+
delta: number;
|
|
29
|
+
/** The new zoom level */
|
|
30
|
+
zoom: number;
|
|
31
|
+
/** The new zoom level of the X axis, if using OrthographicView */
|
|
32
|
+
zoomX?: number;
|
|
33
|
+
/** The new zoom level of the Y axis, if using OrthographicView */
|
|
34
|
+
zoomY?: number;
|
|
35
|
+
}) => void;
|
|
16
36
|
};
|
|
17
37
|
export declare class ZoomWidget extends Widget<ZoomWidgetProps> {
|
|
18
38
|
static defaultProps: Required<ZoomWidgetProps>;
|
|
@@ -21,7 +41,8 @@ export declare class ZoomWidget extends Widget<ZoomWidgetProps> {
|
|
|
21
41
|
constructor(props?: ZoomWidgetProps);
|
|
22
42
|
setProps(props: Partial<ZoomWidgetProps>): void;
|
|
23
43
|
onRenderHTML(rootElement: HTMLElement): void;
|
|
24
|
-
|
|
44
|
+
isOrthographicView(viewId: string): boolean;
|
|
45
|
+
handleZoom(viewId: string, delta: number): void;
|
|
25
46
|
handleZoomIn(): void;
|
|
26
47
|
handleZoomOut(): void;
|
|
27
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoom-widget.d.ts","sourceRoot":"","sources":["../src/zoom-widget.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"zoom-widget.d.ts","sourceRoot":"","sources":["../src/zoom-widget.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAA0D,MAAM,eAAe,CAAC;AAC9F,OAAO,KAAK,EAAC,WAAW,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;AAKvF,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;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;IAC7B;;;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;QACb,kEAAkE;QAClE,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,kEAAkE;QAClE,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,KAAK,IAAI,CAAC;CACZ,CAAC;AAEF,qBAAa,UAAW,SAAQ,MAAM,CAAC,eAAe,CAAC;IACrD,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAW5C;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,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAM3C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAmExC,YAAY;IAOZ,aAAa;CAMd"}
|
package/dist/zoom-widget.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
|
|
|
2
2
|
// deck.gl
|
|
3
3
|
// SPDX-License-Identifier: MIT
|
|
4
4
|
// Copyright (c) vis.gl contributors
|
|
5
|
-
import { Widget, FlyToInterpolator, LinearInterpolator } from '@deck.gl/core';
|
|
5
|
+
import { Widget, FlyToInterpolator, LinearInterpolator, OrthographicView } from '@deck.gl/core';
|
|
6
6
|
import { render } from 'preact';
|
|
7
7
|
import { ButtonGroup } from "./lib/components/button-group.js";
|
|
8
8
|
import { IconButton } from "./lib/components/icon-button.js";
|
|
@@ -22,21 +22,60 @@ 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
|
-
|
|
25
|
+
isOrthographicView(viewId) {
|
|
26
|
+
const deck = this.deck;
|
|
27
|
+
const view = deck?.isInitialized && deck.getView(viewId);
|
|
28
|
+
return view instanceof OrthographicView;
|
|
29
|
+
}
|
|
30
|
+
handleZoom(viewId, delta) {
|
|
26
31
|
// Respect minZoom/maxZoom constraints from the view state
|
|
27
32
|
const viewState = this.getViewState(viewId);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
const newViewState = {};
|
|
34
|
+
if (this.isOrthographicView(viewId)) {
|
|
35
|
+
const { zoomAxis } = this.props;
|
|
36
|
+
const { zoomX, minZoomX, maxZoomX, zoomY, minZoomY, maxZoomY } = normalizeOrthographicViewState(viewState);
|
|
37
|
+
let nextZoom;
|
|
38
|
+
let nextZoomY;
|
|
39
|
+
if (zoomAxis === 'X') {
|
|
40
|
+
nextZoom = clamp(zoomX + delta, minZoomX, maxZoomX);
|
|
41
|
+
nextZoomY = zoomY;
|
|
42
|
+
}
|
|
43
|
+
else if (zoomAxis === 'Y') {
|
|
44
|
+
nextZoom = zoomX;
|
|
45
|
+
nextZoomY = clamp(zoomY + delta, minZoomY, maxZoomY);
|
|
32
46
|
}
|
|
33
|
-
|
|
34
|
-
|
|
47
|
+
else {
|
|
48
|
+
const clampedDelta = clamp(delta, Math.max(minZoomX - zoomX, minZoomY - zoomY), Math.min(maxZoomX - zoomX, maxZoomY - zoomY));
|
|
49
|
+
nextZoom = zoomX + clampedDelta;
|
|
50
|
+
nextZoomY = zoomY + clampedDelta;
|
|
35
51
|
}
|
|
52
|
+
newViewState.zoom = [nextZoom, nextZoomY];
|
|
53
|
+
newViewState.zoomX = nextZoom;
|
|
54
|
+
newViewState.zoomY = nextZoomY;
|
|
55
|
+
// Call callback
|
|
56
|
+
this.props.onZoom?.({
|
|
57
|
+
viewId,
|
|
58
|
+
delta,
|
|
59
|
+
// `zoom` will not match the new state if using 2D zoom. Deprecated behavior for backward compatibility.
|
|
60
|
+
zoom: zoomAxis === 'Y' ? nextZoomY : nextZoom,
|
|
61
|
+
zoomX: nextZoom,
|
|
62
|
+
zoomY: nextZoomY
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const { zoom = 0, minZoom, maxZoom } = viewState;
|
|
67
|
+
const nextZoom = clamp(zoom + delta, minZoom, maxZoom);
|
|
68
|
+
newViewState.zoom = nextZoom;
|
|
69
|
+
// Call callback
|
|
70
|
+
this.props.onZoom?.({
|
|
71
|
+
viewId,
|
|
72
|
+
delta,
|
|
73
|
+
zoom: nextZoom
|
|
74
|
+
});
|
|
36
75
|
}
|
|
37
76
|
const nextViewState = {
|
|
38
77
|
...viewState,
|
|
39
|
-
|
|
78
|
+
...newViewState
|
|
40
79
|
};
|
|
41
80
|
if (this.props.transitionDuration > 0) {
|
|
42
81
|
nextViewState.transitionDuration = this.props.transitionDuration;
|
|
@@ -44,7 +83,7 @@ export class ZoomWidget extends Widget {
|
|
|
44
83
|
'latitude' in nextViewState
|
|
45
84
|
? new FlyToInterpolator()
|
|
46
85
|
: new LinearInterpolator({
|
|
47
|
-
transitionProps: ['zoom']
|
|
86
|
+
transitionProps: 'zoomX' in newViewState ? ['zoomX', 'zoomY'] : ['zoom']
|
|
48
87
|
});
|
|
49
88
|
}
|
|
50
89
|
this.setViewState(viewId, nextViewState);
|
|
@@ -52,15 +91,13 @@ export class ZoomWidget extends Widget {
|
|
|
52
91
|
handleZoomIn() {
|
|
53
92
|
const viewIds = this.viewId ? [this.viewId] : (this.deck?.getViews().map(v => v.id) ?? []);
|
|
54
93
|
for (const viewId of viewIds) {
|
|
55
|
-
|
|
56
|
-
this.handleZoom(viewId, viewState.zoom + 1);
|
|
94
|
+
this.handleZoom(viewId, 1);
|
|
57
95
|
}
|
|
58
96
|
}
|
|
59
97
|
handleZoomOut() {
|
|
60
98
|
const viewIds = this.viewId ? [this.viewId] : (this.deck?.getViews().map(v => v.id) ?? []);
|
|
61
99
|
for (const viewId of viewIds) {
|
|
62
|
-
|
|
63
|
-
this.handleZoom(viewId, viewState.zoom - 1);
|
|
100
|
+
this.handleZoom(viewId, -1);
|
|
64
101
|
}
|
|
65
102
|
}
|
|
66
103
|
}
|
|
@@ -72,6 +109,16 @@ ZoomWidget.defaultProps = {
|
|
|
72
109
|
transitionDuration: 200,
|
|
73
110
|
zoomInLabel: 'Zoom In',
|
|
74
111
|
zoomOutLabel: 'Zoom Out',
|
|
75
|
-
|
|
112
|
+
zoomAxis: 'all',
|
|
113
|
+
viewId: null,
|
|
114
|
+
onZoom: () => { }
|
|
76
115
|
};
|
|
116
|
+
function clamp(zoom, minZoom, maxZoom) {
|
|
117
|
+
return zoom < minZoom ? minZoom : zoom > maxZoom ? maxZoom : zoom;
|
|
118
|
+
}
|
|
119
|
+
function normalizeOrthographicViewState({ zoom = 0, zoomX, zoomY, minZoom = -Infinity, maxZoom = Infinity, minZoomX = minZoom, maxZoomX = maxZoom, minZoomY = minZoom, maxZoomY = maxZoom }) {
|
|
120
|
+
zoomX = zoomX ?? (Array.isArray(zoom) ? zoom[0] : zoom);
|
|
121
|
+
zoomY = zoomY ?? (Array.isArray(zoom) ? zoom[1] : zoom);
|
|
122
|
+
return { zoomX, zoomY, minZoomX, minZoomY, maxZoomX, maxZoomY };
|
|
123
|
+
}
|
|
77
124
|
//# 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;
|
|
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,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAE9F,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAC,WAAW,EAAC,yCAAsC;AAC1D,OAAO,EAAC,UAAU,EAAC,wCAAqC;AAqCxD,MAAM,OAAO,UAAW,SAAQ,MAAuB;IAiBrD,YAAY,QAAyB,EAAE;QACrC,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,cAAS,GAAG,kBAAkB,CAAC;QAC/B,cAAS,GAAoB,UAAU,CAAC;QAItC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,KAA+B;QACtC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACnD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAC1C,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,WAAwB;QACnC,MAAM,EAAE,GAAG,CACT,MAAC,WAAW,IAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,aAC9C,KAAC,UAAU,IACT,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAClC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAC7B,SAAS,EAAC,qBAAqB,GAC/B,EACF,KAAC,UAAU,IACT,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EACnC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAC9B,SAAS,EAAC,sBAAsB,GAChC,IACU,CACf,CAAC;QACF,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC1B,CAAC;IAED,kBAAkB,CAAC,MAAc;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,EAAE,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,YAAY,gBAAgB,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,KAAa;QACtC,0DAA0D;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,YAAY,GAA4B,EAAE,CAAC;QAEjD,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC9B,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAC,GAAG,8BAA8B,CAC3F,SAAgB,CACjB,CAAC;YACF,IAAI,QAAgB,CAAC;YACrB,IAAI,SAAiB,CAAC;YACtB,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACrB,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACpD,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;iBAAM,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBAC5B,QAAQ,GAAG,KAAK,CAAC;gBACjB,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,KAAK,CACxB,KAAK,EACL,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC,EAC5C,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC,CAC7C,CAAC;gBACF,QAAQ,GAAG,KAAK,GAAG,YAAY,CAAC;gBAChC,SAAS,GAAG,KAAK,GAAG,YAAY,CAAC;YACnC,CAAC;YACD,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC1C,YAAY,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC9B,YAAY,CAAC,KAAK,GAAG,SAAS,CAAC;YAC/B,gBAAgB;YAChB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM;gBACN,KAAK;gBACL,wGAAwG;gBACxG,IAAI,EAAE,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;gBAC7C,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,EAAC,IAAI,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAC,GAAG,SAAgB,CAAC;YACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACvD,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC7B,gBAAgB;YAChB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM;gBACN,KAAK;gBACL,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;QAED,MAAM,aAAa,GAA4B;YAC7C,GAAG,SAAS;YACZ,GAAG,YAAY;SAChB,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACtC,aAAa,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;YACjE,aAAa,CAAC,sBAAsB;gBAClC,UAAU,IAAI,aAAa;oBACzB,CAAC,CAAC,IAAI,iBAAiB,EAAE;oBACzB,CAAC,CAAC,IAAI,kBAAkB,CAAC;wBACrB,eAAe,EAAE,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;qBACzE,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3F,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,aAAa;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3F,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;;AAlIM,uBAAY,GAA8B;IAC/C,GAAG,MAAM,CAAC,YAAY;IACtB,EAAE,EAAE,MAAM;IACV,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IACvB,kBAAkB,EAAE,GAAG;IACvB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,UAAU;IACxB,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;CACjB,AAXkB,CAWjB;AA0HJ,SAAS,KAAK,CAAC,IAAY,EAAE,OAAe,EAAE,OAAe;IAC3D,OAAO,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC;AAED,SAAS,8BAA8B,CAAC,EACtC,IAAI,GAAG,CAAC,EACR,KAAK,EACL,KAAK,EACL,OAAO,GAAG,CAAC,QAAQ,EACnB,OAAO,GAAG,QAAQ,EAClB,QAAQ,GAAG,OAAO,EAClB,QAAQ,GAAG,OAAO,EAClB,QAAQ,GAAG,OAAO,EAClB,QAAQ,GAAG,OAAO,EACI;IAQtB,KAAK,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxD,KAAK,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC;AAChE,CAAC"}
|