@geoql/v-maplibre 1.6.1 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +3 -2
  2. package/dist/controls/index.d.ts +2 -2
  3. package/dist/controls/layer/VControlLayer.vue.d.ts +2 -2
  4. package/dist/controls/legend/types.d.ts +16 -2
  5. package/dist/controls/lidar/VControlLidar.vue.d.ts +51 -5
  6. package/dist/controls/lidar/types.d.ts +49 -5
  7. package/dist/{index-Bt_rREAc.js → gpu-modules-COvkDUUI.js} +71 -68
  8. package/dist/gpu-modules-COvkDUUI.js.map +1 -0
  9. package/dist/index.d.ts +3 -3
  10. package/dist/index.js +19818 -3479
  11. package/dist/index.js.map +1 -1
  12. package/dist/layers/deckgl/arc/VLayerDeckglArc.vue.d.ts +2 -2
  13. package/dist/layers/deckgl/bitmap/VLayerDeckglBitmap.vue.d.ts +2 -2
  14. package/dist/layers/deckgl/cog/VLayerDeckglCOG.vue.d.ts +3 -3
  15. package/dist/layers/deckgl/column/VLayerDeckglColumn.vue.d.ts +3 -3
  16. package/dist/layers/deckgl/contour/VLayerDeckglContour.vue.d.ts +3 -3
  17. package/dist/layers/deckgl/geohash/VLayerDeckglGeohash.vue.d.ts +3 -3
  18. package/dist/layers/deckgl/geojson/VLayerDeckglGeojson.vue.d.ts +3 -3
  19. package/dist/layers/deckgl/great-circle/VLayerDeckglGreatCircle.vue.d.ts +2 -2
  20. package/dist/layers/deckgl/grid/VLayerDeckglGrid.vue.d.ts +2 -2
  21. package/dist/layers/deckgl/grid-cell/VLayerDeckglGridCell.vue.d.ts +2 -2
  22. package/dist/layers/deckgl/h3-cluster/VLayerDeckglH3Cluster.vue.d.ts +3 -3
  23. package/dist/layers/deckgl/h3-hexagon/VLayerDeckglH3Hexagon.vue.d.ts +3 -3
  24. package/dist/layers/deckgl/heatmap/VLayerDeckglHeatmap.vue.d.ts +3 -3
  25. package/dist/layers/deckgl/hexagon/VLayerDeckglHexagon.vue.d.ts +2 -2
  26. package/dist/layers/deckgl/icon/VLayerDeckglIcon.vue.d.ts +3 -3
  27. package/dist/layers/deckgl/line/VLayerDeckglLine.vue.d.ts +2 -2
  28. package/dist/layers/deckgl/mosaic/VLayerDeckglMosaic.vue.d.ts +8 -2
  29. package/dist/layers/deckgl/mvt/VLayerDeckglMVT.vue.d.ts +4 -4
  30. package/dist/layers/deckgl/path/VLayerDeckglPath.vue.d.ts +3 -3
  31. package/dist/layers/deckgl/point-cloud/VLayerDeckglPointCloud.vue.d.ts +3 -3
  32. package/dist/layers/deckgl/polygon/VLayerDeckglPolygon.vue.d.ts +3 -3
  33. package/dist/layers/deckgl/quadkey/VLayerDeckglQuadkey.vue.d.ts +3 -3
  34. package/dist/layers/deckgl/s2/VLayerDeckglS2.vue.d.ts +3 -3
  35. package/dist/layers/deckgl/scatterplot/VLayerDeckglScatterplot.vue.d.ts +3 -3
  36. package/dist/layers/deckgl/scenegraph/VLayerDeckglScenegraph.vue.d.ts +2 -2
  37. package/dist/layers/deckgl/screen-grid/VLayerDeckglScreenGrid.vue.d.ts +2 -2
  38. package/dist/layers/deckgl/simple-mesh/VLayerDeckglSimpleMesh.vue.d.ts +2 -2
  39. package/dist/layers/deckgl/solid-polygon/VLayerDeckglSolidPolygon.vue.d.ts +3 -3
  40. package/dist/layers/deckgl/terrain/VLayerDeckglTerrain.vue.d.ts +2 -2
  41. package/dist/layers/deckgl/text/VLayerDeckglText.vue.d.ts +3 -3
  42. package/dist/layers/deckgl/tile/VLayerDeckglTile.vue.d.ts +3 -3
  43. package/dist/layers/deckgl/tile-3d/VLayerDeckglTile3D.vue.d.ts +3 -3
  44. package/dist/layers/deckgl/trips/VLayerDeckglTrips.vue.d.ts +3 -3
  45. package/dist/layers/deckgl/wind-particle/VLayerDeckglWindParticle.vue.d.ts +2 -2
  46. package/dist/layers/deckgl/wms/VLayerDeckglWMS.vue.d.ts +2 -2
  47. package/dist/layers/index.d.ts +1 -0
  48. package/dist/layers/maplibre/custom/cluster/VLayerMaplibreCluster.vue.d.ts +2 -0
  49. package/dist/layers/maplibre/custom/route/VLayerMaplibreRoute.vue.d.ts +1 -1
  50. package/dist/layers/maplibre/custom/starfield/VLayerMaplibreStarfield.vue.d.ts +43 -0
  51. package/dist/layers/maplibre/custom/starfield/index.d.ts +1 -0
  52. package/dist/layers/maplibre/image/VLayerMaplibreImage.vue.d.ts +1 -1
  53. package/dist/layers/maplibre/pmtile/VLayerMaplibrePmtile.vue.d.ts +1 -1
  54. package/dist/layers/maplibre/vector/VLayerMaplibreVector.vue.d.ts +16 -16
  55. package/dist/layers/maplibre/video/VLayerMaplibreVideo.vue.d.ts +1 -1
  56. package/dist/map/VMap.vue.d.ts +20 -20
  57. package/dist/v-maplibre.css +2 -1
  58. package/package.json +42 -45
  59. package/dist/decoder-CLokFc0V.js +0 -9
  60. package/dist/decoder-CLokFc0V.js.map +0 -1
  61. package/dist/deflate-yeu3ogBn.js +0 -11
  62. package/dist/deflate-yeu3ogBn.js.map +0 -1
  63. package/dist/geotiff-BUZniE5g.js +0 -3106
  64. package/dist/geotiff-BUZniE5g.js.map +0 -1
  65. package/dist/index-Bt_rREAc.js.map +0 -1
  66. package/dist/index-CA8I5Z2-.js +0 -4667
  67. package/dist/index-CA8I5Z2-.js.map +0 -1
  68. package/dist/jpeg-B7yImnpY.js +0 -534
  69. package/dist/jpeg-B7yImnpY.js.map +0 -1
  70. package/dist/lerc-CqgA9njy.js +0 -1032
  71. package/dist/lerc-CqgA9njy.js.map +0 -1
  72. package/dist/lzw-DL9RcHOz.js +0 -85
  73. package/dist/lzw-DL9RcHOz.js.map +0 -1
  74. package/dist/packbits-YEJGULcy.js +0 -25
  75. package/dist/packbits-YEJGULcy.js.map +0 -1
  76. package/dist/pako.esm-Bx5X36Wo.js +0 -1075
  77. package/dist/pako.esm-Bx5X36Wo.js.map +0 -1
  78. package/dist/raw-CoQHiEnn.js +0 -10
  79. package/dist/raw-CoQHiEnn.js.map +0 -1
  80. package/dist/webimage-BXLN-zu8.js +0 -20
  81. package/dist/webimage-BXLN-zu8.js.map +0 -1
package/README.md CHANGED
@@ -44,10 +44,10 @@ Install these packages based on the features you need:
44
44
 
45
45
  ```bash
46
46
  # Raster/COG layers (Cloud-Optimized GeoTIFF)
47
- bun add @developmentseed/deck.gl-raster @developmentseed/deck.gl-geotiff geotiff
47
+ bun add @developmentseed/deck.gl-raster @developmentseed/deck.gl-geotiff @developmentseed/geotiff
48
48
 
49
49
  # COG Mosaic layers (client-side mosaicking of multiple COGs)
50
- bun add @developmentseed/deck.gl-raster @developmentseed/deck.gl-geotiff geotiff proj4
50
+ bun add @developmentseed/deck.gl-raster @developmentseed/deck.gl-geotiff @developmentseed/geotiff
51
51
 
52
52
  # LiDAR viewer control
53
53
  bun add maplibre-gl-lidar
@@ -97,6 +97,7 @@ bun add maplibre-gl-wind
97
97
  - **`VLayerMaplibreCluster`** - Clustered point layers
98
98
  - **`VLayerMaplibrePmtile`** - PMTiles layers
99
99
  - **`VLayerMaplibreRoute`** - Route/delivery tracking visualization
100
+ - **`VLayerMaplibreStarfield`** - Three.js starfield skybox for globe projections (requires `@geoql/maplibre-gl-starfield`, `three`)
100
101
 
101
102
  ### deck.gl Layer Components
102
103
 
@@ -4,10 +4,10 @@ export { GeolocateControl as VControlGeolocate } from './geolocate';
4
4
  export { NavigationControl as VControlNavigation } from './navigation';
5
5
  export { ScaleControl as VControlScale } from './scale';
6
6
  export { LidarControl as VControlLidar } from './lidar';
7
- export type { LidarControlOptions, ColorScheme, CopcLoadingMode, PointCloudInfo, PointCloudBounds, StreamingProgress, LidarLoadEventData, LidarErrorEventData, LidarUnloadEventData, } from './lidar';
7
+ export type { LidarControlOptions, ColorScheme, ColorSchemeType, ColorSchemeConfig, CopcLoadingMode, ColormapName, ColorRangeConfig, PointCloudInfo, PointCloudBounds, StreamingProgress, StreamingLoaderOptions, LidarLoadEventData, LidarErrorEventData, LidarUnloadEventData, } from './lidar';
8
8
  export { VControlLayer, VControlLayerGroup } from './layer';
9
9
  export type { LayerControlOptions, LayerType, ControlPosition, LayerConfig, } from './layer';
10
10
  export { layerControlEvents } from './layer';
11
11
  export { VControlLegend } from './legend';
12
- export type { LegendType, CategoryLegendItem, GradientLegendItem, SizeLegendItem, LegendControlOptions, FilterState, ExpressionValue, DeckLayerWithExtensions, } from './legend';
12
+ export type { LegendType, CategoryLegendItem, GradientLegendItem, SizeLegendItem, TableLegendItem, LegendControlOptions, FilterState, ExpressionValue, DeckLayerWithExtensions, } from './legend';
13
13
  export { LEGEND_EVENTS } from './legend';
@@ -22,10 +22,10 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
22
22
  "onUpdate:visible"?: ((visible: boolean) => any) | undefined;
23
23
  "onUpdate:opacity"?: ((opacity: number) => any) | undefined;
24
24
  }>, {
25
+ visible: boolean;
26
+ opacity: number;
25
27
  position: ControlPosition;
26
28
  title: string;
27
- opacity: number;
28
- visible: boolean;
29
29
  layerType: LayerType;
30
30
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
31
31
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,5 +1,5 @@
1
1
  export type { ControlPosition } from 'maplibre-gl';
2
- export type LegendType = 'category' | 'gradient' | 'size';
2
+ export type LegendType = 'category' | 'gradient' | 'size' | 'table';
3
3
  export type LayerType = 'maplibre' | 'deckgl';
4
4
  export interface CategoryLegendItem {
5
5
  value: string | number;
@@ -21,7 +21,21 @@ export interface SizeLegendItem {
21
21
  label: string;
22
22
  size: number;
23
23
  }
24
- export type LegendItem = CategoryLegendItem | GradientLegendItem | SizeLegendItem;
24
+ export interface TableLegendItem {
25
+ /** Display name — left column (e.g. "Puerto Rico") */
26
+ label: string;
27
+ /** Raw numeric value for sorting */
28
+ value: number;
29
+ /** Pre-formatted display string (e.g. "6.0%"). Falls back to `${value}${unit}` */
30
+ formattedValue?: string;
31
+ /** Unit appended to value when formattedValue is absent (e.g. "%") */
32
+ unit?: string;
33
+ /** CSS color string for the swatch */
34
+ color: string;
35
+ /** Optional description shown as tooltip */
36
+ description?: string;
37
+ }
38
+ export type LegendItem = CategoryLegendItem | GradientLegendItem | SizeLegendItem | TableLegendItem;
25
39
  export interface FilterState {
26
40
  visibleValues: (string | number)[];
27
41
  minRange?: number;
@@ -1,22 +1,42 @@
1
- import type { ControlPosition, LidarControlOptions, ColorScheme, PointCloudInfo } from './types';
1
+ import type { ControlPosition, LidarControlOptions, ColorScheme, ColormapName, ColorRangeConfig, PointCloudInfo, StreamingLoaderOptions, CopcLoadingMode } from './types';
2
2
  type __VLS_Props = {
3
3
  options?: LidarControlOptions;
4
4
  position?: ControlPosition;
5
5
  defaultUrl?: string;
6
6
  };
7
7
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
8
- loadPointCloud: (source: string | File | ArrayBuffer) => Promise<PointCloudInfo> | undefined;
8
+ loadPointCloud: (source: string | File | ArrayBuffer, options?: {
9
+ loadingMode?: CopcLoadingMode;
10
+ }) => Promise<PointCloudInfo> | undefined;
11
+ loadPointCloudStreaming: (source: string | File | ArrayBuffer, options?: StreamingLoaderOptions) => Promise<PointCloudInfo> | undefined;
12
+ loadPointCloudEptStreaming: (eptUrl: string, options?: StreamingLoaderOptions) => Promise<PointCloudInfo> | undefined;
9
13
  unloadPointCloud: (id?: string) => void | undefined;
10
14
  flyToPointCloud: (id?: string) => void | undefined;
11
15
  setPointSize: (size: number) => void | undefined;
12
16
  setColorScheme: (scheme: ColorScheme) => void | undefined;
17
+ setColormap: (colormap: ColormapName) => void | undefined;
18
+ getColormap: () => ColormapName | undefined;
19
+ setColorRange: (config: ColorRangeConfig) => void | undefined;
20
+ getColorRange: () => ColorRangeConfig | undefined;
13
21
  setOpacity: (opacity: number) => void | undefined;
14
22
  setPickable: (pickable: boolean) => void | undefined;
15
23
  setUsePercentile: (use: boolean) => void | undefined;
24
+ getUsePercentile: () => boolean | undefined;
16
25
  setElevationRange: (min: number, max: number) => void | undefined;
17
26
  clearElevationRange: () => void | undefined;
27
+ setPointBudget: (budget: number) => void | undefined;
18
28
  setZOffset: (offset: number) => void | undefined;
19
29
  setZOffsetEnabled: (enabled: boolean) => void | undefined;
30
+ getZOffset: () => number | undefined;
31
+ setTerrain: (enabled: boolean) => void | undefined;
32
+ getTerrain: () => boolean | undefined;
33
+ setPickInfoFields: (fields?: string[]) => void | undefined;
34
+ getPickInfoFields: () => string[] | undefined;
35
+ setClassificationVisibility: (code: number, visible: boolean) => void | undefined;
36
+ showAllClassifications: () => void | undefined;
37
+ hideAllClassifications: () => void | undefined;
38
+ getHiddenClassifications: () => number[] | undefined;
39
+ getAvailableClassifications: () => number[] | undefined;
20
40
  toggle: () => void | undefined;
21
41
  expand: () => void | undefined;
22
42
  collapse: () => void | undefined;
@@ -24,21 +44,44 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
24
44
  getPointClouds: () => PointCloudInfo[] | undefined;
25
45
  stopStreaming: (id?: string) => void | undefined;
26
46
  isStreaming: (id?: string) => boolean | undefined;
47
+ getStreamingProgress: () => unknown;
48
+ getMap: () => unknown;
49
+ getPanelElement: () => HTMLElement | null | undefined;
27
50
  getControl: () => {
28
51
  on: (event: string, handler: (data?: unknown) => void) => void;
29
52
  off: (event: string, handler: (data?: unknown) => void) => void;
30
- loadPointCloud: (source: string | File | ArrayBuffer) => Promise<PointCloudInfo>;
53
+ loadPointCloud: (source: string | File | ArrayBuffer, options?: {
54
+ loadingMode?: CopcLoadingMode;
55
+ }) => Promise<PointCloudInfo>;
56
+ loadPointCloudStreaming: (source: string | File | ArrayBuffer, options?: StreamingLoaderOptions) => Promise<PointCloudInfo>;
57
+ loadPointCloudEptStreaming: (eptUrl: string, options?: StreamingLoaderOptions) => Promise<PointCloudInfo>;
31
58
  unloadPointCloud: (id?: string) => void;
32
59
  flyToPointCloud: (id?: string) => void;
33
60
  setPointSize: (size: number) => void;
34
- setColorScheme: (scheme: ColorScheme) => void;
35
61
  setOpacity: (opacity: number) => void;
36
- setPickable: (pickable: boolean) => void;
62
+ setColorScheme: (scheme: ColorScheme) => void;
63
+ setColormap: (colormap: ColormapName) => void;
64
+ getColormap: () => ColormapName;
65
+ setColorRange: (config: ColorRangeConfig) => void;
66
+ getColorRange: () => ColorRangeConfig;
37
67
  setUsePercentile: (use: boolean) => void;
68
+ getUsePercentile: () => boolean;
69
+ setPickable: (pickable: boolean) => void;
38
70
  setElevationRange: (min: number, max: number) => void;
39
71
  clearElevationRange: () => void;
72
+ setPointBudget: (budget: number) => void;
40
73
  setZOffset: (offset: number) => void;
41
74
  setZOffsetEnabled: (enabled: boolean) => void;
75
+ getZOffset: () => number;
76
+ setTerrain: (enabled: boolean) => void;
77
+ getTerrain: () => boolean;
78
+ setPickInfoFields: (fields?: string[]) => void;
79
+ getPickInfoFields: () => string[] | undefined;
80
+ setClassificationVisibility: (code: number, visible: boolean) => void;
81
+ showAllClassifications: () => void;
82
+ hideAllClassifications: () => void;
83
+ getHiddenClassifications: () => number[];
84
+ getAvailableClassifications: () => number[];
42
85
  toggle: () => void;
43
86
  expand: () => void;
44
87
  collapse: () => void;
@@ -46,6 +89,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
46
89
  getPointClouds: () => PointCloudInfo[];
47
90
  stopStreaming: (id?: string) => void;
48
91
  isStreaming: (id?: string) => boolean;
92
+ getStreamingProgress: () => unknown;
93
+ getMap: () => unknown;
94
+ getPanelElement: () => HTMLElement | null;
49
95
  } | null;
50
96
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
51
97
  options: LidarControlOptions;
@@ -1,6 +1,32 @@
1
1
  export type { ControlPosition } from 'maplibre-gl';
2
- export type ColorScheme = 'elevation' | 'intensity' | 'classification' | 'rgb';
2
+ /** Color scheme preset types */
3
+ export type ColorSchemeType = 'elevation' | 'intensity' | 'classification' | 'rgb';
4
+ /** Custom color scheme configuration */
5
+ export interface ColorSchemeConfig {
6
+ type: 'gradient' | 'categorical';
7
+ attribute: string;
8
+ colors?: string[];
9
+ domain?: [number, number];
10
+ }
11
+ /** Color scheme can be a preset string or custom configuration */
12
+ export type ColorScheme = ColorSchemeType | ColorSchemeConfig;
13
+ /** COPC loading mode options */
3
14
  export type CopcLoadingMode = 'full' | 'dynamic';
15
+ /** Available colormap names (matplotlib-style) */
16
+ export type ColormapName = 'viridis' | 'plasma' | 'inferno' | 'magma' | 'cividis' | 'turbo' | 'jet' | 'rainbow' | 'terrain' | 'coolwarm' | 'gray';
17
+ /** Configuration for color range mapping */
18
+ export interface ColorRangeConfig {
19
+ /** Mode for determining color range bounds */
20
+ mode: 'percentile' | 'absolute';
21
+ /** Lower percentile bound (used when mode is 'percentile') */
22
+ percentileLow: number;
23
+ /** Upper percentile bound (used when mode is 'percentile') */
24
+ percentileHigh: number;
25
+ /** Absolute minimum value (used when mode is 'absolute') */
26
+ absoluteMin?: number;
27
+ /** Absolute maximum value (used when mode is 'absolute') */
28
+ absoluteMax?: number;
29
+ }
4
30
  export interface PointCloudBounds {
5
31
  minX: number;
6
32
  minY: number;
@@ -26,15 +52,21 @@ export interface StreamingProgress {
26
52
  queueSize: number;
27
53
  isLoading: boolean;
28
54
  }
55
+ /** Options for streaming loaders (COPC/EPT) */
56
+ export interface StreamingLoaderOptions {
57
+ pointBudget?: number;
58
+ maxConcurrentRequests?: number;
59
+ viewportDebounceMs?: number;
60
+ }
29
61
  export interface LidarControlOptions {
30
62
  /** Start collapsed (default: true) */
31
63
  collapsed?: boolean;
32
64
  /** Panel title (default: 'LiDAR Viewer') */
33
65
  title?: string;
34
- /** Panel width in pixels (default: 365) */
66
+ /** Panel width in pixels (default: 320) */
35
67
  panelWidth?: number;
36
68
  /** Panel max height with scrollbar (default: 500) */
37
- panelMaxHeight?: number;
69
+ maxHeight?: number;
38
70
  /** Custom CSS class */
39
71
  className?: string;
40
72
  /** Point size in pixels (default: 2) */
@@ -43,8 +75,14 @@ export interface LidarControlOptions {
43
75
  opacity?: number;
44
76
  /** Color scheme (default: 'elevation') */
45
77
  colorScheme?: ColorScheme;
46
- /** Use 2-98% percentile for coloring (default: true) */
78
+ /** Use 2-98% percentile for coloring (default: true) @deprecated Use colorRange instead */
47
79
  usePercentile?: boolean;
80
+ /** Colormap for elevation/intensity coloring (default: 'viridis') */
81
+ colormap?: ColormapName;
82
+ /** Color range mapping configuration */
83
+ colorRange?: ColorRangeConfig;
84
+ /** Show the colorbar legend (default: true) */
85
+ showColorbar?: boolean;
48
86
  /** Max points to display (default: 1000000) */
49
87
  pointBudget?: number;
50
88
  /** Elevation filter range */
@@ -53,14 +91,20 @@ export interface LidarControlOptions {
53
91
  zOffsetEnabled?: boolean;
54
92
  /** Z offset in meters (default: 0) */
55
93
  zOffset?: number;
94
+ /** Auto-calculate Z offset from 2% percentile (default: true) */
95
+ autoZOffset?: boolean;
56
96
  /** Enable point picking/hover tooltips (default: false) */
57
97
  pickable?: boolean;
58
98
  /** Fields to show in tooltip (default: all) */
59
99
  pickInfoFields?: string[];
60
100
  /** Auto zoom to data after loading (default: true) */
61
101
  autoZoom?: boolean;
62
- /** Loading mode for COPC files (default: 'dynamic') */
102
+ /** Loading mode for COPC files (default: 'full') */
63
103
  copcLoadingMode?: CopcLoadingMode;
104
+ /** Enable 3D terrain (default: false) */
105
+ terrainEnabled?: boolean;
106
+ /** Terrain exaggeration factor (default: 1.0) */
107
+ terrainExaggeration?: number;
64
108
  /** Max points for streaming (default: 5000000) */
65
109
  streamingPointBudget?: number;
66
110
  /** Concurrent node requests (default: 4) */
@@ -1,6 +1,16 @@
1
- const r = (
2
- /* glsl */
3
- `
1
+ var a = `
2
+ vec3 black_zero_to_rgb(float value) {
3
+ return vec3(value, value, value);
4
+ }
5
+ `, m = {
6
+ name: "black-is-zero",
7
+ inject: {
8
+ "fs:#decl": a,
9
+ "fs:DECKGL_FILTER_COLOR": `
10
+ color.rgb = black_zero_to_rgb(color.r);
11
+ `
12
+ }
13
+ }, c = `
4
14
  const vec3 D65 = vec3(
5
15
  0.95047, // Xn
6
16
  1.00000, // Yn
@@ -42,21 +52,15 @@ const r = (
42
52
 
43
53
  return clamp(rgb, 0.0, 1.0);
44
54
  }
45
- `
46
- ), n = {
55
+ `, b = {
47
56
  name: "cielab-to-rgb",
48
57
  inject: {
49
- "fs:#decl": r,
50
- "fs:DECKGL_FILTER_COLOR": (
51
- /* glsl */
52
- `
58
+ "fs:#decl": c,
59
+ "fs:DECKGL_FILTER_COLOR": `
53
60
  color.rgb = cielabToRgb(color);
54
61
  `
55
- )
56
62
  }
57
- }, o = (
58
- /* glsl */
59
- `
63
+ }, o = `
60
64
  vec3 cmykToRgb(vec4 cmyk) {
61
65
  // cmyk in [0.0, 1.0]
62
66
  float invK = 1.0 - cmyk.a;
@@ -67,21 +71,27 @@ const r = (
67
71
  (1.0 - cmyk.b) * invK
68
72
  );
69
73
  }
70
- `
71
- ), l = {
74
+ `, u = {
72
75
  name: "cmyk-to-rgb",
73
76
  inject: {
74
77
  "fs:#decl": o,
75
- "fs:DECKGL_FILTER_COLOR": (
76
- /* glsl */
77
- `
78
+ "fs:DECKGL_FILTER_COLOR": `
78
79
  color.rgb = cmykToRgb(color);
79
80
  `
80
- )
81
81
  }
82
- }, t = (
83
- /* glsl */
84
- `
82
+ }, t = `
83
+ vec3 white_zero_to_rgb(float value) {
84
+ return vec3(1.0 - value, 1.0 - value, 1.0 - value);
85
+ }
86
+ `, n = {
87
+ name: "white-is-zero",
88
+ inject: {
89
+ "fs:#decl": t,
90
+ "fs:DECKGL_FILTER_COLOR": `
91
+ color.rgb = white_zero_to_rgb(color.r);
92
+ `
93
+ }
94
+ }, l = `
85
95
  vec3 ycbcrToRgb(vec3 ycbcr) {
86
96
  // ycbcr in [0.0, 1.0]
87
97
  float y = ycbcr.r;
@@ -94,75 +104,68 @@ const r = (
94
104
  y + 1.77200 * cb
95
105
  );
96
106
  }
97
- `
98
- ), b = {
107
+ `, s = {
99
108
  name: "ycbcr-to-rgb",
100
109
  inject: {
101
- "fs:#decl": t,
102
- "fs:DECKGL_FILTER_COLOR": (
103
- /* glsl */
104
- `
110
+ "fs:#decl": l,
111
+ "fs:DECKGL_FILTER_COLOR": `
105
112
  color.rgb = ycbcrToRgb(color.rgb);
106
113
  `
107
- )
108
114
  }
109
- }, m = {
115
+ }, f = {
110
116
  name: "colormap",
111
117
  inject: {
112
118
  "fs:#decl": "uniform sampler2D colormapTexture;",
113
- "fs:DECKGL_FILTER_COLOR": (
114
- /* glsl */
115
- `
119
+ "fs:DECKGL_FILTER_COLOR": `
116
120
  color = texture(colormapTexture, vec2(color.r, 0.));
117
121
  `
118
- )
119
122
  },
120
- getUniforms: (e) => ({
121
- colormapTexture: e.colormapTexture
122
- })
123
- }, s = {
123
+ getUniforms: (e) => ({ colormapTexture: e.colormapTexture })
124
+ }, i = {
124
125
  name: "create-texture-unorm",
125
126
  inject: {
126
127
  "fs:#decl": "uniform sampler2D textureName;",
127
- "fs:DECKGL_FILTER_COLOR": (
128
- /* glsl */
129
- `
128
+ "fs:DECKGL_FILTER_COLOR": `
130
129
  color = texture(textureName, geometry.uv);
131
130
  `
132
- )
133
131
  },
134
- getUniforms: (e) => ({
135
- textureName: e.textureName
136
- })
137
- }, c = "nodata", a = `uniform ${c}Uniforms {
132
+ getUniforms: (e) => ({ textureName: e.textureName })
133
+ }, r = "nodata", v = `uniform ${r}Uniforms {
138
134
  float value;
139
- } ${c};
140
- `, f = {
141
- name: c,
142
- fs: a,
143
- inject: {
144
- "fs:DECKGL_FILTER_COLOR": (
145
- /* glsl */
146
- `
135
+ } ${r};
136
+ `, g = {
137
+ name: r,
138
+ fs: v,
139
+ inject: { "fs:DECKGL_FILTER_COLOR": `
147
140
  if (color.r == nodata.value) {
148
141
  discard;
149
142
  }
143
+ ` },
144
+ uniformTypes: { value: "f32" },
145
+ getUniforms: (e) => ({ value: e.value })
146
+ }, T = {
147
+ name: "mask-texture",
148
+ inject: {
149
+ "fs:#decl": "uniform sampler2D maskTexture;",
150
+ "fs:DECKGL_FILTER_COLOR": `
151
+ float maskValue = texture(maskTexture, geometry.uv).r;
152
+ if (maskValue == 0.0) {
153
+ discard;
154
+ }
150
155
  `
151
- )
152
- },
153
- uniformTypes: {
154
- value: "f32"
155
156
  },
156
- getUniforms: (e) => ({
157
- value: e.value
158
- })
157
+ getUniforms: (e) => ({ maskTexture: e.maskTexture })
159
158
  };
160
159
  export {
161
- l as CMYKToRGB,
162
- m as Colormap,
163
- s as CreateTexture,
164
- f as FilterNoDataVal,
165
- b as YCbCrToRGB,
166
- n as cieLabToRGB
160
+ m as BlackIsZero,
161
+ u as CMYKToRGB,
162
+ f as Colormap,
163
+ i as CreateTexture,
164
+ g as FilterNoDataVal,
165
+ T as MaskTexture,
166
+ n as WhiteIsZero,
167
+ s as YCbCrToRGB,
168
+ b as cieLabToRGB
167
169
  };
168
- //# sourceMappingURL=index-Bt_rREAc.js.map
170
+
171
+ //# sourceMappingURL=gpu-modules-COvkDUUI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gpu-modules-COvkDUUI.js","names":["shader","shader","shader","shader"],"sources":["../../../node_modules/.bun/@developmentseed+deck.gl-raster@0.4.0+0af5297bde2eb8b2/node_modules/@developmentseed/deck.gl-raster/dist/gpu-modules/color/black-is-zero.js","../../../node_modules/.bun/@developmentseed+deck.gl-raster@0.4.0+0af5297bde2eb8b2/node_modules/@developmentseed/deck.gl-raster/dist/gpu-modules/color/cielab.js","../../../node_modules/.bun/@developmentseed+deck.gl-raster@0.4.0+0af5297bde2eb8b2/node_modules/@developmentseed/deck.gl-raster/dist/gpu-modules/color/cmyk.js","../../../node_modules/.bun/@developmentseed+deck.gl-raster@0.4.0+0af5297bde2eb8b2/node_modules/@developmentseed/deck.gl-raster/dist/gpu-modules/color/white-is-zero.js","../../../node_modules/.bun/@developmentseed+deck.gl-raster@0.4.0+0af5297bde2eb8b2/node_modules/@developmentseed/deck.gl-raster/dist/gpu-modules/color/ycbcr.js","../../../node_modules/.bun/@developmentseed+deck.gl-raster@0.4.0+0af5297bde2eb8b2/node_modules/@developmentseed/deck.gl-raster/dist/gpu-modules/colormap.js","../../../node_modules/.bun/@developmentseed+deck.gl-raster@0.4.0+0af5297bde2eb8b2/node_modules/@developmentseed/deck.gl-raster/dist/gpu-modules/create-texture.js","../../../node_modules/.bun/@developmentseed+deck.gl-raster@0.4.0+0af5297bde2eb8b2/node_modules/@developmentseed/deck.gl-raster/dist/gpu-modules/filter-nodata.js","../../../node_modules/.bun/@developmentseed+deck.gl-raster@0.4.0+0af5297bde2eb8b2/node_modules/@developmentseed/deck.gl-raster/dist/gpu-modules/mask-texture.js"],"sourcesContent":["const shader = /* glsl */ `\n vec3 black_zero_to_rgb(float value) {\n return vec3(value, value, value);\n }\n`;\n/**\n * A shader module that injects a unorm texture and uses a sampler2D to assign\n * to a color.\n */\nexport const BlackIsZero = {\n name: \"black-is-zero\",\n inject: {\n \"fs:#decl\": shader,\n \"fs:DECKGL_FILTER_COLOR\": /* glsl */ `\n color.rgb = black_zero_to_rgb(color.r);\n `,\n },\n};\n//# sourceMappingURL=black-is-zero.js.map","const shader = /* glsl */ `\n const vec3 D65 = vec3(\n 0.95047, // Xn\n 1.00000, // Yn\n 1.08883 // Zn\n );\n\n vec3 cielabToRgb(vec3 labTex) {\n // labTex in [0,1] from RGB8 texture\n float L = labTex.r * 255.0;\n float a = (labTex.g - 0.5) * 255.0;\n float b = (labTex.b - 0.5) * 255.0;\n\n float y = (L + 16.0) / 116.0;\n float x = (a / 500.0) + y;\n float z = y - (b / 200.0);\n\n vec3 xyz;\n vec3 v = vec3(x, y, z);\n vec3 v3 = v * v * v;\n\n xyz = D65 * mix(\n (v - 16.0 / 116.0) / 7.787,\n v3,\n step(0.008856, v3)\n );\n\n vec3 rgb = mat3(\n 3.2406, -1.5372, -0.4986,\n -0.9689, 1.8758, 0.0415,\n 0.0557, -0.2040, 1.0570\n ) * xyz;\n\n // sRGB gamma\n rgb = mix(\n 12.92 * rgb,\n 1.055 * pow(rgb, vec3(1.0 / 2.4)) - 0.055,\n step(0.0031308, rgb)\n );\n\n return clamp(rgb, 0.0, 1.0);\n }\n`;\n/**\n * A shader module that injects a unorm texture and uses a sampler2D to assign\n * to a color.\n */\nexport const cieLabToRGB = {\n name: \"cielab-to-rgb\",\n inject: {\n \"fs:#decl\": shader,\n \"fs:DECKGL_FILTER_COLOR\": /* glsl */ `\n color.rgb = cielabToRgb(color);\n `,\n },\n};\n//# sourceMappingURL=cielab.js.map","const shader = /* glsl */ `\n vec3 cmykToRgb(vec4 cmyk) {\n // cmyk in [0.0, 1.0]\n float invK = 1.0 - cmyk.a;\n\n return vec3(\n (1.0 - cmyk.r) * invK,\n (1.0 - cmyk.g) * invK,\n (1.0 - cmyk.b) * invK\n );\n }\n`;\n/**\n * A shader module that injects a unorm texture and uses a sampler2D to assign\n * to a color.\n */\nexport const CMYKToRGB = {\n name: \"cmyk-to-rgb\",\n inject: {\n \"fs:#decl\": shader,\n \"fs:DECKGL_FILTER_COLOR\": /* glsl */ `\n color.rgb = cmykToRgb(color);\n `,\n },\n};\n//# sourceMappingURL=cmyk.js.map","const shader = /* glsl */ `\n vec3 white_zero_to_rgb(float value) {\n return vec3(1.0 - value, 1.0 - value, 1.0 - value);\n }\n`;\n/**\n * A shader module that injects a unorm texture and uses a sampler2D to assign\n * to a color.\n */\nexport const WhiteIsZero = {\n name: \"white-is-zero\",\n inject: {\n \"fs:#decl\": shader,\n \"fs:DECKGL_FILTER_COLOR\": /* glsl */ `\n color.rgb = white_zero_to_rgb(color.r);\n `,\n },\n};\n//# sourceMappingURL=white-is-zero.js.map","const shader = /* glsl */ `\n vec3 ycbcrToRgb(vec3 ycbcr) {\n // ycbcr in [0.0, 1.0]\n float y = ycbcr.r;\n float cb = ycbcr.g - 0.5;\n float cr = ycbcr.b - 0.5;\n\n return vec3(\n y + 1.40200 * cr,\n y - 0.34414 * cb - 0.71414 * cr,\n y + 1.77200 * cb\n );\n }\n`;\n/**\n * A shader module that injects a unorm texture and uses a sampler2D to assign\n * to a color.\n */\nexport const YCbCrToRGB = {\n name: \"ycbcr-to-rgb\",\n inject: {\n \"fs:#decl\": shader,\n \"fs:DECKGL_FILTER_COLOR\": /* glsl */ `\n color.rgb = ycbcrToRgb(color.rgb);\n `,\n },\n};\n//# sourceMappingURL=ycbcr.js.map","/**\n * A shader module that injects a unorm texture and uses a sampler2D to assign\n * to a color.\n */\nexport const Colormap = {\n name: \"colormap\",\n inject: {\n \"fs:#decl\": `uniform sampler2D colormapTexture;`,\n \"fs:DECKGL_FILTER_COLOR\": /* glsl */ `\n color = texture(colormapTexture, vec2(color.r, 0.));\n `,\n },\n getUniforms: (props) => {\n return {\n colormapTexture: props.colormapTexture,\n };\n },\n};\n//# sourceMappingURL=colormap.js.map","/**\n * A shader module that injects a unorm texture and uses a sampler2D to assign\n * to a color.\n */\nexport const CreateTexture = {\n name: \"create-texture-unorm\",\n inject: {\n \"fs:#decl\": `uniform sampler2D textureName;`,\n \"fs:DECKGL_FILTER_COLOR\": /* glsl */ `\n color = texture(textureName, geometry.uv);\n `,\n },\n getUniforms: (props) => {\n return {\n textureName: props.textureName,\n };\n },\n};\n//# sourceMappingURL=create-texture.js.map","/** This module name must be consistent */\nconst MODULE_NAME = \"nodata\";\nconst uniformBlock = `\\\nuniform ${MODULE_NAME}Uniforms {\n float value;\n} ${MODULE_NAME};\n`;\n/**\n * A shader module that filters out (discards) pixels whose value matches the\n * provided nodata value.\n */\nexport const FilterNoDataVal = {\n name: MODULE_NAME,\n fs: uniformBlock,\n inject: {\n \"fs:DECKGL_FILTER_COLOR\": /* glsl */ `\n if (color.r == nodata.value) {\n discard;\n }\n `,\n },\n uniformTypes: {\n value: \"f32\",\n },\n getUniforms: (props) => {\n return {\n value: props.value,\n };\n },\n};\n//# sourceMappingURL=filter-nodata.js.map","/**\n * A shader module that injects a unorm texture and uses a sampler2D to assign\n * to a color.\n */\n// Note, we compare directly against 0.0 because we use nearest neighbor\n// sampling for the mask texture. So there will never be any interpolated values\n// between 0 and 1.\nexport const MaskTexture = {\n name: \"mask-texture\",\n inject: {\n \"fs:#decl\": `uniform sampler2D maskTexture;`,\n \"fs:DECKGL_FILTER_COLOR\": /* glsl */ `\n float maskValue = texture(maskTexture, geometry.uv).r;\n if (maskValue == 0.0) {\n discard;\n }\n `,\n },\n getUniforms: (props) => {\n return {\n maskTexture: props.maskTexture,\n };\n },\n};\n//# sourceMappingURL=mask-texture.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8],"mappings":"AAAA,IAAMA,IAAoB;AAAA;AAAA;AAAA;AAAA,GASb,IAAc;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,IACJ,YAAYA;AAAAA,IACZ,0BAAqC;AAAA;AAAA;AAAA;GCbvCC,IAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA+Cb,IAAc;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,IACJ,YAAYA;AAAAA,IACZ,0BAAqC;AAAA;AAAA;AAAA;GCnDvCC,IAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAgBb,IAAY;AAAA,EACrB,MAAM;AAAA,EACN,QAAQ;AAAA,IACJ,YAAYA;AAAAA,IACZ,0BAAqC;AAAA;AAAA;AAAA;GCpBvCC,IAAoB;AAAA;AAAA;AAAA;AAAA,GASb,IAAc;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,IACJ,YAAYA;AAAAA,IACZ,0BAAqC;AAAA;AAAA;AAAA;GCbvC,IAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAkBb,IAAa;AAAA,EACtB,MAAM;AAAA,EACN,QAAQ;AAAA,IACJ,YAAY;AAAA,IACZ,0BAAqC;AAAA;AAAA;AAAA;GClBhC,IAAW;AAAA,EACpB,MAAM;AAAA,EACN,QAAQ;AAAA,IACJ,YAAY;AAAA,IACZ,0BAAqC;AAAA;AAAA;AAAA;EAIzC,aAAA,CAAc,OACH,EACH,iBAAiB,EAAM,gBAAA;GCVtB,IAAgB;AAAA,EACzB,MAAM;AAAA,EACN,QAAQ;AAAA,IACJ,YAAY;AAAA,IACZ,0BAAqC;AAAA;AAAA;AAAA;EAIzC,aAAA,CAAc,OACH,EACH,aAAa,EAAM,YAAA;GCbzB,IAAc,UACd,IAAe,WACX,CAAA;AAAA;AAAA,IAEN,CAAA;AAAA,GAMS,IAAkB;AAAA,EAC3B,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,QAAQ,EACJ,0BAAqC;AAAA;AAAA;AAAA;AAAA;EAMzC,cAAc,EACV,OAAO,MAAA;AAAA,EAEX,aAAA,CAAc,OACH,EACH,OAAO,EAAM,MAAA;GCnBZ,IAAc;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,IACJ,YAAY;AAAA,IACZ,0BAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOzC,aAAA,CAAc,OACH,EACH,aAAa,EAAM,YAAA"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { VControlAttribution, VControlFullscreen, VControlGeolocate, VControlNavigation, VControlScale, VControlLidar, VControlLayer, VControlLayerGroup, VControlLegend } from './controls';
2
- import { VLayerMaplibreCanvas, VLayerMaplibreGeojson, VLayerMaplibreCluster, VLayerMaplibreImage, VLayerMaplibreRaster, VLayerMaplibreVector, VLayerMaplibreVideo, VLayerMaplibrePmtile, VLayerMaplibreRoute, VLayerMaplibreIsochrone } from './layers';
2
+ import { VLayerMaplibreCanvas, VLayerMaplibreGeojson, VLayerMaplibreCluster, VLayerMaplibreImage, VLayerMaplibreRaster, VLayerMaplibreVector, VLayerMaplibreVideo, VLayerMaplibrePmtile, VLayerMaplibreRoute, VLayerMaplibreIsochrone, VLayerMaplibreStarfield } from './layers';
3
3
  import VMap from './map/VMap.vue';
4
4
  import VMarker from './markers/VMarker.vue';
5
5
  import VPopup from './popups/VPopup.vue';
6
- export { VMap, VMarker, VPopup, VLayerMaplibreCanvas, VLayerMaplibreGeojson, VLayerMaplibreCluster, VLayerMaplibreImage, VLayerMaplibreRaster, VLayerMaplibreVector, VLayerMaplibreVideo, VLayerMaplibrePmtile, VLayerMaplibreRoute, VLayerMaplibreIsochrone, VControlAttribution, VControlFullscreen, VControlGeolocate, VControlNavigation, VControlScale, VControlLidar, VControlLayer, VControlLayerGroup, VControlLegend, };
7
- export type { LidarControlOptions, ColorScheme, CopcLoadingMode, PointCloudInfo, PointCloudBounds, StreamingProgress, LayerControlOptions, LayerType, ControlPosition, LayerConfig, LegendType, CategoryLegendItem, GradientLegendItem, SizeLegendItem, LegendControlOptions, FilterState, } from './controls';
6
+ export { VMap, VMarker, VPopup, VLayerMaplibreCanvas, VLayerMaplibreGeojson, VLayerMaplibreCluster, VLayerMaplibreImage, VLayerMaplibreRaster, VLayerMaplibreVector, VLayerMaplibreVideo, VLayerMaplibrePmtile, VLayerMaplibreRoute, VLayerMaplibreIsochrone, VLayerMaplibreStarfield, VControlAttribution, VControlFullscreen, VControlGeolocate, VControlNavigation, VControlScale, VControlLidar, VControlLayer, VControlLayerGroup, VControlLegend, };
7
+ export type { LidarControlOptions, ColorScheme, ColorSchemeType, ColorSchemeConfig, CopcLoadingMode, ColormapName, ColorRangeConfig, PointCloudInfo, PointCloudBounds, StreamingProgress, StreamingLoaderOptions, LayerControlOptions, LayerType, ControlPosition, LayerConfig, LegendType, CategoryLegendItem, GradientLegendItem, SizeLegendItem, TableLegendItem, LegendControlOptions, FilterState, } from './controls';
8
8
  export * from './layers/deckgl';
9
9
  export default VMap;