@deck.gl/widgets 9.2.10 → 9.3.0-alpha.1

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 (111) hide show
  1. package/dist/compass-widget.js +5 -5
  2. package/dist/compass-widget.js.map +1 -1
  3. package/dist/context-menu-widget.d.ts +23 -18
  4. package/dist/context-menu-widget.d.ts.map +1 -1
  5. package/dist/context-menu-widget.js +44 -48
  6. package/dist/context-menu-widget.js.map +1 -1
  7. package/dist/dist.dev.js +2533 -420
  8. package/dist/fullscreen-widget.js +1 -1
  9. package/dist/fullscreen-widget.js.map +1 -1
  10. package/dist/geocoder-widget.d.ts +2 -4
  11. package/dist/geocoder-widget.d.ts.map +1 -1
  12. package/dist/geocoder-widget.js +16 -20
  13. package/dist/geocoder-widget.js.map +1 -1
  14. package/dist/gimbal-widget.d.ts +0 -3
  15. package/dist/gimbal-widget.d.ts.map +1 -1
  16. package/dist/gimbal-widget.js +4 -22
  17. package/dist/gimbal-widget.js.map +1 -1
  18. package/dist/index.cjs +921 -370
  19. package/dist/index.cjs.map +4 -4
  20. package/dist/index.d.ts +5 -3
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +4 -3
  23. package/dist/index.js.map +1 -1
  24. package/dist/info-widget.d.ts +38 -17
  25. package/dist/info-widget.d.ts.map +1 -1
  26. package/dist/info-widget.js +40 -130
  27. package/dist/info-widget.js.map +1 -1
  28. package/dist/lib/components/dropdown-menu.d.ts +10 -4
  29. package/dist/lib/components/dropdown-menu.d.ts.map +1 -1
  30. package/dist/lib/components/dropdown-menu.js +12 -7
  31. package/dist/lib/components/dropdown-menu.js.map +1 -1
  32. package/dist/lib/components/icon-menu.d.ts.map +1 -1
  33. package/dist/lib/components/icon-menu.js +2 -3
  34. package/dist/lib/components/icon-menu.js.map +1 -1
  35. package/dist/lib/components/popover.d.ts +30 -0
  36. package/dist/lib/components/popover.d.ts.map +1 -0
  37. package/dist/lib/components/popover.js +93 -0
  38. package/dist/lib/components/popover.js.map +1 -0
  39. package/dist/lib/components/range-input.d.ts +26 -0
  40. package/dist/lib/components/range-input.d.ts.map +1 -0
  41. package/dist/lib/components/range-input.js +261 -0
  42. package/dist/lib/components/range-input.js.map +1 -0
  43. package/dist/lib/components/user-content.d.ts +8 -0
  44. package/dist/lib/components/user-content.d.ts.map +1 -0
  45. package/dist/lib/components/user-content.js +15 -0
  46. package/dist/lib/components/user-content.js.map +1 -0
  47. package/dist/popup-widget.d.ts +63 -0
  48. package/dist/popup-widget.d.ts.map +1 -0
  49. package/dist/popup-widget.js +70 -0
  50. package/dist/popup-widget.js.map +1 -0
  51. package/dist/reset-view-widget.d.ts +1 -1
  52. package/dist/reset-view-widget.d.ts.map +1 -1
  53. package/dist/reset-view-widget.js +12 -11
  54. package/dist/reset-view-widget.js.map +1 -1
  55. package/dist/scrollbar-widget.d.ts +68 -0
  56. package/dist/scrollbar-widget.d.ts.map +1 -0
  57. package/dist/scrollbar-widget.js +181 -0
  58. package/dist/scrollbar-widget.js.map +1 -0
  59. package/dist/stats-widget.d.ts +4 -0
  60. package/dist/stats-widget.d.ts.map +1 -1
  61. package/dist/stats-widget.js +3 -3
  62. package/dist/stats-widget.js.map +1 -1
  63. package/dist/stylesheet.css +244 -29
  64. package/dist/theme-widget.d.ts.map +1 -1
  65. package/dist/theme-widget.js +7 -5
  66. package/dist/theme-widget.js.map +1 -1
  67. package/dist/themes.d.ts +30 -0
  68. package/dist/themes.d.ts.map +1 -1
  69. package/dist/themes.js +28 -4
  70. package/dist/themes.js.map +1 -1
  71. package/dist/timeline-widget.d.ts +25 -6
  72. package/dist/timeline-widget.d.ts.map +1 -1
  73. package/dist/timeline-widget.js +46 -18
  74. package/dist/timeline-widget.js.map +1 -1
  75. package/dist/zoom-widget.d.ts +2 -8
  76. package/dist/zoom-widget.d.ts.map +1 -1
  77. package/dist/zoom-widget.js +23 -18
  78. package/dist/zoom-widget.js.map +1 -1
  79. package/dist.min.js +2 -2
  80. package/package.json +4 -3
  81. package/src/compass-widget.tsx +5 -5
  82. package/src/context-menu-widget.tsx +86 -76
  83. package/src/fullscreen-widget.tsx +1 -1
  84. package/src/geocoder-widget.tsx +17 -24
  85. package/src/gimbal-widget.tsx +4 -26
  86. package/src/index.ts +11 -6
  87. package/src/info-widget.tsx +93 -157
  88. package/src/lib/components/dropdown-menu.tsx +42 -20
  89. package/src/lib/components/icon-menu.tsx +3 -4
  90. package/src/lib/components/popover.tsx +167 -0
  91. package/src/lib/components/range-input.tsx +432 -0
  92. package/src/lib/components/user-content.tsx +30 -0
  93. package/src/popup-widget.tsx +163 -0
  94. package/src/reset-view-widget.tsx +12 -11
  95. package/src/scrollbar-widget.tsx +288 -0
  96. package/src/stats-widget.tsx +10 -4
  97. package/src/stylesheet.css +244 -29
  98. package/src/theme-widget.tsx +7 -5
  99. package/src/themes.ts +35 -4
  100. package/src/timeline-widget.tsx +96 -33
  101. package/src/zoom-widget.tsx +25 -21
  102. package/dist/lib/components/grouped-icon-button.d.ts +0 -10
  103. package/dist/lib/components/grouped-icon-button.d.ts.map +0 -1
  104. package/dist/lib/components/grouped-icon-button.js +0 -7
  105. package/dist/lib/components/grouped-icon-button.js.map +0 -1
  106. package/dist/lib/components/simple-menu.d.ts +0 -16
  107. package/dist/lib/components/simple-menu.d.ts.map +0 -1
  108. package/dist/lib/components/simple-menu.js +0 -30
  109. package/dist/lib/components/simple-menu.js.map +0 -1
  110. package/src/lib/components/grouped-icon-button.tsx +0 -27
  111. package/src/lib/components/simple-menu.tsx +0 -52
@@ -18,7 +18,7 @@ export class CompassWidget extends Widget {
18
18
  super.setProps(props);
19
19
  }
20
20
  onRenderHTML(rootElement) {
21
- const viewId = this.viewId || Object.values(this.viewports)[0]?.id || 'default-view';
21
+ const viewId = this.viewId || Object.values(this.viewports)[0]?.id;
22
22
  const widgetViewport = this.viewports[viewId];
23
23
  const [rz, rx] = this.getRotation(widgetViewport);
24
24
  const ui = (_jsx("div", { className: "deck-widget-button", style: { perspective: 100 }, children: _jsx("button", { type: "button", onClick: () => {
@@ -45,17 +45,17 @@ export class CompassWidget extends Widget {
45
45
  return [0, 0];
46
46
  }
47
47
  handleCompassReset(viewport) {
48
- const viewId = this.viewId || viewport.id || 'default-view';
48
+ const viewId = this.viewId || viewport.id;
49
49
  if (viewport instanceof WebMercatorViewport) {
50
+ const viewState = this.getViewState(viewId);
50
51
  const nextViewState = {
51
- ...viewport,
52
+ ...viewState,
52
53
  bearing: 0,
53
54
  ...(this.getRotation(viewport)[0] === 0 ? { pitch: 0 } : {}),
54
55
  transitionDuration: this.props.transitionDuration,
55
56
  transitionInterpolator: new FlyToInterpolator()
56
57
  };
57
- // @ts-ignore Using private method temporary until there's a public one
58
- this.deck._onViewStateChange({ viewId, viewState: nextViewState, interactionState: {} });
58
+ this.setViewState(viewId, nextViewState);
59
59
  }
60
60
  }
61
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compass-widget.js","sourceRoot":"","sources":["../src/compass-widget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compass-widget.js","sourceRoot":"","sources":["../src/compass-widget.tsx"],"names":[],"mappings":"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"}
@@ -1,37 +1,42 @@
1
1
  import { Widget } from '@deck.gl/core';
2
2
  import type { Deck, PickingInfo, WidgetProps } from '@deck.gl/core';
3
- export type ContextWidgetMenuItem = {
4
- label: string;
5
- key: string;
6
- };
3
+ import { SimpleMenuProps } from "./lib/components/dropdown-menu.js";
4
+ import { type PopoverProps } from "./lib/components/popover.js";
7
5
  export type ContextMenuWidgetProps = WidgetProps & {
8
6
  /** View to attach to and interact with. Required when using multiple views. */
9
7
  viewId?: string | null;
10
- /** Controls visibility of the context menu */
11
- visible?: boolean;
12
- /** Screen position at which to place the menu */
13
- position: {
14
- x: number;
15
- y: number;
16
- };
17
- /** Items to render */
18
- menuItems: ContextWidgetMenuItem[];
19
8
  /** Provide menu items for the menu given the picked object */
20
- getMenuItems: (info: PickingInfo, widget: ContextMenuWidget) => ContextWidgetMenuItem[] | null;
9
+ getMenuItems: (info: PickingInfo, widget: ContextMenuWidget) => SimpleMenuProps['menuItems'] | null;
21
10
  /** Callback with the selected item */
22
- onMenuItemSelected?: (key: string, pickInfo: PickingInfo | null) => void;
11
+ onMenuItemSelected?: (value: string, pickInfo: PickingInfo | null) => void;
12
+ /** Position menu relative to the anchor.
13
+ * @default 'bottom-start'
14
+ */
15
+ placement?: PopoverProps['placement'];
16
+ /** Pixel offset
17
+ * @default 10
18
+ */
19
+ offset?: PopoverProps['offset'];
20
+ /**
21
+ * Show an arrow pointing at the anchor. Optionally accepts a pixel size.
22
+ * @default false
23
+ */
24
+ arrow?: PopoverProps['arrow'];
23
25
  };
24
26
  export declare class ContextMenuWidget extends Widget<ContextMenuWidgetProps> {
25
27
  static defaultProps: Required<ContextMenuWidgetProps>;
26
28
  className: string;
27
29
  placement: "fill";
28
- pickInfo: PickingInfo | null;
30
+ menu: {
31
+ items: SimpleMenuProps['menuItems'];
32
+ pickInfo: PickingInfo;
33
+ } | null;
29
34
  constructor(props: ContextMenuWidgetProps);
30
35
  onAdd({ deck }: {
31
36
  deck: Deck<any>;
32
- }): HTMLDivElement;
37
+ }): void;
38
+ handleContextMenu(srcEvent: MouseEvent): void;
33
39
  onRenderHTML(rootElement: HTMLElement): void;
34
- handleContextMenu(srcEvent: MouseEvent): boolean;
35
40
  hide(): void;
36
41
  }
37
42
  //# sourceMappingURL=context-menu-widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu-widget.d.ts","sourceRoot":"","sources":["../src/context-menu-widget.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,EAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AASlE,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG;IACjD,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iDAAiD;IACjD,QAAQ,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACjC,sBAAsB;IACtB,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,8DAA8D;IAC9D,YAAY,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,KAAK,qBAAqB,EAAE,GAAG,IAAI,CAAC;IAC/F,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1E,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,MAAM,CAAC,sBAAsB,CAAC;IACnE,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAUnD;IAEF,SAAS,SAA8B;IACvC,SAAS,SAAmB;IAE5B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAQ;gBAExB,KAAK,EAAE,sBAAsB;IAMzC,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE;QAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;KAAC,GAAG,cAAc;IAiBhD,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAe5C,iBAAiB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO;IAyBhD,IAAI,IAAI,IAAI;CAGb"}
1
+ {"version":3,"file":"context-menu-widget.d.ts","sourceRoot":"","sources":["../src/context-menu-widget.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,EAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAElE,OAAO,EAAa,eAAe,EAAC,0CAAuC;AAC3E,OAAO,EAAU,KAAK,YAAY,EAAC,oCAAiC;AAEpE,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG;IACjD,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,8DAA8D;IAC9D,YAAY,EAAE,CACZ,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,iBAAiB,KACtB,eAAe,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACzC,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3E;;OAEG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/B,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,MAAM,CAAC,sBAAsB,CAAC;IACnE,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CASnD;IAEF,SAAS,SAA8B;IACvC,SAAS,SAAmB;IAE5B,IAAI,EAAE;QACJ,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;QACpC,QAAQ,EAAE,WAAW,CAAC;KACvB,GAAG,IAAI,CAAQ;gBAEJ,KAAK,EAAE,sBAAsB;IAKzC,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE;QAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;KAAC;IAI/B,iBAAiB,CAAC,QAAQ,EAAE,UAAU;IA0BtC,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAkC5C,IAAI;CAIL"}
@@ -5,74 +5,70 @@ import { jsx as _jsx } from "preact/jsx-runtime";
5
5
  /* global document */
6
6
  import { Widget } from '@deck.gl/core';
7
7
  import { render } from 'preact';
8
- import { SimpleMenu } from "./lib/components/simple-menu.js";
9
- /** The standard, modern way is to use event.button === 2, where button is the standardized property (0 = left, 1 = middle, 2 = right). */
10
- const MOUSE_BUTTON_RIGHT = 2;
11
- /** A name for the legacy MouseEvent.which value that corresponds to the right-mouse button. In older browsers, the check is: if (event.which === 3) */
12
- const MOUSE_WHICH_RIGHT = 3;
8
+ import { SimpleMenu } from "./lib/components/dropdown-menu.js";
9
+ import { Popover } from "./lib/components/popover.js";
13
10
  export class ContextMenuWidget extends Widget {
14
11
  constructor(props) {
15
12
  super(props);
16
13
  this.className = 'deck-widget-context-menu';
17
14
  this.placement = 'fill';
18
- this.pickInfo = null;
19
- this.pickInfo = null;
15
+ this.menu = null;
20
16
  this.setProps(this.props);
21
17
  }
22
18
  onAdd({ deck }) {
23
- const element = document.createElement('div');
24
- element.classList.add('deck-widget', 'deck-widget-context-menu');
25
- const style = {
26
- margin: '0px',
27
- top: '0px',
28
- left: '0px',
29
- position: 'absolute',
30
- pointerEvents: 'auto'
31
- };
32
- Object.entries(style).forEach(([key, value]) => element.style.setProperty(key, value));
33
- deck.getCanvas()?.addEventListener('click', () => this.hide());
34
19
  deck.getCanvas()?.addEventListener('contextmenu', event => this.handleContextMenu(event));
35
- return element;
36
- }
37
- onRenderHTML(rootElement) {
38
- const { visible, position, menuItems } = this.props;
39
- const ui = visible && menuItems.length ? (_jsx(SimpleMenu, { menuItems: menuItems, onItemSelected: key => this.props.onMenuItemSelected(key, this.pickInfo), position: position, style: { pointerEvents: 'auto' } })) : null;
40
- render(ui, rootElement);
41
20
  }
42
21
  handleContextMenu(srcEvent) {
43
- if (srcEvent &&
44
- (srcEvent.button === MOUSE_BUTTON_RIGHT || srcEvent.which === MOUSE_WHICH_RIGHT)) {
45
- this.pickInfo =
46
- this.deck?.pickObject({
47
- x: srcEvent.clientX,
48
- y: srcEvent.clientY
49
- }) || null;
50
- const menuItems = (this.pickInfo && this.props.getMenuItems?.(this.pickInfo, this)) || [];
51
- const visible = menuItems.length > 0;
52
- this.setProps({
53
- visible,
54
- position: { x: srcEvent.clientX, y: srcEvent.clientY },
55
- menuItems
56
- });
57
- this.updateHTML();
58
- srcEvent.preventDefault();
59
- return visible;
22
+ const targetRect = srcEvent.target.getBoundingClientRect();
23
+ const x = srcEvent.clientX - targetRect.x;
24
+ const y = srcEvent.clientY - targetRect.y;
25
+ const pickInfo = this.deck?.pickObject({ x, y }) || {
26
+ x,
27
+ y,
28
+ picked: false,
29
+ layer: null,
30
+ color: null,
31
+ index: -1,
32
+ pixelRatio: 1
33
+ };
34
+ const menuItems = this.props.getMenuItems(pickInfo, this) || [];
35
+ this.menu =
36
+ menuItems.length > 0
37
+ ? {
38
+ items: menuItems,
39
+ pickInfo
40
+ }
41
+ : null;
42
+ srcEvent.preventDefault();
43
+ this.updateHTML();
44
+ }
45
+ onRenderHTML(rootElement) {
46
+ if (!this.menu) {
47
+ render(null, rootElement);
48
+ return;
60
49
  }
61
- return false;
50
+ const { items, pickInfo } = this.menu;
51
+ const style = {
52
+ pointerEvents: 'auto',
53
+ position: 'static',
54
+ ...this.props.style
55
+ };
56
+ const ui = (_jsx(Popover, { x: pickInfo.x, y: pickInfo.y, placement: this.props.placement, arrow: this.props.arrow, arrowColor: "var(--menu-background, #fff)", offset: this.props.offset, children: _jsx(SimpleMenu, { menuItems: items, onSelect: value => this.props.onMenuItemSelected(value, pickInfo), style: style, isOpen: true, onClose: () => this.hide() }) }));
57
+ render(ui, rootElement);
62
58
  }
63
59
  hide() {
64
- this.setProps({ visible: false });
60
+ this.menu = null;
61
+ this.updateHTML();
65
62
  }
66
63
  }
67
64
  ContextMenuWidget.defaultProps = {
68
65
  ...Widget.defaultProps,
69
66
  id: 'context',
70
67
  viewId: null,
71
- visible: false,
72
- position: { x: 0, y: 0 },
73
68
  getMenuItems: undefined,
74
- menuItems: [],
75
- // eslint-disable-next-line no-console
76
- onMenuItemSelected: (key, pickInfo) => console.log('Context menu item selected:', key, pickInfo)
69
+ onMenuItemSelected: () => { },
70
+ placement: 'bottom-start',
71
+ offset: 10,
72
+ arrow: false
77
73
  };
78
74
  //# sourceMappingURL=context-menu-widget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu-widget.js","sourceRoot":"","sources":["../src/context-menu-widget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-menu-widget.js","sourceRoot":"","sources":["../src/context-menu-widget.tsx"],"names":[],"mappings":"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"}