@deck.gl/widgets 9.1.3 → 9.1.5
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.
- package/dist/dist.dev.js +228 -30
- package/dist/index.cjs +193 -12
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/reset-view-widget.d.ts +30 -0
- package/dist/reset-view-widget.d.ts.map +1 -0
- package/dist/reset-view-widget.js +49 -0
- package/dist/reset-view-widget.js.map +1 -0
- package/dist/screenshot-widget.d.ts +33 -0
- package/dist/screenshot-widget.d.ts.map +1 -0
- package/dist/screenshot-widget.js +63 -0
- package/dist/screenshot-widget.js.map +1 -0
- package/dist/stylesheet.css +12 -0
- package/dist/widget-impl.d.ts +29 -0
- package/dist/widget-impl.d.ts.map +1 -0
- package/dist/widget-impl.js +60 -0
- package/dist/widget-impl.js.map +1 -0
- package/dist/zoom-widget.d.ts +8 -3
- package/dist/zoom-widget.d.ts.map +1 -1
- package/dist/zoom-widget.js +29 -13
- package/dist/zoom-widget.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +2 -2
- package/src/index.ts +9 -0
- package/src/reset-view-widget.tsx +81 -0
- package/src/screenshot-widget.tsx +91 -0
- package/src/stylesheet.css +12 -0
- package/src/widget-impl.ts +88 -0
- package/src/zoom-widget.tsx +34 -15
package/dist/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/fullscreen-widget.tsx", "../src/components.tsx", "../src/compass-widget.tsx", "../src/zoom-widget.tsx", "../src/themes.ts"],
|
|
4
|
-
"sourcesContent": ["// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport {FullscreenWidget} from './fullscreen-widget';\nexport {CompassWidget} from './compass-widget';\nexport {ZoomWidget} from './zoom-widget';\n\nexport type {FullscreenWidgetProps} from './fullscreen-widget';\nexport type {CompassWidgetProps} from './compass-widget';\nexport type {ZoomWidgetProps} from './zoom-widget';\n\nexport * from './themes';\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global document */\nimport {\n _deepEqual as deepEqual,\n _applyStyles as applyStyles,\n _removeStyles as removeStyles\n} from '@deck.gl/core';\nimport type {Deck, Widget, WidgetPlacement} from '@deck.gl/core';\nimport {render} from 'preact';\nimport {IconButton} from './components';\n\nexport type FullscreenWidgetProps = {\n id?: string;\n /**\n * Widget positioning within the view. Default 'top-left'.\n */\n placement?: WidgetPlacement;\n /**\n * A [compatible DOM element](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen#Compatible_elements) which should be made full screen.\n * By default, the map container element will be made full screen.\n */\n /* eslint-enable max-len */\n container?: HTMLElement;\n /**\n * Tooltip message when out of fullscreen.\n */\n enterLabel?: string;\n /**\n * Tooltip message when fullscreen.\n */\n exitLabel?: string;\n /**\n * CSS inline style overrides.\n */\n style?: Partial<CSSStyleDeclaration>;\n /**\n * Additional CSS class.\n */\n className?: string;\n};\n\nexport class FullscreenWidget implements Widget<FullscreenWidgetProps> {\n id = 'fullscreen';\n props: FullscreenWidgetProps;\n placement: WidgetPlacement = 'top-left';\n\n deck?: Deck<any>;\n element?: HTMLDivElement;\n\n fullscreen: boolean = false;\n\n constructor(props: FullscreenWidgetProps) {\n this.id = props.id ?? this.id;\n this.placement = props.placement ?? this.placement;\n\n this.props = {\n ...props,\n enterLabel: props.enterLabel ?? 'Enter Fullscreen',\n exitLabel: props.exitLabel ?? 'Exit Fullscreen',\n style: props.style ?? {}\n };\n }\n\n onAdd({deck}: {deck: Deck<any>}): HTMLDivElement {\n const {style, className} = this.props;\n const el = document.createElement('div');\n el.classList.add('deck-widget', 'deck-widget-fullscreen');\n if (className) el.classList.add(className);\n applyStyles(el, style);\n this.deck = deck;\n this.element = el;\n this.update();\n document.addEventListener('fullscreenchange', this.onFullscreenChange.bind(this));\n return el;\n }\n\n onRemove() {\n this.deck = undefined;\n this.element = undefined;\n document.removeEventListener('fullscreenchange', this.onFullscreenChange.bind(this));\n }\n\n private update() {\n const {enterLabel, exitLabel} = this.props;\n const element = this.element;\n if (!element) {\n return;\n }\n\n const ui = (\n <IconButton\n onClick={this.handleClick.bind(this)}\n label={this.fullscreen ? exitLabel : enterLabel}\n className={this.fullscreen ? 'deck-widget-fullscreen-exit' : 'deck-widget-fullscreen-enter'}\n />\n );\n render(ui, element);\n }\n\n setProps(props: Partial<FullscreenWidgetProps>) {\n this.placement = props.placement ?? this.placement;\n const oldProps = this.props;\n const el = this.element;\n if (el) {\n if (oldProps.className !== props.className) {\n if (oldProps.className) el.classList.remove(oldProps.className);\n if (props.className) el.classList.add(props.className);\n }\n\n if (!deepEqual(oldProps.style, props.style, 1)) {\n removeStyles(el, oldProps.style);\n applyStyles(el, props.style);\n }\n }\n\n Object.assign(this.props, props);\n this.update();\n }\n\n getContainer() {\n return this.props.container || this.deck?.getCanvas()?.parentElement;\n }\n\n onFullscreenChange() {\n const prevFullscreen = this.fullscreen;\n const fullscreen = document.fullscreenElement === this.getContainer();\n if (prevFullscreen !== fullscreen) {\n this.fullscreen = !this.fullscreen;\n }\n this.update();\n }\n\n async handleClick() {\n if (this.fullscreen) {\n await this.exitFullscreen();\n } else {\n await this.requestFullscreen();\n }\n this.update();\n }\n\n async requestFullscreen() {\n const container = this.getContainer();\n if (container?.requestFullscreen) {\n await container.requestFullscreen({navigationUI: 'hide'});\n } else {\n this.togglePseudoFullscreen();\n }\n }\n\n async exitFullscreen() {\n if (document.exitFullscreen) {\n await document.exitFullscreen();\n } else {\n this.togglePseudoFullscreen();\n }\n }\n\n togglePseudoFullscreen() {\n this.getContainer()?.classList.toggle('deck-pseudo-fullscreen');\n }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport const IconButton = props => {\n const {className, label, onClick} = props;\n return (\n <div className=\"deck-widget-button\">\n <button\n className={`deck-widget-icon-button ${className}`}\n type=\"button\"\n onClick={onClick}\n title={label}\n >\n <div className=\"deck-widget-icon\" />\n </button>\n </div>\n );\n};\n\nexport const ButtonGroup = props => {\n const {children, orientation} = props;\n return <div className={`deck-widget-button-group ${orientation}`}>{children}</div>;\n};\n\nexport const GroupedIconButton = props => {\n const {className, label, onClick} = props;\n return (\n <button\n className={`deck-widget-icon-button ${className}`}\n type=\"button\"\n onClick={onClick}\n title={label}\n >\n <div className=\"deck-widget-icon\" />\n </button>\n );\n};\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global document */\nimport {\n FlyToInterpolator,\n WebMercatorViewport,\n _GlobeViewport,\n _deepEqual as deepEqual,\n _applyStyles as applyStyles,\n _removeStyles as removeStyles\n} from '@deck.gl/core';\nimport type {Deck, Viewport, Widget, WidgetPlacement} from '@deck.gl/core';\nimport {render} from 'preact';\n\nexport type CompassWidgetProps = {\n id?: string;\n /**\n * Widget positioning within the view. Default 'top-left'.\n */\n placement?: WidgetPlacement;\n /**\n * View to attach to and interact with. Required when using multiple views.\n */\n viewId?: string | null;\n /**\n * Tooltip message.\n */\n label?: string;\n /**\n * Bearing and pitch reset transition duration in ms.\n */\n transitionDuration?: number;\n /**\n * CSS inline style overrides.\n */\n style?: Partial<CSSStyleDeclaration>;\n /**\n * Additional CSS class.\n */\n className?: string;\n};\n\nexport class CompassWidget implements Widget<CompassWidgetProps> {\n id = 'compass';\n props: CompassWidgetProps;\n placement: WidgetPlacement = 'top-left';\n viewId?: string | null = null;\n viewports: {[id: string]: Viewport} = {};\n deck?: Deck<any>;\n element?: HTMLDivElement;\n\n constructor(props: CompassWidgetProps) {\n this.id = props.id ?? this.id;\n this.viewId = props.viewId ?? this.viewId;\n this.placement = props.placement ?? this.placement;\n\n this.props = {\n ...props,\n transitionDuration: props.transitionDuration ?? 200,\n label: props.label ?? 'Reset Compass',\n style: props.style ?? {}\n };\n }\n\n setProps(props: Partial<CompassWidgetProps>) {\n this.placement = props.placement ?? this.placement;\n this.viewId = props.viewId ?? this.viewId;\n const oldProps = this.props;\n const el = this.element;\n if (el) {\n if (oldProps.className !== props.className) {\n if (oldProps.className) el.classList.remove(oldProps.className);\n if (props.className) el.classList.add(props.className);\n }\n\n if (!deepEqual(oldProps.style, props.style, 1)) {\n removeStyles(el, oldProps.style);\n applyStyles(el, props.style);\n }\n }\n\n Object.assign(this.props, props);\n this.update();\n }\n\n onViewportChange(viewport: Viewport) {\n // no need to update if viewport is the same\n if (!viewport.equals(this.viewports[viewport.id])) {\n this.viewports[viewport.id] = viewport;\n this.update();\n }\n }\n\n onAdd({deck}: {deck: Deck<any>}): HTMLDivElement {\n const {style, className} = this.props;\n const element = document.createElement('div');\n element.classList.add('deck-widget', 'deck-widget-compass');\n if (className) element.classList.add(className);\n applyStyles(element, style);\n this.deck = deck;\n this.element = element;\n this.update();\n return element;\n }\n\n getRotation(viewport?: Viewport) {\n if (viewport instanceof WebMercatorViewport) {\n return [-viewport.bearing, viewport.pitch];\n } else if (viewport instanceof _GlobeViewport) {\n return [0, Math.max(-80, Math.min(80, viewport.latitude))];\n }\n return [0, 0];\n }\n\n private update() {\n const viewId = this.viewId || Object.values(this.viewports)[0]?.id || 'default-view';\n const viewport = this.viewports[viewId];\n const [rz, rx] = this.getRotation(viewport);\n const element = this.element;\n if (!element) {\n return;\n }\n const ui = (\n <div className=\"deck-widget-button\" style={{perspective: 100}}>\n <button\n type=\"button\"\n onClick={() => {\n for (const viewport of Object.values(this.viewports)) {\n this.handleCompassReset(viewport);\n }\n }}\n title={this.props.label}\n style={{transform: `rotateX(${rx}deg)`}}\n >\n <svg fill=\"none\" width=\"100%\" height=\"100%\" viewBox=\"0 0 26 26\">\n <g transform={`rotate(${rz},13,13)`}>\n <path\n d=\"M10 13.0001L12.9999 5L15.9997 13.0001H10Z\"\n fill=\"var(--icon-compass-north-color, #F05C44)\"\n />\n <path\n d=\"M16.0002 12.9999L13.0004 21L10.0005 12.9999H16.0002Z\"\n fill=\"var(--icon-compass-south-color, #C2C2CC)\"\n />\n </g>\n </svg>\n </button>\n </div>\n );\n render(ui, element);\n }\n\n onRemove() {\n this.deck = undefined;\n this.element = undefined;\n }\n\n handleCompassReset(viewport: Viewport) {\n const viewId = this.viewId || viewport.id || 'default-view';\n if (viewport instanceof WebMercatorViewport) {\n const nextViewState = {\n ...viewport,\n bearing: 0,\n ...(this.getRotation(viewport)[0] === 0 ? {pitch: 0} : {}),\n transitionDuration: this.props.transitionDuration,\n transitionInterpolator: new FlyToInterpolator()\n };\n // @ts-ignore Using private method temporary until there's a public one\n this.deck._onViewStateChange({viewId, viewState: nextViewState, interactionState: {}});\n }\n }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global document */\nimport {\n FlyToInterpolator,\n _deepEqual as deepEqual,\n _applyStyles as applyStyles,\n _removeStyles as removeStyles\n} from '@deck.gl/core';\nimport type {Deck, Viewport, Widget, WidgetPlacement} from '@deck.gl/core';\nimport {render} from 'preact';\nimport {ButtonGroup, GroupedIconButton} from './components';\n\nexport type ZoomWidgetProps = {\n id?: string;\n /**\n * Widget positioning within the view. Default 'top-left'.\n */\n placement?: WidgetPlacement;\n /**\n * View to attach to and interact with. Required when using multiple views.\n */\n viewId?: string | null;\n /**\n * Button orientation.\n */\n orientation?: 'vertical' | 'horizontal';\n /**\n * Tooltip message on zoom in button.\n */\n zoomInLabel?: string;\n /**\n * Tooltip message on zoom out button.\n */\n zoomOutLabel?: string;\n /**\n * Zoom transition duration in ms.\n */\n transitionDuration?: number;\n /**\n * CSS inline style overrides.\n */\n style?: Partial<CSSStyleDeclaration>;\n /**\n * Additional CSS class.\n */\n className?: string;\n};\n\nexport class ZoomWidget implements Widget<ZoomWidgetProps> {\n id = 'zoom';\n props: ZoomWidgetProps;\n placement: WidgetPlacement = 'top-left';\n viewId?: string | null = null;\n viewports: {[id: string]: Viewport} = {};\n deck?: Deck<any>;\n element?: HTMLDivElement;\n\n constructor(props: ZoomWidgetProps) {\n this.id = props.id ?? this.id;\n this.viewId = props.viewId ?? this.viewId;\n this.placement = props.placement ?? this.placement;\n\n this.props = {\n ...props,\n orientation: props.orientation ?? 'vertical',\n transitionDuration: props.transitionDuration ?? 200,\n zoomInLabel: props.zoomInLabel ?? 'Zoom In',\n zoomOutLabel: props.zoomOutLabel ?? 'Zoom Out',\n style: props.style ?? {}\n };\n }\n\n onAdd({deck}: {deck: Deck<any>}): HTMLDivElement {\n const {style, className} = this.props;\n const element = document.createElement('div');\n element.classList.add('deck-widget', 'deck-widget-zoom');\n if (className) element.classList.add(className);\n applyStyles(element, style);\n this.deck = deck;\n this.element = element;\n this.update();\n return element;\n }\n\n onRemove() {\n this.deck = undefined;\n this.element = undefined;\n }\n\n setProps(props: Partial<ZoomWidgetProps>) {\n this.placement = props.placement ?? this.placement;\n this.viewId = props.viewId ?? this.viewId;\n const oldProps = this.props;\n const el = this.element;\n if (el) {\n if (oldProps.className !== props.className) {\n if (oldProps.className) el.classList.remove(oldProps.className);\n if (props.className) el.classList.add(props.className);\n }\n\n if (!deepEqual(oldProps.style, props.style, 1)) {\n removeStyles(el, oldProps.style);\n applyStyles(el, props.style);\n }\n }\n\n Object.assign(this.props, props);\n this.update();\n }\n\n onViewportChange(viewport: Viewport) {\n this.viewports[viewport.id] = viewport;\n }\n\n handleZoom(viewport: Viewport, nextZoom: number) {\n const viewId = this.viewId || viewport?.id || 'default-view';\n const nextViewState = {\n ...viewport,\n zoom: nextZoom,\n transitionDuration: this.props.transitionDuration,\n transitionInterpolator: new FlyToInterpolator()\n };\n // @ts-ignore Using private method temporary until there's a public one\n this.deck._onViewStateChange({viewId, viewState: nextViewState, interactionState: {}});\n }\n\n handleZoomIn() {\n for (const viewport of Object.values(this.viewports)) {\n this.handleZoom(viewport, viewport.zoom + 1);\n }\n }\n\n handleZoomOut() {\n for (const viewport of Object.values(this.viewports)) {\n this.handleZoom(viewport, viewport.zoom - 1);\n }\n }\n\n private update() {\n const element = this.element;\n if (!element) {\n return;\n }\n const ui = (\n <ButtonGroup orientation={this.props.orientation}>\n <GroupedIconButton\n onClick={() => this.handleZoomIn()}\n label={this.props.zoomInLabel}\n className=\"deck-widget-zoom-in\"\n />\n <GroupedIconButton\n onClick={() => this.handleZoomOut()}\n label={this.props.zoomOutLabel}\n className=\"deck-widget-zoom-out\"\n />\n </ButtonGroup>\n );\n render(ui, element);\n }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport const LightTheme = {\n '--button-background': '#fff',\n '--button-stroke': 'rgba(255, 255, 255, 0.3)',\n '--button-inner-stroke': 'unset',\n '--button-shadow': '0px 0px 8px 0px rgba(0, 0, 0, 0.25)',\n '--button-backdrop-filter': 'unset',\n '--button-icon-idle': 'rgba(97, 97, 102, 1)',\n '--button-icon-hover': 'rgba(24, 24, 26, 1)',\n '--icon-compass-north-color': '#F05C44',\n '--icon-compass-south-color': '#C2C2CC'\n};\n\nexport const DarkTheme = {\n '--button-background': 'rgba(18, 18, 20, 1)',\n '--button-stroke': 'rgba(18, 18, 20, 0.30)',\n '--button-inner-stroke': 'unset',\n '--button-shadow': '0px 0px 8px 0px rgba(0, 0, 0, 0.25)',\n '--button-backdrop-filter': 'unset',\n '--button-icon-idle': 'rgba(158, 157, 168, 1)',\n '--button-icon-hover': 'rgba(215, 214, 229, 1)',\n '--icon-compass-north-color': '#F05C44',\n '--icon-compass-south-color': '#C2C2CC'\n};\n\nexport const LightGlassTheme = {\n '--button-background': 'rgba(255, 255, 255, 0.6)',\n '--button-stroke': 'rgba(255, 255, 255, 0.3)',\n '--button-inner-stroke': '1px solid rgba(255, 255, 255, 0.6)',\n '--button-shadow':\n '0px 0px 8px 0px rgba(0, 0, 0, 0.25), 0px 0px 8px 0px rgba(0, 0, 0, 0.1) inset',\n '--button-backdrop-filter': 'blur(4px)',\n '--button-icon-idle': 'rgba(97, 97, 102, 1)',\n '--button-icon-hover': 'rgba(24, 24, 26, 1)',\n '--icon-compass-north-color': '#F05C44',\n '--icon-compass-south-color': '#C2C2CC'\n};\n\nexport const DarkGlassTheme = {\n '--button-background': 'rgba(18, 18, 20, 0.75)',\n '--button-stroke': 'rgba(18, 18, 20, 0.30)',\n '--button-inner-stroke': '1px solid rgba(18, 18, 20, 0.75)',\n '--button-shadow':\n '0px 0px 8px 0px rgba(0, 0, 0, 0.25), 0px 0px 8px 0px rgba(0, 0, 0, 0.1) inset',\n '--button-backdrop-filter': 'blur(4px)',\n '--button-icon-idle': 'rgba(158, 157, 168, 1)',\n '--button-icon-hover': 'rgba(215, 214, 229, 1)',\n '--icon-compass-north-color': '#F05C44',\n '--icon-compass-south-color': '#C2C2CC'\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["_jsx", "applyStyles", "_jsx", "deepEqual", "removeStyles", "import_core", "import_preact", "deepEqual", "removeStyles", "applyStyles", "_jsx", "viewport", "_jsxs", "import_core", "import_preact", "applyStyles", "deepEqual", "removeStyles", "_jsxs", "_jsx"]
|
|
3
|
+
"sources": ["../src/index.ts", "../src/fullscreen-widget.tsx", "../src/components.tsx", "../src/compass-widget.tsx", "../src/zoom-widget.tsx", "../src/widget-impl.ts", "../src/screenshot-widget.tsx", "../src/reset-view-widget.tsx", "../src/themes.ts"],
|
|
4
|
+
"sourcesContent": ["// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport {FullscreenWidget} from './fullscreen-widget';\nexport {CompassWidget} from './compass-widget';\nexport {ZoomWidget} from './zoom-widget';\nexport {ScreenshotWidget} from './screenshot-widget';\nexport {ResetViewWidget} from './reset-view-widget';\n\nexport type {FullscreenWidgetProps} from './fullscreen-widget';\nexport type {CompassWidgetProps} from './compass-widget';\nexport type {ZoomWidgetProps} from './zoom-widget';\nexport type {ScreenshotWidgetProps} from './screenshot-widget';\nexport type {ResetViewWidgetProps} from './reset-view-widget';\n\nexport type {WidgetImplProps} from './widget-impl';\nexport {WidgetImpl as _WidgetImpl} from './widget-impl';\nimport * as _components from './components';\nexport {_components};\n\nexport * from './themes';\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global document */\nimport {\n _deepEqual as deepEqual,\n _applyStyles as applyStyles,\n _removeStyles as removeStyles\n} from '@deck.gl/core';\nimport type {Deck, Widget, WidgetPlacement} from '@deck.gl/core';\nimport {render} from 'preact';\nimport {IconButton} from './components';\n\nexport type FullscreenWidgetProps = {\n id?: string;\n /**\n * Widget positioning within the view. Default 'top-left'.\n */\n placement?: WidgetPlacement;\n /**\n * A [compatible DOM element](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen#Compatible_elements) which should be made full screen.\n * By default, the map container element will be made full screen.\n */\n /* eslint-enable max-len */\n container?: HTMLElement;\n /**\n * Tooltip message when out of fullscreen.\n */\n enterLabel?: string;\n /**\n * Tooltip message when fullscreen.\n */\n exitLabel?: string;\n /**\n * CSS inline style overrides.\n */\n style?: Partial<CSSStyleDeclaration>;\n /**\n * Additional CSS class.\n */\n className?: string;\n};\n\nexport class FullscreenWidget implements Widget<FullscreenWidgetProps> {\n id = 'fullscreen';\n props: FullscreenWidgetProps;\n placement: WidgetPlacement = 'top-left';\n\n deck?: Deck<any>;\n element?: HTMLDivElement;\n\n fullscreen: boolean = false;\n\n constructor(props: FullscreenWidgetProps) {\n this.id = props.id ?? this.id;\n this.placement = props.placement ?? this.placement;\n\n this.props = {\n ...props,\n enterLabel: props.enterLabel ?? 'Enter Fullscreen',\n exitLabel: props.exitLabel ?? 'Exit Fullscreen',\n style: props.style ?? {}\n };\n }\n\n onAdd({deck}: {deck: Deck<any>}): HTMLDivElement {\n const {style, className} = this.props;\n const el = document.createElement('div');\n el.classList.add('deck-widget', 'deck-widget-fullscreen');\n if (className) el.classList.add(className);\n applyStyles(el, style);\n this.deck = deck;\n this.element = el;\n this.update();\n document.addEventListener('fullscreenchange', this.onFullscreenChange.bind(this));\n return el;\n }\n\n onRemove() {\n this.deck = undefined;\n this.element = undefined;\n document.removeEventListener('fullscreenchange', this.onFullscreenChange.bind(this));\n }\n\n private update() {\n const {enterLabel, exitLabel} = this.props;\n const element = this.element;\n if (!element) {\n return;\n }\n\n const ui = (\n <IconButton\n onClick={this.handleClick.bind(this)}\n label={this.fullscreen ? exitLabel : enterLabel}\n className={this.fullscreen ? 'deck-widget-fullscreen-exit' : 'deck-widget-fullscreen-enter'}\n />\n );\n render(ui, element);\n }\n\n setProps(props: Partial<FullscreenWidgetProps>) {\n this.placement = props.placement ?? this.placement;\n const oldProps = this.props;\n const el = this.element;\n if (el) {\n if (oldProps.className !== props.className) {\n if (oldProps.className) el.classList.remove(oldProps.className);\n if (props.className) el.classList.add(props.className);\n }\n\n if (!deepEqual(oldProps.style, props.style, 1)) {\n removeStyles(el, oldProps.style);\n applyStyles(el, props.style);\n }\n }\n\n Object.assign(this.props, props);\n this.update();\n }\n\n getContainer() {\n return this.props.container || this.deck?.getCanvas()?.parentElement;\n }\n\n onFullscreenChange() {\n const prevFullscreen = this.fullscreen;\n const fullscreen = document.fullscreenElement === this.getContainer();\n if (prevFullscreen !== fullscreen) {\n this.fullscreen = !this.fullscreen;\n }\n this.update();\n }\n\n async handleClick() {\n if (this.fullscreen) {\n await this.exitFullscreen();\n } else {\n await this.requestFullscreen();\n }\n this.update();\n }\n\n async requestFullscreen() {\n const container = this.getContainer();\n if (container?.requestFullscreen) {\n await container.requestFullscreen({navigationUI: 'hide'});\n } else {\n this.togglePseudoFullscreen();\n }\n }\n\n async exitFullscreen() {\n if (document.exitFullscreen) {\n await document.exitFullscreen();\n } else {\n this.togglePseudoFullscreen();\n }\n }\n\n togglePseudoFullscreen() {\n this.getContainer()?.classList.toggle('deck-pseudo-fullscreen');\n }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport const IconButton = props => {\n const {className, label, onClick} = props;\n return (\n <div className=\"deck-widget-button\">\n <button\n className={`deck-widget-icon-button ${className}`}\n type=\"button\"\n onClick={onClick}\n title={label}\n >\n <div className=\"deck-widget-icon\" />\n </button>\n </div>\n );\n};\n\nexport const ButtonGroup = props => {\n const {children, orientation} = props;\n return <div className={`deck-widget-button-group ${orientation}`}>{children}</div>;\n};\n\nexport const GroupedIconButton = props => {\n const {className, label, onClick} = props;\n return (\n <button\n className={`deck-widget-icon-button ${className}`}\n type=\"button\"\n onClick={onClick}\n title={label}\n >\n <div className=\"deck-widget-icon\" />\n </button>\n );\n};\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global document */\nimport {\n FlyToInterpolator,\n WebMercatorViewport,\n _GlobeViewport,\n _deepEqual as deepEqual,\n _applyStyles as applyStyles,\n _removeStyles as removeStyles\n} from '@deck.gl/core';\nimport type {Deck, Viewport, Widget, WidgetPlacement} from '@deck.gl/core';\nimport {render} from 'preact';\n\nexport type CompassWidgetProps = {\n id?: string;\n /**\n * Widget positioning within the view. Default 'top-left'.\n */\n placement?: WidgetPlacement;\n /**\n * View to attach to and interact with. Required when using multiple views.\n */\n viewId?: string | null;\n /**\n * Tooltip message.\n */\n label?: string;\n /**\n * Bearing and pitch reset transition duration in ms.\n */\n transitionDuration?: number;\n /**\n * CSS inline style overrides.\n */\n style?: Partial<CSSStyleDeclaration>;\n /**\n * Additional CSS class.\n */\n className?: string;\n};\n\nexport class CompassWidget implements Widget<CompassWidgetProps> {\n id = 'compass';\n props: CompassWidgetProps;\n placement: WidgetPlacement = 'top-left';\n viewId?: string | null = null;\n viewports: {[id: string]: Viewport} = {};\n deck?: Deck<any>;\n element?: HTMLDivElement;\n\n constructor(props: CompassWidgetProps) {\n this.id = props.id ?? this.id;\n this.viewId = props.viewId ?? this.viewId;\n this.placement = props.placement ?? this.placement;\n\n this.props = {\n ...props,\n transitionDuration: props.transitionDuration ?? 200,\n label: props.label ?? 'Reset Compass',\n style: props.style ?? {}\n };\n }\n\n setProps(props: Partial<CompassWidgetProps>) {\n this.placement = props.placement ?? this.placement;\n this.viewId = props.viewId ?? this.viewId;\n const oldProps = this.props;\n const el = this.element;\n if (el) {\n if (oldProps.className !== props.className) {\n if (oldProps.className) el.classList.remove(oldProps.className);\n if (props.className) el.classList.add(props.className);\n }\n\n if (!deepEqual(oldProps.style, props.style, 1)) {\n removeStyles(el, oldProps.style);\n applyStyles(el, props.style);\n }\n }\n\n Object.assign(this.props, props);\n this.update();\n }\n\n onViewportChange(viewport: Viewport) {\n // no need to update if viewport is the same\n if (!viewport.equals(this.viewports[viewport.id])) {\n this.viewports[viewport.id] = viewport;\n this.update();\n }\n }\n\n onAdd({deck}: {deck: Deck<any>}): HTMLDivElement {\n const {style, className} = this.props;\n const element = document.createElement('div');\n element.classList.add('deck-widget', 'deck-widget-compass');\n if (className) element.classList.add(className);\n applyStyles(element, style);\n this.deck = deck;\n this.element = element;\n this.update();\n return element;\n }\n\n getRotation(viewport?: Viewport) {\n if (viewport instanceof WebMercatorViewport) {\n return [-viewport.bearing, viewport.pitch];\n } else if (viewport instanceof _GlobeViewport) {\n return [0, Math.max(-80, Math.min(80, viewport.latitude))];\n }\n return [0, 0];\n }\n\n private update() {\n const viewId = this.viewId || Object.values(this.viewports)[0]?.id || 'default-view';\n const viewport = this.viewports[viewId];\n const [rz, rx] = this.getRotation(viewport);\n const element = this.element;\n if (!element) {\n return;\n }\n const ui = (\n <div className=\"deck-widget-button\" style={{perspective: 100}}>\n <button\n type=\"button\"\n onClick={() => {\n for (const viewport of Object.values(this.viewports)) {\n this.handleCompassReset(viewport);\n }\n }}\n title={this.props.label}\n style={{transform: `rotateX(${rx}deg)`}}\n >\n <svg fill=\"none\" width=\"100%\" height=\"100%\" viewBox=\"0 0 26 26\">\n <g transform={`rotate(${rz},13,13)`}>\n <path\n d=\"M10 13.0001L12.9999 5L15.9997 13.0001H10Z\"\n fill=\"var(--icon-compass-north-color, #F05C44)\"\n />\n <path\n d=\"M16.0002 12.9999L13.0004 21L10.0005 12.9999H16.0002Z\"\n fill=\"var(--icon-compass-south-color, #C2C2CC)\"\n />\n </g>\n </svg>\n </button>\n </div>\n );\n render(ui, element);\n }\n\n onRemove() {\n this.deck = undefined;\n this.element = undefined;\n }\n\n handleCompassReset(viewport: Viewport) {\n const viewId = this.viewId || viewport.id || 'default-view';\n if (viewport instanceof WebMercatorViewport) {\n const nextViewState = {\n ...viewport,\n bearing: 0,\n ...(this.getRotation(viewport)[0] === 0 ? {pitch: 0} : {}),\n transitionDuration: this.props.transitionDuration,\n transitionInterpolator: new FlyToInterpolator()\n };\n // @ts-ignore Using private method temporary until there's a public one\n this.deck._onViewStateChange({viewId, viewState: nextViewState, interactionState: {}});\n }\n }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global document */\nimport {\n FlyToInterpolator,\n LinearInterpolator,\n _deepEqual as deepEqual,\n _applyStyles as applyStyles,\n _removeStyles as removeStyles\n} from '@deck.gl/core';\nimport type {Deck, Viewport, Widget, WidgetPlacement} from '@deck.gl/core';\nimport {render} from 'preact';\nimport {ButtonGroup, GroupedIconButton} from './components';\n\nexport type ZoomWidgetProps = {\n id?: string;\n /**\n * Widget positioning within the view. Default 'top-left'.\n */\n placement?: WidgetPlacement;\n /**\n * View to attach to and interact with. Required when using multiple views.\n */\n viewId?: string | null;\n /**\n * Button orientation.\n */\n orientation?: 'vertical' | 'horizontal';\n /**\n * Tooltip message on zoom in button.\n */\n zoomInLabel?: string;\n /**\n * Tooltip message on zoom out button.\n */\n zoomOutLabel?: string;\n /**\n * Zoom transition duration in ms. 0 disables the transition\n */\n transitionDuration?: number;\n /**\n * CSS inline style overrides.\n */\n style?: Partial<CSSStyleDeclaration>;\n /**\n * Additional CSS class.\n */\n className?: string;\n};\n\nexport class ZoomWidget implements Widget<ZoomWidgetProps> {\n id = 'zoom';\n props: Required<ZoomWidgetProps>;\n placement: WidgetPlacement = 'top-left';\n viewId?: string | null = null;\n viewports: {[id: string]: Viewport} = {};\n deck?: Deck<any>;\n element?: HTMLDivElement;\n\n static defaultProps: Required<ZoomWidgetProps> = {\n id: 'zoom-widget',\n style: {},\n placement: 'top-left',\n className: undefined!,\n orientation: 'vertical',\n transitionDuration: 200,\n zoomInLabel: 'Zoom In',\n zoomOutLabel: 'Zoom Out',\n viewId: undefined!\n };\n\n constructor(props: ZoomWidgetProps = {}) {\n this.id = props.id ?? this.id;\n this.viewId = props.viewId ?? this.viewId;\n this.placement = props.placement ?? this.placement;\n\n this.props = {\n ...ZoomWidget.defaultProps,\n ...props\n };\n }\n\n onAdd({deck}: {deck: Deck<any>}): HTMLDivElement {\n const {style, className} = this.props;\n const element = document.createElement('div');\n element.classList.add('deck-widget', 'deck-widget-zoom');\n if (className) element.classList.add(className);\n applyStyles(element, style);\n this.deck = deck;\n this.element = element;\n this.update();\n return element;\n }\n\n onRemove() {\n this.deck = undefined;\n this.element = undefined;\n }\n\n setProps(props: Partial<ZoomWidgetProps>) {\n this.placement = props.placement ?? this.placement;\n this.viewId = props.viewId ?? this.viewId;\n const oldProps = this.props;\n const el = this.element;\n if (el) {\n if (oldProps.className !== props.className) {\n if (oldProps.className) el.classList.remove(oldProps.className);\n if (props.className) el.classList.add(props.className);\n }\n\n if (!deepEqual(oldProps.style, props.style, 1)) {\n removeStyles(el, oldProps.style);\n applyStyles(el, props.style);\n }\n }\n\n Object.assign(this.props, props);\n this.update();\n }\n\n onViewportChange(viewport: Viewport) {\n this.viewports[viewport.id] = viewport;\n }\n\n handleZoom(viewport: Viewport, nextZoom: number) {\n const viewId = this.viewId || viewport?.id || 'default-view';\n const nextViewState: Record<string, unknown> = {\n ...viewport,\n zoom: nextZoom\n };\n if (this.props.transitionDuration > 0) {\n nextViewState.transitionDuration = this.props.transitionDuration;\n nextViewState.transitionInterpolator =\n 'latitude' in nextViewState ? new FlyToInterpolator() : new LinearInterpolator();\n }\n this.setViewState(viewId, nextViewState);\n }\n\n handleZoomIn() {\n for (const viewport of Object.values(this.viewports)) {\n this.handleZoom(viewport, viewport.zoom + 1);\n }\n }\n\n handleZoomOut() {\n for (const viewport of Object.values(this.viewports)) {\n this.handleZoom(viewport, viewport.zoom - 1);\n }\n }\n\n /**\n * @todo - move to deck or widget manager\n */\n private setViewState(viewId: string, viewState: Record<string, unknown>): void {\n // @ts-ignore Using private method temporary until there's a public one\n this.deck._onViewStateChange({viewId, viewState, interactionState: {}});\n }\n\n private update() {\n const element = this.element;\n if (!element) {\n return;\n }\n const ui = (\n <ButtonGroup orientation={this.props.orientation}>\n <GroupedIconButton\n onClick={() => this.handleZoomIn()}\n label={this.props.zoomInLabel}\n className=\"deck-widget-zoom-in\"\n />\n <GroupedIconButton\n onClick={() => this.handleZoomOut()}\n label={this.props.zoomOutLabel}\n className=\"deck-widget-zoom-out\"\n />\n </ButtonGroup>\n );\n render(ui, element);\n }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global document */\nimport {_deepEqual, _applyStyles, _removeStyles} from '@deck.gl/core';\nimport type {Deck, Widget} from '@deck.gl/core';\n\nexport type WidgetImplProps = {\n id?: string;\n /** CSS inline style overrides. */\n style?: Partial<CSSStyleDeclaration>;\n /** Additional CSS class. */\n className?: string;\n};\nexport abstract class WidgetImpl<PropsT extends WidgetImplProps> implements Widget<PropsT> {\n id: string;\n props: Required<PropsT>;\n\n deck?: Deck<any>;\n element?: HTMLDivElement;\n\n static defaultProps: Required<WidgetImplProps> = {\n id: 'widget',\n style: {},\n className: ''\n };\n\n abstract className: Required<string>;\n\n constructor(props: Required<PropsT>) {\n this.id = props.id || 'widget';\n this.props = props;\n }\n\n abstract onRenderHTML(): void;\n\n onAdd({deck}: {deck: Deck<any>}): HTMLDivElement {\n this.deck = deck;\n const {style, className} = this.props;\n const el = this._createRootElement({\n widgetClassName: this.className,\n className,\n style\n });\n this.element = el;\n this.onRenderHTML();\n return this.element;\n }\n\n onRemove() {\n this.deck = undefined;\n this.element = undefined;\n }\n\n setProps(props: Partial<PropsT>) {\n const oldProps = this.props;\n const el = this.element;\n if (el) {\n if (oldProps.className !== props.className) {\n if (oldProps.className) el.classList.remove(oldProps.className);\n if (props.className) el.classList.add(props.className);\n }\n\n if (!_deepEqual(oldProps.style, props.style, 1)) {\n _removeStyles(el, oldProps.style);\n _applyStyles(el, props.style);\n }\n }\n\n Object.assign(this.props, props);\n this.onRenderHTML();\n }\n\n _createRootElement(props: {\n widgetClassName: string;\n className?: string;\n style?: Partial<CSSStyleDeclaration>;\n }) {\n const {widgetClassName, className, style} = props;\n const element = document.createElement('div');\n ['deck-widget', widgetClassName, className]\n .filter((cls): cls is string => typeof cls === 'string' && cls.length > 0)\n .forEach(className => element.classList.add(className));\n _applyStyles(element, style);\n return element;\n }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global document */\nimport {WidgetImpl, WidgetImplProps} from './widget-impl';\nimport {h, render} from 'preact';\nimport {IconButton} from './components';\nimport type {WidgetPlacement} from '@deck.gl/core';\n\n/** Properties for the ScreenshotWidget */\nexport type ScreenshotWidgetProps = WidgetImplProps & {\n /** Widget positioning within the view. Default 'top-left'. */\n placement?: WidgetPlacement;\n /** Tooltip message */\n label?: string;\n /** Filename to save to */\n filename?: string;\n /** Image format */\n imageFormat?: 'image/png' | 'image/jpeg';\n /** Callback, if defined user overrides the capture logic */\n onCapture?: (widget: ScreenshotWidget) => void;\n};\n\n/**\n * A button widget that captures a screenshot of the current canvas and downloads it as a (png) file.\n * @note only captures canvas contents, not HTML DOM or CSS styles\n */\nexport class ScreenshotWidget extends WidgetImpl<ScreenshotWidgetProps> {\n static defaultProps: Required<ScreenshotWidgetProps> = {\n ...WidgetImpl.defaultProps,\n id: 'screenshot',\n placement: 'top-left',\n label: 'Screenshot',\n filename: 'screenshot.png',\n imageFormat: 'image/png',\n onCapture: undefined!\n };\n\n className = 'deck-widget-screenshot';\n placement: WidgetPlacement = 'top-left';\n\n constructor(props: ScreenshotWidgetProps = {}) {\n super({...ScreenshotWidget.defaultProps, ...props});\n this.placement = props.placement ?? this.placement;\n }\n\n setProps(props: Partial<ScreenshotWidgetProps>) {\n this.placement = props.placement ?? this.placement;\n super.setProps(props);\n }\n\n onRenderHTML() {\n const element = this.element;\n if (!element) return;\n render(\n <IconButton\n className=\"deck-widget-camera\"\n label={this.props.label}\n onClick={this.handleClick.bind(this)}\n />,\n element\n );\n }\n\n handleClick() {\n // Allow user to override the capture logic\n if (this.props.onCapture) {\n this.props.onCapture(this);\n return;\n }\n const dataURL = this.captureScreenToDataURL(this.props.imageFormat);\n if (dataURL) {\n this.downloadDataURL(dataURL, this.props.filename);\n }\n }\n\n /** @note only captures canvas contents, not HTML DOM or CSS styles */\n captureScreenToDataURL(imageFormat: string): string | undefined {\n const canvas = this.deck?.getCanvas();\n return canvas?.toDataURL(imageFormat);\n }\n\n /** Download a data URL */\n downloadDataURL(dataURL: string, filename: string): void {\n const link = document.createElement('a');\n link.href = dataURL;\n link.download = filename;\n link.click();\n }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global document */\nimport type {WidgetPlacement} from '@deck.gl/core';\nimport {render} from 'preact';\nimport {WidgetImpl, WidgetImplProps} from './widget-impl';\nimport {IconButton} from './components';\n\n/** @todo - is the the best we can do? */\ntype ViewState = Record<string, unknown>;\n\n/** Properties for the ResetViewWidget */\nexport type ResetViewWidgetProps = WidgetImplProps & {\n /** Widget positioning within the view. Default 'top-left'. */\n placement?: WidgetPlacement;\n /** Tooltip message */\n label?: string;\n /** The initial view state to reset the view to. Defaults to deck.props.initialViewState */\n initialViewState?: ViewState;\n /** View to interact with. Required when using multiple views. */\n viewId?: string | null;\n};\n\n/**\n * A button widget that resets the view state of deck to an initial state.\n */\nexport class ResetViewWidget extends WidgetImpl<ResetViewWidgetProps> {\n static defaultProps: Required<ResetViewWidgetProps> = {\n ...WidgetImpl.defaultProps,\n id: 'reset-view',\n placement: 'top-left',\n label: 'Reset View',\n initialViewState: undefined!,\n viewId: undefined!\n };\n\n className = 'deck-widget-reset-view';\n placement: WidgetPlacement = 'top-left';\n\n constructor(props: ResetViewWidgetProps = {}) {\n super({...ResetViewWidget.defaultProps, ...props});\n this.placement = props.placement ?? this.placement;\n }\n\n setProps(props: Partial<ResetViewWidgetProps>) {\n this.placement = props.placement ?? this.placement;\n super.setProps(props);\n }\n\n onRenderHTML() {\n const element = this.element;\n if (!element) return;\n render(\n <IconButton\n className=\"deck-widget-reset-focus\"\n label={this.props.label}\n onClick={this.handleClick.bind(this)}\n />,\n element\n );\n }\n\n handleClick() {\n const initialViewState = this.props.initialViewState || this.deck?.props.initialViewState;\n this.setViewState(initialViewState);\n }\n\n setViewState(viewState: ViewState) {\n const viewId = this.props.viewId || viewState?.id || 'default-view';\n const nextViewState = {\n ...viewState\n // only works for geospatial?\n // transitionDuration: this.props.transitionDuration,\n // transitionInterpolator: new FlyToInterpolator()\n };\n // @ts-ignore Using private method temporary until there's a public one\n this.deck._onViewStateChange({viewId, viewState: nextViewState, interactionState: {}});\n }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport const LightTheme = {\n '--button-background': '#fff',\n '--button-stroke': 'rgba(255, 255, 255, 0.3)',\n '--button-inner-stroke': 'unset',\n '--button-shadow': '0px 0px 8px 0px rgba(0, 0, 0, 0.25)',\n '--button-backdrop-filter': 'unset',\n '--button-icon-idle': 'rgba(97, 97, 102, 1)',\n '--button-icon-hover': 'rgba(24, 24, 26, 1)',\n '--icon-compass-north-color': '#F05C44',\n '--icon-compass-south-color': '#C2C2CC'\n};\n\nexport const DarkTheme = {\n '--button-background': 'rgba(18, 18, 20, 1)',\n '--button-stroke': 'rgba(18, 18, 20, 0.30)',\n '--button-inner-stroke': 'unset',\n '--button-shadow': '0px 0px 8px 0px rgba(0, 0, 0, 0.25)',\n '--button-backdrop-filter': 'unset',\n '--button-icon-idle': 'rgba(158, 157, 168, 1)',\n '--button-icon-hover': 'rgba(215, 214, 229, 1)',\n '--icon-compass-north-color': '#F05C44',\n '--icon-compass-south-color': '#C2C2CC'\n};\n\nexport const LightGlassTheme = {\n '--button-background': 'rgba(255, 255, 255, 0.6)',\n '--button-stroke': 'rgba(255, 255, 255, 0.3)',\n '--button-inner-stroke': '1px solid rgba(255, 255, 255, 0.6)',\n '--button-shadow':\n '0px 0px 8px 0px rgba(0, 0, 0, 0.25), 0px 0px 8px 0px rgba(0, 0, 0, 0.1) inset',\n '--button-backdrop-filter': 'blur(4px)',\n '--button-icon-idle': 'rgba(97, 97, 102, 1)',\n '--button-icon-hover': 'rgba(24, 24, 26, 1)',\n '--icon-compass-north-color': '#F05C44',\n '--icon-compass-south-color': '#C2C2CC'\n};\n\nexport const DarkGlassTheme = {\n '--button-background': 'rgba(18, 18, 20, 0.75)',\n '--button-stroke': 'rgba(18, 18, 20, 0.30)',\n '--button-inner-stroke': '1px solid rgba(18, 18, 20, 0.75)',\n '--button-shadow':\n '0px 0px 8px 0px rgba(0, 0, 0, 0.25), 0px 0px 8px 0px rgba(0, 0, 0, 0.1) inset',\n '--button-backdrop-filter': 'blur(4px)',\n '--button-icon-idle': 'rgba(158, 157, 168, 1)',\n '--button-icon-hover': 'rgba(215, 214, 229, 1)',\n '--icon-compass-north-color': '#F05C44',\n '--icon-compass-south-color': '#C2C2CC'\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["_jsx", "applyStyles", "_jsx", "deepEqual", "removeStyles", "import_core", "import_preact", "deepEqual", "removeStyles", "applyStyles", "_jsx", "viewport", "_jsxs", "import_core", "import_preact", "applyStyles", "deepEqual", "removeStyles", "_jsxs", "_jsx", "import_core", "className", "import_preact", "_jsx", "import_preact", "_jsx"]
|
|
7
7
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
export { FullscreenWidget } from "./fullscreen-widget.js";
|
|
2
2
|
export { CompassWidget } from "./compass-widget.js";
|
|
3
3
|
export { ZoomWidget } from "./zoom-widget.js";
|
|
4
|
+
export { ScreenshotWidget } from "./screenshot-widget.js";
|
|
5
|
+
export { ResetViewWidget } from "./reset-view-widget.js";
|
|
4
6
|
export type { FullscreenWidgetProps } from "./fullscreen-widget.js";
|
|
5
7
|
export type { CompassWidgetProps } from "./compass-widget.js";
|
|
6
8
|
export type { ZoomWidgetProps } from "./zoom-widget.js";
|
|
9
|
+
export type { ScreenshotWidgetProps } from "./screenshot-widget.js";
|
|
10
|
+
export type { ResetViewWidgetProps } from "./reset-view-widget.js";
|
|
11
|
+
export type { WidgetImplProps } from "./widget-impl.js";
|
|
12
|
+
export { WidgetImpl as _WidgetImpl } from "./widget-impl.js";
|
|
13
|
+
import * as _components from "./components.js";
|
|
14
|
+
export { _components };
|
|
7
15
|
export * from "./themes.js";
|
|
8
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,gBAAgB,EAAC,+BAA4B;AACrD,OAAO,EAAC,aAAa,EAAC,4BAAyB;AAC/C,OAAO,EAAC,UAAU,EAAC,yBAAsB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,gBAAgB,EAAC,+BAA4B;AACrD,OAAO,EAAC,aAAa,EAAC,4BAAyB;AAC/C,OAAO,EAAC,UAAU,EAAC,yBAAsB;AACzC,OAAO,EAAC,gBAAgB,EAAC,+BAA4B;AACrD,OAAO,EAAC,eAAe,EAAC,+BAA4B;AAEpD,YAAY,EAAC,qBAAqB,EAAC,+BAA4B;AAC/D,YAAY,EAAC,kBAAkB,EAAC,4BAAyB;AACzD,YAAY,EAAC,eAAe,EAAC,yBAAsB;AACnD,YAAY,EAAC,qBAAqB,EAAC,+BAA4B;AAC/D,YAAY,EAAC,oBAAoB,EAAC,+BAA4B;AAE9D,YAAY,EAAC,eAAe,EAAC,yBAAsB;AACnD,OAAO,EAAC,UAAU,IAAI,WAAW,EAAC,yBAAsB;AACxD,OAAO,KAAK,WAAW,wBAAqB;AAC5C,OAAO,EAAC,WAAW,EAAC,CAAC;AAErB,4BAAyB"}
|
package/dist/index.js
CHANGED
|
@@ -4,5 +4,10 @@
|
|
|
4
4
|
export { FullscreenWidget } from "./fullscreen-widget.js";
|
|
5
5
|
export { CompassWidget } from "./compass-widget.js";
|
|
6
6
|
export { ZoomWidget } from "./zoom-widget.js";
|
|
7
|
+
export { ScreenshotWidget } from "./screenshot-widget.js";
|
|
8
|
+
export { ResetViewWidget } from "./reset-view-widget.js";
|
|
9
|
+
export { WidgetImpl as _WidgetImpl } from "./widget-impl.js";
|
|
10
|
+
import * as _components from "./components.js";
|
|
11
|
+
export { _components };
|
|
7
12
|
export * from "./themes.js";
|
|
8
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,gBAAgB,EAAC,+BAA4B;AACrD,OAAO,EAAC,aAAa,EAAC,4BAAyB;AAC/C,OAAO,EAAC,UAAU,EAAC,yBAAsB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,gBAAgB,EAAC,+BAA4B;AACrD,OAAO,EAAC,aAAa,EAAC,4BAAyB;AAC/C,OAAO,EAAC,UAAU,EAAC,yBAAsB;AACzC,OAAO,EAAC,gBAAgB,EAAC,+BAA4B;AACrD,OAAO,EAAC,eAAe,EAAC,+BAA4B;AASpD,OAAO,EAAC,UAAU,IAAI,WAAW,EAAC,yBAAsB;AACxD,OAAO,KAAK,WAAW,wBAAqB;AAC5C,OAAO,EAAC,WAAW,EAAC,CAAC;AAErB,4BAAyB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { WidgetPlacement } from '@deck.gl/core';
|
|
2
|
+
import { WidgetImpl, WidgetImplProps } from "./widget-impl.js";
|
|
3
|
+
/** @todo - is the the best we can do? */
|
|
4
|
+
type ViewState = Record<string, unknown>;
|
|
5
|
+
/** Properties for the ResetViewWidget */
|
|
6
|
+
export type ResetViewWidgetProps = WidgetImplProps & {
|
|
7
|
+
/** Widget positioning within the view. Default 'top-left'. */
|
|
8
|
+
placement?: WidgetPlacement;
|
|
9
|
+
/** Tooltip message */
|
|
10
|
+
label?: string;
|
|
11
|
+
/** The initial view state to reset the view to. Defaults to deck.props.initialViewState */
|
|
12
|
+
initialViewState?: ViewState;
|
|
13
|
+
/** View to interact with. Required when using multiple views. */
|
|
14
|
+
viewId?: string | null;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* A button widget that resets the view state of deck to an initial state.
|
|
18
|
+
*/
|
|
19
|
+
export declare class ResetViewWidget extends WidgetImpl<ResetViewWidgetProps> {
|
|
20
|
+
static defaultProps: Required<ResetViewWidgetProps>;
|
|
21
|
+
className: string;
|
|
22
|
+
placement: WidgetPlacement;
|
|
23
|
+
constructor(props?: ResetViewWidgetProps);
|
|
24
|
+
setProps(props: Partial<ResetViewWidgetProps>): void;
|
|
25
|
+
onRenderHTML(): void;
|
|
26
|
+
handleClick(): void;
|
|
27
|
+
setViewState(viewState: ViewState): void;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=reset-view-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset-view-widget.d.ts","sourceRoot":"","sources":["../src/reset-view-widget.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAC,UAAU,EAAE,eAAe,EAAC,yBAAsB;AAG1D,yCAAyC;AACzC,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzC,yCAAyC;AACzC,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG;IACnD,8DAA8D;IAC9D,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU,CAAC,oBAAoB,CAAC;IACnE,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAOjD;IAEF,SAAS,SAA4B;IACrC,SAAS,EAAE,eAAe,CAAc;gBAE5B,KAAK,GAAE,oBAAyB;IAK5C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAK7C,YAAY;IAaZ,WAAW;IAKX,YAAY,CAAC,SAAS,EAAE,SAAS;CAWlC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx } from "preact/jsx-runtime";
|
|
2
|
+
import { render } from 'preact';
|
|
3
|
+
import { WidgetImpl } from "./widget-impl.js";
|
|
4
|
+
import { IconButton } from "./components.js";
|
|
5
|
+
/**
|
|
6
|
+
* A button widget that resets the view state of deck to an initial state.
|
|
7
|
+
*/
|
|
8
|
+
export class ResetViewWidget extends WidgetImpl {
|
|
9
|
+
constructor(props = {}) {
|
|
10
|
+
super({ ...ResetViewWidget.defaultProps, ...props });
|
|
11
|
+
this.className = 'deck-widget-reset-view';
|
|
12
|
+
this.placement = 'top-left';
|
|
13
|
+
this.placement = props.placement ?? this.placement;
|
|
14
|
+
}
|
|
15
|
+
setProps(props) {
|
|
16
|
+
this.placement = props.placement ?? this.placement;
|
|
17
|
+
super.setProps(props);
|
|
18
|
+
}
|
|
19
|
+
onRenderHTML() {
|
|
20
|
+
const element = this.element;
|
|
21
|
+
if (!element)
|
|
22
|
+
return;
|
|
23
|
+
render(_jsx(IconButton, { className: "deck-widget-reset-focus", label: this.props.label, onClick: this.handleClick.bind(this) }), element);
|
|
24
|
+
}
|
|
25
|
+
handleClick() {
|
|
26
|
+
const initialViewState = this.props.initialViewState || this.deck?.props.initialViewState;
|
|
27
|
+
this.setViewState(initialViewState);
|
|
28
|
+
}
|
|
29
|
+
setViewState(viewState) {
|
|
30
|
+
const viewId = this.props.viewId || viewState?.id || 'default-view';
|
|
31
|
+
const nextViewState = {
|
|
32
|
+
...viewState
|
|
33
|
+
// only works for geospatial?
|
|
34
|
+
// transitionDuration: this.props.transitionDuration,
|
|
35
|
+
// transitionInterpolator: new FlyToInterpolator()
|
|
36
|
+
};
|
|
37
|
+
// @ts-ignore Using private method temporary until there's a public one
|
|
38
|
+
this.deck._onViewStateChange({ viewId, viewState: nextViewState, interactionState: {} });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
ResetViewWidget.defaultProps = {
|
|
42
|
+
...WidgetImpl.defaultProps,
|
|
43
|
+
id: 'reset-view',
|
|
44
|
+
placement: 'top-left',
|
|
45
|
+
label: 'Reset View',
|
|
46
|
+
initialViewState: undefined,
|
|
47
|
+
viewId: undefined
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=reset-view-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset-view-widget.js","sourceRoot":"","sources":["../src/reset-view-widget.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAC,UAAU,EAAkB,yBAAsB;AAC1D,OAAO,EAAC,UAAU,EAAC,wBAAqB;AAiBxC;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,UAAgC;IAanE,YAAY,QAA8B,EAAE;QAC1C,KAAK,CAAC,EAAC,GAAG,eAAe,CAAC,YAAY,EAAE,GAAG,KAAK,EAAC,CAAC,CAAC;QAJrD,cAAS,GAAG,wBAAwB,CAAC;QACrC,cAAS,GAAoB,UAAU,CAAC;QAItC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;IACrD,CAAC;IAED,QAAQ,CAAC,KAAoC;QAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACnD,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,YAAY;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,CACJ,KAAC,UAAU,IACT,SAAS,EAAC,yBAAyB,EACnC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GACpC,EACF,OAAO,CACR,CAAC;IACJ,CAAC;IAED,WAAW;QACT,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC;QAC1F,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACtC,CAAC;IAED,YAAY,CAAC,SAAoB;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,EAAE,IAAI,cAAc,CAAC;QACpE,MAAM,aAAa,GAAG;YACpB,GAAG,SAAS;YACZ,6BAA6B;YAC7B,qDAAqD;YACrD,kDAAkD;SACnD,CAAC;QACF,uEAAuE;QACvE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,EAAC,CAAC,CAAC;IACzF,CAAC;;AAlDM,4BAAY,GAAmC;IACpD,GAAG,UAAU,CAAC,YAAY;IAC1B,EAAE,EAAE,YAAY;IAChB,SAAS,EAAE,UAAU;IACrB,KAAK,EAAE,YAAY;IACnB,gBAAgB,EAAE,SAAU;IAC5B,MAAM,EAAE,SAAU;CACnB,AAPkB,CAOjB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { WidgetImpl, WidgetImplProps } from "./widget-impl.js";
|
|
2
|
+
import type { WidgetPlacement } from '@deck.gl/core';
|
|
3
|
+
/** Properties for the ScreenshotWidget */
|
|
4
|
+
export type ScreenshotWidgetProps = WidgetImplProps & {
|
|
5
|
+
/** Widget positioning within the view. Default 'top-left'. */
|
|
6
|
+
placement?: WidgetPlacement;
|
|
7
|
+
/** Tooltip message */
|
|
8
|
+
label?: string;
|
|
9
|
+
/** Filename to save to */
|
|
10
|
+
filename?: string;
|
|
11
|
+
/** Image format */
|
|
12
|
+
imageFormat?: 'image/png' | 'image/jpeg';
|
|
13
|
+
/** Callback, if defined user overrides the capture logic */
|
|
14
|
+
onCapture?: (widget: ScreenshotWidget) => void;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* A button widget that captures a screenshot of the current canvas and downloads it as a (png) file.
|
|
18
|
+
* @note only captures canvas contents, not HTML DOM or CSS styles
|
|
19
|
+
*/
|
|
20
|
+
export declare class ScreenshotWidget extends WidgetImpl<ScreenshotWidgetProps> {
|
|
21
|
+
static defaultProps: Required<ScreenshotWidgetProps>;
|
|
22
|
+
className: string;
|
|
23
|
+
placement: WidgetPlacement;
|
|
24
|
+
constructor(props?: ScreenshotWidgetProps);
|
|
25
|
+
setProps(props: Partial<ScreenshotWidgetProps>): void;
|
|
26
|
+
onRenderHTML(): void;
|
|
27
|
+
handleClick(): void;
|
|
28
|
+
/** @note only captures canvas contents, not HTML DOM or CSS styles */
|
|
29
|
+
captureScreenToDataURL(imageFormat: string): string | undefined;
|
|
30
|
+
/** Download a data URL */
|
|
31
|
+
downloadDataURL(dataURL: string, filename: string): void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=screenshot-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot-widget.d.ts","sourceRoot":"","sources":["../src/screenshot-widget.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAC,UAAU,EAAE,eAAe,EAAC,yBAAsB;AAG1D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAEnD,0CAA0C;AAC1C,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG;IACpD,8DAA8D;IAC9D,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,WAAW,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IACzC,4DAA4D;IAC5D,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,qBAAqB,CAAC;IACrE,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAQlD;IAEF,SAAS,SAA4B;IACrC,SAAS,EAAE,eAAe,CAAc;gBAE5B,KAAK,GAAE,qBAA0B;IAK7C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAK9C,YAAY;IAaZ,WAAW;IAYX,sEAAsE;IACtE,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK/D,0BAA0B;IAC1B,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAMzD"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { jsx as _jsx } from "preact/jsx-runtime";
|
|
2
|
+
// deck.gl
|
|
3
|
+
// SPDX-License-Identifier: MIT
|
|
4
|
+
// Copyright (c) vis.gl contributors
|
|
5
|
+
/* global document */
|
|
6
|
+
import { WidgetImpl } from "./widget-impl.js";
|
|
7
|
+
import { render } from 'preact';
|
|
8
|
+
import { IconButton } from "./components.js";
|
|
9
|
+
/**
|
|
10
|
+
* A button widget that captures a screenshot of the current canvas and downloads it as a (png) file.
|
|
11
|
+
* @note only captures canvas contents, not HTML DOM or CSS styles
|
|
12
|
+
*/
|
|
13
|
+
export class ScreenshotWidget extends WidgetImpl {
|
|
14
|
+
constructor(props = {}) {
|
|
15
|
+
super({ ...ScreenshotWidget.defaultProps, ...props });
|
|
16
|
+
this.className = 'deck-widget-screenshot';
|
|
17
|
+
this.placement = 'top-left';
|
|
18
|
+
this.placement = props.placement ?? this.placement;
|
|
19
|
+
}
|
|
20
|
+
setProps(props) {
|
|
21
|
+
this.placement = props.placement ?? this.placement;
|
|
22
|
+
super.setProps(props);
|
|
23
|
+
}
|
|
24
|
+
onRenderHTML() {
|
|
25
|
+
const element = this.element;
|
|
26
|
+
if (!element)
|
|
27
|
+
return;
|
|
28
|
+
render(_jsx(IconButton, { className: "deck-widget-camera", label: this.props.label, onClick: this.handleClick.bind(this) }), element);
|
|
29
|
+
}
|
|
30
|
+
handleClick() {
|
|
31
|
+
// Allow user to override the capture logic
|
|
32
|
+
if (this.props.onCapture) {
|
|
33
|
+
this.props.onCapture(this);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const dataURL = this.captureScreenToDataURL(this.props.imageFormat);
|
|
37
|
+
if (dataURL) {
|
|
38
|
+
this.downloadDataURL(dataURL, this.props.filename);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** @note only captures canvas contents, not HTML DOM or CSS styles */
|
|
42
|
+
captureScreenToDataURL(imageFormat) {
|
|
43
|
+
const canvas = this.deck?.getCanvas();
|
|
44
|
+
return canvas?.toDataURL(imageFormat);
|
|
45
|
+
}
|
|
46
|
+
/** Download a data URL */
|
|
47
|
+
downloadDataURL(dataURL, filename) {
|
|
48
|
+
const link = document.createElement('a');
|
|
49
|
+
link.href = dataURL;
|
|
50
|
+
link.download = filename;
|
|
51
|
+
link.click();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
ScreenshotWidget.defaultProps = {
|
|
55
|
+
...WidgetImpl.defaultProps,
|
|
56
|
+
id: 'screenshot',
|
|
57
|
+
placement: 'top-left',
|
|
58
|
+
label: 'Screenshot',
|
|
59
|
+
filename: 'screenshot.png',
|
|
60
|
+
imageFormat: 'image/png',
|
|
61
|
+
onCapture: undefined
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=screenshot-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot-widget.js","sourceRoot":"","sources":["../src/screenshot-widget.tsx"],"names":[],"mappings":";AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,qBAAqB;AACrB,OAAO,EAAC,UAAU,EAAkB,yBAAsB;AAC1D,OAAO,EAAI,MAAM,EAAC,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAC,UAAU,EAAC,wBAAqB;AAiBxC;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,UAAiC;IAcrE,YAAY,QAA+B,EAAE;QAC3C,KAAK,CAAC,EAAC,GAAG,gBAAgB,CAAC,YAAY,EAAE,GAAG,KAAK,EAAC,CAAC,CAAC;QAJtD,cAAS,GAAG,wBAAwB,CAAC;QACrC,cAAS,GAAoB,UAAU,CAAC;QAItC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;IACrD,CAAC;IAED,QAAQ,CAAC,KAAqC;QAC5C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACnD,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,YAAY;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,CACJ,KAAC,UAAU,IACT,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GACpC,EACF,OAAO,CACR,CAAC;IACJ,CAAC;IAED,WAAW;QACT,2CAA2C;QAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,sBAAsB,CAAC,WAAmB;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACtC,OAAO,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,0BAA0B;IAC1B,eAAe,CAAC,OAAe,EAAE,QAAgB;QAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;;AA5DM,6BAAY,GAAoC;IACrD,GAAG,UAAU,CAAC,YAAY;IAC1B,EAAE,EAAE,YAAY;IAChB,SAAS,EAAE,UAAU;IACrB,KAAK,EAAE,YAAY;IACnB,QAAQ,EAAE,gBAAgB;IAC1B,WAAW,EAAE,WAAW;IACxB,SAAS,EAAE,SAAU;CACtB,AARkB,CAQjB"}
|
package/dist/stylesheet.css
CHANGED
|
@@ -147,3 +147,15 @@
|
|
|
147
147
|
url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 26 26" fill="black"> wBox="0 0 26 26" fill="none"><path d="M7.89332 13.8866C7.64334 13.8866 7.43196 13.8 7.25918 13.6268C7.08639 13.4535 7 13.2416 7 12.9909C7 12.7403 7.08639 12.5291 7.25918 12.3575C7.43196 12.1858 7.64334 12.1 7.89332 12.1H18.099C18.349 12.1 18.5617 12.1866 18.737 12.3598C18.9123 12.5331 19 12.745 19 12.9957C19 13.2463 18.9123 13.4575 18.737 13.6291C18.5617 13.8008 18.349 13.8866 18.099 13.8866H7.89332Z"/></svg>')
|
|
148
148
|
);
|
|
149
149
|
}
|
|
150
|
+
|
|
151
|
+
/* Screenshot styles */
|
|
152
|
+
.deck-widget.deck-widget-screenshot button.deck-widget-camera .deck-widget-icon {
|
|
153
|
+
mask-image: var(
|
|
154
|
+
--icon-camera,
|
|
155
|
+
url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" fill="black"><path d="M480-260q75 0 127.5-52.5T660-440q0-75-52.5-127.5T480-620q-75 0-127.5 52.5T300-440q0 75 52.5 127.5T480-260Zm0-80q-42 0-71-29t-29-71q0-42 29-71t71-29q42 0 71 29t29 71q0 42-29 71t-71 29ZM160-120q-33 0-56.5-23.5T80-200v-480q0-33 23.5-56.5T160-760h126l74-80h240l74 80h126q33 0 56.5 23.5T880-680v480q0 33-23.5 56.5T800-120H160Zm0-80h640v-480H638l-73-80H395l-73 80H160v480Zm320-240Z"/></svg>')
|
|
156
|
+
);
|
|
157
|
+
-webkit-mask-image: var(
|
|
158
|
+
--icon-camera,
|
|
159
|
+
url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" fill="black"><path d="M480-260q75 0 127.5-52.5T660-440q0-75-52.5-127.5T480-620q-75 0-127.5 52.5T300-440q0 75 52.5 127.5T480-260Zm0-80q-42 0-71-29t-29-71q0-42 29-71t71-29q42 0 71 29t29 71q0 42-29 71t-71 29ZM160-120q-33 0-56.5-23.5T80-200v-480q0-33 23.5-56.5T160-760h126l74-80h240l74 80h126q33 0 56.5 23.5T880-680v480q0 33-23.5 56.5T800-120H160Zm0-80h640v-480H638l-73-80H395l-73 80H160v480Zm320-240Z"/></svg>')
|
|
160
|
+
);
|
|
161
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Deck, Widget } from '@deck.gl/core';
|
|
2
|
+
export type WidgetImplProps = {
|
|
3
|
+
id?: string;
|
|
4
|
+
/** CSS inline style overrides. */
|
|
5
|
+
style?: Partial<CSSStyleDeclaration>;
|
|
6
|
+
/** Additional CSS class. */
|
|
7
|
+
className?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare abstract class WidgetImpl<PropsT extends WidgetImplProps> implements Widget<PropsT> {
|
|
10
|
+
id: string;
|
|
11
|
+
props: Required<PropsT>;
|
|
12
|
+
deck?: Deck<any>;
|
|
13
|
+
element?: HTMLDivElement;
|
|
14
|
+
static defaultProps: Required<WidgetImplProps>;
|
|
15
|
+
abstract className: Required<string>;
|
|
16
|
+
constructor(props: Required<PropsT>);
|
|
17
|
+
abstract onRenderHTML(): void;
|
|
18
|
+
onAdd({ deck }: {
|
|
19
|
+
deck: Deck<any>;
|
|
20
|
+
}): HTMLDivElement;
|
|
21
|
+
onRemove(): void;
|
|
22
|
+
setProps(props: Partial<PropsT>): void;
|
|
23
|
+
_createRootElement(props: {
|
|
24
|
+
widgetClassName: string;
|
|
25
|
+
className?: string;
|
|
26
|
+
style?: Partial<CSSStyleDeclaration>;
|
|
27
|
+
}): HTMLDivElement;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=widget-impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-impl.d.ts","sourceRoot":"","sources":["../src/widget-impl.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrC,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,8BAAsB,UAAU,CAAC,MAAM,SAAS,eAAe,CAAE,YAAW,MAAM,CAAC,MAAM,CAAC;IACxF,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExB,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAI5C;IAEF,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAEzB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;IAKnC,QAAQ,CAAC,YAAY,IAAI,IAAI;IAE7B,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE;QAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;KAAC,GAAG,cAAc;IAahD,QAAQ;IAKR,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;IAmB/B,kBAAkB,CAAC,KAAK,EAAE;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;KACtC;CASF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
/* global document */
|
|
5
|
+
import { _deepEqual, _applyStyles, _removeStyles } from '@deck.gl/core';
|
|
6
|
+
export class WidgetImpl {
|
|
7
|
+
constructor(props) {
|
|
8
|
+
this.id = props.id || 'widget';
|
|
9
|
+
this.props = props;
|
|
10
|
+
}
|
|
11
|
+
onAdd({ deck }) {
|
|
12
|
+
this.deck = deck;
|
|
13
|
+
const { style, className } = this.props;
|
|
14
|
+
const el = this._createRootElement({
|
|
15
|
+
widgetClassName: this.className,
|
|
16
|
+
className,
|
|
17
|
+
style
|
|
18
|
+
});
|
|
19
|
+
this.element = el;
|
|
20
|
+
this.onRenderHTML();
|
|
21
|
+
return this.element;
|
|
22
|
+
}
|
|
23
|
+
onRemove() {
|
|
24
|
+
this.deck = undefined;
|
|
25
|
+
this.element = undefined;
|
|
26
|
+
}
|
|
27
|
+
setProps(props) {
|
|
28
|
+
const oldProps = this.props;
|
|
29
|
+
const el = this.element;
|
|
30
|
+
if (el) {
|
|
31
|
+
if (oldProps.className !== props.className) {
|
|
32
|
+
if (oldProps.className)
|
|
33
|
+
el.classList.remove(oldProps.className);
|
|
34
|
+
if (props.className)
|
|
35
|
+
el.classList.add(props.className);
|
|
36
|
+
}
|
|
37
|
+
if (!_deepEqual(oldProps.style, props.style, 1)) {
|
|
38
|
+
_removeStyles(el, oldProps.style);
|
|
39
|
+
_applyStyles(el, props.style);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
Object.assign(this.props, props);
|
|
43
|
+
this.onRenderHTML();
|
|
44
|
+
}
|
|
45
|
+
_createRootElement(props) {
|
|
46
|
+
const { widgetClassName, className, style } = props;
|
|
47
|
+
const element = document.createElement('div');
|
|
48
|
+
['deck-widget', widgetClassName, className]
|
|
49
|
+
.filter((cls) => typeof cls === 'string' && cls.length > 0)
|
|
50
|
+
.forEach(className => element.classList.add(className));
|
|
51
|
+
_applyStyles(element, style);
|
|
52
|
+
return element;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
WidgetImpl.defaultProps = {
|
|
56
|
+
id: 'widget',
|
|
57
|
+
style: {},
|
|
58
|
+
className: ''
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=widget-impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-impl.js","sourceRoot":"","sources":["../src/widget-impl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,qBAAqB;AACrB,OAAO,EAAC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAC,MAAM,eAAe,CAAC;AAUtE,MAAM,OAAgB,UAAU;IAe9B,YAAY,KAAuB;QACjC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,QAAQ,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAID,KAAK,CAAC,EAAC,IAAI,EAAoB;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,EAAC,KAAK,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACjC,eAAe,EAAE,IAAI,CAAC,SAAS;YAC/B,SAAS;YACT,KAAK;SACN,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,KAAsB;QAC7B,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,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;gBAChD,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,kBAAkB,CAAC,KAIlB;QACC,MAAM,EAAC,eAAe,EAAE,SAAS,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC;QAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC,aAAa,EAAE,eAAe,EAAE,SAAS,CAAC;aACxC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;aACzE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1D,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;;AAhEM,uBAAY,GAA8B;IAC/C,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,EAAE;CACd,CAAC"}
|
package/dist/zoom-widget.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export type ZoomWidgetProps = {
|
|
|
22
22
|
*/
|
|
23
23
|
zoomOutLabel?: string;
|
|
24
24
|
/**
|
|
25
|
-
* Zoom transition duration in ms.
|
|
25
|
+
* Zoom transition duration in ms. 0 disables the transition
|
|
26
26
|
*/
|
|
27
27
|
transitionDuration?: number;
|
|
28
28
|
/**
|
|
@@ -36,7 +36,7 @@ export type ZoomWidgetProps = {
|
|
|
36
36
|
};
|
|
37
37
|
export declare class ZoomWidget implements Widget<ZoomWidgetProps> {
|
|
38
38
|
id: string;
|
|
39
|
-
props: ZoomWidgetProps
|
|
39
|
+
props: Required<ZoomWidgetProps>;
|
|
40
40
|
placement: WidgetPlacement;
|
|
41
41
|
viewId?: string | null;
|
|
42
42
|
viewports: {
|
|
@@ -44,7 +44,8 @@ export declare class ZoomWidget implements Widget<ZoomWidgetProps> {
|
|
|
44
44
|
};
|
|
45
45
|
deck?: Deck<any>;
|
|
46
46
|
element?: HTMLDivElement;
|
|
47
|
-
|
|
47
|
+
static defaultProps: Required<ZoomWidgetProps>;
|
|
48
|
+
constructor(props?: ZoomWidgetProps);
|
|
48
49
|
onAdd({ deck }: {
|
|
49
50
|
deck: Deck<any>;
|
|
50
51
|
}): HTMLDivElement;
|
|
@@ -54,6 +55,10 @@ export declare class ZoomWidget implements Widget<ZoomWidgetProps> {
|
|
|
54
55
|
handleZoom(viewport: Viewport, nextZoom: number): void;
|
|
55
56
|
handleZoomIn(): void;
|
|
56
57
|
handleZoomOut(): void;
|
|
58
|
+
/**
|
|
59
|
+
* @todo - move to deck or widget manager
|
|
60
|
+
*/
|
|
61
|
+
private setViewState;
|
|
57
62
|
private update;
|
|
58
63
|
}
|
|
59
64
|
//# sourceMappingURL=zoom-widget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoom-widget.d.ts","sourceRoot":"","sources":["../src/zoom-widget.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"zoom-widget.d.ts","sourceRoot":"","sources":["../src/zoom-widget.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAI3E,MAAM,MAAM,eAAe,GAAG;IAC5B,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,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;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,UAAW,YAAW,MAAM,CAAC,eAAe,CAAC;IACxD,EAAE,SAAU;IACZ,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IACjC,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;IAEzB,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAU5C;gBAEU,KAAK,GAAE,eAAoB;IAWvC,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE;QAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;KAAC,GAAG,cAAc;IAYhD,QAAQ;IAKR,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC;IAqBxC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ;IAInC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM;IAc/C,YAAY;IAMZ,aAAa;IAMb;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,MAAM;CAqBf"}
|