solid-map-gl 1.1.0 → 1.1.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.
package/README.md CHANGED
@@ -1,12 +1,11 @@
1
1
  ![Banner](./docs/banner.png)
2
2
 
3
- # GIShub - Solid Mapbox GL JS
3
+ # Solid Mapbox GL JS
4
4
 
5
- <!-- [![Node CI](https://github.com/urbica/react-map-gl/workflows/Node%20CI/badge.svg)](https://github.com/urbica/react-map-gl/actions)
6
- [![codecov](https://codecov.io/gh/urbica/react-map-gl/branch/main/graph/badge.svg)](https://codecov.io/gh/urbica/react-map-gl)
7
- [![npm](https://img.shields.io/npm/dt/@urbica/react-map-gl.svg?style=popout)](https://www.npmjs.com/package/@urbica/react-map-gl)
8
- [![npm](https://img.shields.io/npm/v/@urbica/react-map-gl.svg?style=popout)](https://www.npmjs.com/package/@urbica/react-map-gl)
9
- ![npm bundle size (scoped)](https://img.shields.io/bundlephobia/minzip/@urbica/react-map-gl.svg) -->
5
+ ![npm-version](https://badgen.net/npm/v/solid-map-gl)
6
+ ![licence](https://badgen.net/badge/license/MIT/blue)
7
+ ![types](https://badgen.net/npm/types/solid-map-gl)
8
+ ![downloads](https://badgen.net/npm/dt/solid-map-gl)
10
9
 
11
10
  [Solid](https://www.solidjs.com/) Component Library for [Mapbox GL JS.](https://github.com/mapbox/mapbox-gl-js) Mapbox GL JS is a JavaScript library that renders interactive maps from vector tiles and Mapbox styles using WebGL. This project is intended to be as close as possible to the [Mapbox GL JS API.](https://docs.mapbox.com/mapbox-gl-js/api/)
12
11
 
@@ -17,6 +16,8 @@
17
16
  - [Interactive Map](#interactive-map)
18
17
  - [Map with Source and Layer](#map-with-source-and-layer)
19
18
  - [Map with GeoJSON Source](#map-with-geojson-source)
19
+ - [Examples](#examples)
20
+ - [Changelog](#changelog)
20
21
 
21
22
  <br>
22
23
 
@@ -68,7 +69,7 @@ To use any of Mapbox’s tools, APIs, or SDKs, you’ll need a Mapbox [access to
68
69
  By default, `MapGL` component renders in a static mode. That means that the user cannot interact with the map.
69
70
 
70
71
  ```jsx
71
- import MapGL from '../solid-map-gl'
72
+ import MapGL from 'solid-map-gl'
72
73
 
73
74
  <MapGL
74
75
  options={{
@@ -88,7 +89,7 @@ In most cases, you will want the user to interact with the map. To do this, you
88
89
 
89
90
  ```jsx
90
91
  import { createSignal } from 'solid-js'
91
- import MapGL, { Viewport } from '../solid-map-gl'
92
+ import MapGL, { Viewport } from 'solid-map-gl'
92
93
 
93
94
  const [viewport, setViewport] = createSignal({
94
95
  center: [-122.41, 37.78]
@@ -114,7 +115,7 @@ const [viewport, setViewport] = createSignal({
114
115
  Except for layers of the `background` type, each layer needs to refer to a source. Either buy referencing the `id` in `sourceId` or by nesting the layer within the source component. Layers take the data that they get from a source, optionally filter features, and then define how those features are styled.
115
116
 
116
117
  ```jsx
117
- import MapGL, { Source, Layer } from '../solid-map-gl'
118
+ import MapGL, { Source, Layer } from 'solid-map-gl'
118
119
 
119
120
  <MapGL
120
121
  options={{
@@ -144,7 +145,7 @@ To draw a GeoJSON on a map, add `Source` with the `type` property set to `geojso
144
145
 
145
146
  ```jsx
146
147
  import { createSignal } from 'solid-js'
147
- import MapGL, { Source, Layer } from '../solid-map-gl'
148
+ import MapGL, { Source, Layer } from 'solid-map-gl'
148
149
 
149
150
  const [viewport, setViewport] = createSignal({
150
151
  center: [-122.486052, 37.830348],
@@ -216,7 +217,7 @@ Here is an example using [deck.gl.](https://github.com/uber/deck.gl)
216
217
 
217
218
  ```jsx
218
219
  import { createSignal } from 'solid-js'
219
- import MapGL, { Source, Layer } from '../solid-map-gl'
220
+ import MapGL, { Source, Layer } from 'solid-map-gl'
220
221
  import { MapboxLayer } from '@deck.gl/mapbox'
221
222
  import { ScatterplotLayer } from '@deck.gl/layers'
222
223
 
@@ -245,6 +246,12 @@ const myDeckLayer = new MapboxLayer({
245
246
  </MapGL>
246
247
  ```
247
248
 
249
+ ## Examples
250
+
251
+ ### Coming Soon
252
+
248
253
  ## Changelog
249
254
 
250
255
  - 1.0.0 - Initial release
256
+ - 1.1.0 - Bug fixing
257
+ - 1.2.0 - Bug fixing
package/dist/esm/index.js CHANGED
@@ -164,8 +164,8 @@ const Layer = props => {
164
164
  }, props.style); // Update Visibility
165
165
 
166
166
  createEffect(async () => {
167
- if (!props.visible) return;
168
- !map().loaded() && (await map().once('styledata'));
167
+ if (props.visible === undefined) return;
168
+ !map().isStyleLoaded() && (await map().once('styledata'));
169
169
  map().setLayoutProperty(props.id, 'visibility', props.visible ? 'visible' : 'none', {
170
170
  validate: false
171
171
  });
@@ -173,7 +173,7 @@ const Layer = props => {
173
173
 
174
174
  createEffect(async () => {
175
175
  if (!props.filter) return;
176
- !map().loaded() && (await map().once('styledata'));
176
+ !map().isStyleLoaded() && (await map().once('styledata'));
177
177
  map().setFilter(props.id, props.filter);
178
178
  }); // Update Feature State
179
179
 
@@ -355,7 +355,9 @@ const Popup = props => {
355
355
  const Image = props => {
356
356
  const map = useMap(); // Add Image
357
357
 
358
- onMount(() => {
358
+ onMount(async () => {
359
+ !map().isStyleLoaded() && (await map().once('styledata'));
360
+
359
361
  if (props.url) {
360
362
  map().loadImage(props.url, (error, image) => {
361
363
  if (error) throw error;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/components/MapGL/index.tsx","../../src/components/Source/index.tsx","../../src/components/Layer/index.tsx","../../src/components/Fog/index.tsx","../../src/components/Sky/index.tsx","../../src/components/Terrain/index.tsx","../../src/components/Control/index.tsx","../../src/components/Marker/index.tsx","../../src/components/Popup/index.tsx","../../src/components/Image/index.tsx"],"sourcesContent":["import {\n createEffect,\n onMount,\n onCleanup,\n createContext,\n useContext,\n Component,\n useTransition,\n} from 'solid-js'\nimport mapboxgl from 'mapbox-gl'\nimport 'mapbox-gl/dist/mapbox-gl.css'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type MapboxOptions from 'mapbox-gl/src/ui/map'\nimport type MapMouseEvent from 'mapbox-gl/src/ui/events'\nimport type { LngLatLike } from 'mapbox-gl/src/geo/lng_lat.js'\nimport type { LngLatBounds } from 'mapbox-gl/src/geo/lng_lat_bounds.js'\n\nexport type Viewport = {\n center?: LngLatLike\n bounds?: LngLatBounds\n zoom?: number\n pitch?: number\n bearing?: number\n padding?: number\n}\n\nconst [pending, start] = useTransition()\n\nconst MapContext = createContext<MapboxMap>()\nconst useMap = () => useContext(MapContext)\n\nconst MapGL: Component<{\n class?: string\n classList?: any\n viewport?: Viewport\n options?: MapboxOptions\n children?: any[] | any\n triggerResize?: boolean\n onMouseMove?: (event: MapMouseEvent) => void\n onViewportChange?: (viewport: Viewport) => void\n}> = props => {\n let map: MapboxMap\n let mapRef: HTMLElement\n\n onCleanup(() => map.remove())\n\n onMount(() => {\n map = new mapboxgl.Map({\n ...props.options,\n container: mapRef,\n bounds: props.viewport.bounds,\n center: props.viewport.center,\n zoom: props.viewport.zoom || null,\n pitch: props.viewport.pitch || null,\n bearing: props.viewport.bearing || null,\n fitBoundsOptions: { padding: props.viewport.padding },\n } as MapboxOptions)\n })\n\n createEffect(\n () =>\n props.onMouseMove &&\n map.on('mousemove', event => props.onMouseMove(event.lngLat))\n )\n\n const _onViewportChange = () => {\n const viewport: Viewport = {\n center: map.getCenter(),\n zoom: map.getZoom(),\n pitch: map.getPitch(),\n bearing: map.getBearing(),\n padding: props.viewport.padding,\n }\n props.onViewportChange(viewport)\n }\n\n createEffect(\n () =>\n props.onViewportChange &&\n map\n .on('dragend', _onViewportChange)\n .on('moveend', _onViewportChange)\n .on('zoomend', _onViewportChange)\n .on('rotateend', _onViewportChange)\n .on('pitchend', _onViewportChange)\n .on('boxzoomend', _onViewportChange)\n )\n\n createEffect(async () => {\n if (!props.viewport.bounds) return\n // await map.once('idle')\n map.fitBounds(props.viewport.bounds, {\n padding: props.viewport.padding,\n })\n })\n\n let index = 0\n\n createEffect(() => {\n if (props.triggerResize) {\n index = 0\n window.requestAnimationFrame(function loop() {\n if (index < 15) {\n index++\n window.requestAnimationFrame(loop)\n start(() => map.resize())\n }\n })\n }\n })\n\n return (\n <MapContext.Provider value={() => map}>\n <main\n ref={mapRef}\n class={props.class || ''}\n classList={props.classList}\n style={{ height: '100%', width: '100%' }}>\n {props.children}\n </main>\n </MapContext.Provider>\n )\n}\n\nexport { MapGL as default, useMap }\n","import {\n onMount,\n onCleanup,\n createEffect,\n Component,\n createContext,\n useContext,\n createUniqueId,\n} from 'solid-js'\nimport { useMap } from '../MapGL'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type {\n Source,\n SourceSpecification,\n} from 'mapbox-gl/src/style-spec/types.js'\n\nconst SourceContext = createContext<Source>()\n\nconst useSource = (): Source => useContext(SourceContext)\n\nconst SourceComponent: Component<{\n id?: string\n source: SourceSpecification\n}> = props => {\n const map: MapboxMap = useMap()\n props.id = props.id || createUniqueId()\n // Add Source\n onMount(async () => {\n !map().isStyleLoaded() && (await map().once('styledata'))\n !map().getSource(props.id) && map().addSource(props.id, props.source)\n })\n\n // Remove Source\n onCleanup(() => {\n map()\n .getStyle()\n .layers.forEach(\n layer => layer.source === props.id && map().removeLayer(layer.id)\n )\n map().getSource(props.id) && map().removeSource(props.id)\n })\n\n // Update GeoJSON Data\n createEffect(async () => {\n if (props.source.type !== 'geojson' && !props.source.data) return\n\n map().getSource(props.id) &&\n map().getSource(props.id).setData(props.source.data)\n })\n\n return (\n <SourceContext.Provider value={{ source: props.id }}>\n {props.children}\n </SourceContext.Provider>\n )\n}\n\nexport { SourceComponent as default, useSource }\n","import { onMount, createEffect, Component, createUniqueId } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport { useSource } from '../Source'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type {\n FilterSpecification,\n StyleSpecification,\n SourceSpecification,\n} from 'mapbox-gl/src/style-spec/types.js'\nimport type { CustomLayerInterface } from 'mapbox-gl/src/style/style_layer/custom_style_layer'\n\ntype KV = {\n string?: any\n}\n\nconst diff = (newProps: KV = {}, prevProps: KV = {}) => {\n const keys = new Set([...Object.keys(newProps), ...Object.keys(prevProps)])\n return [...keys].reduce((acc, key: string) => {\n const value = newProps[key]\n if (value !== prevProps[key]) {\n acc.push([key, value])\n }\n return acc\n }, [])\n}\n\nconst Layer: Component<{\n id?: string\n style?: StyleSpecification\n layer?: CustomLayerInterface\n filter?: FilterSpecification\n visible?: boolean\n sourceId?: string\n beforeType?:\n | 'background'\n | 'fill'\n | 'line'\n | 'symbol'\n | 'raster'\n | 'circle'\n | 'fill-extrusion'\n | 'heatmap'\n | 'hillshade'\n | 'sky'\n beforeId?: string\n featureState?: { id: number | string; state: object }\n}> = props => {\n const map: MapboxMap = useMap()\n const source: SourceSpecification = useSource()\n props.id = props.id || createUniqueId()\n // Add Layer\n onMount(async () => {\n !map().isStyleLoaded() && (await map().once('styledata'))\n\n if (map().getLayer(props.id)) return\n\n map().addLayer(\n props.layer || {\n ...props.style,\n id: props.id,\n source: source.source,\n },\n props.beforeType\n ? map()\n .getStyle()\n .layers.find(l => l.type === props.beforeType).id\n : props.beforeId\n )\n })\n\n // Update Style\n createEffect((prev: any) => {\n if (!props.style && map().getLayer(props.id)) return\n\n diff(props.style.paint, prev.paint).forEach(([key, value]) =>\n map().setPaintProperty(props.id, key, value)\n )\n\n diff(props.style.layout, prev.layout).forEach(([key, value]) =>\n map().setLayoutProperty(props.id, key, value)\n )\n\n if (\n props.style.minzoom !== prev.minzoom ||\n props.style.maxzoom !== prev.max\n )\n map().setLayerZoomRange(\n props.id,\n props.style.minzoom,\n props.style.maxzoom\n )\n\n return props.style\n }, props.style)\n\n // Update Visibility\n createEffect(async () => {\n if (!props.visible) return\n\n !map().loaded() && (await map().once('styledata'))\n map().setLayoutProperty(\n props.id,\n 'visibility',\n props.visible ? 'visible' : 'none',\n { validate: false }\n )\n })\n\n // Update Filter\n createEffect(async () => {\n if (!props.filter) return\n\n !map().loaded() && (await map().once('styledata'))\n map().setFilter(props.id, props.filter)\n })\n\n // Update Feature State\n createEffect(async () => {\n if (!props.featureState?.id) return\n\n map().loaded() ? null : await map().once('render')\n\n map().removeFeatureState({\n source: source.source,\n sourceLayer: props.style['source-layer'],\n })\n map().setFeatureState(\n {\n source: source.source,\n sourceLayer: props.style['source-layer'],\n id: props.featureState.id,\n },\n props.featureState.state\n )\n })\n\n return props.children\n}\n\nexport default Layer\n","import { onMount, onCleanup, createEffect, Component } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type { FogSpecification } from 'mapbox-gl/src/style-spec/types.js'\n\nconst Fog: Component<{\n style: FogSpecification\n visible?: boolean\n}> = props => {\n const map: MapboxMap = useMap()\n // Add Fog Layer\n onMount(async () => {\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setFog(props.style)\n })\n // Remove Fog Layer\n onCleanup(() => map().setFog(null))\n\n // Update Visibility\n createEffect(async () => {\n if (props.visible === undefined) return\n\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setFog(props.visible ? props.style : null)\n })\n\n return props.children\n}\n\nexport default Fog\n","import { onMount, onCleanup, createEffect, Component } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type { StyleSpecification } from 'mapbox-gl/src/style-spec/types.js'\n\nconst Sky: Component<{\n style: StyleSpecification\n visible?: boolean\n}> = props => {\n const map: MapboxMap = useMap()\n const layerId = '_sky'\n // Add Sky Layer\n onMount(async () => {\n !map().isStyleLoaded() && (await map().once('styledata'))\n !map().getLayer(layerId) && map().addLayer({ ...props.style, id: layerId })\n })\n\n // Remove Sky Layer\n onCleanup(() => map().getLayer(layerId) && map().removeLayer(layerId))\n\n // Update Visibility\n createEffect(async () => {\n if (props.visible === undefined) return\n\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setLayoutProperty(\n layerId,\n 'visibility',\n props.visible ? 'visible' : 'none'\n )\n })\n\n return props.children\n}\n\nexport default Sky\n","import { onMount, onCleanup, createEffect, Component } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport { useSource } from '../Source'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type {\n TerrainSpecification,\n SourceSpecification,\n} from 'mapbox-gl/src/style-spec/types.js'\n\nconst Terrain: Component<{\n style: TerrainSpecification\n visible?: boolean\n}> = props => {\n const map: MapboxMap = useMap()\n const source: SourceSpecification = useSource()\n\n // Add Terrain Layer\n onMount(async () => {\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setTerrain({ ...props.style, source: source.source })\n })\n\n // Remove Terrain Layer\n onCleanup(() => map().setTerrain(null))\n\n // Update Visibility\n createEffect(async () => {\n if (props.visible === undefined) return\n\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setTerrain(props.visible ? props.style : null)\n })\n\n return props.children\n}\n\nexport default Terrain\n","import { onMount, onCleanup, createSignal, Component, lazy } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport mapboxgl from 'mapbox-gl'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type { Options as AttributionOptions } from 'mapbox-gl/src/ui/control/attribution_control'\nimport type { Options as FullscreenOptions } from 'mapbox-gl/src/ui/control/fullscreen_control'\nimport type { Options as GeolocateOptions } from 'mapbox-gl/src/ui/control/geolocate_control'\nimport type { Options as NavigationOptions } from 'mapbox-gl/src/ui/control/navigation_control'\nimport type { Options as ScaleOptions } from 'mapbox-gl/src/ui/control/scale_control'\n\nconst Control: Component<{\n type:\n | 'navigation'\n | 'scale'\n | 'attribution'\n | 'fullscreen'\n | 'geolocate'\n | 'language'\n | 'traffic'\n options?:\n | NavigationOptions\n | ScaleOptions\n | AttributionOptions\n | FullscreenOptions\n | GeolocateOptions\n position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n}> = props => {\n const map: MapboxMap = useMap()\n const [control, setControl] = createSignal(null)\n // Add Control\n onMount(async () => {\n let control\n\n switch (props.type) {\n case 'navigation':\n control = new mapboxgl.NavigationControl(props.options)\n break\n case 'scale':\n control = new mapboxgl.ScaleControl(props.options)\n break\n case 'attribution':\n control = new mapboxgl.AttributionControl(props.options)\n break\n case 'fullscreen':\n control = new mapboxgl.FullscreenControl(props.options)\n break\n case 'geolocate':\n control = new mapboxgl.GeolocateControl(props.options)\n break\n // case 'language':\n // const MapboxLanguage = (await import('@mapbox/mapbox-gl-language'))\n // .default\n // control = new MapboxLanguage(props.options)\n // break\n // case 'traffic':\n // const MapboxTraffic = (await import('@mapbox/mapbox-gl-traffic'))\n // .default\n // await import('@mapbox/mapbox-gl-traffic/mapbox-gl-traffic.css')\n // control = new MapboxTraffic(props.options)\n // break\n }\n control && map().addControl(control, props.position)\n setControl(control)\n })\n\n onCleanup(() => map().removeControl(control()))\n\n return props.children\n}\n\nexport default Control\n","import { onMount, onCleanup, createEffect, Component, children } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport mapboxgl from 'mapbox-gl'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type { MarkerSpecification } from 'mapbox-gl/src/style-spec/types.js'\nimport type { LngLatLike } from 'mapbox-gl/src/geo/lng_lat.js'\n\nconst Marker: Component<{\n options?: MarkerSpecification\n lnglat: LngLatLike\n}> = props => {\n const map: MapboxMap = useMap()\n let marker = null\n\n // Add Marker\n onMount(async () => {\n marker = new mapboxgl.Marker(props.options)\n .setLngLat(props.lnglat)\n .setPopup(\n props.children\n ? new mapboxgl.Popup().setDOMContent(<div>{props.children}</div>)\n : null\n )\n .addTo(map())\n })\n // Remove Marker\n onCleanup(() => marker.remove())\n\n // Update Position\n createEffect(() => marker.setLngLat(props.lnglat))\n\n return <></>\n}\n\nexport default Marker\n","import { onMount, onCleanup, createEffect, Component } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport mapboxgl from 'mapbox-gl'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type { PopupSpecification } from 'mapbox-gl/src/style-spec/types.js'\nimport type { LngLatLike } from 'mapbox-gl/src/geo/lng_lat.js'\n\nconst Popup: Component<{\n options?: PopupSpecification\n lnglat: LngLatLike\n}> = props => {\n const map: MapboxMap = useMap()\n let popup = null\n\n // Add Popup\n onMount(async () => {\n popup = new mapboxgl.Popup(props.options)\n .setLngLat(props.lnglat)\n .setDOMContent(<div>{props.children}</div>)\n .addTo(map())\n })\n // Remove Popup\n onCleanup(() => popup.remove())\n\n // Update Position\n createEffect(() => popup.setLngLat(props.lnglat))\n\n // Update Content\n createEffect(() => popup.setDOMContent(<div>{props.children}</div>))\n\n return <></>\n}\n\nexport default Popup\n","import { onMount, onCleanup, createEffect, Component } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type {\n StyleImageInterface,\n StyleImageMetadata,\n} from 'mapbox-gl/src/style/style_image'\n\nconst Image: Component<{\n id: string\n url?: string\n image?:\n | HTMLImageElement\n | ImageBitmap\n | ImageData\n | { width: number; height: number; data: Uint8Array | Uint8ClampedArray }\n | StyleImageInterface\n options?: StyleImageMetadata\n}> = props => {\n const map: MapboxMap = useMap()\n // Add Image\n onMount(() => {\n if (props.url) {\n map().loadImage(props.url, (error, image) => {\n if (error) throw error\n !map().hasImage(props.id) && map().addImage(props.id, image)\n })\n } else {\n !map().hasImage(props.id) &&\n map().addImage(props.id, props.image, props.options)\n }\n })\n // Remove Image\n onCleanup(() => map().hasImage(props.id) && map().removeImage(props.id))\n\n // Update Image\n createEffect(async () => {\n if (props.image && props.url) return\n\n if (props.url) {\n map().loadImage(props.url, (error, image) => {\n if (error) throw error\n !map().hasImage(props.id) && map().updateImage(props.id, image)\n })\n } else {\n map().hasImage(props.id) && map().updateImage(props.id, props.image)\n }\n })\n\n return <></>\n}\n\nexport default Image\n"],"names":["pending","start","useTransition","MapContext","createContext","useMap","useContext","MapGL","props","map","mapRef","onCleanup","remove","onMount","mapboxgl","Map","options","container","bounds","viewport","center","zoom","pitch","bearing","fitBoundsOptions","padding","createEffect","onMouseMove","on","event","lngLat","_onViewportChange","getCenter","getZoom","getPitch","getBearing","onViewportChange","fitBounds","index","triggerResize","window","requestAnimationFrame","loop","resize","children","class","classList","SourceContext","useSource","SourceComponent","id","createUniqueId","isStyleLoaded","once","getSource","addSource","source","getStyle","layers","forEach","layer","removeLayer","removeSource","type","data","setData","diff","newProps","prevProps","keys","Set","Object","reduce","acc","key","value","push","Layer","getLayer","addLayer","style","beforeType","find","l","beforeId","prev","paint","setPaintProperty","layout","setLayoutProperty","minzoom","maxzoom","max","setLayerZoomRange","visible","loaded","validate","filter","setFilter","featureState","removeFeatureState","sourceLayer","setFeatureState","state","Fog","setFog","undefined","Sky","layerId","Terrain","setTerrain","Control","control","setControl","createSignal","NavigationControl","ScaleControl","AttributionControl","FullscreenControl","GeolocateControl","addControl","position","removeControl","Marker","marker","setLngLat","lnglat","setPopup","Popup","setDOMContent","addTo","popup","Image","url","loadImage","error","image","hasImage","addImage","removeImage","updateImage"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/components/MapGL/index.tsx","../../src/components/Source/index.tsx","../../src/components/Layer/index.tsx","../../src/components/Fog/index.tsx","../../src/components/Sky/index.tsx","../../src/components/Terrain/index.tsx","../../src/components/Control/index.tsx","../../src/components/Marker/index.tsx","../../src/components/Popup/index.tsx","../../src/components/Image/index.tsx"],"sourcesContent":["import {\n createEffect,\n onMount,\n onCleanup,\n createContext,\n useContext,\n Component,\n useTransition,\n} from 'solid-js'\nimport mapboxgl from 'mapbox-gl'\nimport 'mapbox-gl/dist/mapbox-gl.css'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type MapboxOptions from 'mapbox-gl/src/ui/map'\nimport type MapMouseEvent from 'mapbox-gl/src/ui/events'\nimport type { LngLatLike } from 'mapbox-gl/src/geo/lng_lat.js'\nimport type { LngLatBounds } from 'mapbox-gl/src/geo/lng_lat_bounds.js'\n\nexport type Viewport = {\n center?: LngLatLike\n bounds?: LngLatBounds\n zoom?: number\n pitch?: number\n bearing?: number\n padding?: number\n}\n\nconst [pending, start] = useTransition()\n\nconst MapContext = createContext<MapboxMap>()\nconst useMap = () => useContext(MapContext)\n\nconst MapGL: Component<{\n class?: string\n classList?: any\n viewport?: Viewport\n options?: MapboxOptions\n children?: any[] | any\n triggerResize?: boolean\n onMouseMove?: (event: MapMouseEvent) => void\n onViewportChange?: (viewport: Viewport) => void\n}> = props => {\n let map: MapboxMap\n let mapRef: HTMLElement\n\n onCleanup(() => map.remove())\n\n onMount(() => {\n map = new mapboxgl.Map({\n ...props.options,\n container: mapRef,\n bounds: props.viewport.bounds,\n center: props.viewport.center,\n zoom: props.viewport.zoom || null,\n pitch: props.viewport.pitch || null,\n bearing: props.viewport.bearing || null,\n fitBoundsOptions: { padding: props.viewport.padding },\n } as MapboxOptions)\n })\n\n createEffect(\n () =>\n props.onMouseMove &&\n map.on('mousemove', event => props.onMouseMove(event.lngLat))\n )\n\n const _onViewportChange = () => {\n const viewport: Viewport = {\n center: map.getCenter(),\n zoom: map.getZoom(),\n pitch: map.getPitch(),\n bearing: map.getBearing(),\n padding: props.viewport.padding,\n }\n props.onViewportChange(viewport)\n }\n\n createEffect(\n () =>\n props.onViewportChange &&\n map\n .on('dragend', _onViewportChange)\n .on('moveend', _onViewportChange)\n .on('zoomend', _onViewportChange)\n .on('rotateend', _onViewportChange)\n .on('pitchend', _onViewportChange)\n .on('boxzoomend', _onViewportChange)\n )\n\n createEffect(async () => {\n if (!props.viewport.bounds) return\n // await map.once('idle')\n map.fitBounds(props.viewport.bounds, {\n padding: props.viewport.padding,\n })\n })\n\n let index = 0\n\n createEffect(() => {\n if (props.triggerResize) {\n index = 0\n window.requestAnimationFrame(function loop() {\n if (index < 15) {\n index++\n window.requestAnimationFrame(loop)\n start(() => map.resize())\n }\n })\n }\n })\n\n return (\n <MapContext.Provider value={() => map}>\n <main\n ref={mapRef}\n class={props.class || ''}\n classList={props.classList}\n style={{ height: '100%', width: '100%' }}>\n {props.children}\n </main>\n </MapContext.Provider>\n )\n}\n\nexport { MapGL as default, useMap }\n","import {\n onMount,\n onCleanup,\n createEffect,\n Component,\n createContext,\n useContext,\n createUniqueId,\n} from 'solid-js'\nimport { useMap } from '../MapGL'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type {\n Source,\n SourceSpecification,\n} from 'mapbox-gl/src/style-spec/types.js'\n\nconst SourceContext = createContext<Source>()\n\nconst useSource = (): Source => useContext(SourceContext)\n\nconst SourceComponent: Component<{\n id?: string\n source: SourceSpecification\n}> = props => {\n const map: MapboxMap = useMap()\n props.id = props.id || createUniqueId()\n // Add Source\n onMount(async () => {\n !map().isStyleLoaded() && (await map().once('styledata'))\n !map().getSource(props.id) && map().addSource(props.id, props.source)\n })\n\n // Remove Source\n onCleanup(() => {\n map()\n .getStyle()\n .layers.forEach(\n layer => layer.source === props.id && map().removeLayer(layer.id)\n )\n map().getSource(props.id) && map().removeSource(props.id)\n })\n\n // Update GeoJSON Data\n createEffect(async () => {\n if (props.source.type !== 'geojson' && !props.source.data) return\n\n map().getSource(props.id) &&\n map().getSource(props.id).setData(props.source.data)\n })\n\n return (\n <SourceContext.Provider value={{ source: props.id }}>\n {props.children}\n </SourceContext.Provider>\n )\n}\n\nexport { SourceComponent as default, useSource }\n","import { onMount, createEffect, Component, createUniqueId } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport { useSource } from '../Source'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type {\n FilterSpecification,\n StyleSpecification,\n SourceSpecification,\n} from 'mapbox-gl/src/style-spec/types.js'\nimport type { CustomLayerInterface } from 'mapbox-gl/src/style/style_layer/custom_style_layer'\n\ntype KV = {\n string?: any\n}\n\nconst diff = (newProps: KV = {}, prevProps: KV = {}) => {\n const keys = new Set([...Object.keys(newProps), ...Object.keys(prevProps)])\n return [...keys].reduce((acc, key: string) => {\n const value = newProps[key]\n if (value !== prevProps[key]) {\n acc.push([key, value])\n }\n return acc\n }, [])\n}\n\nconst Layer: Component<{\n id?: string\n style?: StyleSpecification\n layer?: CustomLayerInterface\n filter?: FilterSpecification\n visible?: boolean\n sourceId?: string\n beforeType?:\n | 'background'\n | 'fill'\n | 'line'\n | 'symbol'\n | 'raster'\n | 'circle'\n | 'fill-extrusion'\n | 'heatmap'\n | 'hillshade'\n | 'sky'\n beforeId?: string\n featureState?: { id: number | string; state: object }\n}> = props => {\n const map: MapboxMap = useMap()\n const source: SourceSpecification = useSource()\n props.id = props.id || createUniqueId()\n // Add Layer\n onMount(async () => {\n !map().isStyleLoaded() && (await map().once('styledata'))\n\n if (map().getLayer(props.id)) return\n\n map().addLayer(\n props.layer || {\n ...props.style,\n id: props.id,\n source: source.source,\n },\n props.beforeType\n ? map()\n .getStyle()\n .layers.find(l => l.type === props.beforeType).id\n : props.beforeId\n )\n })\n\n // Update Style\n createEffect((prev: any) => {\n if (!props.style && map().getLayer(props.id)) return\n\n diff(props.style.paint, prev.paint).forEach(([key, value]) =>\n map().setPaintProperty(props.id, key, value)\n )\n\n diff(props.style.layout, prev.layout).forEach(([key, value]) =>\n map().setLayoutProperty(props.id, key, value)\n )\n\n if (\n props.style.minzoom !== prev.minzoom ||\n props.style.maxzoom !== prev.max\n )\n map().setLayerZoomRange(\n props.id,\n props.style.minzoom,\n props.style.maxzoom\n )\n\n return props.style\n }, props.style)\n\n // Update Visibility\n createEffect(async () => {\n if (props.visible === undefined) return\n\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setLayoutProperty(\n props.id,\n 'visibility',\n props.visible ? 'visible' : 'none',\n { validate: false }\n )\n })\n\n // Update Filter\n createEffect(async () => {\n if (!props.filter) return\n\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setFilter(props.id, props.filter)\n })\n\n // Update Feature State\n createEffect(async () => {\n if (!props.featureState?.id) return\n\n map().loaded() ? null : await map().once('render')\n\n map().removeFeatureState({\n source: source.source,\n sourceLayer: props.style['source-layer'],\n })\n map().setFeatureState(\n {\n source: source.source,\n sourceLayer: props.style['source-layer'],\n id: props.featureState.id,\n },\n props.featureState.state\n )\n })\n\n return props.children\n}\n\nexport default Layer\n","import { onMount, onCleanup, createEffect, Component } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type { FogSpecification } from 'mapbox-gl/src/style-spec/types.js'\n\nconst Fog: Component<{\n style: FogSpecification\n visible?: boolean\n}> = props => {\n const map: MapboxMap = useMap()\n // Add Fog Layer\n onMount(async () => {\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setFog(props.style)\n })\n // Remove Fog Layer\n onCleanup(() => map().setFog(null))\n\n // Update Visibility\n createEffect(async () => {\n if (props.visible === undefined) return\n\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setFog(props.visible ? props.style : null)\n })\n\n return props.children\n}\n\nexport default Fog\n","import { onMount, onCleanup, createEffect, Component } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type { StyleSpecification } from 'mapbox-gl/src/style-spec/types.js'\n\nconst Sky: Component<{\n style: StyleSpecification\n visible?: boolean\n}> = props => {\n const map: MapboxMap = useMap()\n const layerId = '_sky'\n // Add Sky Layer\n onMount(async () => {\n !map().isStyleLoaded() && (await map().once('styledata'))\n !map().getLayer(layerId) && map().addLayer({ ...props.style, id: layerId })\n })\n\n // Remove Sky Layer\n onCleanup(() => map().getLayer(layerId) && map().removeLayer(layerId))\n\n // Update Visibility\n createEffect(async () => {\n if (props.visible === undefined) return\n\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setLayoutProperty(\n layerId,\n 'visibility',\n props.visible ? 'visible' : 'none'\n )\n })\n\n return props.children\n}\n\nexport default Sky\n","import { onMount, onCleanup, createEffect, Component } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport { useSource } from '../Source'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type {\n TerrainSpecification,\n SourceSpecification,\n} from 'mapbox-gl/src/style-spec/types.js'\n\nconst Terrain: Component<{\n style: TerrainSpecification\n visible?: boolean\n}> = props => {\n const map: MapboxMap = useMap()\n const source: SourceSpecification = useSource()\n\n // Add Terrain Layer\n onMount(async () => {\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setTerrain({ ...props.style, source: source.source })\n })\n\n // Remove Terrain Layer\n onCleanup(() => map().setTerrain(null))\n\n // Update Visibility\n createEffect(async () => {\n if (props.visible === undefined) return\n\n !map().isStyleLoaded() && (await map().once('styledata'))\n map().setTerrain(props.visible ? props.style : null)\n })\n\n return props.children\n}\n\nexport default Terrain\n","import { onMount, onCleanup, createSignal, Component, lazy } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport mapboxgl from 'mapbox-gl'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type { Options as AttributionOptions } from 'mapbox-gl/src/ui/control/attribution_control'\nimport type { Options as FullscreenOptions } from 'mapbox-gl/src/ui/control/fullscreen_control'\nimport type { Options as GeolocateOptions } from 'mapbox-gl/src/ui/control/geolocate_control'\nimport type { Options as NavigationOptions } from 'mapbox-gl/src/ui/control/navigation_control'\nimport type { Options as ScaleOptions } from 'mapbox-gl/src/ui/control/scale_control'\n\nconst Control: Component<{\n type:\n | 'navigation'\n | 'scale'\n | 'attribution'\n | 'fullscreen'\n | 'geolocate'\n | 'language'\n | 'traffic'\n options?:\n | NavigationOptions\n | ScaleOptions\n | AttributionOptions\n | FullscreenOptions\n | GeolocateOptions\n position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n}> = props => {\n const map: MapboxMap = useMap()\n const [control, setControl] = createSignal(null)\n // Add Control\n onMount(async () => {\n let control\n\n switch (props.type) {\n case 'navigation':\n control = new mapboxgl.NavigationControl(props.options)\n break\n case 'scale':\n control = new mapboxgl.ScaleControl(props.options)\n break\n case 'attribution':\n control = new mapboxgl.AttributionControl(props.options)\n break\n case 'fullscreen':\n control = new mapboxgl.FullscreenControl(props.options)\n break\n case 'geolocate':\n control = new mapboxgl.GeolocateControl(props.options)\n break\n // case 'language':\n // const MapboxLanguage = (await import('@mapbox/mapbox-gl-language'))\n // .default\n // control = new MapboxLanguage(props.options)\n // break\n // case 'traffic':\n // const MapboxTraffic = (await import('@mapbox/mapbox-gl-traffic'))\n // .default\n // await import('@mapbox/mapbox-gl-traffic/mapbox-gl-traffic.css')\n // control = new MapboxTraffic(props.options)\n // break\n }\n control && map().addControl(control, props.position)\n setControl(control)\n })\n\n onCleanup(() => map().removeControl(control()))\n\n return props.children\n}\n\nexport default Control\n","import { onMount, onCleanup, createEffect, Component, children } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport mapboxgl from 'mapbox-gl'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type { MarkerSpecification } from 'mapbox-gl/src/style-spec/types.js'\nimport type { LngLatLike } from 'mapbox-gl/src/geo/lng_lat.js'\n\nconst Marker: Component<{\n options?: MarkerSpecification\n lnglat: LngLatLike\n}> = props => {\n const map: MapboxMap = useMap()\n let marker = null\n\n // Add Marker\n onMount(async () => {\n marker = new mapboxgl.Marker(props.options)\n .setLngLat(props.lnglat)\n .setPopup(\n props.children\n ? new mapboxgl.Popup().setDOMContent(<div>{props.children}</div>)\n : null\n )\n .addTo(map())\n })\n // Remove Marker\n onCleanup(() => marker.remove())\n\n // Update Position\n createEffect(() => marker.setLngLat(props.lnglat))\n\n return <></>\n}\n\nexport default Marker\n","import { onMount, onCleanup, createEffect, Component } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport mapboxgl from 'mapbox-gl'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type { PopupSpecification } from 'mapbox-gl/src/style-spec/types.js'\nimport type { LngLatLike } from 'mapbox-gl/src/geo/lng_lat.js'\n\nconst Popup: Component<{\n options?: PopupSpecification\n lnglat: LngLatLike\n}> = props => {\n const map: MapboxMap = useMap()\n let popup = null\n\n // Add Popup\n onMount(async () => {\n popup = new mapboxgl.Popup(props.options)\n .setLngLat(props.lnglat)\n .setDOMContent(<div>{props.children}</div>)\n .addTo(map())\n })\n // Remove Popup\n onCleanup(() => popup.remove())\n\n // Update Position\n createEffect(() => popup.setLngLat(props.lnglat))\n\n // Update Content\n createEffect(() => popup.setDOMContent(<div>{props.children}</div>))\n\n return <></>\n}\n\nexport default Popup\n","import { onMount, onCleanup, createEffect, Component } from 'solid-js'\nimport { useMap } from '../MapGL'\nimport type MapboxMap from 'mapbox-gl/src/ui/map'\nimport type {\n StyleImageInterface,\n StyleImageMetadata,\n} from 'mapbox-gl/src/style/style_image'\n\nconst Image: Component<{\n id: string\n url?: string\n image?:\n | HTMLImageElement\n | ImageBitmap\n | ImageData\n | { width: number; height: number; data: Uint8Array | Uint8ClampedArray }\n | StyleImageInterface\n options?: StyleImageMetadata\n}> = props => {\n const map: MapboxMap = useMap()\n // Add Image\n onMount(async () => {\n !map().isStyleLoaded() && (await map().once('styledata'))\n if (props.url) {\n map().loadImage(props.url, (error, image) => {\n if (error) throw error\n !map().hasImage(props.id) && map().addImage(props.id, image)\n })\n } else {\n !map().hasImage(props.id) &&\n map().addImage(props.id, props.image, props.options)\n }\n })\n // Remove Image\n onCleanup(() => map().hasImage(props.id) && map().removeImage(props.id))\n\n // Update Image\n createEffect(async () => {\n if (props.image && props.url) return\n\n if (props.url) {\n map().loadImage(props.url, (error, image) => {\n if (error) throw error\n !map().hasImage(props.id) && map().updateImage(props.id, image)\n })\n } else {\n map().hasImage(props.id) && map().updateImage(props.id, props.image)\n }\n })\n\n return <></>\n}\n\nexport default Image\n"],"names":["pending","start","useTransition","MapContext","createContext","useMap","useContext","MapGL","props","map","mapRef","onCleanup","remove","onMount","mapboxgl","Map","options","container","bounds","viewport","center","zoom","pitch","bearing","fitBoundsOptions","padding","createEffect","onMouseMove","on","event","lngLat","_onViewportChange","getCenter","getZoom","getPitch","getBearing","onViewportChange","fitBounds","index","triggerResize","window","requestAnimationFrame","loop","resize","children","class","classList","SourceContext","useSource","SourceComponent","id","createUniqueId","isStyleLoaded","once","getSource","addSource","source","getStyle","layers","forEach","layer","removeLayer","removeSource","type","data","setData","diff","newProps","prevProps","keys","Set","Object","reduce","acc","key","value","push","Layer","getLayer","addLayer","style","beforeType","find","l","beforeId","prev","paint","setPaintProperty","layout","setLayoutProperty","minzoom","maxzoom","max","setLayerZoomRange","visible","undefined","validate","filter","setFilter","featureState","loaded","removeFeatureState","sourceLayer","setFeatureState","state","Fog","setFog","Sky","layerId","Terrain","setTerrain","Control","control","setControl","createSignal","NavigationControl","ScaleControl","AttributionControl","FullscreenControl","GeolocateControl","addControl","position","removeControl","Marker","marker","setLngLat","lnglat","setPopup","Popup","setDOMContent","addTo","popup","Image","url","loadImage","error","image","hasImage","addImage","removeImage","updateImage"],"mappings":"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"}
@@ -3,7 +3,8 @@ import { useMap } from '../MapGL';
3
3
  const Image = props => {
4
4
  const map = useMap();
5
5
  // Add Image
6
- onMount(() => {
6
+ onMount(async () => {
7
+ !map().isStyleLoaded() && (await map().once('styledata'));
7
8
  if (props.url) {
8
9
  map().loadImage(props.url, (error, image) => {
9
10
  if (error)
@@ -43,16 +43,16 @@ const Layer = props => {
43
43
  }, props.style);
44
44
  // Update Visibility
45
45
  createEffect(async () => {
46
- if (!props.visible)
46
+ if (props.visible === undefined)
47
47
  return;
48
- !map().loaded() && (await map().once('styledata'));
48
+ !map().isStyleLoaded() && (await map().once('styledata'));
49
49
  map().setLayoutProperty(props.id, 'visibility', props.visible ? 'visible' : 'none', { validate: false });
50
50
  });
51
51
  // Update Filter
52
52
  createEffect(async () => {
53
53
  if (!props.filter)
54
54
  return;
55
- !map().loaded() && (await map().once('styledata'));
55
+ !map().isStyleLoaded() && (await map().once('styledata'));
56
56
  map().setFilter(props.id, props.filter);
57
57
  });
58
58
  // Update Feature State
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.0",
2
+ "version": "1.1.1",
3
3
  "name": "solid-map-gl",
4
4
  "description": "Solid Component Library for Mapbox GL JS",
5
5
  "author": "kaihuebner",