@deck.gl-community/widgets 9.2.8 → 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/README.md +9 -1
- package/dist/graph-widgets/_deprecate/long-press-button.d.ts.map +1 -0
- package/dist/graph-widgets/_deprecate/long-press-button.js.map +1 -0
- package/dist/graph-widgets/_deprecate/view-control-widget.d.ts.map +1 -0
- package/dist/graph-widgets/_deprecate/view-control-widget.js.map +1 -0
- package/dist/{widgets → graph-widgets}/long-press-button.d.ts +1 -0
- package/dist/graph-widgets/long-press-button.d.ts.map +1 -0
- package/dist/{widgets → graph-widgets}/long-press-button.js +1 -0
- package/dist/graph-widgets/long-press-button.js.map +1 -0
- package/dist/graph-widgets/long-press-controller.d.ts.map +1 -0
- package/dist/graph-widgets/long-press-controller.js.map +1 -0
- package/dist/{widgets → graph-widgets}/pan-widget.d.ts +3 -2
- package/dist/graph-widgets/pan-widget.d.ts.map +1 -0
- package/dist/{widgets → graph-widgets}/pan-widget.js +19 -15
- package/dist/graph-widgets/pan-widget.js.map +1 -0
- package/dist/{widgets → graph-widgets}/zoom-range-widget.d.ts +3 -3
- package/dist/graph-widgets/zoom-range-widget.d.ts.map +1 -0
- package/dist/{widgets → graph-widgets}/zoom-range-widget.js +24 -23
- package/dist/graph-widgets/zoom-range-widget.js.map +1 -0
- package/dist/html-overlay-widgets/html-cluster-widget.d.ts.map +1 -0
- package/dist/html-overlay-widgets/html-cluster-widget.js.map +1 -0
- package/dist/{widgets → html-overlay-widgets}/html-overlay-item.d.ts +1 -0
- package/dist/html-overlay-widgets/html-overlay-item.d.ts.map +1 -0
- package/dist/html-overlay-widgets/html-overlay-item.js.map +1 -0
- package/dist/{widgets → html-overlay-widgets}/html-overlay-widget.d.ts +1 -1
- package/dist/html-overlay-widgets/html-overlay-widget.d.ts.map +1 -0
- package/dist/{widgets → html-overlay-widgets}/html-overlay-widget.js +2 -2
- package/dist/html-overlay-widgets/html-overlay-widget.js.map +1 -0
- package/dist/{widgets → html-overlay-widgets}/html-tooltip-widget.d.ts +1 -0
- package/dist/html-overlay-widgets/html-tooltip-widget.d.ts.map +1 -0
- package/dist/html-overlay-widgets/html-tooltip-widget.js.map +1 -0
- package/dist/index.cjs +5102 -82
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +33 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -6
- package/dist/index.js.map +1 -1
- package/dist/keyboard-shortcuts/keyboard-shortcuts-manager.d.ts +18 -0
- package/dist/keyboard-shortcuts/keyboard-shortcuts-manager.d.ts.map +1 -0
- package/dist/keyboard-shortcuts/keyboard-shortcuts-manager.js +47 -0
- package/dist/keyboard-shortcuts/keyboard-shortcuts-manager.js.map +1 -0
- package/dist/keyboard-shortcuts/keyboard-shortcuts.d.ts +22 -0
- package/dist/keyboard-shortcuts/keyboard-shortcuts.d.ts.map +1 -0
- package/dist/keyboard-shortcuts/keyboard-shortcuts.js +83 -0
- package/dist/keyboard-shortcuts/keyboard-shortcuts.js.map +1 -0
- package/dist/lib/settings/settings.d.ts +17 -0
- package/dist/lib/settings/settings.d.ts.map +1 -0
- package/dist/lib/settings/settings.js +140 -0
- package/dist/lib/settings/settings.js.map +1 -0
- package/dist/ready-to-upstream-widgets/reset-view-widget.d.ts +21 -0
- package/dist/ready-to-upstream-widgets/reset-view-widget.d.ts.map +1 -0
- package/dist/ready-to-upstream-widgets/reset-view-widget.js +29 -0
- package/dist/ready-to-upstream-widgets/reset-view-widget.js.map +1 -0
- package/dist/widget-components/icon-button.d.ts +12 -0
- package/dist/widget-components/icon-button.d.ts.map +1 -0
- package/dist/widget-components/icon-button.js +12 -0
- package/dist/widget-components/icon-button.js.map +1 -0
- package/dist/widget-components/select-widget-component.d.ts +15 -0
- package/dist/widget-components/select-widget-component.d.ts.map +1 -0
- package/dist/widget-components/select-widget-component.js +229 -0
- package/dist/widget-components/select-widget-component.js.map +1 -0
- package/dist/widget-panels/box-widget.d.ts +43 -0
- package/dist/widget-panels/box-widget.d.ts.map +1 -0
- package/dist/widget-panels/box-widget.js +191 -0
- package/dist/widget-panels/box-widget.js.map +1 -0
- package/dist/widget-panels/box-widget.test.d.ts +2 -0
- package/dist/widget-panels/box-widget.test.d.ts.map +1 -0
- package/dist/widget-panels/box-widget.test.js +41 -0
- package/dist/widget-panels/box-widget.test.js.map +1 -0
- package/dist/widget-panels/full-screen-panel-widget.d.ts +33 -0
- package/dist/widget-panels/full-screen-panel-widget.d.ts.map +1 -0
- package/dist/widget-panels/full-screen-panel-widget.js +153 -0
- package/dist/widget-panels/full-screen-panel-widget.js.map +1 -0
- package/dist/widget-panels/full-screen-panel-widget.test.d.ts +2 -0
- package/dist/widget-panels/full-screen-panel-widget.test.d.ts.map +1 -0
- package/dist/widget-panels/full-screen-panel-widget.test.js +40 -0
- package/dist/widget-panels/full-screen-panel-widget.test.js.map +1 -0
- package/dist/widget-panels/heap-memory-widget.d.ts +26 -0
- package/dist/widget-panels/heap-memory-widget.d.ts.map +1 -0
- package/dist/widget-panels/heap-memory-widget.js +156 -0
- package/dist/widget-panels/heap-memory-widget.js.map +1 -0
- package/dist/widget-panels/keyboard-shortcuts-widget.d.ts +46 -0
- package/dist/widget-panels/keyboard-shortcuts-widget.d.ts.map +1 -0
- package/dist/widget-panels/keyboard-shortcuts-widget.js +301 -0
- package/dist/widget-panels/keyboard-shortcuts-widget.js.map +1 -0
- package/dist/widget-panels/modal-widget.d.ts +62 -0
- package/dist/widget-panels/modal-widget.d.ts.map +1 -0
- package/dist/widget-panels/modal-widget.js +309 -0
- package/dist/widget-panels/modal-widget.js.map +1 -0
- package/dist/widget-panels/modal-widget.test.d.ts +2 -0
- package/dist/widget-panels/modal-widget.test.d.ts.map +1 -0
- package/dist/widget-panels/modal-widget.test.js +103 -0
- package/dist/widget-panels/modal-widget.test.js.map +1 -0
- package/dist/widget-panels/omni-box-widget.d.ts +59 -0
- package/dist/widget-panels/omni-box-widget.d.ts.map +1 -0
- package/dist/widget-panels/omni-box-widget.js +562 -0
- package/dist/widget-panels/omni-box-widget.js.map +1 -0
- package/dist/widget-panels/omni-box-widget.test.d.ts +2 -0
- package/dist/widget-panels/omni-box-widget.test.d.ts.map +1 -0
- package/dist/widget-panels/omni-box-widget.test.js +49 -0
- package/dist/widget-panels/omni-box-widget.test.js.map +1 -0
- package/dist/widget-panels/reset-view-widget.d.ts +20 -0
- package/dist/widget-panels/reset-view-widget.d.ts.map +1 -0
- package/dist/widget-panels/reset-view-widget.js +28 -0
- package/dist/widget-panels/reset-view-widget.js.map +1 -0
- package/dist/widget-panels/settings-panel.d.ts +49 -0
- package/dist/widget-panels/settings-panel.d.ts.map +1 -0
- package/dist/widget-panels/settings-panel.js +263 -0
- package/dist/widget-panels/settings-panel.js.map +1 -0
- package/dist/widget-panels/settings-panel.test.d.ts +2 -0
- package/dist/widget-panels/settings-panel.test.d.ts.map +1 -0
- package/dist/widget-panels/settings-panel.test.js +217 -0
- package/dist/widget-panels/settings-panel.test.js.map +1 -0
- package/dist/widget-panels/sidebar-widget.d.ts +65 -0
- package/dist/widget-panels/sidebar-widget.d.ts.map +1 -0
- package/dist/widget-panels/sidebar-widget.js +339 -0
- package/dist/widget-panels/sidebar-widget.js.map +1 -0
- package/dist/widget-panels/sidebar-widget.test.d.ts +2 -0
- package/dist/widget-panels/sidebar-widget.test.d.ts.map +1 -0
- package/dist/widget-panels/sidebar-widget.test.js +175 -0
- package/dist/widget-panels/sidebar-widget.test.js.map +1 -0
- package/dist/widget-panels/stats-panel.d.ts +34 -0
- package/dist/widget-panels/stats-panel.d.ts.map +1 -0
- package/dist/widget-panels/stats-panel.js +61 -0
- package/dist/widget-panels/stats-panel.js.map +1 -0
- package/dist/widget-panels/stats-panel.test.d.ts +2 -0
- package/dist/widget-panels/stats-panel.test.d.ts.map +1 -0
- package/dist/widget-panels/stats-panel.test.js +36 -0
- package/dist/widget-panels/stats-panel.test.js.map +1 -0
- package/dist/widget-panels/text-editor-panel-monaco-runtime.d.ts +17 -0
- package/dist/widget-panels/text-editor-panel-monaco-runtime.d.ts.map +1 -0
- package/dist/widget-panels/text-editor-panel-monaco-runtime.js +69 -0
- package/dist/widget-panels/text-editor-panel-monaco-runtime.js.map +1 -0
- package/dist/widget-panels/text-editor-panel.d.ts +42 -0
- package/dist/widget-panels/text-editor-panel.d.ts.map +1 -0
- package/dist/widget-panels/text-editor-panel.js +249 -0
- package/dist/widget-panels/text-editor-panel.js.map +1 -0
- package/dist/widget-panels/text-editor-panel.test.d.ts +2 -0
- package/dist/widget-panels/text-editor-panel.test.d.ts.map +1 -0
- package/dist/widget-panels/text-editor-panel.test.js +393 -0
- package/dist/widget-panels/text-editor-panel.test.js.map +1 -0
- package/dist/widget-panels/time-measure-widget.d.ts +49 -0
- package/dist/widget-panels/time-measure-widget.d.ts.map +1 -0
- package/dist/widget-panels/time-measure-widget.js +351 -0
- package/dist/widget-panels/time-measure-widget.js.map +1 -0
- package/dist/widget-panels/toast-manager.d.ts +24 -0
- package/dist/widget-panels/toast-manager.d.ts.map +1 -0
- package/dist/widget-panels/toast-manager.js +96 -0
- package/dist/widget-panels/toast-manager.js.map +1 -0
- package/dist/widget-panels/toast-manager.test.d.ts +2 -0
- package/dist/widget-panels/toast-manager.test.d.ts.map +1 -0
- package/dist/widget-panels/toast-manager.test.js +75 -0
- package/dist/widget-panels/toast-manager.test.js.map +1 -0
- package/dist/widget-panels/toast-widget.d.ts +20 -0
- package/dist/widget-panels/toast-widget.d.ts.map +1 -0
- package/dist/widget-panels/toast-widget.js +207 -0
- package/dist/widget-panels/toast-widget.js.map +1 -0
- package/dist/widget-panels/toast-widget.test.d.ts +2 -0
- package/dist/widget-panels/toast-widget.test.d.ts.map +1 -0
- package/dist/widget-panels/toast-widget.test.js +81 -0
- package/dist/widget-panels/toast-widget.test.js.map +1 -0
- package/dist/widget-panels/toggle-widget.d.ts +34 -0
- package/dist/widget-panels/toggle-widget.d.ts.map +1 -0
- package/dist/widget-panels/toggle-widget.js +46 -0
- package/dist/widget-panels/toggle-widget.js.map +1 -0
- package/dist/widget-panels/toolbar-widget.d.ts +53 -0
- package/dist/widget-panels/toolbar-widget.d.ts.map +1 -0
- package/dist/widget-panels/toolbar-widget.js +160 -0
- package/dist/widget-panels/toolbar-widget.js.map +1 -0
- package/dist/widget-panels/toolbar-widget.test.d.ts +2 -0
- package/dist/widget-panels/toolbar-widget.test.d.ts.map +1 -0
- package/dist/widget-panels/toolbar-widget.test.js +105 -0
- package/dist/widget-panels/toolbar-widget.test.js.map +1 -0
- package/dist/widget-panels/widget-containers.d.ts +275 -0
- package/dist/widget-panels/widget-containers.d.ts.map +1 -0
- package/dist/widget-panels/widget-containers.js +761 -0
- package/dist/widget-panels/widget-containers.js.map +1 -0
- package/dist/widget-panels/widget-containers.test.d.ts +2 -0
- package/dist/widget-panels/widget-containers.test.d.ts.map +1 -0
- package/dist/widget-panels/widget-containers.test.js +337 -0
- package/dist/widget-panels/widget-containers.test.js.map +1 -0
- package/dist/widget-panels/y-zoom-widget.d.ts +66 -0
- package/dist/widget-panels/y-zoom-widget.d.ts.map +1 -0
- package/dist/widget-panels/y-zoom-widget.js +264 -0
- package/dist/widget-panels/y-zoom-widget.js.map +1 -0
- package/dist/widget-panels/y-zoom-widget.test.d.ts +2 -0
- package/dist/widget-panels/y-zoom-widget.test.d.ts.map +1 -0
- package/dist/widget-panels/y-zoom-widget.test.js +71 -0
- package/dist/widget-panels/y-zoom-widget.test.js.map +1 -0
- package/dist/widgets/heap-memory-widget.d.ts +26 -0
- package/dist/widgets/heap-memory-widget.d.ts.map +1 -0
- package/dist/widgets/heap-memory-widget.js +158 -0
- package/dist/widgets/heap-memory-widget.js.map +1 -0
- package/dist/widgets/keyboard-shortcuts-widget.d.ts +28 -0
- package/dist/widgets/keyboard-shortcuts-widget.d.ts.map +1 -0
- package/dist/widgets/keyboard-shortcuts-widget.js +125 -0
- package/dist/widgets/keyboard-shortcuts-widget.js.map +1 -0
- package/dist/widgets/omni-box-widget.d.ts +59 -0
- package/dist/widgets/omni-box-widget.d.ts.map +1 -0
- package/dist/widgets/omni-box-widget.js +493 -0
- package/dist/widgets/omni-box-widget.js.map +1 -0
- package/dist/widgets/settings-widget.d.ts +64 -0
- package/dist/widgets/settings-widget.d.ts.map +1 -0
- package/dist/widgets/settings-widget.js +148 -0
- package/dist/widgets/settings-widget.js.map +1 -0
- package/dist/widgets/view-manager-utils.d.ts +1 -1
- package/dist/widgets/view-manager-utils.d.ts.map +1 -1
- package/dist/widgets/view-manager-utils.js.map +1 -1
- package/package.json +4 -3
- package/src/{widgets → graph-widgets}/long-press-button.tsx +1 -0
- package/src/{widgets → graph-widgets}/pan-widget.tsx +30 -23
- package/src/{widgets → graph-widgets}/zoom-range-widget.tsx +36 -34
- package/src/{widgets → html-overlay-widgets}/html-overlay-item.tsx +1 -0
- package/src/{widgets → html-overlay-widgets}/html-overlay-widget.tsx +2 -2
- package/src/{widgets → html-overlay-widgets}/html-tooltip-widget.tsx +1 -0
- package/src/index.ts +109 -12
- package/src/keyboard-shortcuts/keyboard-shortcuts-manager.ts +58 -0
- package/src/keyboard-shortcuts/keyboard-shortcuts.ts +113 -0
- package/src/keyboard-shortcuts/keyboard-shortcuts.ts.disabled +107 -0
- package/src/lib/settings/settings.ts +203 -0
- package/src/ready-to-upstream-widgets/reset-view-widget.tsx +57 -0
- package/src/widget-components/icon-button.tsx +38 -0
- package/src/widget-components/select-widget-component.tsx +354 -0
- package/src/widget-panels/box-widget.test.tsx +50 -0
- package/src/widget-panels/box-widget.tsx +284 -0
- package/src/widget-panels/full-screen-panel-widget.test.tsx +49 -0
- package/src/widget-panels/full-screen-panel-widget.tsx +223 -0
- package/src/widget-panels/heap-memory-widget.tsx +221 -0
- package/src/widget-panels/keyboard-shortcuts-widget.tsx +511 -0
- package/src/widget-panels/modal-widget.test.tsx +124 -0
- package/src/widget-panels/modal-widget.tsx +464 -0
- package/src/widget-panels/omni-box-widget.test.tsx +59 -0
- package/src/widget-panels/omni-box-widget.tsx +849 -0
- package/src/widget-panels/reset-view-widget.tsx +56 -0
- package/src/widget-panels/settings-panel.test.tsx +286 -0
- package/src/widget-panels/settings-panel.tsx +619 -0
- package/src/widget-panels/sidebar-widget.test.tsx +215 -0
- package/src/widget-panels/sidebar-widget.tsx +525 -0
- package/src/widget-panels/stats-panel.test.tsx +41 -0
- package/src/widget-panels/stats-panel.tsx +108 -0
- package/src/widget-panels/text-editor-panel-monaco-runtime.ts +97 -0
- package/src/widget-panels/text-editor-panel.test.tsx +618 -0
- package/src/widget-panels/text-editor-panel.tsx +375 -0
- package/src/widget-panels/time-measure-widget.tsx +445 -0
- package/src/widget-panels/toast-manager.test.ts +98 -0
- package/src/widget-panels/toast-manager.ts +134 -0
- package/src/widget-panels/toast-widget.test.tsx +105 -0
- package/src/widget-panels/toast-widget.tsx +293 -0
- package/src/widget-panels/toggle-widget.tsx +93 -0
- package/src/widget-panels/toolbar-widget.test.ts +129 -0
- package/src/widget-panels/toolbar-widget.tsx +293 -0
- package/src/widget-panels/widget-containers.test.tsx +453 -0
- package/src/widget-panels/widget-containers.tsx +1330 -0
- package/src/widget-panels/worker-modules.d.ts +7 -0
- package/src/widget-panels/y-zoom-widget.test.tsx +101 -0
- package/src/widget-panels/y-zoom-widget.tsx +376 -0
- package/src/widgets/heap-memory-widget.tsx +223 -0
- package/src/widgets/keyboard-shortcuts-widget.tsx +245 -0
- package/src/widgets/omni-box-widget.tsx +768 -0
- package/src/widgets/settings-widget.tsx +277 -0
- package/src/widgets/view-manager-utils.ts +1 -1
- package/dist/_deprecate/long-press-button.d.ts.map +0 -1
- package/dist/_deprecate/long-press-button.js.map +0 -1
- package/dist/_deprecate/view-control-widget.d.ts.map +0 -1
- package/dist/_deprecate/view-control-widget.js.map +0 -1
- package/dist/widgets/html-cluster-widget.d.ts.map +0 -1
- package/dist/widgets/html-cluster-widget.js.map +0 -1
- package/dist/widgets/html-overlay-item.d.ts.map +0 -1
- package/dist/widgets/html-overlay-item.js.map +0 -1
- package/dist/widgets/html-overlay-widget.d.ts.map +0 -1
- package/dist/widgets/html-overlay-widget.js.map +0 -1
- package/dist/widgets/html-tooltip-widget.d.ts.map +0 -1
- package/dist/widgets/html-tooltip-widget.js.map +0 -1
- package/dist/widgets/long-press-button.d.ts.map +0 -1
- package/dist/widgets/long-press-button.js.map +0 -1
- package/dist/widgets/long-press-controller.d.ts.map +0 -1
- package/dist/widgets/long-press-controller.js.map +0 -1
- package/dist/widgets/pan-widget.d.ts.map +0 -1
- package/dist/widgets/pan-widget.js.map +0 -1
- package/dist/widgets/zoom-range-widget.d.ts.map +0 -1
- package/dist/widgets/zoom-range-widget.js.map +0 -1
- /package/dist/{_deprecate → graph-widgets/_deprecate}/long-press-button.d.ts +0 -0
- /package/dist/{_deprecate → graph-widgets/_deprecate}/long-press-button.js +0 -0
- /package/dist/{_deprecate → graph-widgets/_deprecate}/view-control-widget.d.ts +0 -0
- /package/dist/{_deprecate → graph-widgets/_deprecate}/view-control-widget.js +0 -0
- /package/dist/{widgets → graph-widgets}/long-press-controller.d.ts +0 -0
- /package/dist/{widgets → graph-widgets}/long-press-controller.js +0 -0
- /package/dist/{widgets → html-overlay-widgets}/html-cluster-widget.d.ts +0 -0
- /package/dist/{widgets → html-overlay-widgets}/html-cluster-widget.js +0 -0
- /package/dist/{widgets → html-overlay-widgets}/html-overlay-item.js +0 -0
- /package/dist/{widgets → html-overlay-widgets}/html-tooltip-widget.js +0 -0
- /package/src/{_deprecate → graph-widgets/_deprecate}/long-press-button.tsx +0 -0
- /package/src/{_deprecate → graph-widgets/_deprecate}/view-control-widget.tsx +0 -0
- /package/src/{widgets → graph-widgets}/long-press-controller.ts +0 -0
- /package/src/{widgets → html-overlay-widgets}/html-cluster-widget.ts +0 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
|
|
3
|
+
/** @jsxImportSource preact */
|
|
4
|
+
import { Widget } from '@deck.gl/core';
|
|
5
|
+
import { render } from 'preact';
|
|
6
|
+
import { useEffect, useRef, useState } from 'preact/hooks';
|
|
7
|
+
import { SettingsPanelContent } from "../widget-panels/settings-panel.js";
|
|
8
|
+
import { IconButton, makeTextIcon } from "../widget-components/icon-button.js";
|
|
9
|
+
const PANE_STYLE = {
|
|
10
|
+
position: 'absolute',
|
|
11
|
+
top: 'calc(100% + 8px)',
|
|
12
|
+
left: 0,
|
|
13
|
+
width: '380px',
|
|
14
|
+
maxHeight: 'min(460px, calc(100vh - 60px))',
|
|
15
|
+
borderRadius: '8px',
|
|
16
|
+
border: '1px solid rgba(71, 85, 105, 0.55)',
|
|
17
|
+
background: 'rgba(15, 23, 42, 0.94)',
|
|
18
|
+
color: 'rgba(241, 245, 249, 0.98)',
|
|
19
|
+
boxShadow: '0 12px 32px rgba(2, 6, 23, 0.55)',
|
|
20
|
+
display: 'flex',
|
|
21
|
+
flexDirection: 'column',
|
|
22
|
+
overflow: 'hidden',
|
|
23
|
+
pointerEvents: 'auto',
|
|
24
|
+
zIndex: 20,
|
|
25
|
+
'--button-background': 'rgba(30, 41, 59, 0.92)',
|
|
26
|
+
'--button-background-hover': 'rgba(15, 23, 42, 0.9)',
|
|
27
|
+
'--button-inner-stroke': '1px solid rgba(100, 116, 139, 0.72)',
|
|
28
|
+
'--button-corner-radius': '8px',
|
|
29
|
+
'--button-text': 'rgba(241, 245, 249, 0.98)',
|
|
30
|
+
'--button-icon-idle': 'rgba(203, 213, 225, 0.92)',
|
|
31
|
+
'--button-icon-hover': 'rgba(125, 211, 252, 0.98)',
|
|
32
|
+
'--button-backdrop-filter': 'blur(10px)',
|
|
33
|
+
'--container-background': 'rgba(15, 23, 42, 0.98)',
|
|
34
|
+
'--menu-item-hover': 'rgba(51, 65, 85, 0.82)'
|
|
35
|
+
};
|
|
36
|
+
const HEADER_STYLE = {
|
|
37
|
+
display: 'flex',
|
|
38
|
+
alignItems: 'center',
|
|
39
|
+
justifyContent: 'space-between',
|
|
40
|
+
borderBottom: '1px solid rgba(100, 116, 139, 0.45)',
|
|
41
|
+
padding: '10px 12px'
|
|
42
|
+
};
|
|
43
|
+
const SETTINGS_BUTTON_ICON = makeTextIcon('⚙', 24, 36);
|
|
44
|
+
function stopPropagation(event) {
|
|
45
|
+
event.stopPropagation();
|
|
46
|
+
}
|
|
47
|
+
const DEFAULT_SETTINGS_WIDGET_SCHEMA = { sections: [] };
|
|
48
|
+
const DEFAULT_SETTINGS_WIDGET_STATE = {};
|
|
49
|
+
function SettingsWidgetView({ label, schema, settings, onSettingsChange }) {
|
|
50
|
+
const containerRef = useRef(null);
|
|
51
|
+
const [isPaneOpen, setIsPaneOpen] = useState(false);
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
if (isPaneOpen && typeof document !== 'undefined') {
|
|
54
|
+
const handleDocumentPointerDown = (event) => {
|
|
55
|
+
if (!containerRef.current || !event.target) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (!containerRef.current.contains(event.target)) {
|
|
59
|
+
setIsPaneOpen(false);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
document.addEventListener('pointerdown', handleDocumentPointerDown);
|
|
63
|
+
return () => {
|
|
64
|
+
document.removeEventListener('pointerdown', handleDocumentPointerDown);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}, [isPaneOpen]);
|
|
69
|
+
return (_jsxs("div", { ref: containerRef, style: { position: 'relative', pointerEvents: 'auto' }, children: [_jsx(IconButton, { icon: SETTINGS_BUTTON_ICON, title: label, className: isPaneOpen ? 'deck-widget-button-active' : '', onClick: () => setIsPaneOpen((previous) => !previous) }), isPaneOpen && (_jsxs("div", { role: "dialog", "aria-label": schema.title ?? label, style: PANE_STYLE, onPointerDown: (event) => stopPropagation(event), onMouseDown: (event) => stopPropagation(event), onWheel: (event) => stopPropagation(event), onClick: (event) => stopPropagation(event), children: [_jsxs("div", { style: HEADER_STYLE, children: [_jsx("div", { style: { fontSize: '13px', fontWeight: 700 }, children: schema.title ?? label }), _jsx("button", { type: "button", onClick: () => setIsPaneOpen(false), style: {
|
|
70
|
+
border: 0,
|
|
71
|
+
borderRadius: '4px',
|
|
72
|
+
padding: '2px 6px',
|
|
73
|
+
background: 'rgba(51, 65, 85, 0.8)',
|
|
74
|
+
color: 'inherit',
|
|
75
|
+
cursor: 'pointer',
|
|
76
|
+
fontSize: '14px',
|
|
77
|
+
lineHeight: 1
|
|
78
|
+
}, title: "Close settings", "aria-label": "Close settings", children: "\u00D7" })] }), _jsx(SettingsPanelContent, { schema: schema, settings: settings, onSettingsChange: onSettingsChange })] }))] }));
|
|
79
|
+
}
|
|
80
|
+
export class SettingsWidget extends Widget {
|
|
81
|
+
static defaultProps = {
|
|
82
|
+
...Widget.defaultProps,
|
|
83
|
+
id: 'settings',
|
|
84
|
+
placement: 'top-left',
|
|
85
|
+
label: 'Settings',
|
|
86
|
+
schema: DEFAULT_SETTINGS_WIDGET_SCHEMA,
|
|
87
|
+
settings: DEFAULT_SETTINGS_WIDGET_STATE,
|
|
88
|
+
onSettingsChange: undefined
|
|
89
|
+
};
|
|
90
|
+
className = 'deck-widget-settings';
|
|
91
|
+
placement = _a.defaultProps.placement;
|
|
92
|
+
#label = _a.defaultProps.label;
|
|
93
|
+
#schema = _a.defaultProps.schema;
|
|
94
|
+
#settings = _a.defaultProps.settings;
|
|
95
|
+
#onSettingsChange = _a.defaultProps.onSettingsChange;
|
|
96
|
+
#rootElement = null;
|
|
97
|
+
constructor(props = {}) {
|
|
98
|
+
super({ ..._a.defaultProps, ...props });
|
|
99
|
+
if (props.placement !== undefined) {
|
|
100
|
+
this.placement = props.placement;
|
|
101
|
+
}
|
|
102
|
+
if (props.label !== undefined) {
|
|
103
|
+
this.#label = props.label;
|
|
104
|
+
}
|
|
105
|
+
if (props.schema !== undefined) {
|
|
106
|
+
this.#schema = props.schema;
|
|
107
|
+
}
|
|
108
|
+
if (props.settings !== undefined) {
|
|
109
|
+
this.#settings = props.settings;
|
|
110
|
+
}
|
|
111
|
+
if (props.onSettingsChange !== undefined) {
|
|
112
|
+
this.#onSettingsChange = props.onSettingsChange;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
setProps(props) {
|
|
116
|
+
if (props.placement !== undefined) {
|
|
117
|
+
this.placement = props.placement;
|
|
118
|
+
}
|
|
119
|
+
if (props.label !== undefined) {
|
|
120
|
+
this.#label = props.label;
|
|
121
|
+
}
|
|
122
|
+
if (props.schema !== undefined) {
|
|
123
|
+
this.#schema = props.schema;
|
|
124
|
+
}
|
|
125
|
+
if (props.settings !== undefined) {
|
|
126
|
+
this.#settings = props.settings;
|
|
127
|
+
}
|
|
128
|
+
if (props.onSettingsChange !== undefined) {
|
|
129
|
+
this.#onSettingsChange = props.onSettingsChange;
|
|
130
|
+
}
|
|
131
|
+
super.setProps(props);
|
|
132
|
+
}
|
|
133
|
+
onRenderHTML(rootElement) {
|
|
134
|
+
this.#rootElement = rootElement;
|
|
135
|
+
const className = ['deck-widget', this.className, this.props.className]
|
|
136
|
+
.filter(Boolean)
|
|
137
|
+
.join(' ');
|
|
138
|
+
rootElement.className = className;
|
|
139
|
+
render(_jsx(SettingsWidgetView, { label: this.#label, schema: this.#schema, settings: this.#settings, onSettingsChange: this.#onSettingsChange }), rootElement);
|
|
140
|
+
}
|
|
141
|
+
onRemove() {
|
|
142
|
+
if (this.#rootElement) {
|
|
143
|
+
render(null, this.#rootElement);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
_a = SettingsWidget;
|
|
148
|
+
//# sourceMappingURL=settings-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-widget.js","sourceRoot":"","sources":["../../src/widgets/settings-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,6 @@ export type DeckWithViewManager = Deck & {
|
|
|
6
6
|
viewState?: any;
|
|
7
7
|
};
|
|
8
8
|
};
|
|
9
|
-
export declare function hasViewManager(deck: Deck | null): deck is DeckWithViewManager;
|
|
9
|
+
export declare function hasViewManager(deck: Deck | null | undefined): deck is DeckWithViewManager;
|
|
10
10
|
export declare function cloneViewState(value: unknown): Record<string, unknown>;
|
|
11
11
|
//# sourceMappingURL=view-manager-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-manager-utils.d.ts","sourceRoot":"","sources":["../../src/widgets/view-manager-utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG;IACvC,WAAW,CAAC,EAAE;QACZ,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC;QAC7C,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;QAClC,SAAS,CAAC,EAAE,GAAG,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,mBAAmB,
|
|
1
|
+
{"version":3,"file":"view-manager-utils.d.ts","sourceRoot":"","sources":["../../src/widgets/view-manager-utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG;IACvC,WAAW,CAAC,EAAE;QACZ,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC;QAC7C,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;QAClC,SAAS,CAAC,EAAE,GAAG,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,mBAAmB,CAEzF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-manager-utils.js","sourceRoot":"","sources":["../../src/widgets/view-manager-utils.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,+BAA+B;AAC/B,oCAAoC;AAYpC,MAAM,UAAU,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"view-manager-utils.js","sourceRoot":"","sources":["../../src/widgets/view-manager-utils.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,+BAA+B;AAC/B,oCAAoC;AAYpC,MAAM,UAAU,cAAc,CAAC,IAA6B;IAC1D,OAAO,OAAO,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,aAAa,IAAI,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,EAAC,GAAI,KAAiC,EAAC,CAAC;IACjD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deck.gl-community/widgets",
|
|
3
|
-
"version": "9.2
|
|
3
|
+
"version": "9.3.0-beta.2",
|
|
4
4
|
"description": "UI widgets for deck.gl",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -32,10 +32,11 @@
|
|
|
32
32
|
"test-watch": "vitest"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@deck.gl/core": "~9.
|
|
35
|
+
"@deck.gl/core": "~9.3.0",
|
|
36
|
+
"@probe.gl/stats": "^4.1.1",
|
|
36
37
|
"@turf/helpers": "^6.5.0",
|
|
37
38
|
"preact": "^10.17.0",
|
|
38
39
|
"supercluster": "^8.0.1"
|
|
39
40
|
},
|
|
40
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "82660b8a29be0958c81acd00669b3034375186ea"
|
|
41
42
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
// deck.gl-community
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
+
/** @jsxImportSource preact */
|
|
4
5
|
|
|
5
6
|
import {render} from 'preact';
|
|
6
7
|
import type {JSX} from 'preact';
|
|
7
8
|
import {LongPressButton} from './long-press-button';
|
|
8
|
-
import {cloneViewState, hasViewManager} from '
|
|
9
|
+
import {cloneViewState, hasViewManager} from '../widgets/view-manager-utils';
|
|
9
10
|
import {
|
|
10
11
|
Widget,
|
|
11
12
|
type Deck,
|
|
@@ -14,13 +15,6 @@ import {
|
|
|
14
15
|
type WidgetProps
|
|
15
16
|
} from '@deck.gl/core';
|
|
16
17
|
|
|
17
|
-
export type PanWidgetProps = WidgetProps & {
|
|
18
|
-
viewId?: string | null;
|
|
19
|
-
placement?: WidgetPlacement;
|
|
20
|
-
/** Amount in screen pixels to pan by when a button is pressed. */
|
|
21
|
-
step?: number;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
18
|
const WRAPPER_STYLE: Partial<CSSStyleDeclaration> = {
|
|
25
19
|
position: 'absolute',
|
|
26
20
|
display: 'flex',
|
|
@@ -47,6 +41,13 @@ const NAVIGATION_BUTTON_STYLE: JSX.CSSProperties = {
|
|
|
47
41
|
pointerEvents: 'auto'
|
|
48
42
|
};
|
|
49
43
|
|
|
44
|
+
export type PanWidgetProps = WidgetProps & {
|
|
45
|
+
viewId?: string | null;
|
|
46
|
+
placement?: WidgetPlacement;
|
|
47
|
+
/** Amount in screen pixels to pan by when a button is pressed. */
|
|
48
|
+
step?: number;
|
|
49
|
+
};
|
|
50
|
+
|
|
50
51
|
export class PanWidget extends Widget<PanWidgetProps> {
|
|
51
52
|
static override defaultProps = {
|
|
52
53
|
id: 'pan',
|
|
@@ -60,7 +61,7 @@ export class PanWidget extends Widget<PanWidgetProps> {
|
|
|
60
61
|
|
|
61
62
|
placement: WidgetPlacement = 'top-left';
|
|
62
63
|
className = 'deck-widget-pan';
|
|
63
|
-
|
|
64
|
+
|
|
64
65
|
step: number;
|
|
65
66
|
|
|
66
67
|
constructor(props: PanWidgetProps = {}) {
|
|
@@ -91,7 +92,7 @@ export class PanWidget extends Widget<PanWidgetProps> {
|
|
|
91
92
|
}
|
|
92
93
|
|
|
93
94
|
override onRemove(): void {
|
|
94
|
-
this.deck =
|
|
95
|
+
this.deck = undefined;
|
|
95
96
|
}
|
|
96
97
|
|
|
97
98
|
override onRenderHTML(rootElement: HTMLElement): void {
|
|
@@ -142,20 +143,30 @@ export class PanWidget extends Widget<PanWidgetProps> {
|
|
|
142
143
|
return deck.getViewports();
|
|
143
144
|
}
|
|
144
145
|
|
|
145
|
-
private
|
|
146
|
+
private getViewportViewState(viewport: Viewport): Record<string, unknown> {
|
|
146
147
|
const deck = this.deck;
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
if (viewManager) {
|
|
148
|
+
if (deck && hasViewManager(deck)) {
|
|
149
|
+
const viewId = this.viewId || viewport.id;
|
|
150
150
|
try {
|
|
151
|
-
return
|
|
152
|
-
} catch
|
|
153
|
-
return cloneViewState(viewManager
|
|
151
|
+
return cloneViewState(deck.viewManager?.getViewState(viewId));
|
|
152
|
+
} catch {
|
|
153
|
+
return cloneViewState(deck.viewManager?.viewState);
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
|
+
|
|
156
157
|
return cloneViewState(viewport);
|
|
157
158
|
}
|
|
158
159
|
|
|
160
|
+
private updateViewState(viewport: Viewport, nextViewState: Record<string, unknown>): void {
|
|
161
|
+
if (!this.deck) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const viewId = this.viewId || viewport.id || 'default-view';
|
|
166
|
+
// @ts-expect-error Using private method until a public alternative is available
|
|
167
|
+
this.deck._onViewStateChange({viewId, viewState: nextViewState, interactionState: {}});
|
|
168
|
+
}
|
|
169
|
+
|
|
159
170
|
private handlePan(deltaX: number, deltaY: number) {
|
|
160
171
|
if (!this.deck) {
|
|
161
172
|
return;
|
|
@@ -170,13 +181,9 @@ export class PanWidget extends Widget<PanWidgetProps> {
|
|
|
170
181
|
viewport.height / 2 + deltaY
|
|
171
182
|
];
|
|
172
183
|
|
|
173
|
-
const viewState = this.
|
|
184
|
+
const viewState = this.getViewportViewState(viewport);
|
|
174
185
|
const panUpdate = viewport.panByPosition(center, nextPixel);
|
|
175
|
-
|
|
176
|
-
const viewId = this.viewId || viewport.id || 'default-view';
|
|
177
|
-
|
|
178
|
-
// @ts-ignore Using private method until a public alternative is available
|
|
179
|
-
this.deck._onViewStateChange({viewId, viewState: nextViewState, interactionState: {}});
|
|
186
|
+
this.updateViewState(viewport, {...viewState, ...panUpdate});
|
|
180
187
|
}
|
|
181
188
|
}
|
|
182
189
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
// deck.gl-community
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
+
/** @jsxImportSource preact */
|
|
4
5
|
|
|
5
6
|
import {render} from 'preact';
|
|
6
7
|
import type {JSX} from 'preact';
|
|
7
8
|
import {LongPressButton} from './long-press-button';
|
|
8
|
-
import {cloneViewState, hasViewManager} from '
|
|
9
|
+
import {cloneViewState, hasViewManager} from '../widgets/view-manager-utils';
|
|
9
10
|
import {
|
|
10
11
|
Widget,
|
|
11
12
|
type Deck,
|
|
@@ -14,14 +15,6 @@ import {
|
|
|
14
15
|
type WidgetProps
|
|
15
16
|
} from '@deck.gl/core';
|
|
16
17
|
|
|
17
|
-
export type ZoomRangeWidgetProps = WidgetProps & {
|
|
18
|
-
viewId?: string | null;
|
|
19
|
-
placement?: WidgetPlacement;
|
|
20
|
-
minZoom?: number;
|
|
21
|
-
maxZoom?: number;
|
|
22
|
-
step?: number;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
18
|
const WRAPPER_STYLE: Partial<CSSStyleDeclaration> = {
|
|
26
19
|
position: 'absolute',
|
|
27
20
|
display: 'flex',
|
|
@@ -58,6 +51,14 @@ const VERTICAL_SLIDER_STYLE: JSX.CSSProperties = {
|
|
|
58
51
|
width: '10px'
|
|
59
52
|
};
|
|
60
53
|
|
|
54
|
+
export type ZoomRangeWidgetProps = WidgetProps & {
|
|
55
|
+
viewId?: string | null;
|
|
56
|
+
placement?: WidgetPlacement;
|
|
57
|
+
minZoom?: number;
|
|
58
|
+
maxZoom?: number;
|
|
59
|
+
step?: number;
|
|
60
|
+
};
|
|
61
|
+
|
|
61
62
|
export class ZoomRangeWidget extends Widget<ZoomRangeWidgetProps> {
|
|
62
63
|
static override defaultProps = {
|
|
63
64
|
id: 'zoom-range',
|
|
@@ -75,7 +76,7 @@ export class ZoomRangeWidget extends Widget<ZoomRangeWidgetProps> {
|
|
|
75
76
|
|
|
76
77
|
placement: WidgetPlacement = 'top-left';
|
|
77
78
|
className = 'deck-widget-zoom-range';
|
|
78
|
-
|
|
79
|
+
|
|
79
80
|
step: number;
|
|
80
81
|
currentZoom = 0;
|
|
81
82
|
inferredMinZoom: number | null = null;
|
|
@@ -109,7 +110,7 @@ export class ZoomRangeWidget extends Widget<ZoomRangeWidgetProps> {
|
|
|
109
110
|
}
|
|
110
111
|
|
|
111
112
|
override onRemove(): void {
|
|
112
|
-
this.deck =
|
|
113
|
+
this.deck = undefined;
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
override onRenderHTML(rootElement: HTMLElement): void {
|
|
@@ -181,7 +182,7 @@ export class ZoomRangeWidget extends Widget<ZoomRangeWidgetProps> {
|
|
|
181
182
|
}
|
|
182
183
|
|
|
183
184
|
override onViewportChange(viewport: Viewport): void {
|
|
184
|
-
const viewState = this.
|
|
185
|
+
const viewState = this.getViewportViewState(viewport);
|
|
185
186
|
const zoom = Number(viewState?.zoom);
|
|
186
187
|
if (Number.isFinite(zoom)) {
|
|
187
188
|
this.currentZoom = zoom;
|
|
@@ -232,28 +233,40 @@ export class ZoomRangeWidget extends Widget<ZoomRangeWidgetProps> {
|
|
|
232
233
|
return deck.getViewports();
|
|
233
234
|
}
|
|
234
235
|
|
|
235
|
-
private
|
|
236
|
+
private getViewportViewState(viewport: Viewport): Record<string, unknown> {
|
|
236
237
|
const deck = this.deck;
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
if (viewManager) {
|
|
238
|
+
if (deck && hasViewManager(deck)) {
|
|
239
|
+
const viewId = this.viewId || viewport.id;
|
|
240
240
|
try {
|
|
241
|
-
return
|
|
242
|
-
} catch
|
|
243
|
-
return cloneViewState(viewManager
|
|
241
|
+
return cloneViewState(deck.viewManager?.getViewState(viewId));
|
|
242
|
+
} catch {
|
|
243
|
+
return cloneViewState(deck.viewManager?.viewState);
|
|
244
244
|
}
|
|
245
245
|
}
|
|
246
|
+
|
|
246
247
|
return cloneViewState(viewport);
|
|
247
248
|
}
|
|
248
249
|
|
|
250
|
+
private updateViewState(viewport: Viewport, nextViewState: Record<string, unknown>): void {
|
|
251
|
+
if (!this.deck) {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
const viewId = this.viewId || viewport.id || 'default-view';
|
|
256
|
+
// @ts-expect-error Using private method until a public alternative is available
|
|
257
|
+
this.deck._onViewStateChange({viewId, viewState: nextViewState, interactionState: {}});
|
|
258
|
+
}
|
|
259
|
+
|
|
249
260
|
private handleZoomDelta(delta: number) {
|
|
250
261
|
const {minZoom, maxZoom} = this.getZoomBounds();
|
|
251
262
|
|
|
252
263
|
for (const viewport of this.getTargetViewports()) {
|
|
253
|
-
const viewState = this.
|
|
264
|
+
const viewState = this.getViewportViewState(viewport);
|
|
254
265
|
const baseZoom = Number(viewState.zoom);
|
|
255
266
|
const current = Number.isFinite(baseZoom) ? baseZoom : this.currentZoom;
|
|
256
267
|
const nextZoom = Math.max(minZoom, Math.min(maxZoom, current + delta));
|
|
268
|
+
this.currentZoom = nextZoom;
|
|
269
|
+
this.updateHTML();
|
|
257
270
|
this.updateViewState(viewport, {...viewState, zoom: nextZoom});
|
|
258
271
|
}
|
|
259
272
|
}
|
|
@@ -263,21 +276,10 @@ export class ZoomRangeWidget extends Widget<ZoomRangeWidgetProps> {
|
|
|
263
276
|
const nextZoom = Math.max(minZoom, Math.min(maxZoom, zoom));
|
|
264
277
|
|
|
265
278
|
for (const viewport of this.getTargetViewports()) {
|
|
266
|
-
const viewState = this.
|
|
279
|
+
const viewState = this.getViewportViewState(viewport);
|
|
280
|
+
this.currentZoom = nextZoom;
|
|
281
|
+
this.updateHTML();
|
|
267
282
|
this.updateViewState(viewport, {...viewState, zoom: nextZoom});
|
|
268
283
|
}
|
|
269
284
|
}
|
|
270
|
-
|
|
271
|
-
private updateViewState(viewport: Viewport, viewState: any) {
|
|
272
|
-
if (!this.deck) {
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
const viewId = this.viewId || viewport.id || 'default-view';
|
|
277
|
-
this.currentZoom = Number(viewState.zoom) || this.currentZoom;
|
|
278
|
-
this.updateHTML();
|
|
279
|
-
|
|
280
|
-
// @ts-ignore Using private method until a public alternative is available
|
|
281
|
-
this.deck._onViewStateChange({viewId, viewState, interactionState: {}});
|
|
282
|
-
}
|
|
283
285
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// deck.gl-community
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
+
/** @jsxImportSource preact */
|
|
4
5
|
|
|
5
6
|
import {
|
|
6
7
|
cloneElement,
|
|
@@ -58,7 +59,6 @@ export class HtmlOverlayWidget<
|
|
|
58
59
|
|
|
59
60
|
placement: WidgetPlacement = 'fill';
|
|
60
61
|
className = 'deck-widget-html-overlay';
|
|
61
|
-
deck?: Deck | null = null;
|
|
62
62
|
protected viewport: Viewport | null = null;
|
|
63
63
|
protected overlayRoot: unknown = null;
|
|
64
64
|
protected overlayRootInitialized = false;
|
|
@@ -83,7 +83,7 @@ export class HtmlOverlayWidget<
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
override onRemove(): void {
|
|
86
|
-
this.deck =
|
|
86
|
+
this.deck = undefined;
|
|
87
87
|
this.viewport = null;
|
|
88
88
|
this.overlayRoot = null;
|
|
89
89
|
this.overlayRootInitialized = false;
|
package/src/index.ts
CHANGED
|
@@ -2,17 +2,114 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
export {PanWidget} from './widgets/pan-widget';
|
|
6
|
-
export type {PanWidgetProps} from './widgets/pan-widget';
|
|
5
|
+
export {PanWidget} from './graph-widgets/pan-widget';
|
|
6
|
+
export type {PanWidgetProps} from './graph-widgets/pan-widget';
|
|
7
7
|
|
|
8
|
-
export {ZoomRangeWidget} from './widgets/zoom-range-widget';
|
|
9
|
-
export type {ZoomRangeWidgetProps} from './widgets/zoom-range-widget';
|
|
8
|
+
export {ZoomRangeWidget} from './graph-widgets/zoom-range-widget';
|
|
9
|
+
export type {ZoomRangeWidgetProps} from './graph-widgets/zoom-range-widget';
|
|
10
10
|
|
|
11
|
-
export {HtmlOverlayWidget} from './widgets/html-overlay-widget';
|
|
12
|
-
export type {HtmlOverlayWidgetProps} from './widgets/html-overlay-widget';
|
|
13
|
-
export {HtmlOverlayItem} from './widgets/html-overlay-item';
|
|
14
|
-
export type {HtmlOverlayItemProps} from './widgets/html-overlay-item';
|
|
15
|
-
export {HtmlClusterWidget} from './widgets/html-cluster-widget';
|
|
16
|
-
export type {HtmlClusterWidgetProps} from './widgets/html-cluster-widget';
|
|
17
|
-
export {HtmlTooltipWidget} from './widgets/html-tooltip-widget';
|
|
18
|
-
export type {HtmlTooltipWidgetProps} from './widgets/html-tooltip-widget';
|
|
11
|
+
export {HtmlOverlayWidget} from './html-overlay-widgets/html-overlay-widget';
|
|
12
|
+
export type {HtmlOverlayWidgetProps} from './html-overlay-widgets/html-overlay-widget';
|
|
13
|
+
export {HtmlOverlayItem} from './html-overlay-widgets/html-overlay-item';
|
|
14
|
+
export type {HtmlOverlayItemProps} from './html-overlay-widgets/html-overlay-item';
|
|
15
|
+
export {HtmlClusterWidget} from './html-overlay-widgets/html-cluster-widget';
|
|
16
|
+
export type {HtmlClusterWidgetProps} from './html-overlay-widgets/html-cluster-widget';
|
|
17
|
+
export {HtmlTooltipWidget} from './html-overlay-widgets/html-tooltip-widget';
|
|
18
|
+
export type {HtmlTooltipWidgetProps} from './html-overlay-widgets/html-tooltip-widget';
|
|
19
|
+
|
|
20
|
+
export {HeapMemoryWidget} from './widgets/heap-memory-widget';
|
|
21
|
+
export {
|
|
22
|
+
SettingsWidget,
|
|
23
|
+
type SettingsWidgetProps,
|
|
24
|
+
type SettingsWidgetSchema,
|
|
25
|
+
type SettingsWidgetSectionDescriptor,
|
|
26
|
+
type SettingsWidgetSettingDescriptor,
|
|
27
|
+
type SettingsWidgetState
|
|
28
|
+
} from './widgets/settings-widget';
|
|
29
|
+
export {
|
|
30
|
+
OmniBoxWidget,
|
|
31
|
+
type OmniBoxOption,
|
|
32
|
+
type OmniBoxOptionProvider,
|
|
33
|
+
type OmniBoxRenderOptionArgs,
|
|
34
|
+
type OmniBoxWidgetProps
|
|
35
|
+
} from './widgets/omni-box-widget';
|
|
36
|
+
export {ResetViewWidget, type ResetViewWidgetProps} from './widget-panels/reset-view-widget';
|
|
37
|
+
export {
|
|
38
|
+
TimeMeasureWidget,
|
|
39
|
+
type TimeMeasureRange,
|
|
40
|
+
type TimeMeasureSelectionState
|
|
41
|
+
} from './widget-panels/time-measure-widget';
|
|
42
|
+
export {ToastWidget, type ToastWidgetProps} from './widget-panels/toast-widget';
|
|
43
|
+
export {
|
|
44
|
+
toastManager,
|
|
45
|
+
type ToastEntry,
|
|
46
|
+
type ToastKind,
|
|
47
|
+
type ToastRequest
|
|
48
|
+
} from './widget-panels/toast-manager';
|
|
49
|
+
export {YZoomWidget, type YZoomWidgetProps} from './widget-panels/y-zoom-widget';
|
|
50
|
+
export {
|
|
51
|
+
AccordeonPanel,
|
|
52
|
+
AccordeonWidgetContainer,
|
|
53
|
+
ColumnWidgetContainer,
|
|
54
|
+
ColumnPanel,
|
|
55
|
+
CustomPanel,
|
|
56
|
+
MarkdownPanel,
|
|
57
|
+
TabbedPanel,
|
|
58
|
+
TabbedWidgetContainer,
|
|
59
|
+
WidgetContainerRenderer,
|
|
60
|
+
asPanelContainer,
|
|
61
|
+
type AccordeonWidgetContainerProps,
|
|
62
|
+
type AccordeonPanelProps,
|
|
63
|
+
type ColumnWidgetContainerProps,
|
|
64
|
+
type ColumnPanelProps,
|
|
65
|
+
type CustomPanelProps,
|
|
66
|
+
type MarkdownPanelProps,
|
|
67
|
+
type TabbedWidgetContainerProps,
|
|
68
|
+
type TabbedPanelProps,
|
|
69
|
+
type WidgetContainer,
|
|
70
|
+
type WidgetContainerPanelBase,
|
|
71
|
+
type WidgetPanel,
|
|
72
|
+
type WidgetPanelContainer,
|
|
73
|
+
type WidgetPanelContainerProps,
|
|
74
|
+
type WidgetPanelRecord,
|
|
75
|
+
type WidgetPanelTheme,
|
|
76
|
+
type WidgetPanelThemeMode
|
|
77
|
+
} from './widget-panels/widget-containers';
|
|
78
|
+
export {BoxWidget, type BoxWidgetProps} from './widget-panels/box-widget';
|
|
79
|
+
export {
|
|
80
|
+
FullScreenPanelWidget,
|
|
81
|
+
type FullScreenPanelWidgetProps
|
|
82
|
+
} from './widget-panels/full-screen-panel-widget';
|
|
83
|
+
export {
|
|
84
|
+
KeyboardShortcutsWidget,
|
|
85
|
+
KeyboardShortcutsPanel,
|
|
86
|
+
type KeyboardShortcutsPanelProps
|
|
87
|
+
} from './widget-panels/keyboard-shortcuts-widget';
|
|
88
|
+
export {ModalWidget, type ModalWidgetProps} from './widget-panels/modal-widget';
|
|
89
|
+
export {SettingsPanel, type SettingsPanelProps} from './widget-panels/settings-panel';
|
|
90
|
+
export {
|
|
91
|
+
SelectWidgetComponent,
|
|
92
|
+
type SelectWidgetComponentOption,
|
|
93
|
+
type SelectWidgetComponentProps
|
|
94
|
+
} from './widget-components/select-widget-component';
|
|
95
|
+
export {IconButton, makeTextIcon} from './widget-components/icon-button';
|
|
96
|
+
export {StatsPanel, type StatsPanelProps} from './widget-panels/stats-panel';
|
|
97
|
+
export {SidebarWidget, type SidebarWidgetProps} from './widget-panels/sidebar-widget';
|
|
98
|
+
export {
|
|
99
|
+
ToolbarWidget,
|
|
100
|
+
type ToolbarWidgetActionItem,
|
|
101
|
+
type ToolbarWidgetBadgeItem,
|
|
102
|
+
type ToolbarWidgetItem,
|
|
103
|
+
type ToolbarWidgetProps,
|
|
104
|
+
type ToolbarWidgetToggleGroupItem,
|
|
105
|
+
type ToolbarWidgetToggleOption
|
|
106
|
+
} from './widget-panels/toolbar-widget';
|
|
107
|
+
export {TextEditorPanel, type TextEditorPanelProps} from './widget-panels/text-editor-panel';
|
|
108
|
+
|
|
109
|
+
export {
|
|
110
|
+
type KeyboardShortcut,
|
|
111
|
+
isShortcutMatchingKeyEvent,
|
|
112
|
+
findShortcutMatchingKeyEvent,
|
|
113
|
+
DEFAULT_SHORTCUTS,
|
|
114
|
+
formatKey
|
|
115
|
+
} from './keyboard-shortcuts/keyboard-shortcuts';
|