@deck.gl-community/widgets 9.2.8 → 9.3.1-alpha.0

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,105 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest';
2
+ import { ToolbarWidget } from "./toolbar-widget.js";
3
+ afterEach(() => {
4
+ document.body.innerHTML = '';
5
+ });
6
+ describe('ToolbarWidget', () => {
7
+ it('fires action callbacks when action buttons are clicked', () => {
8
+ const root = document.createElement('div');
9
+ const onClick = vi.fn();
10
+ document.body.appendChild(root);
11
+ const widget = new ToolbarWidget({
12
+ id: 'toolbar-actions',
13
+ items: [
14
+ {
15
+ kind: 'action',
16
+ id: 'reset',
17
+ label: 'Reset',
18
+ onClick
19
+ }
20
+ ]
21
+ });
22
+ widget.onRenderHTML(root);
23
+ root.querySelector('[data-toolbar-item-id="reset"]')?.click();
24
+ expect(onClick).toHaveBeenCalledTimes(1);
25
+ });
26
+ it('fires toggle selection callbacks and reflects selected state', () => {
27
+ const root = document.createElement('div');
28
+ const onSelect = vi.fn();
29
+ document.body.appendChild(root);
30
+ const widget = new ToolbarWidget({
31
+ id: 'toolbar-toggle',
32
+ items: [
33
+ {
34
+ kind: 'toggle-group',
35
+ id: 'boolean-op',
36
+ selectedId: 'union',
37
+ onSelect,
38
+ options: [
39
+ { id: 'union', label: 'Union' },
40
+ { id: 'difference', label: 'Difference' }
41
+ ]
42
+ }
43
+ ]
44
+ });
45
+ widget.onRenderHTML(root);
46
+ const unionButton = root.querySelector('[data-toolbar-option-id="union"]');
47
+ const differenceButton = root.querySelector('[data-toolbar-option-id="difference"]');
48
+ expect(unionButton?.getAttribute('aria-pressed')).toBe('true');
49
+ expect(differenceButton?.getAttribute('aria-pressed')).toBe('false');
50
+ differenceButton?.click();
51
+ expect(onSelect).toHaveBeenCalledWith('difference');
52
+ });
53
+ it('respects disabled state for actions and toggle groups', () => {
54
+ const root = document.createElement('div');
55
+ const onClick = vi.fn();
56
+ const onSelect = vi.fn();
57
+ document.body.appendChild(root);
58
+ const widget = new ToolbarWidget({
59
+ id: 'toolbar-disabled',
60
+ items: [
61
+ {
62
+ kind: 'action',
63
+ id: 'disabled-action',
64
+ label: 'Disabled action',
65
+ disabled: true,
66
+ onClick
67
+ },
68
+ {
69
+ kind: 'toggle-group',
70
+ id: 'disabled-group',
71
+ disabled: true,
72
+ onSelect,
73
+ options: [{ id: 'one', label: 'One' }]
74
+ }
75
+ ]
76
+ });
77
+ widget.onRenderHTML(root);
78
+ const actionButton = root.querySelector('[data-toolbar-item-id="disabled-action"]');
79
+ const toggleButton = root.querySelector('[data-toolbar-option-id="one"]');
80
+ expect(actionButton?.disabled).toBe(true);
81
+ expect(toggleButton?.disabled).toBe(true);
82
+ actionButton?.click();
83
+ toggleButton?.click();
84
+ expect(onClick).not.toHaveBeenCalled();
85
+ expect(onSelect).not.toHaveBeenCalled();
86
+ });
87
+ it('renders badges as read-only status items', () => {
88
+ const root = document.createElement('div');
89
+ document.body.appendChild(root);
90
+ const widget = new ToolbarWidget({
91
+ id: 'toolbar-badge',
92
+ items: [
93
+ {
94
+ kind: 'badge',
95
+ id: 'status',
96
+ label: '3 clusters'
97
+ }
98
+ ]
99
+ });
100
+ widget.onRenderHTML(root);
101
+ const badge = root.querySelector('[data-toolbar-item-kind="badge"]');
102
+ expect(badge?.textContent).toContain('3 clusters');
103
+ });
104
+ });
105
+ //# sourceMappingURL=toolbar-widget.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar-widget.test.js","sourceRoot":"","sources":["../../src/widget-panels/toolbar-widget.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,275 @@
1
+ import type { JSX } from 'preact';
2
+ /**
3
+ * Internal panel identifier used by both accordion and tab containers.
4
+ */
5
+ type WidgetPanelId = string;
6
+ /** Light/dark theme modes used for panel-scoped overrides. */
7
+ export type WidgetPanelThemeMode = 'light' | 'dark';
8
+ /** Public theme override options for widget panels. */
9
+ export type WidgetPanelTheme = 'inherit' | 'light' | 'dark' | 'invert';
10
+ /**
11
+ * Describes one entry in an accordion or tabbed container.
12
+ */
13
+ export type WidgetPanel = {
14
+ /** Stable id used for expansion/selection bookkeeping. */
15
+ id: WidgetPanelId;
16
+ /** Visible heading text for the panel. */
17
+ title: string;
18
+ /** Renderable panel body. */
19
+ content: JSX.Element;
20
+ /** Optional theme override applied to this panel subtree. */
21
+ theme?: WidgetPanelTheme;
22
+ /**
23
+ * If true, the panel can not be interacted with and will not switch/expand.
24
+ */
25
+ disabled?: boolean;
26
+ /**
27
+ * If true, keep the panel mounted when collapsed (for preserving internal state).
28
+ */
29
+ keepMounted?: boolean;
30
+ };
31
+ export type WidgetPanelRecord = Record<string, WidgetPanel>;
32
+ export type AccordeonPanelProps = {
33
+ /**
34
+ * Map of panel IDs to panel definitions.
35
+ */
36
+ panels: WidgetPanelRecord;
37
+ /** Optional identifier for the wrapper panel when embedded in another container. */
38
+ id?: string;
39
+ /** Optional heading used by outer overlays when this is rendered as a direct child panel. */
40
+ title?: string;
41
+ /** Optional theme override applied to this panel subtree. */
42
+ theme?: WidgetPanelTheme;
43
+ };
44
+ export type TabbedPanelProps = {
45
+ /**
46
+ * Map of panel IDs to panel definitions.
47
+ */
48
+ panels: WidgetPanelRecord;
49
+ /** Optional identifier for the wrapper panel when embedded in another container. */
50
+ id?: string;
51
+ /** Optional heading used by outer overlays when this is rendered as a direct child panel. */
52
+ title?: string;
53
+ /** Controls whether the tab list wraps onto multiple rows or scrolls horizontally. */
54
+ tabListLayout?: 'wrap' | 'scroll';
55
+ /** Optional theme override applied to this panel subtree. */
56
+ theme?: WidgetPanelTheme;
57
+ };
58
+ export type ColumnPanelProps = {
59
+ /**
60
+ * Map of panel IDs to panel definitions.
61
+ */
62
+ panels: WidgetPanelRecord;
63
+ /** Optional identifier for the wrapper panel when embedded in another container. */
64
+ id?: string;
65
+ /** Optional heading used by outer overlays when this is rendered as a direct child panel. */
66
+ title?: string;
67
+ /** Optional theme override applied to this panel subtree. */
68
+ theme?: WidgetPanelTheme;
69
+ };
70
+ export type CustomPanelProps = {
71
+ /** Stable id used for expansion/selection bookkeeping. */
72
+ id: string;
73
+ /** Visible heading text for the panel. */
74
+ title: string;
75
+ /**
76
+ * Called after the host element mounts.
77
+ * Return a cleanup callback to dispose any manual DOM work on unmount.
78
+ */
79
+ onRenderHTML: (rootElement: HTMLElement) => void | (() => void);
80
+ /**
81
+ * If true, the panel can not be interacted with and will not switch/expand.
82
+ */
83
+ disabled?: boolean;
84
+ /**
85
+ * If true, keep the panel mounted when collapsed (for preserving internal state).
86
+ */
87
+ keepMounted?: boolean;
88
+ /** Optional class name applied to the host element. */
89
+ className?: string;
90
+ /** Optional theme override applied to this panel subtree. */
91
+ theme?: WidgetPanelTheme;
92
+ };
93
+ export type MarkdownPanelProps = {
94
+ /** Stable id used for expansion/selection bookkeeping. */
95
+ id: string;
96
+ /** Visible heading text for the panel. */
97
+ title: string;
98
+ /** Markdown source rendered into a small built-in safe subset. */
99
+ markdown: string;
100
+ /**
101
+ * If true, the panel can not be interacted with and will not switch/expand.
102
+ */
103
+ disabled?: boolean;
104
+ /**
105
+ * If true, keep the panel mounted when collapsed (for preserving internal state).
106
+ */
107
+ keepMounted?: boolean;
108
+ /** Optional class name applied to the markdown content host. */
109
+ className?: string;
110
+ /** Optional theme override applied to this panel subtree. */
111
+ theme?: WidgetPanelTheme;
112
+ };
113
+ /**
114
+ * A wrapper panel that renders child panels in an accordion layout.
115
+ */
116
+ export declare class AccordeonPanel implements WidgetPanel {
117
+ id: string;
118
+ title: string;
119
+ content: JSX.Element;
120
+ theme?: WidgetPanelTheme;
121
+ constructor({ panels, id, title, theme }: AccordeonPanelProps);
122
+ }
123
+ /**
124
+ * A wrapper panel that renders child panels in a tabbed layout.
125
+ */
126
+ export declare class TabbedPanel implements WidgetPanel {
127
+ id: string;
128
+ title: string;
129
+ content: JSX.Element;
130
+ theme?: WidgetPanelTheme;
131
+ constructor({ panels, id, title, tabListLayout, theme }: TabbedPanelProps);
132
+ }
133
+ /**
134
+ * A wrapper panel that renders child panels in a vertical column.
135
+ */
136
+ export declare class ColumnPanel implements WidgetPanel {
137
+ id: string;
138
+ title: string;
139
+ content: JSX.Element;
140
+ theme?: WidgetPanelTheme;
141
+ constructor({ panels, id, title, theme }: ColumnPanelProps);
142
+ }
143
+ /**
144
+ * A wrapper panel that renders imperative HTML content into a managed host element.
145
+ */
146
+ export declare class CustomPanel implements WidgetPanel {
147
+ id: string;
148
+ title: string;
149
+ content: JSX.Element;
150
+ theme?: WidgetPanelTheme;
151
+ disabled?: boolean;
152
+ keepMounted?: boolean;
153
+ constructor({ id, title, onRenderHTML, disabled, keepMounted, className, theme }: CustomPanelProps);
154
+ }
155
+ /**
156
+ * A wrapper panel that renders a minimal built-in Markdown subset without external parsers.
157
+ */
158
+ export declare class MarkdownPanel implements WidgetPanel {
159
+ id: string;
160
+ title: string;
161
+ content: JSX.Element;
162
+ theme?: WidgetPanelTheme;
163
+ disabled?: boolean;
164
+ keepMounted?: boolean;
165
+ constructor({ id, title, markdown, disabled, keepMounted, className, theme }: MarkdownPanelProps);
166
+ }
167
+ /**
168
+ * Shared props for both container implementations.
169
+ */
170
+ export type WidgetContainerPanelBase = {
171
+ /** Optional class name applied to the outer container. */
172
+ className?: string;
173
+ /** Optional set of panels to render. */
174
+ panels: ReadonlyArray<WidgetPanel>;
175
+ };
176
+ /**
177
+ * Single-panel container props for direct modal/sidebar content rendering.
178
+ */
179
+ export type WidgetPanelContainerProps = {
180
+ /** Optional class name applied to the outer container. */
181
+ className?: string;
182
+ /** The panel to render as raw content. */
183
+ panel: WidgetPanel;
184
+ };
185
+ /**
186
+ * Accordion container properties.
187
+ */
188
+ export type AccordeonWidgetContainerProps = WidgetContainerPanelBase & {
189
+ /** Optional uncontrolled default expanded panel ids. */
190
+ defaultExpandedPanelIds?: ReadonlyArray<WidgetPanelId>;
191
+ /**
192
+ * Controlled expanded panel ids. If supplied, callers manage expand/collapse state.
193
+ */
194
+ expandedPanelIds?: ReadonlyArray<WidgetPanelId>;
195
+ /**
196
+ * Called when user intent changes expanded panel ids.
197
+ */
198
+ onExpandedPanelIdsChange?: (expandedPanelIds: ReadonlyArray<WidgetPanelId>) => void;
199
+ /**
200
+ * If false, opening one panel closes all others. Defaults to true.
201
+ */
202
+ allowMultipleExpanded?: boolean;
203
+ };
204
+ /**
205
+ * Tabs container properties.
206
+ */
207
+ export type TabbedWidgetContainerProps = WidgetContainerPanelBase & {
208
+ /** Optional uncontrolled default active tab id. */
209
+ defaultActivePanelId?: WidgetPanelId;
210
+ /**
211
+ * Controlled active tab id. If supplied, callers manage active tab state.
212
+ */
213
+ activePanelId?: WidgetPanelId;
214
+ /**
215
+ * Called when user intent changes active tab id.
216
+ */
217
+ onActivePanelIdChange?: (activePanelId: WidgetPanelId | undefined) => void;
218
+ /** Controls whether the tab list wraps onto multiple rows or scrolls horizontally. */
219
+ tabListLayout?: 'wrap' | 'scroll';
220
+ };
221
+ /**
222
+ * Column container properties.
223
+ */
224
+ export type ColumnWidgetContainerProps = WidgetContainerPanelBase;
225
+ /** A serialized form describing an accordion widget container. */
226
+ export type WidgetAccordeonContainer = {
227
+ /** Container variant discriminator. */
228
+ kind: 'accordeon';
229
+ /** Accordion container props. */
230
+ props: AccordeonWidgetContainerProps;
231
+ };
232
+ /** A serialized form describing a tabbed widget container. */
233
+ export type WidgetTabbedContainer = {
234
+ /** Container variant discriminator. */
235
+ kind: 'tabs';
236
+ /** Tabs container props. */
237
+ props: TabbedWidgetContainerProps;
238
+ };
239
+ /** A serialized form describing a single panel widget container. */
240
+ export type WidgetPanelContainer = {
241
+ /** Container variant discriminator. */
242
+ kind: 'panel';
243
+ /** Single-panel props. */
244
+ props: WidgetPanelContainerProps;
245
+ };
246
+ /** A serialized widget-container description consumed by modal and sidebar widgets. */
247
+ export type WidgetContainer = WidgetAccordeonContainer | WidgetTabbedContainer | WidgetPanelContainer;
248
+ /**
249
+ * Builds a direct-content container for modal-style and sidebar panel shorthands.
250
+ */
251
+ export declare function asPanelContainer(panel: WidgetPanel): WidgetPanelContainer;
252
+ /**
253
+ * Renders an accordion-style widget panel stack.
254
+ */
255
+ export declare function AccordeonWidgetContainer({ panels, className, defaultExpandedPanelIds, expandedPanelIds, onExpandedPanelIdsChange, allowMultipleExpanded }: AccordeonWidgetContainerProps): JSX.Element;
256
+ /**
257
+ * Renders a tabbed widget panel switcher.
258
+ */
259
+ export declare function TabbedWidgetContainer({ panels, className, defaultActivePanelId, activePanelId, onActivePanelIdChange, tabListLayout }: TabbedWidgetContainerProps): JSX.Element;
260
+ /**
261
+ * Renders child panels in a simple vertical column.
262
+ */
263
+ export declare function ColumnWidgetContainer({ panels, className }: ColumnWidgetContainerProps): JSX.Element;
264
+ /**
265
+ * Renders the requested container based on descriptor kind.
266
+ */
267
+ export declare function WidgetContainerRenderer({ container }: {
268
+ container: WidgetContainer;
269
+ }): JSX.Element;
270
+ /**
271
+ * Returns the effective light/dark theme mode for the current panel subtree.
272
+ */
273
+ export declare function useEffectiveWidgetPanelThemeMode(): WidgetPanelThemeMode;
274
+ export {};
275
+ //# sourceMappingURL=widget-containers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-containers.d.ts","sourceRoot":"","sources":["../../src/widget-panels/widget-containers.tsx"],"names":[],"mappings":"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"}