@deck.gl/widgets 9.1.0-beta.1 → 9.1.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.
@@ -1,6 +1,9 @@
1
1
  import type { Deck, Viewport, Widget, WidgetPlacement } from '@deck.gl/core';
2
- interface CompassWidgetProps {
2
+ export type CompassWidgetProps = {
3
3
  id?: string;
4
+ /**
5
+ * Widget positioning within the view. Default 'top-left'.
6
+ */
4
7
  placement?: WidgetPlacement;
5
8
  /**
6
9
  * View to attach to and interact with. Required when using multiple views.
@@ -22,7 +25,7 @@ interface CompassWidgetProps {
22
25
  * Additional CSS class.
23
26
  */
24
27
  className?: string;
25
- }
28
+ };
26
29
  export declare class CompassWidget implements Widget<CompassWidgetProps> {
27
30
  id: string;
28
31
  props: CompassWidgetProps;
@@ -40,9 +43,8 @@ export declare class CompassWidget implements Widget<CompassWidgetProps> {
40
43
  deck: Deck<any>;
41
44
  }): HTMLDivElement;
42
45
  getRotation(viewport?: Viewport): number[];
43
- update(): void;
46
+ private update;
44
47
  onRemove(): void;
45
48
  handleCompassReset(viewport: Viewport): void;
46
49
  }
47
- export {};
48
50
  //# sourceMappingURL=compass-widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compass-widget.d.ts","sourceRoot":"","sources":["../src/compass-widget.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAG3E,UAAU,kBAAkB;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAc,YAAW,MAAM,CAAC,kBAAkB,CAAC;IAC9D,EAAE,SAAa;IACf,KAAK,EAAE,kBAAkB,CAAC;IAC1B,SAAS,EAAE,eAAe,CAAc;IACxC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC9B,SAAS,EAAE;QAAC,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAC,CAAM;IACzC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;gBAEb,KAAK,EAAE,kBAAkB;IAUrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAI3C,gBAAgB,CAAC,QAAQ,EAAE,QAAQ;IAKnC,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE;QAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;KAAC,GAAG,cAAc;IAchD,WAAW,CAAC,QAAQ,CAAC,EAAE,QAAQ;IAS/B,MAAM;IAsCN,QAAQ;IAKR,kBAAkB,CAAC,QAAQ,EAAE,QAAQ;CActC"}
1
+ {"version":3,"file":"compass-widget.d.ts","sourceRoot":"","sources":["../src/compass-widget.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAG3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,aAAc,YAAW,MAAM,CAAC,kBAAkB,CAAC;IAC9D,EAAE,SAAa;IACf,KAAK,EAAE,kBAAkB,CAAC;IAC1B,SAAS,EAAE,eAAe,CAAc;IACxC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC9B,SAAS,EAAE;QAAC,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAC,CAAM;IACzC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;gBAEb,KAAK,EAAE,kBAAkB;IAarC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAqB3C,gBAAgB,CAAC,QAAQ,EAAE,QAAQ;IAQnC,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE;QAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;KAAC,GAAG,cAAc;IAYhD,WAAW,CAAC,QAAQ,CAAC,EAAE,QAAQ;IAS/B,OAAO,CAAC,MAAM;IAsCd,QAAQ;IAKR,kBAAkB,CAAC,QAAQ,EAAE,QAAQ;CActC"}
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
3
3
  // SPDX-License-Identifier: MIT
4
4
  // Copyright (c) vis.gl contributors
5
5
  /* global document */
6
- import { FlyToInterpolator, WebMercatorViewport, _GlobeViewport } from '@deck.gl/core';
6
+ import { FlyToInterpolator, WebMercatorViewport, _GlobeViewport, _deepEqual as deepEqual, _applyStyles as applyStyles, _removeStyles as removeStyles } from '@deck.gl/core';
7
7
  import { render } from 'preact';
8
8
  export class CompassWidget {
9
9
  constructor(props) {
@@ -11,20 +11,42 @@ export class CompassWidget {
11
11
  this.placement = 'top-left';
12
12
  this.viewId = null;
13
13
  this.viewports = {};
14
- this.id = props.id || 'compass';
15
- this.viewId = props.viewId || null;
16
- this.placement = props.placement || 'top-left';
17
- props.transitionDuration = props.transitionDuration || 200;
18
- props.label = props.label || 'Compass';
19
- props.style = props.style || {};
20
- this.props = props;
14
+ this.id = props.id ?? this.id;
15
+ this.viewId = props.viewId ?? this.viewId;
16
+ this.placement = props.placement ?? this.placement;
17
+ this.props = {
18
+ ...props,
19
+ transitionDuration: props.transitionDuration ?? 200,
20
+ label: props.label ?? 'Reset Compass',
21
+ style: props.style ?? {}
22
+ };
21
23
  }
22
24
  setProps(props) {
25
+ this.placement = props.placement ?? this.placement;
26
+ this.viewId = props.viewId ?? this.viewId;
27
+ const oldProps = this.props;
28
+ const el = this.element;
29
+ if (el) {
30
+ if (oldProps.className !== props.className) {
31
+ if (oldProps.className)
32
+ el.classList.remove(oldProps.className);
33
+ if (props.className)
34
+ el.classList.add(props.className);
35
+ }
36
+ if (!deepEqual(oldProps.style, props.style, 1)) {
37
+ removeStyles(el, oldProps.style);
38
+ applyStyles(el, props.style);
39
+ }
40
+ }
23
41
  Object.assign(this.props, props);
42
+ this.update();
24
43
  }
25
44
  onViewportChange(viewport) {
26
- this.viewports[viewport.id] = viewport;
27
- this.update();
45
+ // no need to update if viewport is the same
46
+ if (!viewport.equals(this.viewports[viewport.id])) {
47
+ this.viewports[viewport.id] = viewport;
48
+ this.update();
49
+ }
28
50
  }
29
51
  onAdd({ deck }) {
30
52
  const { style, className } = this.props;
@@ -32,9 +54,7 @@ export class CompassWidget {
32
54
  element.classList.add('deck-widget', 'deck-widget-compass');
33
55
  if (className)
34
56
  element.classList.add(className);
35
- if (style) {
36
- Object.entries(style).map(([key, value]) => element.style.setProperty(key, value));
37
- }
57
+ applyStyles(element, style);
38
58
  this.deck = deck;
39
59
  this.element = element;
40
60
  this.update();
@@ -61,7 +81,7 @@ export class CompassWidget {
61
81
  for (const viewport of Object.values(this.viewports)) {
62
82
  this.handleCompassReset(viewport);
63
83
  }
64
- }, label: this.props.label, style: { transform: `rotateX(${rx}deg)` }, children: _jsx("svg", { fill: "none", width: "100%", height: "100%", viewBox: "0 0 26 26", children: _jsxs("g", { transform: `rotate(${rz},13,13)`, children: [_jsx("path", { d: "M10 13.0001L12.9999 5L15.9997 13.0001H10Z", fill: "var(--icon-compass-north-color, #F05C44)" }), _jsx("path", { d: "M16.0002 12.9999L13.0004 21L10.0005 12.9999H16.0002Z", fill: "var(--icon-compass-south-color, #C2C2CC)" })] }) }) }) }));
84
+ }, title: this.props.label, style: { transform: `rotateX(${rx}deg)` }, children: _jsx("svg", { fill: "none", width: "100%", height: "100%", viewBox: "0 0 26 26", children: _jsxs("g", { transform: `rotate(${rz},13,13)`, children: [_jsx("path", { d: "M10 13.0001L12.9999 5L15.9997 13.0001H10Z", fill: "var(--icon-compass-north-color, #F05C44)" }), _jsx("path", { d: "M16.0002 12.9999L13.0004 21L10.0005 12.9999H16.0002Z", fill: "var(--icon-compass-south-color, #C2C2CC)" })] }) }) }) }));
65
85
  render(ui, element);
66
86
  }
67
87
  onRemove() {
@@ -83,3 +103,4 @@ export class CompassWidget {
83
103
  }
84
104
  }
85
105
  }
106
+ //# sourceMappingURL=compass-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compass-widget.js","sourceRoot":"","sources":["../src/compass-widget.tsx"],"names":[],"mappings":";AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,qBAAqB;AACrB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,UAAU,IAAI,SAAS,EACvB,YAAY,IAAI,WAAW,EAC3B,aAAa,IAAI,YAAY,EAC9B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AA8B9B,MAAM,OAAO,aAAa;IASxB,YAAY,KAAyB;QARrC,OAAE,GAAG,SAAS,CAAC;QAEf,cAAS,GAAoB,UAAU,CAAC;QACxC,WAAM,GAAmB,IAAI,CAAC;QAC9B,cAAS,GAA6B,EAAE,CAAC;QAKvC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QAEnD,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,KAAK;YACR,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,GAAG;YACnD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,eAAe;YACrC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;SACzB,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,KAAkC;QACzC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACnD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACxB,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC3C,IAAI,QAAQ,CAAC,SAAS;oBAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAChE,IAAI,KAAK,CAAC,SAAS;oBAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACzD,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC/C,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACjC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,gBAAgB,CAAC,QAAkB;QACjC,4CAA4C;QAC5C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,EAAC,IAAI,EAAoB;QAC7B,MAAM,EAAC,KAAK,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;QAC5D,IAAI,SAAS;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,QAAmB;QAC7B,IAAI,QAAQ,YAAY,mBAAmB,EAAE,CAAC;YAC5C,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,QAAQ,YAAY,cAAc,EAAE,CAAC;YAC9C,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IAEO,MAAM;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,cAAc,CAAC;QACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,CACT,cAAK,SAAS,EAAC,oBAAoB,EAAC,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,YAC3D,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;wBACrD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC,EACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,KAAK,EAAE,EAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAC,YAEvC,cAAK,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,YAC7D,aAAG,SAAS,EAAE,UAAU,EAAE,SAAS,aACjC,eACE,CAAC,EAAC,2CAA2C,EAC7C,IAAI,EAAC,0CAA0C,GAC/C,EACF,eACE,CAAC,EAAC,sDAAsD,EACxD,IAAI,EAAC,0CAA0C,GAC/C,IACA,GACA,GACC,GACL,CACP,CAAC;QACF,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;IAED,kBAAkB,CAAC,QAAkB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE,IAAI,cAAc,CAAC;QAC5D,IAAI,QAAQ,YAAY,mBAAmB,EAAE,CAAC;YAC5C,MAAM,aAAa,GAAG;gBACpB,GAAG,QAAQ;gBACX,OAAO,EAAE,CAAC;gBACV,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB;gBACjD,sBAAsB,EAAE,IAAI,iBAAiB,EAAE;aAChD,CAAC;YACF,uEAAuE;YACvE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,EAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;CACF"}
@@ -14,3 +14,4 @@ export const GroupedIconButton = props => {
14
14
  const { className, label, onClick } = props;
15
15
  return (_jsx("button", { className: `deck-widget-icon-button ${className}`, type: "button", onClick: onClick, title: label, children: _jsx("div", { className: "deck-widget-icon" }) }));
16
16
  };
17
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":";AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE;IAChC,MAAM,EAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAC,GAAG,KAAK,CAAC;IAC1C,OAAO,CACL,cAAK,SAAS,EAAC,oBAAoB,YACjC,iBACE,SAAS,EAAE,2BAA2B,SAAS,EAAE,EACjD,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,YAEZ,cAAK,SAAS,EAAC,kBAAkB,GAAG,GAC7B,GACL,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,EAAE;IACjC,MAAM,EAAC,QAAQ,EAAE,WAAW,EAAC,GAAG,KAAK,CAAC;IACtC,OAAO,cAAK,SAAS,EAAE,4BAA4B,WAAW,EAAE,YAAG,QAAQ,GAAO,CAAC;AACrF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,EAAE;IACvC,MAAM,EAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAC,GAAG,KAAK,CAAC;IAC1C,OAAO,CACL,iBACE,SAAS,EAAE,2BAA2B,SAAS,EAAE,EACjD,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,YAEZ,cAAK,SAAS,EAAC,kBAAkB,GAAG,GAC7B,CACV,CAAC;AACJ,CAAC,CAAC"}
package/dist/dist.dev.js CHANGED
@@ -442,12 +442,14 @@ var __exports__ = (() => {
442
442
  this.id = "fullscreen";
443
443
  this.placement = "top-left";
444
444
  this.fullscreen = false;
445
- this.id = props.id || "fullscreen";
446
- this.placement = props.placement || "top-left";
447
- props.enterLabel = props.enterLabel || "Enter Fullscreen";
448
- props.exitLabel = props.exitLabel || "Exit Fullscreen";
449
- props.style = props.style || {};
450
- this.props = props;
445
+ this.id = props.id ?? this.id;
446
+ this.placement = props.placement ?? this.placement;
447
+ this.props = {
448
+ ...props,
449
+ enterLabel: props.enterLabel ?? "Enter Fullscreen",
450
+ exitLabel: props.exitLabel ?? "Exit Fullscreen",
451
+ style: props.style ?? {}
452
+ };
451
453
  }
452
454
  onAdd({ deck }) {
453
455
  const { style, className } = this.props;
@@ -455,9 +457,7 @@ var __exports__ = (() => {
455
457
  el.classList.add("deck-widget", "deck-widget-fullscreen");
456
458
  if (className)
457
459
  el.classList.add(className);
458
- if (style) {
459
- Object.entries(style).map(([key, value]) => el.style.setProperty(key, value));
460
- }
460
+ (0, import_core2._applyStyles)(el, style);
461
461
  this.deck = deck;
462
462
  this.element = el;
463
463
  this.update();
@@ -471,8 +471,8 @@ var __exports__ = (() => {
471
471
  }
472
472
  update() {
473
473
  const { enterLabel, exitLabel } = this.props;
474
- const el = this.element;
475
- if (!el) {
474
+ const element = this.element;
475
+ if (!element) {
476
476
  return;
477
477
  }
478
478
  const ui = /* @__PURE__ */ u2(
@@ -483,9 +483,10 @@ var __exports__ = (() => {
483
483
  className: this.fullscreen ? "deck-widget-fullscreen-exit" : "deck-widget-fullscreen-enter"
484
484
  }
485
485
  );
486
- B(ui, el);
486
+ B(ui, element);
487
487
  }
488
488
  setProps(props) {
489
+ this.placement = props.placement ?? this.placement;
489
490
  const oldProps = this.props;
490
491
  const el = this.element;
491
492
  if (el) {
@@ -496,17 +497,12 @@ var __exports__ = (() => {
496
497
  el.classList.add(props.className);
497
498
  }
498
499
  if (!(0, import_core2._deepEqual)(oldProps.style, props.style, 1)) {
499
- if (oldProps.style) {
500
- Object.entries(oldProps.style).map(([key]) => el.style.removeProperty(key));
501
- }
502
- if (props.style) {
503
- Object.entries(props.style).map(
504
- ([key, value]) => el.style.setProperty(key, value)
505
- );
506
- }
500
+ (0, import_core2._removeStyles)(el, oldProps.style);
501
+ (0, import_core2._applyStyles)(el, props.style);
507
502
  }
508
503
  }
509
504
  Object.assign(this.props, props);
505
+ this.update();
510
506
  }
511
507
  getContainer() {
512
508
  return this.props.container || this.deck?.getCanvas()?.parentElement;
@@ -555,20 +551,41 @@ var __exports__ = (() => {
555
551
  this.placement = "top-left";
556
552
  this.viewId = null;
557
553
  this.viewports = {};
558
- this.id = props.id || "compass";
559
- this.viewId = props.viewId || null;
560
- this.placement = props.placement || "top-left";
561
- props.transitionDuration = props.transitionDuration || 200;
562
- props.label = props.label || "Compass";
563
- props.style = props.style || {};
564
- this.props = props;
554
+ this.id = props.id ?? this.id;
555
+ this.viewId = props.viewId ?? this.viewId;
556
+ this.placement = props.placement ?? this.placement;
557
+ this.props = {
558
+ ...props,
559
+ transitionDuration: props.transitionDuration ?? 200,
560
+ label: props.label ?? "Reset Compass",
561
+ style: props.style ?? {}
562
+ };
565
563
  }
566
564
  setProps(props) {
565
+ this.placement = props.placement ?? this.placement;
566
+ this.viewId = props.viewId ?? this.viewId;
567
+ const oldProps = this.props;
568
+ const el = this.element;
569
+ if (el) {
570
+ if (oldProps.className !== props.className) {
571
+ if (oldProps.className)
572
+ el.classList.remove(oldProps.className);
573
+ if (props.className)
574
+ el.classList.add(props.className);
575
+ }
576
+ if (!(0, import_core3._deepEqual)(oldProps.style, props.style, 1)) {
577
+ (0, import_core3._removeStyles)(el, oldProps.style);
578
+ (0, import_core3._applyStyles)(el, props.style);
579
+ }
580
+ }
567
581
  Object.assign(this.props, props);
582
+ this.update();
568
583
  }
569
584
  onViewportChange(viewport) {
570
- this.viewports[viewport.id] = viewport;
571
- this.update();
585
+ if (!viewport.equals(this.viewports[viewport.id])) {
586
+ this.viewports[viewport.id] = viewport;
587
+ this.update();
588
+ }
572
589
  }
573
590
  onAdd({ deck }) {
574
591
  const { style, className } = this.props;
@@ -576,9 +593,7 @@ var __exports__ = (() => {
576
593
  element.classList.add("deck-widget", "deck-widget-compass");
577
594
  if (className)
578
595
  element.classList.add(className);
579
- if (style) {
580
- Object.entries(style).map(([key, value]) => element.style.setProperty(key, value));
581
- }
596
+ (0, import_core3._applyStyles)(element, style);
582
597
  this.deck = deck;
583
598
  this.element = element;
584
599
  this.update();
@@ -609,7 +624,7 @@ var __exports__ = (() => {
609
624
  this.handleCompassReset(viewport2);
610
625
  }
611
626
  },
612
- label: this.props.label,
627
+ title: this.props.label,
613
628
  style: { transform: `rotateX(${rx}deg)` },
614
629
  children: /* @__PURE__ */ u2("svg", { fill: "none", width: "100%", height: "100%", viewBox: "0 0 26 26", children: /* @__PURE__ */ u2("g", { transform: `rotate(${rz},13,13)`, children: [
615
630
  /* @__PURE__ */ u2(
@@ -656,18 +671,19 @@ var __exports__ = (() => {
656
671
  constructor(props) {
657
672
  this.id = "zoom";
658
673
  this.placement = "top-left";
659
- this.orientation = "vertical";
660
674
  this.viewId = null;
661
675
  this.viewports = {};
662
- this.id = props.id || "zoom";
663
- this.viewId = props.viewId || null;
664
- this.placement = props.placement || "top-left";
665
- this.orientation = props.orientation || "vertical";
666
- props.transitionDuration = props.transitionDuration || 200;
667
- props.zoomInLabel = props.zoomInLabel || "Zoom In";
668
- props.zoomOutLabel = props.zoomOutLabel || "Zoom Out";
669
- props.style = props.style || {};
670
- this.props = props;
676
+ this.id = props.id ?? this.id;
677
+ this.viewId = props.viewId ?? this.viewId;
678
+ this.placement = props.placement ?? this.placement;
679
+ this.props = {
680
+ ...props,
681
+ orientation: props.orientation ?? "vertical",
682
+ transitionDuration: props.transitionDuration ?? 200,
683
+ zoomInLabel: props.zoomInLabel ?? "Zoom In",
684
+ zoomOutLabel: props.zoomOutLabel ?? "Zoom Out",
685
+ style: props.style ?? {}
686
+ };
671
687
  }
672
688
  onAdd({ deck }) {
673
689
  const { style, className } = this.props;
@@ -675,30 +691,10 @@ var __exports__ = (() => {
675
691
  element.classList.add("deck-widget", "deck-widget-zoom");
676
692
  if (className)
677
693
  element.classList.add(className);
678
- if (style) {
679
- Object.entries(style).map(([key, value]) => element.style.setProperty(key, value));
680
- }
681
- const ui = /* @__PURE__ */ u2(ButtonGroup, { orientation: this.orientation, children: [
682
- /* @__PURE__ */ u2(
683
- GroupedIconButton,
684
- {
685
- onClick: () => this.handleZoomIn(),
686
- label: this.props.zoomInLabel,
687
- className: "deck-widget-zoom-in"
688
- }
689
- ),
690
- /* @__PURE__ */ u2(
691
- GroupedIconButton,
692
- {
693
- onClick: () => this.handleZoomOut(),
694
- label: this.props.zoomOutLabel,
695
- className: "deck-widget-zoom-out"
696
- }
697
- )
698
- ] });
699
- B(ui, element);
694
+ (0, import_core4._applyStyles)(element, style);
700
695
  this.deck = deck;
701
696
  this.element = element;
697
+ this.update();
702
698
  return element;
703
699
  }
704
700
  onRemove() {
@@ -706,7 +702,24 @@ var __exports__ = (() => {
706
702
  this.element = void 0;
707
703
  }
708
704
  setProps(props) {
705
+ this.placement = props.placement ?? this.placement;
706
+ this.viewId = props.viewId ?? this.viewId;
707
+ const oldProps = this.props;
708
+ const el = this.element;
709
+ if (el) {
710
+ if (oldProps.className !== props.className) {
711
+ if (oldProps.className)
712
+ el.classList.remove(oldProps.className);
713
+ if (props.className)
714
+ el.classList.add(props.className);
715
+ }
716
+ if (!(0, import_core4._deepEqual)(oldProps.style, props.style, 1)) {
717
+ (0, import_core4._removeStyles)(el, oldProps.style);
718
+ (0, import_core4._applyStyles)(el, props.style);
719
+ }
720
+ }
709
721
  Object.assign(this.props, props);
722
+ this.update();
710
723
  }
711
724
  onViewportChange(viewport) {
712
725
  this.viewports[viewport.id] = viewport;
@@ -731,6 +744,31 @@ var __exports__ = (() => {
731
744
  this.handleZoom(viewport, viewport.zoom - 1);
732
745
  }
733
746
  }
747
+ update() {
748
+ const element = this.element;
749
+ if (!element) {
750
+ return;
751
+ }
752
+ const ui = /* @__PURE__ */ u2(ButtonGroup, { orientation: this.props.orientation, children: [
753
+ /* @__PURE__ */ u2(
754
+ GroupedIconButton,
755
+ {
756
+ onClick: () => this.handleZoomIn(),
757
+ label: this.props.zoomInLabel,
758
+ className: "deck-widget-zoom-in"
759
+ }
760
+ ),
761
+ /* @__PURE__ */ u2(
762
+ GroupedIconButton,
763
+ {
764
+ onClick: () => this.handleZoomOut(),
765
+ label: this.props.zoomOutLabel,
766
+ className: "deck-widget-zoom-out"
767
+ }
768
+ )
769
+ ] });
770
+ B(ui, element);
771
+ }
734
772
  };
735
773
 
736
774
  // src/themes.ts
@@ -1,6 +1,9 @@
1
1
  import type { Deck, Widget, WidgetPlacement } from '@deck.gl/core';
2
- interface FullscreenWidgetProps {
2
+ export type FullscreenWidgetProps = {
3
3
  id?: string;
4
+ /**
5
+ * Widget positioning within the view. Default 'top-left'.
6
+ */
4
7
  placement?: WidgetPlacement;
5
8
  /**
6
9
  * A [compatible DOM element](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen#Compatible_elements) which should be made full screen.
@@ -23,7 +26,7 @@ interface FullscreenWidgetProps {
23
26
  * Additional CSS class.
24
27
  */
25
28
  className?: string;
26
- }
29
+ };
27
30
  export declare class FullscreenWidget implements Widget<FullscreenWidgetProps> {
28
31
  id: string;
29
32
  props: FullscreenWidgetProps;
@@ -45,5 +48,4 @@ export declare class FullscreenWidget implements Widget<FullscreenWidgetProps> {
45
48
  exitFullscreen(): Promise<void>;
46
49
  togglePseudoFullscreen(): void;
47
50
  }
48
- export {};
49
51
  //# sourceMappingURL=fullscreen-widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fullscreen-widget.d.ts","sourceRoot":"","sources":["../src/fullscreen-widget.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAIjE,UAAU,qBAAqB;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;OAGG;IAEH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,gBAAiB,YAAW,MAAM,CAAC,qBAAqB,CAAC;IACpE,EAAE,SAAgB;IAClB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,SAAS,EAAE,eAAe,CAAc;IAExC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB,UAAU,EAAE,OAAO,CAAS;gBAEhB,KAAK,EAAE,qBAAqB;IASxC,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE;QAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;KAAC,GAAG,cAAc;IAehD,QAAQ;IAMR,OAAO,CAAC,MAAM;IAiBd,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAwB9C,YAAY;IAIZ,kBAAkB;IASZ,WAAW;IASX,iBAAiB;IASjB,cAAc;IAQpB,sBAAsB;CAGvB"}
1
+ {"version":3,"file":"fullscreen-widget.d.ts","sourceRoot":"","sources":["../src/fullscreen-widget.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAIjE,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;OAGG;IAEH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,gBAAiB,YAAW,MAAM,CAAC,qBAAqB,CAAC;IACpE,EAAE,SAAgB;IAClB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,SAAS,EAAE,eAAe,CAAc;IAExC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB,UAAU,EAAE,OAAO,CAAS;gBAEhB,KAAK,EAAE,qBAAqB;IAYxC,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE;QAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;KAAC,GAAG,cAAc;IAahD,QAAQ;IAMR,OAAO,CAAC,MAAM;IAiBd,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAoB9C,YAAY;IAIZ,kBAAkB;IASZ,WAAW;IASX,iBAAiB;IASjB,cAAc;IAQpB,sBAAsB;CAGvB"}
@@ -3,7 +3,7 @@ import { jsx as _jsx } from "preact/jsx-runtime";
3
3
  // SPDX-License-Identifier: MIT
4
4
  // Copyright (c) vis.gl contributors
5
5
  /* global document */
6
- import { _deepEqual as deepEqual } from '@deck.gl/core';
6
+ import { _deepEqual as deepEqual, _applyStyles as applyStyles, _removeStyles as removeStyles } from '@deck.gl/core';
7
7
  import { render } from 'preact';
8
8
  import { IconButton } from "./components.js";
9
9
  export class FullscreenWidget {
@@ -11,12 +11,14 @@ export class FullscreenWidget {
11
11
  this.id = 'fullscreen';
12
12
  this.placement = 'top-left';
13
13
  this.fullscreen = false;
14
- this.id = props.id || 'fullscreen';
15
- this.placement = props.placement || 'top-left';
16
- props.enterLabel = props.enterLabel || 'Enter Fullscreen';
17
- props.exitLabel = props.exitLabel || 'Exit Fullscreen';
18
- props.style = props.style || {};
19
- this.props = props;
14
+ this.id = props.id ?? this.id;
15
+ this.placement = props.placement ?? this.placement;
16
+ this.props = {
17
+ ...props,
18
+ enterLabel: props.enterLabel ?? 'Enter Fullscreen',
19
+ exitLabel: props.exitLabel ?? 'Exit Fullscreen',
20
+ style: props.style ?? {}
21
+ };
20
22
  }
21
23
  onAdd({ deck }) {
22
24
  const { style, className } = this.props;
@@ -24,9 +26,7 @@ export class FullscreenWidget {
24
26
  el.classList.add('deck-widget', 'deck-widget-fullscreen');
25
27
  if (className)
26
28
  el.classList.add(className);
27
- if (style) {
28
- Object.entries(style).map(([key, value]) => el.style.setProperty(key, value));
29
- }
29
+ applyStyles(el, style);
30
30
  this.deck = deck;
31
31
  this.element = el;
32
32
  this.update();
@@ -40,14 +40,15 @@ export class FullscreenWidget {
40
40
  }
41
41
  update() {
42
42
  const { enterLabel, exitLabel } = this.props;
43
- const el = this.element;
44
- if (!el) {
43
+ const element = this.element;
44
+ if (!element) {
45
45
  return;
46
46
  }
47
47
  const ui = (_jsx(IconButton, { onClick: this.handleClick.bind(this), label: this.fullscreen ? exitLabel : enterLabel, className: this.fullscreen ? 'deck-widget-fullscreen-exit' : 'deck-widget-fullscreen-enter' }));
48
- render(ui, el);
48
+ render(ui, element);
49
49
  }
50
50
  setProps(props) {
51
+ this.placement = props.placement ?? this.placement;
51
52
  const oldProps = this.props;
52
53
  const el = this.element;
53
54
  if (el) {
@@ -58,15 +59,12 @@ export class FullscreenWidget {
58
59
  el.classList.add(props.className);
59
60
  }
60
61
  if (!deepEqual(oldProps.style, props.style, 1)) {
61
- if (oldProps.style) {
62
- Object.entries(oldProps.style).map(([key]) => el.style.removeProperty(key));
63
- }
64
- if (props.style) {
65
- Object.entries(props.style).map(([key, value]) => el.style.setProperty(key, value));
66
- }
62
+ removeStyles(el, oldProps.style);
63
+ applyStyles(el, props.style);
67
64
  }
68
65
  }
69
66
  Object.assign(this.props, props);
67
+ this.update();
70
68
  }
71
69
  getContainer() {
72
70
  return this.props.container || this.deck?.getCanvas()?.parentElement;
@@ -109,3 +107,4 @@ export class FullscreenWidget {
109
107
  this.getContainer()?.classList.toggle('deck-pseudo-fullscreen');
110
108
  }
111
109
  }
110
+ //# sourceMappingURL=fullscreen-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fullscreen-widget.js","sourceRoot":"","sources":["../src/fullscreen-widget.tsx"],"names":[],"mappings":"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"}