UNPKG

@abolhasanashori/react-neshan-map

Version:
1 lines 57.3 kB
{"version":3,"sources":["../src/context.ts","../src/element.ts","../src/ref.ts","../src/component.tsx","../src/util.ts","../src/layer.ts","../src/generic.ts","../src/Map/Map.tsx","../src/Marker/Marker.tsx","../src/Popup/util.tsx","../src/Popup/Popup.tsx","../src/Polyline/util.ts","../src/Polyline/base.ts","../src/Polyline/Polyline.tsx","../src/Circle/util.ts","../src/Circle/base.ts","../src/Circle/Circle.tsx"],"names":["useEffect","useRef","useState","useImperativeHandle","_a","NmpMap","jsx","Marker","NmpMarker","NmpPopup","Polyline","getStyles","base_default","Circle"],"mappings":"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","file":"index.mjs","sourcesContent":["import { createContext, use } from 'react';\nimport type { Map, Marker as NmpMarker } from 'mapbox-gl';\nimport type { Context } from 'react';\n\ninterface MapContextInterface {\n map: Map;\n marker?: NmpMarker;\n}\n\nfunction createNeshanContext(map: Map): MapContextInterface {\n return { map };\n}\n\nfunction useNeshanContext(): MapContextInterface {\n const context = use(MapContext);\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- intended runtime check\n if (context === null)\n throw new Error(\n 'No context provided: useNeshanContext() can only be used in a descendant of <MapContainer>'\n );\n\n return context;\n}\n\nconst MapContext = createContext(\n null\n) as unknown as Context<MapContextInterface>;\n\nexport { createNeshanContext, useNeshanContext, MapContext };\nexport type { MapContextInterface };\n","import { useEffect, useRef } from 'react';\nimport type { MapContextInterface } from './context';\nimport type { DisclosureFn } from './ref';\nimport type { MutableRefObject, RefObject } from 'react';\n\ninterface MapElement<T> {\n readonly instance: T;\n readonly context: MapContextInterface;\n}\n\ntype ComponentElementHook<E, P> = (\n props: P,\n setOpen?: DisclosureFn\n) => RefObject<MapElement<E>>;\n\ntype ElementHook<E, P> = (\n props: P,\n context: MapContextInterface\n) => RefObject<MapElement<E>>;\n\ntype CreateElementFn<E, P> = (\n props: P,\n context: MapContextInterface\n) => MapElement<E>;\ntype UpdateElementFn<E, P> = (instance: E, props: P, prevProps: P) => void;\ntype ElementHookResult<E, P> = (\n props: P,\n context: MapContextInterface\n) => RefObject<MapElement<E>>;\n\nfunction createElementHook<E, P>(\n createElement: CreateElementFn<E, P>,\n updateElement?: UpdateElementFn<E, P>\n): ElementHookResult<E, P> {\n if (updateElement === undefined) {\n return function useImmutableNeshanElement(props, context) {\n const elementRef = useRef<MapElement<E>>(undefined);\n elementRef.current ??= createElement(props, context);\n return elementRef as RefObject<MapElement<E>>;\n };\n }\n return function useMutableNeshanElement(props, context) {\n const elementRef = useRef<MapElement<E>>(undefined);\n elementRef.current ??= createElement(props, context);\n const propsRef = useRef(props);\n const { instance } = elementRef.current;\n\n useEffect(\n function updateElementProps() {\n if (propsRef.current !== props) {\n updateElement(instance, props, propsRef.current);\n propsRef.current = props;\n }\n },\n [instance, props]\n );\n\n return elementRef as MutableRefObject<MapElement<E>>;\n };\n}\n\nfunction createMapElement<T>(\n instance: T,\n context: MapContextInterface\n): MapElement<T> {\n return Object.freeze({\n instance,\n context,\n });\n}\n\nexport { createElementHook, createMapElement };\nexport type {\n MapElement,\n ComponentElementHook,\n ElementHook,\n CreateElementFn,\n UpdateElementFn,\n};\n","import { useNeshanContext } from './context';\r\nimport type { MapContextInterface } from './context';\r\nimport type { ElementHook, MapElement } from './element';\r\n\r\ntype DisclosureFn = (open: boolean) => void;\r\n\r\ntype LifeCycleHook<E, P> = (\r\n element: MapElement<E>,\r\n context: MapContextInterface,\r\n props?: P,\r\n setOpen?: DisclosureFn\r\n) => void;\r\n\r\nfunction createElementRef<E, P>(\r\n useElement: ElementHook<E, P>,\r\n useLifeCycle: LifeCycleHook<E, P>\r\n): (props: P, setOpen?: DisclosureFn) => ReturnType<ElementHook<E, P>> {\r\n return function useElementRef(props, setOpen) {\r\n const context = useNeshanContext();\r\n const elementRef = useElement(props, context);\r\n\r\n useLifeCycle(elementRef.current, context, props, setOpen);\r\n\r\n return elementRef;\r\n };\r\n}\r\n\r\nexport { createElementRef };\r\nexport type { DisclosureFn, LifeCycleHook };\r\n","import { Marker } from '@neshan-maps-platform/mapbox-gl';\nimport { useEffect, useImperativeHandle, useState } from 'react';\nimport { MapContext } from './context';\nimport type { ComponentElementHook } from './element';\nimport type { PropsWithChildren, RefAttributes } from 'react';\n\nfunction createContainerComponent<\n E,\n P extends PropsWithChildren<RefAttributes<E>>,\n>(useElement: ComponentElementHook<E, P>) {\n function ContainerComponent(props: P) {\n const { children, ref } = props;\n const { instance, context } = useElement(props).current;\n const [mounted, setMounted] = useState(false);\n\n useImperativeHandle(ref, () => instance);\n\n useEffect(() => {\n setMounted(true);\n return () => {\n setMounted(false);\n };\n }, []);\n\n const content = mounted ? children : null;\n\n return instance instanceof Marker ? (\n <MapContext\n value={{\n ...context,\n marker: instance,\n }}>\n {content}\n </MapContext>\n ) : (\n content\n );\n }\n\n return ContainerComponent;\n}\n\nexport { createContainerComponent };\n","export function generateId(): string {\r\n return (Math.floor(Math.random() * 10 ** 13) + Date.now())\r\n .toString(36)\r\n .substring(2);\r\n}\r\n\r\nexport function pick<T extends object, P extends keyof T>(\r\n obj: T,\r\n properties: P | P[]\r\n): Pick<T, P> {\r\n const propertyNames = !Array.isArray(properties) ? [properties] : properties;\r\n\r\n return propertyNames.reduce<Pick<T, P>>(\r\n (res, key) => {\r\n if (key in obj) {\r\n res[key] = obj[key];\r\n }\r\n return res;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter -- required for type safety\r\n {} as Pick<T, P>\r\n );\r\n}\r\n\r\nexport function pickResult<T extends object, P extends keyof T>(\r\n obj: T,\r\n properties: P | P[]\r\n): [Pick<T, P>, Omit<T, P>] {\r\n const propertyNames = !Array.isArray(properties) ? [properties] : properties;\r\n\r\n const picked = {} as Pick<T, P>;\r\n const remain = { ...obj } as Omit<T, P>;\r\n\r\n propertyNames.forEach(prop => {\r\n if (prop in obj) {\r\n picked[prop] = obj[prop];\r\n // @ts-expect-error -- intended behavior\r\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete -- intended behavior\r\n delete remain[prop];\r\n }\r\n });\r\n\r\n return [picked, remain];\r\n}\r\n\r\nexport function removeUndefined<T extends object>(obj: T): T {\r\n const result = {} as T;\r\n\r\n Object.keys(obj).forEach(key => {\r\n const value = obj[key as keyof T];\r\n\r\n if (value !== undefined) {\r\n result[key as keyof T] = value as T[keyof T];\r\n }\r\n });\r\n\r\n return result;\r\n}\r\n","import { useEffect } from 'react';\r\nimport { generateId } from '@/util';\r\nimport type { MapContextInterface } from './context';\r\nimport type { MapElement } from './element';\r\nimport type { PartiallyOptional } from '@/types';\r\nimport type { Map, AnyLayer, AnySourceData } from 'mapbox-gl';\r\n\r\ninterface LayerImpl {\r\n addTo: (map: Map) => this;\r\n remove: () => this;\r\n}\r\n\r\ninterface LayerOptions {\r\n sourceId?: string;\r\n layerId?: string;\r\n}\r\n\r\nclass Layer<L extends AnyLayer, S extends AnySourceData> implements LayerImpl {\r\n protected _map: Map | null | undefined;\r\n protected _layerId: string;\r\n protected _sourceId: string;\r\n protected _source: S;\r\n protected _layer: L;\r\n\r\n constructor(\r\n layer: PartiallyOptional<L, 'id'>,\r\n source: S,\r\n options: LayerOptions = {}\r\n ) {\r\n this._layerId = options.layerId ?? layer.id ?? generateId();\r\n this._sourceId = options.sourceId ?? generateId();\r\n this._source = source;\r\n this._layer = { id: this._layerId, ...layer } as unknown as L;\r\n }\r\n\r\n addTo(map: Map): this {\r\n this._map = map;\r\n\r\n return this._init();\r\n }\r\n\r\n getSource(): S {\r\n return this._source;\r\n }\r\n\r\n getSourceId(): string {\r\n return this._sourceId;\r\n }\r\n\r\n getLayer(): L {\r\n return this._layer;\r\n }\r\n\r\n getLayerId(): string {\r\n return this._layerId;\r\n }\r\n\r\n remove(): this {\r\n const map = this._map;\r\n if (!map) return this;\r\n\r\n map.removeLayer(this._layerId);\r\n map.removeSource(this._sourceId);\r\n return this;\r\n }\r\n\r\n reset(): this {\r\n return this.remove()._init();\r\n }\r\n\r\n protected _init(): this {\r\n const map = this._map;\r\n if (!map) return this;\r\n map.addSource(this._sourceId, this._source);\r\n map.addLayer(this._layer);\r\n\r\n return this;\r\n }\r\n\r\n protected _setSource(source: S): this {\r\n this._source = source;\r\n return this;\r\n }\r\n\r\n protected _setLayer(layer: L): this {\r\n this._layer = layer;\r\n return this;\r\n }\r\n}\r\n\r\nfunction useLayerLifeCycle<L extends LayerImpl>(\r\n element: MapElement<L>,\r\n context: MapContextInterface\r\n): void {\r\n useEffect(\r\n function addLayer() {\r\n const { instance } = element;\r\n const { map } = context;\r\n\r\n instance.addTo(map);\r\n\r\n return function removeLayer() {\r\n instance.remove();\r\n };\r\n },\r\n [element, context]\r\n );\r\n}\r\n\r\nexport default Layer;\r\nexport { useLayerLifeCycle };\r\nexport type { LayerOptions, LayerImpl };\r\n","import { createContainerComponent } from './component';\nimport { createElementHook } from './element';\nimport { useLayerLifeCycle } from './layer';\nimport { createElementRef } from './ref';\nimport type { CreateElementFn, UpdateElementFn } from './element';\nimport type { LayerImpl } from './layer';\nimport type { PropsWithChildren } from 'react';\n\nfunction createLayerComponent<E extends LayerImpl, P extends PropsWithChildren>(\n createElement: CreateElementFn<E, P>,\n updateElement: UpdateElementFn<E, P>\n) {\n const useElement = createElementHook(createElement, updateElement);\n const useLayer = createElementRef(useElement, useLayerLifeCycle);\n return createContainerComponent(useLayer);\n}\n\nexport { createLayerComponent };\n","import {\n FullscreenControl,\n Map as NmpMap,\n} from '@neshan-maps-platform/mapbox-gl';\nimport {\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n useMemo,\n} from 'react';\nimport { createNeshanContext, MapContext } from '@/context';\nimport type { MapContextInterface } from '@/context';\nimport type { MapBoxSKDOptionsModel } from '@neshan-maps-platform/mapbox-gl/dist/src/parameters/parameters';\nimport type { Map as MbMap } from 'mapbox-gl';\nimport type { CSSProperties, PropsWithChildren, RefAttributes } from 'react';\nimport '@neshan-maps-platform/mapbox-gl/dist/NeshanMapboxGl.css';\n\ntype MapType = MbMap;\n\ninterface MapProps\n extends Omit<MapBoxSKDOptionsModel, 'container' | 'style'>,\n PropsWithChildren<RefAttributes<MapType | null>> {\n style?: CSSProperties;\n id?: string;\n className?: string;\n fullscreen?: boolean;\n}\n\nfunction Map(props: MapProps) {\n const {\n children,\n style,\n id,\n className,\n center,\n zoom,\n minZoom,\n maxZoom,\n fullscreen,\n ref,\n ...options\n } = props;\n const propsRef = useRef(props);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- these props usually doesn't change\n const containerProps = useMemo(() => ({ className, id, style }), []);\n const [context, setContext] = useState<MapContextInterface | null>(null);\n const [loaded, setLoaded] = useState(false);\n\n useImperativeHandle<MapType | null, MapType | null>(\n ref,\n () => context?.map ?? null,\n [context]\n );\n\n useEffect(() => {\n const map = context?.map as unknown as MbMap | undefined;\n if (!map) return;\n\n if (\n props.center !== undefined &&\n props.center !== propsRef.current.center\n ) {\n map.setCenter(props.center);\n }\n if (props.zoom !== undefined && props.zoom !== propsRef.current.zoom) {\n map.setZoom(props.zoom);\n }\n }, [context?.map, props]);\n\n const mapRef = useCallback(function createMap(\n container: HTMLDivElement | null\n ) {\n if (!container || context) return;\n const map = new NmpMap({\n ...options,\n center,\n zoom: zoom ?? 0,\n minZoom: !minZoom || minZoom < 2 ? 2 : minZoom,\n maxZoom: !maxZoom || maxZoom > 17 ? 17 : maxZoom,\n container,\n }) as unknown as MbMap;\n\n if (center !== undefined) {\n map.setCenter(center);\n }\n\n if (zoom !== undefined) {\n map.setZoom(zoom);\n }\n\n if (fullscreen) {\n map.addControl(new FullscreenControl());\n }\n\n map.once('load', () => {\n setLoaded(true);\n });\n\n setContext(createNeshanContext(map));\n // eslint-disable-next-line react-hooks/exhaustive-deps -- ref callback\n }, []);\n\n const contents =\n loaded && context ? (\n <MapContext value={context}>{children}</MapContext>\n ) : null;\n\n return (\n <div {...containerProps} ref={mapRef}>\n {contents}\n </div>\n );\n}\n\nexport default Map;\nexport type { MapType, MapProps };\n","import { Marker as NmpMarker } from '@neshan-maps-platform/mapbox-gl';\r\nimport { createMapElement } from '@/element';\r\nimport { createLayerComponent } from '@/generic';\r\nimport type { LngLat } from '@/types';\r\nimport type {\r\n MarkerOptions as NmpMarkerOptions,\r\n Marker as NmpMarkerType,\r\n} from 'mapbox-gl';\r\nimport type { PropsWithChildren } from 'react';\r\n\r\ntype MarkerType = NmpMarkerType;\r\n\r\ninterface MarkerProps extends NmpMarkerOptions, PropsWithChildren {\r\n lngLat: LngLat;\r\n}\r\n\r\nconst Marker = createLayerComponent<MarkerType, MarkerProps>(\r\n function createMarker(props, context) {\r\n const { lngLat, ...other } = props;\r\n const marker = new NmpMarker(other);\r\n marker.setLngLat(lngLat);\r\n\r\n return createMapElement(marker, context);\r\n },\r\n function updateMarker(marker, props, prevProps) {\r\n if (props.lngLat !== prevProps.lngLat) {\r\n marker.setLngLat(props.lngLat);\r\n }\r\n if (\r\n props.draggable !== undefined &&\r\n props.draggable !== prevProps.draggable\r\n ) {\r\n marker.setDraggable(props.draggable);\r\n }\r\n if (props.rotation !== undefined && props.rotation !== prevProps.rotation) {\r\n marker.setRotation(props.rotation);\r\n }\r\n if (\r\n props.rotationAlignment !== undefined &&\r\n props.rotationAlignment !== prevProps.rotationAlignment\r\n ) {\r\n marker.setRotationAlignment(props.rotationAlignment);\r\n }\r\n if (props.offset !== undefined && props.offset !== prevProps.offset) {\r\n marker.setOffset(props.offset);\r\n }\r\n if (\r\n props.occludedOpacity !== undefined &&\r\n props.occludedOpacity !== prevProps.occludedOpacity\r\n ) {\r\n marker.setOccludedOpacity(props.occludedOpacity);\r\n }\r\n if (\r\n props.pitchAlignment !== undefined &&\r\n props.pitchAlignment !== prevProps.pitchAlignment\r\n ) {\r\n marker.setPitchAlignment(props.pitchAlignment);\r\n }\r\n }\r\n);\r\n\r\nexport default Marker;\r\nexport type { MarkerProps, MarkerType };\r\n","import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { createElementHook } from '@/element';\nimport { createElementRef } from '@/ref';\nimport type { PopupProps, PopupType } from './Popup';\nimport type { ComponentElementHook, CreateElementFn } from '@/element';\nimport type { LifeCycleHook } from '@/ref';\nimport type { ReactNode, Ref } from 'react';\n\nfunction createPopupContainer(\n usePopup: ComponentElementHook<PopupType, PopupProps>\n) {\n function PopupContainer(props: PopupProps, ref: Ref<PopupType>): ReactNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- for future uses\n const [opened, setOpened] = useState(false);\n const contentRef = useRef(document.createElement('div'));\n const { instance: popup } = usePopup(props, setOpened).current;\n\n useImperativeHandle(ref, () => popup);\n\n useEffect(\n function attachContent() {\n popup.setDOMContent(contentRef.current);\n },\n [popup]\n );\n\n return createPortal(props.children, contentRef.current);\n }\n\n return forwardRef(PopupContainer);\n}\n\nfunction createPopupComponent(\n createElement: CreateElementFn<PopupType, PopupProps>,\n useLifeCycle: LifeCycleHook<PopupType, PopupProps>\n) {\n const usePopupHook = createElementHook(createElement);\n const usePopupRef = createElementRef(usePopupHook, useLifeCycle);\n return createPopupContainer(usePopupRef);\n}\n\nexport { createPopupComponent };\n","import { Popup as NmpPopup } from '@neshan-maps-platform/mapbox-gl';\r\nimport { useEffect } from 'react';\r\nimport { createMapElement } from '@/element';\r\nimport { createPopupComponent } from './util';\r\nimport type { LngLat } from '@/types';\r\nimport type {\r\n PopupOptions as NmpPopupOptions,\r\n Popup as NmpPopupType,\r\n} from 'mapbox-gl';\r\nimport type { PropsWithChildren } from 'react';\r\n\r\ntype PopupType = NmpPopupType;\r\n\r\ninterface PopupProps extends NmpPopupOptions, PropsWithChildren {\r\n show?: boolean;\r\n lngLat?: LngLat;\r\n}\r\n\r\nconst Popup = createPopupComponent(\r\n function createPopup(props, context) {\r\n const popup = new NmpPopup(props);\r\n return createMapElement(popup, context);\r\n },\r\n function usePopupLifeCycle(element, context, props, setOpen) {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- intended\r\n const { lngLat, show } = props!;\r\n const { map, marker } = context;\r\n useEffect(\r\n function addPopup() {\r\n const { instance: popup } = element;\r\n\r\n function handleOpen(): void {\r\n setOpen?.(true);\r\n }\r\n\r\n function handleClose(): void {\r\n setOpen?.(false);\r\n }\r\n\r\n if (marker === undefined) {\r\n if (lngLat !== undefined) {\r\n popup.setLngLat(lngLat);\r\n }\r\n popup.addTo(map);\r\n } else {\r\n marker.setPopup(popup).togglePopup();\r\n }\r\n\r\n popup.on('open', handleOpen);\r\n popup.on('close', handleClose);\r\n\r\n return function removePopup() {\r\n popup.off('open', handleOpen);\r\n popup.off('close', handleClose);\r\n marker?.setPopup(undefined);\r\n popup.remove();\r\n };\r\n },\r\n [marker, element, lngLat, setOpen, map, show]\r\n );\r\n }\r\n);\r\n\r\nexport default Popup;\r\nexport type { PopupProps, PopupType };\r\n","import type { LngLat } from '@/types';\r\n\r\nfunction isFlat(lngLats: LngLat[] | LngLat[][]): lngLats is LngLat[] {\r\n return !Array.isArray(lngLats[0]) || !Array.isArray(lngLats[0][0]);\r\n}\r\n\r\nexport { isFlat };\r\n","import Layer from '@/layer';\r\nimport { generateId, pickResult, removeUndefined } from '@/util';\r\nimport { isFlat } from './util';\r\nimport type { LayerOptions } from '@/layer';\r\nimport type { LngLat } from '@/types';\r\nimport type {\r\n GeoJSONSourceRaw,\r\n LineLayer,\r\n LineLayout,\r\n LinePaint,\r\n} from 'mapbox-gl';\r\n\r\nfunction getStyles(options: PolylineStyleOptions): PolylineStyle {\r\n const [\r\n layout,\r\n {\r\n blur,\r\n color,\r\n dasharray,\r\n gapWidth,\r\n gradient,\r\n offset,\r\n opacity,\r\n pattern,\r\n translate,\r\n width,\r\n translateAnchor,\r\n transitions,\r\n },\r\n ] = pickResult(options, [\r\n 'line-cap',\r\n 'line-join',\r\n 'line-miter-limit',\r\n 'line-round-limit',\r\n 'line-sort-key',\r\n 'visibility',\r\n ]);\r\n\r\n const paint: LinePaint = removeUndefined({\r\n 'line-blur': blur,\r\n 'line-color': color,\r\n 'line-dasharray': dasharray,\r\n 'line-gap-width': gapWidth,\r\n 'line-gradient': gradient,\r\n 'line-offset': offset,\r\n 'line-opacity': opacity,\r\n 'line-pattern': pattern,\r\n 'line-translate': translate,\r\n 'line-translate-anchor': translateAnchor,\r\n 'line-width': width,\r\n 'line-blur-transition': transitions?.blur,\r\n 'line-color-transition': transitions?.color,\r\n 'line-dasharray-transition': transitions?.dasharray,\r\n 'line-gap-width-transition': transitions?.gapWidth,\r\n 'line-offset-transition': transitions?.offset,\r\n 'line-opacity-transition': transitions?.opacity,\r\n 'line-pattern-transition': transitions?.pattern,\r\n 'line-translate-transition': transitions?.translate,\r\n 'line-width-transition': transitions?.width,\r\n });\r\n\r\n return {\r\n layout: { 'line-cap': 'round', 'line-join': 'round', ...layout },\r\n paint,\r\n };\r\n}\r\n\r\ninterface PolylineTransitionOptions {\r\n opacity?: LinePaint['line-opacity-transition'];\r\n color?: LinePaint['line-color-transition'];\r\n translate?: LinePaint['line-translate-transition'];\r\n width?: LinePaint['line-width-transition'];\r\n gapWidth?: LinePaint['line-gap-width-transition'];\r\n offset?: LinePaint['line-offset-transition'];\r\n blur?: LinePaint['line-blur-transition'];\r\n dasharray?: LinePaint['line-dasharray-transition'];\r\n pattern?: LinePaint['line-pattern-transition'];\r\n}\r\n\r\ninterface PolylineStyleOptions extends LineLayout {\r\n opacity?: LinePaint['line-opacity'];\r\n color?: LinePaint['line-color'];\r\n dasharray?: LinePaint['line-dasharray'];\r\n translate?: LinePaint['line-translate'];\r\n translateAnchor?: LinePaint['line-translate-anchor'];\r\n width?: LinePaint['line-width'];\r\n gapWidth?: LinePaint['line-gap-width'];\r\n offset?: LinePaint['line-offset'];\r\n blur?: LinePaint['line-blur'];\r\n pattern?: LinePaint['line-pattern'];\r\n gradient?: LinePaint['line-gradient'];\r\n transitions?: PolylineTransitionOptions;\r\n}\r\n\r\ninterface PolylineOptions extends PolylineStyleOptions, LayerOptions {}\r\n\r\ninterface PolylineStyle {\r\n layout: LineLayout;\r\n paint: LinePaint;\r\n}\r\n\r\ntype PolylineType = Polyline;\r\n\r\nclass Polyline extends Layer<LineLayer, GeoJSONSourceRaw> {\r\n private _lngLats: LngLat[] | LngLat[][];\r\n\r\n constructor(lngLats: LngLat[] | LngLat[][], options: PolylineOptions = {}) {\r\n const { layerId, sourceId = generateId(), ...styleOptions } = options;\r\n\r\n super(\r\n {\r\n type: 'line',\r\n source: sourceId,\r\n ...getStyles(styleOptions),\r\n },\r\n {\r\n type: 'geojson',\r\n data: {\r\n type: 'Feature',\r\n properties: {},\r\n geometry: isFlat(lngLats)\r\n ? { type: 'LineString', coordinates: lngLats }\r\n : { type: 'MultiLineString', coordinates: lngLats },\r\n },\r\n },\r\n {\r\n sourceId,\r\n layerId,\r\n }\r\n );\r\n\r\n this._lngLats = lngLats;\r\n }\r\n\r\n getLatLngs(): LngLat[] | LngLat[][] {\r\n return this._lngLats;\r\n }\r\n\r\n setLatLngs(lngLats: LngLat[] | LngLat[][]): this {\r\n this._lngLats = lngLats;\r\n this._updateSource(lngLats);\r\n return this;\r\n }\r\n\r\n setStyles(options: PolylineStyleOptions): this {\r\n const styles = getStyles(options);\r\n\r\n return this._updateLayer(styles);\r\n }\r\n\r\n private _updateLayer(styles: PolylineStyle): this {\r\n return this._setLayer({\r\n ...this._layer,\r\n ...styles,\r\n }).reset();\r\n }\r\n\r\n private _updateSource(lngLats: LngLat[] | LngLat[][]): this {\r\n return this._setSource({\r\n ...this._source,\r\n data: {\r\n type: 'Feature',\r\n properties: {},\r\n geometry: isFlat(lngLats)\r\n ? { type: 'LineString', coordinates: lngLats }\r\n : { type: 'MultiLineString', coordinates: lngLats },\r\n },\r\n }).reset();\r\n }\r\n}\r\n\r\nexport default Polyline;\r\nexport type {\r\n PolylineType,\r\n PolylineOptions,\r\n PolylineStyleOptions,\r\n PolylineTransitionOptions,\r\n};\r\n","import { createMapElement } from '@/element';\r\nimport { createLayerComponent } from '@/generic';\r\nimport { default as PolylineClass } from './base';\r\nimport type { PolylineOptions, PolylineType } from './base';\r\nimport type { LngLat } from '@/types';\r\nimport type { PropsWithChildren } from 'react';\r\n\r\ninterface PolylineProps extends PolylineOptions, PropsWithChildren {\r\n lngLats: LngLat[] | LngLat[][];\r\n}\r\n\r\nconst Polyline = createLayerComponent<PolylineType, PolylineProps>(\r\n function createPolyline(props, context) {\r\n const { lngLats, ...other } = props;\r\n const polyline = new PolylineClass(lngLats, other);\r\n\r\n return createMapElement(polyline, context);\r\n },\r\n function updatePolyline(polyline, props, prevProps) {\r\n if (props.lngLats !== prevProps.lngLats) {\r\n polyline.setLatLngs(props.lngLats);\r\n }\r\n\r\n if (\r\n props.color !== prevProps.color ||\r\n props.blur !== prevProps.blur ||\r\n props.dasharray !== prevProps.dasharray ||\r\n props.gapWidth !== prevProps.gapWidth ||\r\n props.gradient !== prevProps.gradient ||\r\n props.offset !== prevProps.offset ||\r\n props.opacity !== prevProps.opacity ||\r\n props.pattern !== prevProps.pattern ||\r\n props.translate !== prevProps.translate ||\r\n props.width !== prevProps.width ||\r\n props.translateAnchor !== prevProps.translateAnchor ||\r\n props['line-cap'] !== prevProps['line-cap'] ||\r\n props['line-join'] !== prevProps['line-join'] ||\r\n props['line-miter-limit'] !== prevProps['line-miter-limit'] ||\r\n props['line-round-limit'] !== prevProps['line-round-limit'] ||\r\n props['line-sort-key'] !== prevProps['line-sort-key'] ||\r\n props.visibility !== prevProps.visibility ||\r\n props.transitions?.blur !== prevProps.transitions?.blur ||\r\n props.transitions?.color !== prevProps.transitions?.color ||\r\n props.transitions?.dasharray !== prevProps.transitions?.dasharray ||\r\n props.transitions?.gapWidth !== prevProps.transitions?.gapWidth ||\r\n props.transitions?.offset !== prevProps.transitions?.offset ||\r\n props.transitions?.opacity !== prevProps.transitions?.opacity ||\r\n props.transitions?.pattern !== prevProps.transitions?.pattern ||\r\n props.transitions?.translate !== prevProps.transitions?.translate ||\r\n props.transitions?.width !== prevProps.transitions?.width\r\n ) {\r\n polyline.setStyles(props);\r\n }\r\n }\r\n);\r\n\r\nexport default Polyline;\r\nexport type { PolylineProps };\r\n","import type { LngLat } from '@/types';\r\n\r\nfunction isMultiPoint(LngLat: LngLat | LngLat[]): LngLat is LngLat[] {\r\n return Array.isArray(LngLat[0]);\r\n}\r\n\r\nexport { isMultiPoint };\r\n","import Layer from '@/layer';\r\nimport { generateId, pickResult, removeUndefined } from '@/util';\r\nimport { isMultiPoint } from './util';\r\nimport type { LayerOption