@deck.gl-community/widgets 9.2.0-beta.5
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/LICENSE +20 -0
- package/README.md +43 -0
- package/dist/_deprecate/long-press-button.d.ts +13 -0
- package/dist/_deprecate/long-press-button.d.ts.map +1 -0
- package/dist/_deprecate/long-press-button.js +32 -0
- package/dist/_deprecate/long-press-button.js.map +1 -0
- package/dist/_deprecate/view-control-widget.d.ts +78 -0
- package/dist/_deprecate/view-control-widget.d.ts.map +1 -0
- package/dist/_deprecate/view-control-widget.js +198 -0
- package/dist/_deprecate/view-control-widget.js.map +1 -0
- package/dist/index.cjs +708 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/widgets/html-cluster-widget.d.ts +25 -0
- package/dist/widgets/html-cluster-widget.d.ts.map +1 -0
- package/dist/widgets/html-cluster-widget.js +39 -0
- package/dist/widgets/html-cluster-widget.js.map +1 -0
- package/dist/widgets/html-overlay-item.d.ts +13 -0
- package/dist/widgets/html-overlay-item.d.ts.map +1 -0
- package/dist/widgets/html-overlay-item.js +10 -0
- package/dist/widgets/html-overlay-item.js.map +1 -0
- package/dist/widgets/html-overlay-widget.d.ts +45 -0
- package/dist/widgets/html-overlay-widget.d.ts.map +1 -0
- package/dist/widgets/html-overlay-widget.js +112 -0
- package/dist/widgets/html-overlay-widget.js.map +1 -0
- package/dist/widgets/html-tooltip-widget.d.ts +30 -0
- package/dist/widgets/html-tooltip-widget.d.ts.map +1 -0
- package/dist/widgets/html-tooltip-widget.js +67 -0
- package/dist/widgets/html-tooltip-widget.js.map +1 -0
- package/dist/widgets/long-press-button.d.ts +22 -0
- package/dist/widgets/long-press-button.d.ts.map +1 -0
- package/dist/widgets/long-press-button.js +84 -0
- package/dist/widgets/long-press-button.js.map +1 -0
- package/dist/widgets/long-press-controller.d.ts +27 -0
- package/dist/widgets/long-press-controller.d.ts.map +1 -0
- package/dist/widgets/long-press-controller.js +144 -0
- package/dist/widgets/long-press-controller.js.map +1 -0
- package/dist/widgets/pan-widget.d.ts +33 -0
- package/dist/widgets/pan-widget.d.ts.map +1 -0
- package/dist/widgets/pan-widget.js +141 -0
- package/dist/widgets/pan-widget.js.map +1 -0
- package/dist/widgets/view-manager-utils.d.ts +11 -0
- package/dist/widgets/view-manager-utils.d.ts.map +1 -0
- package/dist/widgets/view-manager-utils.js +13 -0
- package/dist/widgets/view-manager-utils.js.map +1 -0
- package/dist/widgets/zoom-range-widget.d.ts +43 -0
- package/dist/widgets/zoom-range-widget.d.ts.map +1 -0
- package/dist/widgets/zoom-range-widget.js +190 -0
- package/dist/widgets/zoom-range-widget.js.map +1 -0
- package/package.json +41 -0
- package/src/_deprecate/long-press-button.tsx +50 -0
- package/src/_deprecate/view-control-widget.tsx +339 -0
- package/src/index.ts +18 -0
- package/src/widgets/html-cluster-widget.ts +84 -0
- package/src/widgets/html-overlay-item.tsx +32 -0
- package/src/widgets/html-overlay-widget.tsx +147 -0
- package/src/widgets/html-tooltip-widget.tsx +93 -0
- package/src/widgets/long-press-button.tsx +125 -0
- package/src/widgets/long-press-controller.ts +159 -0
- package/src/widgets/pan-widget.tsx +182 -0
- package/src/widgets/view-manager-utils.ts +24 -0
- package/src/widgets/zoom-range-widget.tsx +284 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (c) 2015 - 2021 Uber Technologies, Inc.
|
|
2
|
+
Copyright (c) 2022 - 2025 vis.gl contributors
|
|
3
|
+
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
in the Software without restriction, including without limitation the rights
|
|
7
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
furnished to do so, subject to the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be included in
|
|
12
|
+
all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
20
|
+
THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
:::danger
|
|
4
|
+
The deck.gl-community repo is specifically set up to collect useful code that no longer has dedicated maintainers. This means that there is often no one who can respond quickly to issues. The vis.gl / Open Visualization team members who try to keep this running can only put a few hours into it every now and then. It is important to understand this limitation. If your project depends on timely fixes, and you are not able to contribute them yourself, deck.gl-community modules may not be the right choice for you.
|
|
5
|
+
:::
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
This module packages UI widgets that integrate with [deck.gl](https://deck.gl) view state management. It currently includes the `PanWidget` and `ZoomRangeWidget` that were previously available under `@deck.gl-community/experimental`.
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install @deck.gl-community/widgets
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
import DeckGL from '@deck.gl/react';
|
|
22
|
+
import {OrthographicView} from '@deck.gl/core';
|
|
23
|
+
import {PanWidget, ZoomRangeWidget} from '@deck.gl-community/widgets';
|
|
24
|
+
|
|
25
|
+
const widgets = [
|
|
26
|
+
new PanWidget({placement: 'top-left', style: {margin: '16px'}}),
|
|
27
|
+
new ZoomRangeWidget({placement: 'top-left', style: {margin: '96px 0 0 16px'}})
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
function App() {
|
|
31
|
+
return (
|
|
32
|
+
<DeckGL
|
|
33
|
+
views={new OrthographicView({id: 'ortho'})}
|
|
34
|
+
initialViewState={{target: [0, 0], zoom: 0}}
|
|
35
|
+
controller={true}
|
|
36
|
+
widgets={widgets}
|
|
37
|
+
layers={[/* ... */]}
|
|
38
|
+
/>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
See the [Pan and Zoom widgets example](../../examples/widgets/pan-and-zoom-controls) for a non-geospatial walkthrough.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Component } from 'preact';
|
|
2
|
+
export type LongPressButtonProps = {
|
|
3
|
+
onClick: () => void;
|
|
4
|
+
children: any;
|
|
5
|
+
};
|
|
6
|
+
export declare class LongPressButton extends Component<LongPressButtonProps> {
|
|
7
|
+
buttonPressTimer: ReturnType<typeof setTimeout> | null;
|
|
8
|
+
_repeat: () => void;
|
|
9
|
+
_handleButtonPress: () => void;
|
|
10
|
+
_handleButtonRelease: () => void;
|
|
11
|
+
render(): import("preact").JSX.Element;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=long-press-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"long-press-button.d.ts","sourceRoot":"","sources":["../../src/_deprecate/long-press-button.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAC,SAAS,EAAC,MAAM,QAAQ,CAAC;AAEjC,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,GAAG,CAAC;CACf,CAAC;AAEF,qBAAa,eAAgB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IAClE,gBAAgB,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAQ;IAE9D,OAAO,aAKL;IAEF,kBAAkB,aAEhB;IAEF,oBAAoB,aAKlB;IAEF,MAAM;CAiBP"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx } from "preact/jsx-runtime";
|
|
2
|
+
// deck.gl-community
|
|
3
|
+
// SPDX-License-Identifier: MIT
|
|
4
|
+
// Copyright (c) vis.gl contributors
|
|
5
|
+
import { Component } from 'preact';
|
|
6
|
+
export class LongPressButton extends Component {
|
|
7
|
+
buttonPressTimer = null;
|
|
8
|
+
_repeat = () => {
|
|
9
|
+
if (this.buttonPressTimer) {
|
|
10
|
+
this.props.onClick();
|
|
11
|
+
this.buttonPressTimer = setTimeout(this._repeat, 100);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
_handleButtonPress = () => {
|
|
15
|
+
this.buttonPressTimer = setTimeout(this._repeat, 100);
|
|
16
|
+
};
|
|
17
|
+
_handleButtonRelease = () => {
|
|
18
|
+
if (this.buttonPressTimer) {
|
|
19
|
+
clearTimeout(this.buttonPressTimer);
|
|
20
|
+
}
|
|
21
|
+
this.buttonPressTimer = null;
|
|
22
|
+
};
|
|
23
|
+
render() {
|
|
24
|
+
return (_jsx("div", { className: "deck-widget-button", children: _jsx("div", { style: {
|
|
25
|
+
pointerEvents: 'auto'
|
|
26
|
+
}, onMouseDown: (event) => {
|
|
27
|
+
this._handleButtonPress();
|
|
28
|
+
document.addEventListener('mouseup', this._handleButtonRelease, { once: true });
|
|
29
|
+
}, children: this.props.children }) }));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=long-press-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"long-press-button.js","sourceRoot":"","sources":["../../src/_deprecate/long-press-button.tsx"],"names":[],"mappings":";AAAA,oBAAoB;AACpB,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,SAAS,EAAC,MAAM,QAAQ,CAAC;AAOjC,MAAM,OAAO,eAAgB,SAAQ,SAA+B;IAClE,gBAAgB,GAAyC,IAAI,CAAC;IAE9D,OAAO,GAAG,GAAG,EAAE;QACb,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC;IAEF,kBAAkB,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,oBAAoB,GAAG,GAAG,EAAE;QAC1B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM;QACJ,OAAO,CACL,cAAK,SAAS,EAAC,oBAAoB,YACjC,cACE,KAAK,EAAE;oBACL,aAAa,EAAE,MAAM;iBACtB,EACD,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;oBACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC1B,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBAChF,CAAC,YAEA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAChB,GACF,CACP,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Component } from 'preact';
|
|
2
|
+
import { Widget, type Deck, type Viewport, type WidgetPlacement } from '@deck.gl/core';
|
|
3
|
+
export declare const ViewControlWrapper: ({ children }: {
|
|
4
|
+
children: any;
|
|
5
|
+
}) => import("preact").JSX.Element;
|
|
6
|
+
export declare const NavigationButtonContainer: ({ children }: {
|
|
7
|
+
children: any;
|
|
8
|
+
}) => import("preact").JSX.Element;
|
|
9
|
+
export type NavigationButtonProps = {
|
|
10
|
+
left: any;
|
|
11
|
+
top: any;
|
|
12
|
+
rotate?: number;
|
|
13
|
+
children?: any;
|
|
14
|
+
onClick?: () => void;
|
|
15
|
+
};
|
|
16
|
+
export declare const NavigationButton: (props: NavigationButtonProps) => import("preact").JSX.Element;
|
|
17
|
+
export declare const ZoomControlWrapper: ({ children }: {
|
|
18
|
+
children: any;
|
|
19
|
+
}) => import("preact").JSX.Element;
|
|
20
|
+
export declare const VerticalSlider: ({ children }: {
|
|
21
|
+
children: any;
|
|
22
|
+
}) => import("preact").JSX.Element;
|
|
23
|
+
export declare const ZoomControlButton: ({ children }: {
|
|
24
|
+
children: any;
|
|
25
|
+
}) => import("preact").JSX.Element;
|
|
26
|
+
export type ViewControlProps = {
|
|
27
|
+
id?: string;
|
|
28
|
+
viewId?: string;
|
|
29
|
+
placement?: WidgetPlacement;
|
|
30
|
+
fitBounds: () => void;
|
|
31
|
+
panBy?: (dx: number, dy: number) => void;
|
|
32
|
+
zoomBy?: (delta: number) => void;
|
|
33
|
+
zoomLevel: number;
|
|
34
|
+
minZoom: number;
|
|
35
|
+
maxZoom: number;
|
|
36
|
+
deltaPan: number;
|
|
37
|
+
deltaZoom: number;
|
|
38
|
+
/** CSS inline style overrides. */
|
|
39
|
+
style?: Partial<CSSStyleDeclaration>;
|
|
40
|
+
/** Additional CSS class. */
|
|
41
|
+
className?: string;
|
|
42
|
+
};
|
|
43
|
+
export declare class ViewControl extends Component<ViewControlProps> {
|
|
44
|
+
static displayName: string;
|
|
45
|
+
static defaultProps: Required<ViewControlProps>;
|
|
46
|
+
panUp: () => void;
|
|
47
|
+
panDown: () => void;
|
|
48
|
+
panLeft: () => void;
|
|
49
|
+
panRight: () => void;
|
|
50
|
+
zoomIn: () => void;
|
|
51
|
+
zoomOut: () => void;
|
|
52
|
+
onChangeZoomLevel: (evt: any) => void;
|
|
53
|
+
render(): import("preact").JSX.Element;
|
|
54
|
+
}
|
|
55
|
+
export declare class ViewControlWidget extends Widget<ViewControlProps> {
|
|
56
|
+
id: string;
|
|
57
|
+
placement: WidgetPlacement;
|
|
58
|
+
orientation: 'vertical' | 'horizontal';
|
|
59
|
+
viewId?: string | null;
|
|
60
|
+
viewports: {
|
|
61
|
+
[id: string]: Viewport;
|
|
62
|
+
};
|
|
63
|
+
element?: HTMLDivElement;
|
|
64
|
+
className: string;
|
|
65
|
+
constructor(props: ViewControlProps);
|
|
66
|
+
onAdd({ deck }: {
|
|
67
|
+
deck: Deck<any>;
|
|
68
|
+
}): HTMLDivElement;
|
|
69
|
+
onRemove(): void;
|
|
70
|
+
onRenderHTML(rootElement: HTMLElement): void;
|
|
71
|
+
setProps(props: Partial<ViewControlProps>): void;
|
|
72
|
+
onViewportChange(viewport: Viewport): void;
|
|
73
|
+
handleDeltaZoom(deltaZoom: number): void;
|
|
74
|
+
handlePanBy(deltaX: number, deltaY: number): void;
|
|
75
|
+
handleZoomView(viewport: Viewport, nextZoom: number): void;
|
|
76
|
+
handlePanViewport(viewport: Viewport, deltaX: number, deltaY: number): void;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=view-control-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-control-widget.d.ts","sourceRoot":"","sources":["../../src/_deprecate/view-control-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "preact/jsx-runtime";
|
|
2
|
+
// deck.gl-community
|
|
3
|
+
// SPDX-License-Identifier: MIT
|
|
4
|
+
// Copyright (c) vis.gl contributors
|
|
5
|
+
import { Component, render } from 'preact';
|
|
6
|
+
// import {FlyToInterpolator} from '@deck.gl/core';
|
|
7
|
+
import { Widget } from '@deck.gl/core';
|
|
8
|
+
import { LongPressButton } from "./long-press-button.js";
|
|
9
|
+
export const ViewControlWrapper = ({ children }) => (_jsxs("div", { style: {
|
|
10
|
+
alignItems: 'center',
|
|
11
|
+
display: 'flex',
|
|
12
|
+
flexDirection: 'column',
|
|
13
|
+
position: 'absolute',
|
|
14
|
+
zIndex: 99,
|
|
15
|
+
userSelect: 'none'
|
|
16
|
+
}, children: [' ', children, ' '] }));
|
|
17
|
+
export const NavigationButtonContainer = ({ children }) => (_jsxs("div", { style: {
|
|
18
|
+
background: '#f7f7f7',
|
|
19
|
+
borderRadius: '23px',
|
|
20
|
+
border: '0.5px solid #eaeaea',
|
|
21
|
+
boxShadow: 'inset 11px 11px 5px -7px rgba(230, 230, 230, 0.49)',
|
|
22
|
+
height: '46px',
|
|
23
|
+
width: '46px'
|
|
24
|
+
}, children: [' ', children, ' '] }));
|
|
25
|
+
export const NavigationButton = (props) => (_jsxs("div", { onClick: props.onClick, style: {
|
|
26
|
+
color: '#848484',
|
|
27
|
+
cursor: 'pointer',
|
|
28
|
+
position: 'absolute',
|
|
29
|
+
left: props.left,
|
|
30
|
+
top: props.top,
|
|
31
|
+
transform: `rotate(${props.rotate || 0}deg)`
|
|
32
|
+
// &:hover,
|
|
33
|
+
// &:active {
|
|
34
|
+
// color: #00ade6;
|
|
35
|
+
// }
|
|
36
|
+
}, children: [' ', props.children, ' '] }));
|
|
37
|
+
export const ZoomControlWrapper = ({ children }) => (_jsxs("div", { style: {
|
|
38
|
+
alignItems: 'center',
|
|
39
|
+
background: '#f7f7f7',
|
|
40
|
+
border: '0.5px solid #eaeaea',
|
|
41
|
+
display: 'flex',
|
|
42
|
+
flexDirection: 'column',
|
|
43
|
+
marginTop: '6px',
|
|
44
|
+
padding: '2px 0',
|
|
45
|
+
width: '18px'
|
|
46
|
+
}, children: [' ', children, ' '] }));
|
|
47
|
+
export const VerticalSlider = ({ children }) => (_jsxs("div", { style: {
|
|
48
|
+
display: 'inline-block',
|
|
49
|
+
height: '100px',
|
|
50
|
+
padding: '0',
|
|
51
|
+
width: '10px'
|
|
52
|
+
// > input[type='range'][orient='vertical'] {
|
|
53
|
+
// -webkit-appearance: slider-vertical;
|
|
54
|
+
// height: 100px;
|
|
55
|
+
// padding: 0;
|
|
56
|
+
// margin: 0;
|
|
57
|
+
// width: 10px;
|
|
58
|
+
// }
|
|
59
|
+
}, children: [' ', children, ' '] }));
|
|
60
|
+
export const ZoomControlButton = ({ children }) => (_jsxs("div", { style: {
|
|
61
|
+
cursor: 'pointer',
|
|
62
|
+
fontSize: '14px',
|
|
63
|
+
fontWeight: 500,
|
|
64
|
+
margin: '-4px'
|
|
65
|
+
// &:hover,
|
|
66
|
+
// &:active {
|
|
67
|
+
// color: #00ade6;
|
|
68
|
+
// }
|
|
69
|
+
}, children: [' ', children, ' '] }));
|
|
70
|
+
export class ViewControl extends Component {
|
|
71
|
+
static displayName = 'ViewControl';
|
|
72
|
+
static defaultProps = {
|
|
73
|
+
id: undefined,
|
|
74
|
+
viewId: undefined,
|
|
75
|
+
placement: 'top-left',
|
|
76
|
+
fitBounds: () => { },
|
|
77
|
+
panBy: () => { },
|
|
78
|
+
zoomBy: () => { },
|
|
79
|
+
zoomLevel: 1,
|
|
80
|
+
deltaPan: 10,
|
|
81
|
+
deltaZoom: 0.1,
|
|
82
|
+
minZoom: 0.1,
|
|
83
|
+
maxZoom: 1,
|
|
84
|
+
style: {},
|
|
85
|
+
className: ''
|
|
86
|
+
};
|
|
87
|
+
// pan actions
|
|
88
|
+
panUp = () => this.props.panBy(0, this.props.deltaPan);
|
|
89
|
+
panDown = () => this.props.panBy(0, -1 * this.props.deltaPan);
|
|
90
|
+
panLeft = () => this.props.panBy(this.props.deltaPan, 0);
|
|
91
|
+
panRight = () => this.props.panBy(-1 * this.props.deltaPan, 0);
|
|
92
|
+
// zoom actions
|
|
93
|
+
zoomIn = () => this.props.zoomBy(this.props.deltaZoom);
|
|
94
|
+
zoomOut = () => this.props.zoomBy(-1 * this.props.deltaZoom);
|
|
95
|
+
onChangeZoomLevel = (evt) => {
|
|
96
|
+
const delta = evt.target.value - this.props.zoomLevel;
|
|
97
|
+
this.props.zoomBy(delta);
|
|
98
|
+
};
|
|
99
|
+
render() {
|
|
100
|
+
const buttons = [
|
|
101
|
+
{ top: -2, left: 14, rotate: 0, onClick: this.panUp, content: '▲', key: 'up' },
|
|
102
|
+
{ top: 12, left: 0, rotate: -90, onClick: this.panLeft, content: '◀', key: 'left' },
|
|
103
|
+
{ top: 12, left: 28, rotate: 90, onClick: this.panRight, content: '▶', key: 'right' },
|
|
104
|
+
{ top: 25, left: 14, rotate: 180, onClick: this.panDown, content: '▼', key: 'down' }
|
|
105
|
+
];
|
|
106
|
+
return (_jsxs(ViewControlWrapper, { children: [_jsxs(NavigationButtonContainer, { children: [buttons.map((b) => (_jsx(NavigationButton, { top: `${b.top}px`, left: `${b.left}px`, rotate: b.rotate, children: _jsx(LongPressButton, { onClick: b.onClick, children: b.content }) }, b.key))), _jsx(NavigationButton, { top: '12px', left: '16px', onClick: () => {
|
|
107
|
+
// console.log('on click fit bounds') || this.props.fitBounds;
|
|
108
|
+
}, children: '¤' })] }), _jsxs(ZoomControlWrapper, { children: [_jsx(ZoomControlButton, { children: _jsx(LongPressButton, { onClick: this.zoomIn, children: '+' }) }), _jsx(VerticalSlider, { children: _jsx("input", { type: "range", value: this.props.zoomLevel, min: this.props.minZoom, max: this.props.maxZoom, step: this.props.deltaZoom, onChange: this.onChangeZoomLevel,
|
|
109
|
+
/* @ts-expect-error TODO */
|
|
110
|
+
orient: "vertical" }) }), _jsx(ZoomControlButton, { children: _jsx(LongPressButton, { onClick: this.zoomOut, children: '-' }) })] })] }));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export class ViewControlWidget extends Widget {
|
|
114
|
+
id = 'zoom';
|
|
115
|
+
placement = 'top-left';
|
|
116
|
+
orientation = 'vertical';
|
|
117
|
+
viewId = null;
|
|
118
|
+
viewports = {};
|
|
119
|
+
element;
|
|
120
|
+
className = 'deck-widget-view-control';
|
|
121
|
+
constructor(props) {
|
|
122
|
+
super(props);
|
|
123
|
+
this.props = { ...ViewControl.defaultProps, ...props };
|
|
124
|
+
this.id = props.id || 'zoom';
|
|
125
|
+
this.viewId = props.viewId || null;
|
|
126
|
+
this.placement = props.placement || 'top-left';
|
|
127
|
+
// this.orientation = props.orientation || 'vertical';
|
|
128
|
+
// props.transitionDuration = props.transitionDuration || 200;
|
|
129
|
+
// props.zoomInLabel = props.zoomInLabel || 'Zoom In';
|
|
130
|
+
// props.zoomOutLabel = props.zoomOutLabel || 'Zoom Out';
|
|
131
|
+
props.style = props.style || {};
|
|
132
|
+
}
|
|
133
|
+
onAdd({ deck }) {
|
|
134
|
+
this.deck = deck;
|
|
135
|
+
this.element = document.createElement('div');
|
|
136
|
+
const { style, className } = this.props;
|
|
137
|
+
this.element.classList.add('deck-widget', 'deck-widget-zoom');
|
|
138
|
+
if (className) {
|
|
139
|
+
this.element.classList.add(className);
|
|
140
|
+
}
|
|
141
|
+
if (style) {
|
|
142
|
+
Object.entries(style).map(([key, value]) => this.element.style.setProperty(key, value));
|
|
143
|
+
}
|
|
144
|
+
return this.element;
|
|
145
|
+
}
|
|
146
|
+
onRemove() {
|
|
147
|
+
this.deck = undefined;
|
|
148
|
+
this.element = undefined;
|
|
149
|
+
}
|
|
150
|
+
onRenderHTML(rootElement) {
|
|
151
|
+
const ui = (_jsx(ViewControl, { ...this.props, zoomBy: this.handleDeltaZoom.bind(this), panBy: this.handlePanBy.bind(this) }));
|
|
152
|
+
render(ui, rootElement);
|
|
153
|
+
}
|
|
154
|
+
setProps(props) {
|
|
155
|
+
Object.assign(this.props, props);
|
|
156
|
+
}
|
|
157
|
+
onViewportChange(viewport) {
|
|
158
|
+
this.viewports[viewport.id] = viewport;
|
|
159
|
+
}
|
|
160
|
+
handleDeltaZoom(deltaZoom) {
|
|
161
|
+
// console.log('Handle delta zoom');
|
|
162
|
+
for (const view of this.deck.getViewports()) {
|
|
163
|
+
this.handleZoomView(view, view.zoom + deltaZoom);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
handlePanBy(deltaX, deltaY) {
|
|
167
|
+
// console.log('Handle panby', deltaX, deltaY);
|
|
168
|
+
for (const viewport of this.deck.getViewports()) {
|
|
169
|
+
this.handlePanViewport(viewport, deltaX, deltaY);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
handleZoomView(viewport, nextZoom) {
|
|
173
|
+
const viewId = this.viewId || viewport?.id || 'default-view';
|
|
174
|
+
// @ts-expect-error TODO we lack a proper API for getting viewStates
|
|
175
|
+
const viewState = this.deck.viewManager.viewState || viewport;
|
|
176
|
+
const nextViewState = {
|
|
177
|
+
...viewState,
|
|
178
|
+
zoom: nextZoom
|
|
179
|
+
// transitionDuration: this.props.transitionDuration,
|
|
180
|
+
// transitionInterpolator: new FlyToInterpolator()
|
|
181
|
+
};
|
|
182
|
+
// @ts-ignore Using private method temporary until there's a public one
|
|
183
|
+
this.deck._onViewStateChange({ viewId, viewState: nextViewState, interactionState: {} });
|
|
184
|
+
}
|
|
185
|
+
handlePanViewport(viewport, deltaX, deltaY) {
|
|
186
|
+
const viewId = this.viewId || viewport?.id || 'default-view';
|
|
187
|
+
// @ts-expect-error TODO we lack a proper API for getting viewStates
|
|
188
|
+
const viewState = this.deck.viewManager.viewState || viewport;
|
|
189
|
+
// console.log('Handle pan viewport', deltaX, deltaY, viewState);
|
|
190
|
+
const nextViewState = {
|
|
191
|
+
...viewState,
|
|
192
|
+
position: [viewport.position[0] + deltaX, viewport.position[1] + deltaY]
|
|
193
|
+
};
|
|
194
|
+
// @ts-ignore Using private method temporary until there's a public one
|
|
195
|
+
this.deck._onViewStateChange({ viewId, viewState: nextViewState, interactionState: {} });
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=view-control-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-control-widget.js","sourceRoot":"","sources":["../../src/_deprecate/view-control-widget.tsx"],"names":[],"mappings":"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"}
|