@deck.gl/widgets 9.2.0-beta.2 → 9.2.0-beta.3

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 (125) hide show
  1. package/dist/compass-widget.d.ts +1 -1
  2. package/dist/compass-widget.d.ts.map +1 -1
  3. package/dist/compass-widget.js +0 -1
  4. package/dist/compass-widget.js.map +1 -1
  5. package/dist/context-menu-widget.d.ts +2 -2
  6. package/dist/context-menu-widget.d.ts.map +1 -1
  7. package/dist/context-menu-widget.js +4 -1
  8. package/dist/context-menu-widget.js.map +1 -1
  9. package/dist/dist.dev.js +965 -900
  10. package/dist/fps-widget.d.ts +5 -6
  11. package/dist/fps-widget.d.ts.map +1 -1
  12. package/dist/fps-widget.js +13 -14
  13. package/dist/fps-widget.js.map +1 -1
  14. package/dist/fullscreen-widget.d.ts +2 -0
  15. package/dist/fullscreen-widget.d.ts.map +1 -1
  16. package/dist/fullscreen-widget.js +7 -3
  17. package/dist/fullscreen-widget.js.map +1 -1
  18. package/dist/geocoder-widget.d.ts +4 -3
  19. package/dist/geocoder-widget.d.ts.map +1 -1
  20. package/dist/geocoder-widget.js +3 -4
  21. package/dist/geocoder-widget.js.map +1 -1
  22. package/dist/gimbal-widget.d.ts +7 -5
  23. package/dist/gimbal-widget.d.ts.map +1 -1
  24. package/dist/gimbal-widget.js +15 -10
  25. package/dist/gimbal-widget.js.map +1 -1
  26. package/dist/index.cjs +684 -668
  27. package/dist/index.cjs.map +4 -4
  28. package/dist/index.d.ts +7 -7
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +12 -9
  31. package/dist/index.js.map +1 -1
  32. package/dist/info-widget.d.ts +9 -9
  33. package/dist/info-widget.d.ts.map +1 -1
  34. package/dist/info-widget.js +7 -9
  35. package/dist/info-widget.js.map +1 -1
  36. package/dist/lib/components/button-group.d.ts +1 -1
  37. package/dist/lib/components/button-group.d.ts.map +1 -1
  38. package/dist/lib/components/button-group.js +1 -1
  39. package/dist/lib/components/button-group.js.map +1 -1
  40. package/dist/lib/components/grouped-icon-button.d.ts +5 -3
  41. package/dist/lib/components/grouped-icon-button.d.ts.map +1 -1
  42. package/dist/lib/components/grouped-icon-button.js +3 -3
  43. package/dist/lib/components/grouped-icon-button.js.map +1 -1
  44. package/dist/lib/components/icon-button.d.ts +5 -6
  45. package/dist/lib/components/icon-button.d.ts.map +1 -1
  46. package/dist/lib/components/icon-button.js +1 -1
  47. package/dist/lib/components/icon-button.js.map +1 -1
  48. package/dist/lib/components/icon-menu.d.ts +2 -2
  49. package/dist/lib/components/icon-menu.d.ts.map +1 -1
  50. package/dist/lib/components/icon-menu.js +4 -19
  51. package/dist/lib/components/icon-menu.js.map +1 -1
  52. package/dist/lib/components/simple-menu.js +1 -1
  53. package/dist/lib/components/simple-menu.js.map +1 -1
  54. package/dist/loading-widget.d.ts +4 -2
  55. package/dist/loading-widget.d.ts.map +1 -1
  56. package/dist/loading-widget.js +5 -3
  57. package/dist/loading-widget.js.map +1 -1
  58. package/dist/reset-view-widget.d.ts +9 -11
  59. package/dist/reset-view-widget.d.ts.map +1 -1
  60. package/dist/reset-view-widget.js +5 -4
  61. package/dist/reset-view-widget.js.map +1 -1
  62. package/dist/scale-widget.d.ts +6 -3
  63. package/dist/scale-widget.d.ts.map +1 -1
  64. package/dist/scale-widget.js +3 -2
  65. package/dist/scale-widget.js.map +1 -1
  66. package/dist/screenshot-widget.d.ts +4 -2
  67. package/dist/screenshot-widget.d.ts.map +1 -1
  68. package/dist/screenshot-widget.js +3 -1
  69. package/dist/screenshot-widget.js.map +1 -1
  70. package/dist/splitter-widget.d.ts +1 -1
  71. package/dist/splitter-widget.d.ts.map +1 -1
  72. package/dist/splitter-widget.js +0 -2
  73. package/dist/splitter-widget.js.map +1 -1
  74. package/dist/stats-widget.d.ts +6 -1
  75. package/dist/stats-widget.d.ts.map +1 -1
  76. package/dist/stats-widget.js +11 -4
  77. package/dist/stats-widget.js.map +1 -1
  78. package/dist/stylesheet.css +53 -35
  79. package/dist/theme-widget.d.ts +3 -1
  80. package/dist/theme-widget.d.ts.map +1 -1
  81. package/dist/theme-widget.js +6 -3
  82. package/dist/theme-widget.js.map +1 -1
  83. package/dist/themes.d.ts +10 -0
  84. package/dist/themes.d.ts.map +1 -1
  85. package/dist/themes.js +12 -4
  86. package/dist/themes.js.map +1 -1
  87. package/dist/timeline-widget.d.ts +10 -32
  88. package/dist/timeline-widget.d.ts.map +1 -1
  89. package/dist/timeline-widget.js +6 -2
  90. package/dist/timeline-widget.js.map +1 -1
  91. package/dist/view-selector-widget.d.ts +2 -0
  92. package/dist/view-selector-widget.d.ts.map +1 -1
  93. package/dist/view-selector-widget.js +14 -13
  94. package/dist/view-selector-widget.js.map +1 -1
  95. package/dist/zoom-widget.d.ts +1 -2
  96. package/dist/zoom-widget.d.ts.map +1 -1
  97. package/dist/zoom-widget.js +7 -5
  98. package/dist/zoom-widget.js.map +1 -1
  99. package/dist.min.js +2 -3
  100. package/package.json +2 -2
  101. package/src/compass-widget.tsx +1 -1
  102. package/src/context-menu-widget.tsx +7 -3
  103. package/src/fps-widget.tsx +25 -16
  104. package/src/fullscreen-widget.tsx +9 -3
  105. package/src/geocoder-widget.tsx +7 -7
  106. package/src/gimbal-widget.tsx +16 -11
  107. package/src/index.ts +15 -10
  108. package/src/info-widget.tsx +17 -17
  109. package/src/lib/components/button-group.tsx +2 -2
  110. package/src/lib/components/grouped-icon-button.tsx +9 -6
  111. package/src/lib/components/icon-button.tsx +5 -6
  112. package/src/lib/components/icon-menu.tsx +12 -30
  113. package/src/lib/components/simple-menu.tsx +1 -1
  114. package/src/loading-widget.tsx +9 -5
  115. package/src/reset-view-widget.tsx +18 -16
  116. package/src/scale-widget.tsx +9 -5
  117. package/src/screenshot-widget.tsx +7 -3
  118. package/src/splitter-widget.tsx +1 -3
  119. package/src/stats-widget.tsx +18 -5
  120. package/src/stylesheet.css +53 -35
  121. package/src/theme-widget.tsx +9 -4
  122. package/src/themes.ts +15 -4
  123. package/src/timeline-widget.tsx +19 -42
  124. package/src/view-selector-widget.tsx +58 -15
  125. package/src/zoom-widget.tsx +8 -6
@@ -1,4 +1,3 @@
1
- // ViewSelectorWidget.tsx
2
1
  // deck.gl
3
2
  // SPDX-License-Identifier: MIT
4
3
  // Copyright (c) vis.gl contributors
@@ -14,6 +13,8 @@ export type ViewMode = 'single' | 'split-horizontal' | 'split-vertical';
14
13
  export type ViewSelectorWidgetProps = WidgetProps & {
15
14
  /** Widget positioning within the view. Default 'top-left'. */
16
15
  placement?: WidgetPlacement;
16
+ /** View to attach to and interact with. Required when using multiple views. */
17
+ viewId?: string | null;
17
18
  /** Tooltip label */
18
19
  label?: string;
19
20
  /** The initial view mode. Defaults to 'single'. */
@@ -35,12 +36,10 @@ export class ViewSelectorWidget extends Widget<ViewSelectorWidgetProps> {
35
36
  ...Widget.defaultProps,
36
37
  id: 'view-selector',
37
38
  placement: 'top-left',
39
+ viewId: null,
38
40
  label: 'Split View',
39
41
  initialViewMode: 'single',
40
- onViewModeChange: (viewMode: string) => {
41
- // eslint-disable-next-line no-console
42
- console.log(viewMode);
43
- }
42
+ onViewModeChange: () => {}
44
43
  };
45
44
 
46
45
  className = 'deck-widget-view-selector';
@@ -49,20 +48,24 @@ export class ViewSelectorWidget extends Widget<ViewSelectorWidgetProps> {
49
48
 
50
49
  constructor(props: ViewSelectorWidgetProps = {}) {
51
50
  super(props, ViewSelectorWidget.defaultProps);
52
- this.placement = this.props.placement;
53
51
  this.viewMode = this.props.initialViewMode;
52
+ this.setProps(this.props);
54
53
  }
55
54
 
56
55
  setProps(props: Partial<ViewSelectorWidgetProps>) {
57
- super.setProps(props);
58
56
  this.placement = props.placement ?? this.placement;
57
+ this.viewId = props.viewId ?? this.viewId;
58
+ super.setProps(props);
59
59
  }
60
60
 
61
61
  onRenderHTML(rootElement: HTMLElement) {
62
62
  render(
63
63
  <IconMenu<ViewMode>
64
64
  className="deck-widget-view-selector"
65
- menuItems={MENU_ITEMS}
65
+ menuItems={MENU_ITEMS.map(item => ({
66
+ ...item,
67
+ icon: item.icon()
68
+ }))}
66
69
  initialItem={this.props.initialViewMode}
67
70
  onItemSelected={this.handleSelectMode}
68
71
  />,
@@ -73,29 +76,69 @@ export class ViewSelectorWidget extends Widget<ViewSelectorWidgetProps> {
73
76
  handleSelectMode = (viewMode: ViewMode) => {
74
77
  this.viewMode = viewMode;
75
78
  this.updateHTML();
79
+ this.props.onViewModeChange(viewMode);
76
80
  };
77
81
  }
78
82
 
79
- // Define common icon style.
80
83
  const ICON_STYLE = {width: '24px', height: '24px'};
81
84
 
82
- // Define inline SVG icons for each view mode.
85
+ // JSX wrapped in a function to fix deck's Node tests
83
86
  const ICONS: Record<ViewMode, () => JSX.Element> = {
84
87
  single: () => (
85
88
  <svg width="24" height="24" style={ICON_STYLE}>
86
- <rect x="4" y="4" width="16" height="16" stroke="black" fill="none" strokeWidth="2" />
89
+ <rect
90
+ x="4"
91
+ y="4"
92
+ width="16"
93
+ height="16"
94
+ stroke="var(--button-icon-hover, rgb(24, 24, 26))"
95
+ fill="none"
96
+ strokeWidth="2"
97
+ />
87
98
  </svg>
88
99
  ),
89
100
  'split-horizontal': () => (
90
101
  <svg width="24" height="24" style={ICON_STYLE}>
91
- <rect x="4" y="4" width="16" height="7" stroke="black" fill="none" strokeWidth="2" />
92
- <rect x="4" y="13" width="16" height="7" stroke="black" fill="none" strokeWidth="2" />
102
+ <rect
103
+ x="4"
104
+ y="4"
105
+ width="16"
106
+ height="7"
107
+ stroke="var(--button-icon-hover, rgb(24, 24, 26))"
108
+ fill="none"
109
+ strokeWidth="2"
110
+ />
111
+ <rect
112
+ x="4"
113
+ y="13"
114
+ width="16"
115
+ height="7"
116
+ stroke="var(--button-icon-hover, rgb(24, 24, 26))"
117
+ fill="none"
118
+ strokeWidth="2"
119
+ />
93
120
  </svg>
94
121
  ),
95
122
  'split-vertical': () => (
96
123
  <svg width="24" height="24" style={ICON_STYLE}>
97
- <rect x="4" y="4" width="7" height="16" stroke="black" fill="none" strokeWidth="2" />
98
- <rect x="13" y="4" width="7" height="16" stroke="black" fill="none" strokeWidth="2" />
124
+ <rect
125
+ x="4"
126
+ y="4"
127
+ width="7"
128
+ height="16"
129
+ stroke="var(--button-icon-hover, rgb(24, 24, 26))"
130
+ fill="none"
131
+ strokeWidth="2"
132
+ />
133
+ <rect
134
+ x="13"
135
+ y="4"
136
+ width="7"
137
+ height="16"
138
+ stroke="var(--button-icon-hover, rgb(24, 24, 26))"
139
+ fill="none"
140
+ strokeWidth="2"
141
+ />
99
142
  </svg>
100
143
  )
101
144
  };
@@ -3,7 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  import {Widget, FlyToInterpolator, LinearInterpolator} from '@deck.gl/core';
6
- import {Viewport, WidgetProps, WidgetPlacement} from '@deck.gl/core';
6
+ import type {Viewport, WidgetProps, WidgetPlacement} from '@deck.gl/core';
7
7
  import {render} from 'preact';
8
8
  import {ButtonGroup} from './lib/components/button-group';
9
9
  import {GroupedIconButton} from './lib/components/grouped-icon-button';
@@ -32,18 +32,16 @@ export class ZoomWidget extends Widget<ZoomWidgetProps> {
32
32
  transitionDuration: 200,
33
33
  zoomInLabel: 'Zoom In',
34
34
  zoomOutLabel: 'Zoom Out',
35
- viewId: undefined!
35
+ viewId: null
36
36
  };
37
37
 
38
38
  className = 'deck-widget-zoom';
39
39
  placement: WidgetPlacement = 'top-left';
40
- viewId?: string | null = null;
41
40
  viewports: {[id: string]: Viewport} = {};
42
41
 
43
42
  constructor(props: ZoomWidgetProps = {}) {
44
43
  super(props, ZoomWidget.defaultProps);
45
- this.viewId = props.viewId ?? this.viewId;
46
- this.placement = props.placement ?? this.placement;
44
+ this.setProps(this.props);
47
45
  }
48
46
 
49
47
  setProps(props: Partial<ZoomWidgetProps>) {
@@ -83,7 +81,11 @@ export class ZoomWidget extends Widget<ZoomWidgetProps> {
83
81
  if (this.props.transitionDuration > 0) {
84
82
  nextViewState.transitionDuration = this.props.transitionDuration;
85
83
  nextViewState.transitionInterpolator =
86
- 'latitude' in nextViewState ? new FlyToInterpolator() : new LinearInterpolator();
84
+ 'latitude' in nextViewState
85
+ ? new FlyToInterpolator()
86
+ : new LinearInterpolator({
87
+ transitionProps: ['zoom']
88
+ });
87
89
  }
88
90
  this.setViewState(viewId, nextViewState);
89
91
  }