@deck.gl/widgets 9.2.0-beta.1 → 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 +5 -1
  8. package/dist/context-menu-widget.js.map +1 -1
  9. package/dist/dist.dev.js +968 -902
  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 +5 -6
  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 +687 -670
  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 +15 -14
  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 +8 -3
  103. package/src/fps-widget.tsx +25 -16
  104. package/src/fullscreen-widget.tsx +9 -3
  105. package/src/geocoder-widget.tsx +9 -9
  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 +59 -16
  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'. */
@@ -33,14 +34,12 @@ export type ViewSelectorWidgetProps = WidgetProps & {
33
34
  export class ViewSelectorWidget extends Widget<ViewSelectorWidgetProps> {
34
35
  static defaultProps: Required<ViewSelectorWidgetProps> = {
35
36
  ...Widget.defaultProps,
36
- id: 'view-selector-widget',
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
  }