@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.
Files changed (295) hide show
  1. package/README.md +9 -1
  2. package/dist/graph-widgets/_deprecate/long-press-button.d.ts.map +1 -0
  3. package/dist/graph-widgets/_deprecate/long-press-button.js.map +1 -0
  4. package/dist/graph-widgets/_deprecate/view-control-widget.d.ts.map +1 -0
  5. package/dist/graph-widgets/_deprecate/view-control-widget.js.map +1 -0
  6. package/dist/{widgets → graph-widgets}/long-press-button.d.ts +1 -0
  7. package/dist/graph-widgets/long-press-button.d.ts.map +1 -0
  8. package/dist/{widgets → graph-widgets}/long-press-button.js +1 -0
  9. package/dist/graph-widgets/long-press-button.js.map +1 -0
  10. package/dist/graph-widgets/long-press-controller.d.ts.map +1 -0
  11. package/dist/graph-widgets/long-press-controller.js.map +1 -0
  12. package/dist/{widgets → graph-widgets}/pan-widget.d.ts +3 -2
  13. package/dist/graph-widgets/pan-widget.d.ts.map +1 -0
  14. package/dist/{widgets → graph-widgets}/pan-widget.js +19 -15
  15. package/dist/graph-widgets/pan-widget.js.map +1 -0
  16. package/dist/{widgets → graph-widgets}/zoom-range-widget.d.ts +3 -3
  17. package/dist/graph-widgets/zoom-range-widget.d.ts.map +1 -0
  18. package/dist/{widgets → graph-widgets}/zoom-range-widget.js +24 -23
  19. package/dist/graph-widgets/zoom-range-widget.js.map +1 -0
  20. package/dist/html-overlay-widgets/html-cluster-widget.d.ts.map +1 -0
  21. package/dist/html-overlay-widgets/html-cluster-widget.js.map +1 -0
  22. package/dist/{widgets → html-overlay-widgets}/html-overlay-item.d.ts +1 -0
  23. package/dist/html-overlay-widgets/html-overlay-item.d.ts.map +1 -0
  24. package/dist/html-overlay-widgets/html-overlay-item.js.map +1 -0
  25. package/dist/{widgets → html-overlay-widgets}/html-overlay-widget.d.ts +1 -1
  26. package/dist/html-overlay-widgets/html-overlay-widget.d.ts.map +1 -0
  27. package/dist/{widgets → html-overlay-widgets}/html-overlay-widget.js +2 -2
  28. package/dist/html-overlay-widgets/html-overlay-widget.js.map +1 -0
  29. package/dist/{widgets → html-overlay-widgets}/html-tooltip-widget.d.ts +1 -0
  30. package/dist/html-overlay-widgets/html-tooltip-widget.d.ts.map +1 -0
  31. package/dist/html-overlay-widgets/html-tooltip-widget.js.map +1 -0
  32. package/dist/index.cjs +5102 -82
  33. package/dist/index.cjs.map +4 -4
  34. package/dist/index.d.ts +33 -12
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +27 -6
  37. package/dist/index.js.map +1 -1
  38. package/dist/keyboard-shortcuts/keyboard-shortcuts-manager.d.ts +18 -0
  39. package/dist/keyboard-shortcuts/keyboard-shortcuts-manager.d.ts.map +1 -0
  40. package/dist/keyboard-shortcuts/keyboard-shortcuts-manager.js +47 -0
  41. package/dist/keyboard-shortcuts/keyboard-shortcuts-manager.js.map +1 -0
  42. package/dist/keyboard-shortcuts/keyboard-shortcuts.d.ts +22 -0
  43. package/dist/keyboard-shortcuts/keyboard-shortcuts.d.ts.map +1 -0
  44. package/dist/keyboard-shortcuts/keyboard-shortcuts.js +83 -0
  45. package/dist/keyboard-shortcuts/keyboard-shortcuts.js.map +1 -0
  46. package/dist/lib/settings/settings.d.ts +17 -0
  47. package/dist/lib/settings/settings.d.ts.map +1 -0
  48. package/dist/lib/settings/settings.js +140 -0
  49. package/dist/lib/settings/settings.js.map +1 -0
  50. package/dist/ready-to-upstream-widgets/reset-view-widget.d.ts +21 -0
  51. package/dist/ready-to-upstream-widgets/reset-view-widget.d.ts.map +1 -0
  52. package/dist/ready-to-upstream-widgets/reset-view-widget.js +29 -0
  53. package/dist/ready-to-upstream-widgets/reset-view-widget.js.map +1 -0
  54. package/dist/widget-components/icon-button.d.ts +12 -0
  55. package/dist/widget-components/icon-button.d.ts.map +1 -0
  56. package/dist/widget-components/icon-button.js +12 -0
  57. package/dist/widget-components/icon-button.js.map +1 -0
  58. package/dist/widget-components/select-widget-component.d.ts +15 -0
  59. package/dist/widget-components/select-widget-component.d.ts.map +1 -0
  60. package/dist/widget-components/select-widget-component.js +229 -0
  61. package/dist/widget-components/select-widget-component.js.map +1 -0
  62. package/dist/widget-panels/box-widget.d.ts +43 -0
  63. package/dist/widget-panels/box-widget.d.ts.map +1 -0
  64. package/dist/widget-panels/box-widget.js +191 -0
  65. package/dist/widget-panels/box-widget.js.map +1 -0
  66. package/dist/widget-panels/box-widget.test.d.ts +2 -0
  67. package/dist/widget-panels/box-widget.test.d.ts.map +1 -0
  68. package/dist/widget-panels/box-widget.test.js +41 -0
  69. package/dist/widget-panels/box-widget.test.js.map +1 -0
  70. package/dist/widget-panels/full-screen-panel-widget.d.ts +33 -0
  71. package/dist/widget-panels/full-screen-panel-widget.d.ts.map +1 -0
  72. package/dist/widget-panels/full-screen-panel-widget.js +153 -0
  73. package/dist/widget-panels/full-screen-panel-widget.js.map +1 -0
  74. package/dist/widget-panels/full-screen-panel-widget.test.d.ts +2 -0
  75. package/dist/widget-panels/full-screen-panel-widget.test.d.ts.map +1 -0
  76. package/dist/widget-panels/full-screen-panel-widget.test.js +40 -0
  77. package/dist/widget-panels/full-screen-panel-widget.test.js.map +1 -0
  78. package/dist/widget-panels/heap-memory-widget.d.ts +26 -0
  79. package/dist/widget-panels/heap-memory-widget.d.ts.map +1 -0
  80. package/dist/widget-panels/heap-memory-widget.js +156 -0
  81. package/dist/widget-panels/heap-memory-widget.js.map +1 -0
  82. package/dist/widget-panels/keyboard-shortcuts-widget.d.ts +46 -0
  83. package/dist/widget-panels/keyboard-shortcuts-widget.d.ts.map +1 -0
  84. package/dist/widget-panels/keyboard-shortcuts-widget.js +301 -0
  85. package/dist/widget-panels/keyboard-shortcuts-widget.js.map +1 -0
  86. package/dist/widget-panels/modal-widget.d.ts +62 -0
  87. package/dist/widget-panels/modal-widget.d.ts.map +1 -0
  88. package/dist/widget-panels/modal-widget.js +309 -0
  89. package/dist/widget-panels/modal-widget.js.map +1 -0
  90. package/dist/widget-panels/modal-widget.test.d.ts +2 -0
  91. package/dist/widget-panels/modal-widget.test.d.ts.map +1 -0
  92. package/dist/widget-panels/modal-widget.test.js +103 -0
  93. package/dist/widget-panels/modal-widget.test.js.map +1 -0
  94. package/dist/widget-panels/omni-box-widget.d.ts +59 -0
  95. package/dist/widget-panels/omni-box-widget.d.ts.map +1 -0
  96. package/dist/widget-panels/omni-box-widget.js +562 -0
  97. package/dist/widget-panels/omni-box-widget.js.map +1 -0
  98. package/dist/widget-panels/omni-box-widget.test.d.ts +2 -0
  99. package/dist/widget-panels/omni-box-widget.test.d.ts.map +1 -0
  100. package/dist/widget-panels/omni-box-widget.test.js +49 -0
  101. package/dist/widget-panels/omni-box-widget.test.js.map +1 -0
  102. package/dist/widget-panels/reset-view-widget.d.ts +20 -0
  103. package/dist/widget-panels/reset-view-widget.d.ts.map +1 -0
  104. package/dist/widget-panels/reset-view-widget.js +28 -0
  105. package/dist/widget-panels/reset-view-widget.js.map +1 -0
  106. package/dist/widget-panels/settings-panel.d.ts +49 -0
  107. package/dist/widget-panels/settings-panel.d.ts.map +1 -0
  108. package/dist/widget-panels/settings-panel.js +263 -0
  109. package/dist/widget-panels/settings-panel.js.map +1 -0
  110. package/dist/widget-panels/settings-panel.test.d.ts +2 -0
  111. package/dist/widget-panels/settings-panel.test.d.ts.map +1 -0
  112. package/dist/widget-panels/settings-panel.test.js +217 -0
  113. package/dist/widget-panels/settings-panel.test.js.map +1 -0
  114. package/dist/widget-panels/sidebar-widget.d.ts +65 -0
  115. package/dist/widget-panels/sidebar-widget.d.ts.map +1 -0
  116. package/dist/widget-panels/sidebar-widget.js +339 -0
  117. package/dist/widget-panels/sidebar-widget.js.map +1 -0
  118. package/dist/widget-panels/sidebar-widget.test.d.ts +2 -0
  119. package/dist/widget-panels/sidebar-widget.test.d.ts.map +1 -0
  120. package/dist/widget-panels/sidebar-widget.test.js +175 -0
  121. package/dist/widget-panels/sidebar-widget.test.js.map +1 -0
  122. package/dist/widget-panels/stats-panel.d.ts +34 -0
  123. package/dist/widget-panels/stats-panel.d.ts.map +1 -0
  124. package/dist/widget-panels/stats-panel.js +61 -0
  125. package/dist/widget-panels/stats-panel.js.map +1 -0
  126. package/dist/widget-panels/stats-panel.test.d.ts +2 -0
  127. package/dist/widget-panels/stats-panel.test.d.ts.map +1 -0
  128. package/dist/widget-panels/stats-panel.test.js +36 -0
  129. package/dist/widget-panels/stats-panel.test.js.map +1 -0
  130. package/dist/widget-panels/text-editor-panel-monaco-runtime.d.ts +17 -0
  131. package/dist/widget-panels/text-editor-panel-monaco-runtime.d.ts.map +1 -0
  132. package/dist/widget-panels/text-editor-panel-monaco-runtime.js +69 -0
  133. package/dist/widget-panels/text-editor-panel-monaco-runtime.js.map +1 -0
  134. package/dist/widget-panels/text-editor-panel.d.ts +42 -0
  135. package/dist/widget-panels/text-editor-panel.d.ts.map +1 -0
  136. package/dist/widget-panels/text-editor-panel.js +249 -0
  137. package/dist/widget-panels/text-editor-panel.js.map +1 -0
  138. package/dist/widget-panels/text-editor-panel.test.d.ts +2 -0
  139. package/dist/widget-panels/text-editor-panel.test.d.ts.map +1 -0
  140. package/dist/widget-panels/text-editor-panel.test.js +393 -0
  141. package/dist/widget-panels/text-editor-panel.test.js.map +1 -0
  142. package/dist/widget-panels/time-measure-widget.d.ts +49 -0
  143. package/dist/widget-panels/time-measure-widget.d.ts.map +1 -0
  144. package/dist/widget-panels/time-measure-widget.js +351 -0
  145. package/dist/widget-panels/time-measure-widget.js.map +1 -0
  146. package/dist/widget-panels/toast-manager.d.ts +24 -0
  147. package/dist/widget-panels/toast-manager.d.ts.map +1 -0
  148. package/dist/widget-panels/toast-manager.js +96 -0
  149. package/dist/widget-panels/toast-manager.js.map +1 -0
  150. package/dist/widget-panels/toast-manager.test.d.ts +2 -0
  151. package/dist/widget-panels/toast-manager.test.d.ts.map +1 -0
  152. package/dist/widget-panels/toast-manager.test.js +75 -0
  153. package/dist/widget-panels/toast-manager.test.js.map +1 -0
  154. package/dist/widget-panels/toast-widget.d.ts +20 -0
  155. package/dist/widget-panels/toast-widget.d.ts.map +1 -0
  156. package/dist/widget-panels/toast-widget.js +207 -0
  157. package/dist/widget-panels/toast-widget.js.map +1 -0
  158. package/dist/widget-panels/toast-widget.test.d.ts +2 -0
  159. package/dist/widget-panels/toast-widget.test.d.ts.map +1 -0
  160. package/dist/widget-panels/toast-widget.test.js +81 -0
  161. package/dist/widget-panels/toast-widget.test.js.map +1 -0
  162. package/dist/widget-panels/toggle-widget.d.ts +34 -0
  163. package/dist/widget-panels/toggle-widget.d.ts.map +1 -0
  164. package/dist/widget-panels/toggle-widget.js +46 -0
  165. package/dist/widget-panels/toggle-widget.js.map +1 -0
  166. package/dist/widget-panels/toolbar-widget.d.ts +53 -0
  167. package/dist/widget-panels/toolbar-widget.d.ts.map +1 -0
  168. package/dist/widget-panels/toolbar-widget.js +160 -0
  169. package/dist/widget-panels/toolbar-widget.js.map +1 -0
  170. package/dist/widget-panels/toolbar-widget.test.d.ts +2 -0
  171. package/dist/widget-panels/toolbar-widget.test.d.ts.map +1 -0
  172. package/dist/widget-panels/toolbar-widget.test.js +105 -0
  173. package/dist/widget-panels/toolbar-widget.test.js.map +1 -0
  174. package/dist/widget-panels/widget-containers.d.ts +275 -0
  175. package/dist/widget-panels/widget-containers.d.ts.map +1 -0
  176. package/dist/widget-panels/widget-containers.js +761 -0
  177. package/dist/widget-panels/widget-containers.js.map +1 -0
  178. package/dist/widget-panels/widget-containers.test.d.ts +2 -0
  179. package/dist/widget-panels/widget-containers.test.d.ts.map +1 -0
  180. package/dist/widget-panels/widget-containers.test.js +337 -0
  181. package/dist/widget-panels/widget-containers.test.js.map +1 -0
  182. package/dist/widget-panels/y-zoom-widget.d.ts +66 -0
  183. package/dist/widget-panels/y-zoom-widget.d.ts.map +1 -0
  184. package/dist/widget-panels/y-zoom-widget.js +264 -0
  185. package/dist/widget-panels/y-zoom-widget.js.map +1 -0
  186. package/dist/widget-panels/y-zoom-widget.test.d.ts +2 -0
  187. package/dist/widget-panels/y-zoom-widget.test.d.ts.map +1 -0
  188. package/dist/widget-panels/y-zoom-widget.test.js +71 -0
  189. package/dist/widget-panels/y-zoom-widget.test.js.map +1 -0
  190. package/dist/widgets/heap-memory-widget.d.ts +26 -0
  191. package/dist/widgets/heap-memory-widget.d.ts.map +1 -0
  192. package/dist/widgets/heap-memory-widget.js +158 -0
  193. package/dist/widgets/heap-memory-widget.js.map +1 -0
  194. package/dist/widgets/keyboard-shortcuts-widget.d.ts +28 -0
  195. package/dist/widgets/keyboard-shortcuts-widget.d.ts.map +1 -0
  196. package/dist/widgets/keyboard-shortcuts-widget.js +125 -0
  197. package/dist/widgets/keyboard-shortcuts-widget.js.map +1 -0
  198. package/dist/widgets/omni-box-widget.d.ts +59 -0
  199. package/dist/widgets/omni-box-widget.d.ts.map +1 -0
  200. package/dist/widgets/omni-box-widget.js +493 -0
  201. package/dist/widgets/omni-box-widget.js.map +1 -0
  202. package/dist/widgets/settings-widget.d.ts +64 -0
  203. package/dist/widgets/settings-widget.d.ts.map +1 -0
  204. package/dist/widgets/settings-widget.js +148 -0
  205. package/dist/widgets/settings-widget.js.map +1 -0
  206. package/dist/widgets/view-manager-utils.d.ts +1 -1
  207. package/dist/widgets/view-manager-utils.d.ts.map +1 -1
  208. package/dist/widgets/view-manager-utils.js.map +1 -1
  209. package/package.json +4 -3
  210. package/src/{widgets → graph-widgets}/long-press-button.tsx +1 -0
  211. package/src/{widgets → graph-widgets}/pan-widget.tsx +30 -23
  212. package/src/{widgets → graph-widgets}/zoom-range-widget.tsx +36 -34
  213. package/src/{widgets → html-overlay-widgets}/html-overlay-item.tsx +1 -0
  214. package/src/{widgets → html-overlay-widgets}/html-overlay-widget.tsx +2 -2
  215. package/src/{widgets → html-overlay-widgets}/html-tooltip-widget.tsx +1 -0
  216. package/src/index.ts +109 -12
  217. package/src/keyboard-shortcuts/keyboard-shortcuts-manager.ts +58 -0
  218. package/src/keyboard-shortcuts/keyboard-shortcuts.ts +113 -0
  219. package/src/keyboard-shortcuts/keyboard-shortcuts.ts.disabled +107 -0
  220. package/src/lib/settings/settings.ts +203 -0
  221. package/src/ready-to-upstream-widgets/reset-view-widget.tsx +57 -0
  222. package/src/widget-components/icon-button.tsx +38 -0
  223. package/src/widget-components/select-widget-component.tsx +354 -0
  224. package/src/widget-panels/box-widget.test.tsx +50 -0
  225. package/src/widget-panels/box-widget.tsx +284 -0
  226. package/src/widget-panels/full-screen-panel-widget.test.tsx +49 -0
  227. package/src/widget-panels/full-screen-panel-widget.tsx +223 -0
  228. package/src/widget-panels/heap-memory-widget.tsx +221 -0
  229. package/src/widget-panels/keyboard-shortcuts-widget.tsx +511 -0
  230. package/src/widget-panels/modal-widget.test.tsx +124 -0
  231. package/src/widget-panels/modal-widget.tsx +464 -0
  232. package/src/widget-panels/omni-box-widget.test.tsx +59 -0
  233. package/src/widget-panels/omni-box-widget.tsx +849 -0
  234. package/src/widget-panels/reset-view-widget.tsx +56 -0
  235. package/src/widget-panels/settings-panel.test.tsx +286 -0
  236. package/src/widget-panels/settings-panel.tsx +619 -0
  237. package/src/widget-panels/sidebar-widget.test.tsx +215 -0
  238. package/src/widget-panels/sidebar-widget.tsx +525 -0
  239. package/src/widget-panels/stats-panel.test.tsx +41 -0
  240. package/src/widget-panels/stats-panel.tsx +108 -0
  241. package/src/widget-panels/text-editor-panel-monaco-runtime.ts +97 -0
  242. package/src/widget-panels/text-editor-panel.test.tsx +618 -0
  243. package/src/widget-panels/text-editor-panel.tsx +375 -0
  244. package/src/widget-panels/time-measure-widget.tsx +445 -0
  245. package/src/widget-panels/toast-manager.test.ts +98 -0
  246. package/src/widget-panels/toast-manager.ts +134 -0
  247. package/src/widget-panels/toast-widget.test.tsx +105 -0
  248. package/src/widget-panels/toast-widget.tsx +293 -0
  249. package/src/widget-panels/toggle-widget.tsx +93 -0
  250. package/src/widget-panels/toolbar-widget.test.ts +129 -0
  251. package/src/widget-panels/toolbar-widget.tsx +293 -0
  252. package/src/widget-panels/widget-containers.test.tsx +453 -0
  253. package/src/widget-panels/widget-containers.tsx +1330 -0
  254. package/src/widget-panels/worker-modules.d.ts +7 -0
  255. package/src/widget-panels/y-zoom-widget.test.tsx +101 -0
  256. package/src/widget-panels/y-zoom-widget.tsx +376 -0
  257. package/src/widgets/heap-memory-widget.tsx +223 -0
  258. package/src/widgets/keyboard-shortcuts-widget.tsx +245 -0
  259. package/src/widgets/omni-box-widget.tsx +768 -0
  260. package/src/widgets/settings-widget.tsx +277 -0
  261. package/src/widgets/view-manager-utils.ts +1 -1
  262. package/dist/_deprecate/long-press-button.d.ts.map +0 -1
  263. package/dist/_deprecate/long-press-button.js.map +0 -1
  264. package/dist/_deprecate/view-control-widget.d.ts.map +0 -1
  265. package/dist/_deprecate/view-control-widget.js.map +0 -1
  266. package/dist/widgets/html-cluster-widget.d.ts.map +0 -1
  267. package/dist/widgets/html-cluster-widget.js.map +0 -1
  268. package/dist/widgets/html-overlay-item.d.ts.map +0 -1
  269. package/dist/widgets/html-overlay-item.js.map +0 -1
  270. package/dist/widgets/html-overlay-widget.d.ts.map +0 -1
  271. package/dist/widgets/html-overlay-widget.js.map +0 -1
  272. package/dist/widgets/html-tooltip-widget.d.ts.map +0 -1
  273. package/dist/widgets/html-tooltip-widget.js.map +0 -1
  274. package/dist/widgets/long-press-button.d.ts.map +0 -1
  275. package/dist/widgets/long-press-button.js.map +0 -1
  276. package/dist/widgets/long-press-controller.d.ts.map +0 -1
  277. package/dist/widgets/long-press-controller.js.map +0 -1
  278. package/dist/widgets/pan-widget.d.ts.map +0 -1
  279. package/dist/widgets/pan-widget.js.map +0 -1
  280. package/dist/widgets/zoom-range-widget.d.ts.map +0 -1
  281. package/dist/widgets/zoom-range-widget.js.map +0 -1
  282. /package/dist/{_deprecate → graph-widgets/_deprecate}/long-press-button.d.ts +0 -0
  283. /package/dist/{_deprecate → graph-widgets/_deprecate}/long-press-button.js +0 -0
  284. /package/dist/{_deprecate → graph-widgets/_deprecate}/view-control-widget.d.ts +0 -0
  285. /package/dist/{_deprecate → graph-widgets/_deprecate}/view-control-widget.js +0 -0
  286. /package/dist/{widgets → graph-widgets}/long-press-controller.d.ts +0 -0
  287. /package/dist/{widgets → graph-widgets}/long-press-controller.js +0 -0
  288. /package/dist/{widgets → html-overlay-widgets}/html-cluster-widget.d.ts +0 -0
  289. /package/dist/{widgets → html-overlay-widgets}/html-cluster-widget.js +0 -0
  290. /package/dist/{widgets → html-overlay-widgets}/html-overlay-item.js +0 -0
  291. /package/dist/{widgets → html-overlay-widgets}/html-tooltip-widget.js +0 -0
  292. /package/src/{_deprecate → graph-widgets/_deprecate}/long-press-button.tsx +0 -0
  293. /package/src/{_deprecate → graph-widgets/_deprecate}/view-control-widget.tsx +0 -0
  294. /package/src/{widgets → graph-widgets}/long-press-controller.ts +0 -0
  295. /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,CAE7E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKtE"}
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,IAAiB;IAC9C,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"}
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.8",
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.2.8",
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": "9cb179aa3d1707f32116034150ab7130ce88b18c"
41
+ "gitHead": "82660b8a29be0958c81acd00669b3034375186ea"
41
42
  }
@@ -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 {Component, type ComponentChildren} from 'preact';
6
7
 
@@ -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 './view-manager-utils';
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
- deck?: Deck | null = null;
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 = null;
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 getViewState(viewport: Viewport): any {
146
+ private getViewportViewState(viewport: Viewport): Record<string, unknown> {
146
147
  const deck = this.deck;
147
- const viewManager = hasViewManager(deck) ? deck.viewManager : null;
148
- const viewId = this.viewId || viewport.id;
149
- if (viewManager) {
148
+ if (deck && hasViewManager(deck)) {
149
+ const viewId = this.viewId || viewport.id;
150
150
  try {
151
- return {...viewManager.getViewState(viewId)};
152
- } catch (err) {
153
- return cloneViewState(viewManager.viewState);
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.getViewState(viewport);
184
+ const viewState = this.getViewportViewState(viewport);
174
185
  const panUpdate = viewport.panByPosition(center, nextPixel);
175
- const nextViewState = {...viewState, ...panUpdate};
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 './view-manager-utils';
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
- deck?: Deck | null = null;
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 = null;
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.getViewState(viewport);
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 getViewState(viewport: Viewport): any {
236
+ private getViewportViewState(viewport: Viewport): Record<string, unknown> {
236
237
  const deck = this.deck;
237
- const viewManager = hasViewManager(deck) ? deck.viewManager : null;
238
- const viewId = this.viewId || viewport.id;
239
- if (viewManager) {
238
+ if (deck && hasViewManager(deck)) {
239
+ const viewId = this.viewId || viewport.id;
240
240
  try {
241
- return {...viewManager.getViewState(viewId)};
242
- } catch (err) {
243
- return cloneViewState(viewManager.viewState);
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.getViewState(viewport);
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.getViewState(viewport);
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 type {ComponentChildren, JSX} from 'preact';
6
7
 
@@ -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 = null;
86
+ this.deck = undefined;
87
87
  this.viewport = null;
88
88
  this.overlayRoot = null;
89
89
  this.overlayRootInitialized = false;
@@ -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 type {ComponentChildren, VNode} from 'preact';
6
7
  import type {PickingInfo, WidgetProps, Viewport} from '@deck.gl/core';
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';