@evergis/react 2.0.159 → 2.0.161
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/react.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.esm.js","sources":["../src/hooks/usePagination.ts","../src/contexts/EvergisContext.tsx","../src/contexts/MapContext.tsx","../src/contexts/TooltipContext.tsx","../src/contexts/LegendContext.tsx","../src/contexts/EvergisSelectContext.tsx","../src/hooks/useEventPoint.ts","../src/hooks/useMapViewActions.ts","../src/hooks/useZoomToFeature.ts","../src/hooks/useEvergisCard.ts","../src/utils/format.ts","../src/utils/url.ts","../src/core/attributes/format.ts","../src/core/classification/types.ts","../src/core/classification/ClassificationCondition.ts","../src/core/classification/parameter.ts","../src/utils/isObject.ts","../src/core/classification/parameterValue.ts","../src/core/style/types/utils.ts","../src/core/style/types/label.ts","../src/core/style/types/symbol.ts","../src/core/style/types/brush.ts","../src/core/style/types/miters.ts","../src/core/style/types/offset.ts","../src/core/style/types/parameterValue.ts","../src/core/style/types/style.ts","../src/core/classification/getClassifications.ts","../src/core/classification/ClassificationManager.ts","../src/core/classification/unClassify.ts","../src/core/classification/printClass.ts","../src/core/crs/index.ts","../src/core/attributes/utils.ts","../src/core/style/compositeSymbol.ts","../src/core/style/EvergisStyle.ts","../src/utils/color.ts","../src/symbols/previewLimits.ts","../src/utils/math.ts","../src/symbols/strokeStyle.ts","../src/symbols/Evergis/SGisBrushFill.ts","../src/symbols/Evergis/SGisImageFill.ts","../src/symbols/Evergis/SGisPolygonSymbol.ts","../src/symbols/LineMiters/LineMiterRender.ts","../src/symbols/LineMiters/ArrowLineMiterRender.ts","../src/controls/MeasureToolFormatters.ts","../src/controls/BaseMeasureToolCreator.ts","../src/controls/BaseMeasureToolEditor.ts","../src/utils/metersToPixels.ts","../src/utils/polygonCircleFromPoint.ts","../src/utils/isNumeric.ts","../src/utils/isParameterType.ts","../src/symbols/LineMiters/CircleLineMiterRender.ts","../src/symbols/LineMiters/SquareLineMiterRender.ts","../src/symbols/LineMiters/getLineMiterRender.ts","../src/symbols/LineMiters/updateRingsForMiter.ts","../src/symbols/Evergis/SGisPolylineSymbol.ts","../src/symbols/Label/LabelSymbol.tsx","../src/symbols/Label/createLabelSymbol.tsx","../src/symbols/Shadowed/getEditorPointRenderer.ts","../src/symbols/Shadowed/ShadowedPointSymbol.ts","../src/symbols/Shadowed/ShadowedPolySymbol.ts","../src/symbols/Selected/SelectedPointSymbol.ts","../src/symbols/Selected/SelectedPolySymbol.ts","../src/symbols/Selected/selectedSymbols.ts","../src/symbols/SVGPoly/index.ts","../src/symbols/guards.ts","../src/symbols/mockFeatures.ts","../src/symbols/getSymbolRenders.ts","../src/symbols/renderSymbolToCanvas.ts","../src/symbols/deserializeSymbol.ts","../src/symbols/adjustSymbol.ts","../src/core/feature/EvergisFeature.ts","../src/core/feature/evaluateCondition.ts","../src/core/feature/getFeatureSymbol.ts","../src/core/layer/EvergisLayer.ts","../src/core/legend/createLegendItem.ts","../src/core/legend/isValidParameter.ts","../src/core/legend/createStyleLegend.ts","../src/core/legend/createValueTitle.ts","../src/core/measurer.ts","../src/core/scale.ts","../src/hooks/useLegend/useLegend.ts","../src/hooks/useLegend/useLayerLegend.ts","../src/hooks/useLegend/useMapLegend.ts","../src/hooks/useLegend/useLegendValueSymbol.ts","../src/hooks/useSymbol.ts","../src/hooks/useCanvas.ts","../src/hooks/useMount.ts","../src/hooks/useProperty.ts","../src/hooks/useUpdate.ts","../src/hooks/useLayerOrder.ts","../src/hooks/useLayerVisibility.ts","../src/hooks/useLayerOpacity.ts","../src/hooks/useEvergisDynamicLayer.ts","../src/hooks/useEvergisTileLayer.ts","../src/hooks/useFeatureLayer.ts","../src/hooks/useMapBboxChange.ts","../src/hooks/useMapResize.ts","../src/hooks/useMapPick.ts","../src/hooks/useMapState.ts","../src/hooks/useMapView.ts","../src/hooks/useMapWrapper.ts","../src/hooks/useMaxMinScale.ts","../src/hooks/useScale.ts","../src/hooks/useUpdateMapView.ts","../src/hooks/useTooltip.ts","../src/hooks/useClusterLayer.ts","../src/hooks/useEvergisSelect.ts","../src/hooks/useCrs.ts","../src/hooks/useDraggableMarker.ts","../src/hooks/useMetersToPixels.ts","../src/hooks/useDebouncedCallback.ts","../src/hooks/useToggle.ts","../src/components/Symbol/Symbol.tsx","../src/components/Symbol/styled.ts","../src/components/Symbol/StyleSymbol.tsx","../src/components/EvergisCard/styled.ts","../src/components/EvergisCard/MailValue.tsx","../src/components/EvergisCard/PhoneValue.tsx","../src/components/EvergisCard/UrlValue.tsx","../src/components/EvergisCard/AttributeValue.tsx","../src/components/EvergisCard/EvergisCardAttribute.tsx","../src/components/EvergisCard/StyledCard.tsx","../src/components/EvergisCard/EvergisCard.tsx","../src/components/Layers/ClusterLayer.tsx","../src/components/Layers/EvergisDynamicLayer.tsx","../src/components/Layers/FeatureLayer.tsx","../src/components/Layers/useSGisFeatures.ts","../src/components/Layers/EvergisSelectLayer.tsx","../src/components/Layers/EvergisTileLayer.tsx","../src/hooks/useTileLayer.ts","../src/components/Layers/TileLayer.tsx","../src/components/EvergisSelect/EvergisSelect.tsx","../src/components/Legend/styled.ts","../src/components/Legend/LegendSection.tsx","../src/components/SearchInput/styled.ts","../src/components/SearchInput/SearchInput.tsx","../src/components/Legend/LegendSymbol.tsx","../src/components/Legend/LegendValue.tsx","../src/components/Legend/getSymbolSize.ts","../src/components/Legend/Legend.tsx","../src/components/Map/Map.tsx","../src/ui/mixins/placementMixin.ts","../src/components/MapControls/styled.ts","../src/components/MapControls/Measure.tsx","../src/components/MapControls/Search.tsx","../src/components/MapControls/Fullscreen.tsx","../src/components/MapLegend/styled.ts","../src/components/MapLegend/MapLegend.tsx","../src/components/MapLegend/MapLegendSymbol.tsx","../src/components/MapLegend/MapLegendDescription.tsx","../src/components/MapLegend/MinimizedLegend.tsx","../src/components/Measurer/MeasureTool.tsx","../src/components/Measurer/Measurer.tsx","../src/components/ScaleControl/styled.ts","../src/components/ScaleControl/ScaleRuler.tsx","../src/components/ScaleControl/Zoom.tsx","../src/components/ScaleControl/ZoomLevel.tsx","../src/components/Tooltip/styled.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Noop/index.tsx","../src/components/DraggableMarker/DraggableMarker.tsx"],"sourcesContent":["import { useCallback, useState } from 'react';\r\n\r\ntype Pagination = [\r\n number,\r\n { prev: () => void; next: () => void; reset: () => void }\r\n];\r\n\r\nexport const usePagination = (length: number): Pagination => {\r\n const [current, setCurrent] = useState(0);\r\n\r\n const next = useCallback(\r\n () => setCurrent(value => (value < length - 1 ? value + 1 : value)),\r\n [length, setCurrent]\r\n );\r\n\r\n const prev = useCallback(\r\n () => setCurrent(value => (value === 0 ? value : value - 1)),\r\n [setCurrent]\r\n );\r\n\r\n const reset = useCallback(() => setCurrent(0), [setCurrent]);\r\n\r\n return [current, { prev, next, reset }];\r\n};\r\n","import React, { createContext, useContext, useMemo } from 'react';\r\nimport { Api } from '@evergis/api';\r\n\r\nconst BASE_URL = '/';\r\n\r\nconst defaultApi = new Api({\r\n url: BASE_URL,\r\n});\r\n\r\nconst evergisContext = createContext<Api>(defaultApi);\r\n\r\ntype EvergisProviderProps = {\r\n api?: Api;\r\n};\r\n\r\nexport const EvergisProvider: React.FC<EvergisProviderProps> = ({\r\n api,\r\n children,\r\n}) => {\r\n const value = useMemo(() => api || defaultApi, [api]);\r\n return (\r\n <evergisContext.Provider value={value}>{children}</evergisContext.Provider>\r\n );\r\n};\r\n\r\nexport const useEvergisContext = () => useContext(evergisContext);\r\n","import React, { createContext, useContext, useMemo } from 'react';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\n\r\ntype MapContext = {\r\n map: Map;\r\n painter: DomPainter;\r\n};\r\n\r\nconst defaultMap = new Map();\r\nconst defaultPainter = new DomPainter(defaultMap);\r\n\r\nconst mapContext = createContext<MapContext>({\r\n map: defaultMap,\r\n painter: defaultPainter,\r\n});\r\n\r\ntype MapProviderProps = {\r\n map?: Map;\r\n painter?: DomPainter;\r\n};\r\n\r\nexport const MapProvider: React.FC<MapProviderProps> = ({\r\n map,\r\n painter,\r\n children,\r\n}) => {\r\n const value = useMemo(\r\n () => ({\r\n map: map || defaultMap,\r\n painter: painter || (map ? new DomPainter(map) : defaultPainter),\r\n }),\r\n [map, painter]\r\n );\r\n return <mapContext.Provider value={value}>{children}</mapContext.Provider>;\r\n};\r\n\r\nexport const useMapContext = () => useContext(mapContext);\r\n","import React, { createContext, useContext, useMemo } from 'react';\r\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\r\n\r\ntype TooltipContext = {\r\n layer: FeatureLayer;\r\n popupLayer: FeatureLayer;\r\n};\r\n\r\nconst defaultLayer = new FeatureLayer();\r\n\r\nconst defaultPopupLayer = new FeatureLayer();\r\n\r\nconst tooltipContext = createContext<TooltipContext>({\r\n layer: defaultLayer,\r\n popupLayer: defaultPopupLayer,\r\n});\r\n\r\ntype TooltipProviderProps = {\r\n layer?: FeatureLayer;\r\n popupLayer?: FeatureLayer;\r\n zIndex?: number;\r\n};\r\n\r\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\r\n layer,\r\n popupLayer,\r\n children,\r\n}) => {\r\n const value = useMemo(\r\n () => ({\r\n layer: layer || defaultLayer,\r\n popupLayer: popupLayer || defaultPopupLayer,\r\n }),\r\n [layer, popupLayer]\r\n );\r\n\r\n return (\r\n <tooltipContext.Provider value={value}>{children}</tooltipContext.Provider>\r\n );\r\n};\r\n\r\nexport const useTooltipContext = () => useContext(tooltipContext);\r\n","import React, { createContext, useContext } from 'react';\r\nimport { StyleSymbolType } from '../core/style/types/symbol';\r\n\r\nconst LegendContext = createContext<StyleSymbolType | null>(null);\r\n\r\ntype LegendProviderProps = {\r\n symbol?: StyleSymbolType;\r\n};\r\n\r\nexport const LegendProvider: React.FC<LegendProviderProps> = ({\r\n symbol,\r\n children,\r\n}) => {\r\n return (\r\n <LegendContext.Provider value={symbol || null}>\r\n {children}\r\n </LegendContext.Provider>\r\n );\r\n};\r\n\r\nexport const useLegendContext = () => useContext(LegendContext);\r\n","import React, { createContext, useContext } from 'react';\r\nimport { EvergisLayer } from '../core/layer/EvergisLayer';\r\n\r\nconst evergisSelectContext = createContext<EvergisLayer[]>([]);\r\n\r\ntype EvergisSelectProviderProps = {\r\n layers: EvergisLayer[];\r\n};\r\n\r\nexport const EvergisSelectProvider: React.FC<EvergisSelectProviderProps> = ({\r\n layers,\r\n children,\r\n}) => (\r\n <evergisSelectContext.Provider value={layers}>\r\n {children}\r\n </evergisSelectContext.Provider>\r\n);\r\nexport const useEvergisSelectContext = () => useContext(evergisSelectContext);\r\n","import { useCallback } from 'react';\r\nimport { getMouseOffset } from '@evergis/sgis/es/utils/domEvent';\r\nimport { sGisMouseEvent } from '@evergis/sgis/es/commonEvents';\r\nimport { IPoint } from '@evergis/sgis/es/Point';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport const useEventPoint = () => {\r\n const { painter } = useMapContext();\r\n\r\n return useCallback(\r\n (event: sGisMouseEvent | TouchEvent | MouseEvent): IPoint => {\r\n if ('point' in event) {\r\n return event.point;\r\n }\r\n\r\n const browserEvent =\r\n 'browserEvent' in event ? event['browserEvent'] : event;\r\n\r\n const wrapper = painter.wrapper;\r\n const { x, y } = getMouseOffset(\r\n wrapper,\r\n 'touches' in browserEvent\r\n ? {\r\n pageX: browserEvent.touches[0].pageX,\r\n pageY: browserEvent.touches[0].pageY,\r\n }\r\n : browserEvent\r\n );\r\n const originalPoint = painter.getPointFromPxPosition(x, y);\r\n\r\n return originalPoint;\r\n },\r\n [painter]\r\n );\r\n};\r\n","import { useCallback } from 'react';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Bbox } from '@evergis/sgis/es/Bbox';\r\nimport { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\r\n\r\nimport { useEventPoint } from '../hooks/useEventPoint';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapViewActions() {\r\n const { map, painter } = useMapContext();\r\n const getEventPoint = useEventPoint();\r\n\r\n const zoomTo = useCallback(\r\n (k: number) => {\r\n map.zoom(k, map.position);\r\n },\r\n [map]\r\n );\r\n\r\n const zoomIn = useCallback(() => zoomTo(1), [zoomTo]);\r\n const zoomOut = useCallback(() => zoomTo(-1), [zoomTo]);\r\n\r\n const animateTo = useCallback(\r\n ({ position, resolution, extent }: AnimateToParams) => {\r\n if (position || resolution) {\r\n const nextPosition = position\r\n ? (position.slice(0) as Coordinates)\r\n : map.position;\r\n map.animateTo(nextPosition, resolution || map.resolution);\r\n }\r\n\r\n if (extent) {\r\n const { xMax, xMin, yMax, yMin } = extent;\r\n const bbox = new Bbox([xMin, yMax], [xMax, yMin], map.crs);\r\n painter && painter.show(bbox, true);\r\n }\r\n },\r\n [map, painter]\r\n );\r\n\r\n const zoomAround = useCallback(\r\n (event: sGisClickEvent) => {\r\n map.zoom(1, getEventPoint(event));\r\n },\r\n [getEventPoint, map]\r\n );\r\n\r\n const changeZoomLevel = useCallback(\r\n (level: number) => {\r\n const { tileScheme } = map;\r\n let tileLevel = tileScheme.levels.find(({ zIndex }) => zIndex === level);\r\n const resolution = tileLevel ? tileLevel.resolution : map.resolution;\r\n\r\n map.animateSetResolution(resolution, map.position);\r\n },\r\n [map]\r\n );\r\n\r\n return {\r\n zoomTo,\r\n zoomIn,\r\n zoomOut,\r\n zoomAround,\r\n animateTo,\r\n changeZoomLevel,\r\n };\r\n}\r\n\r\ntype AnimateToParams = {\r\n position?: Coordinates;\r\n resolution?: number;\r\n extent?: { xMax: number; yMax: number; xMin: number; yMin: number };\r\n};\r\n","import { useCallback } from 'react';\r\n\r\nimport { useMapViewActions } from './useMapViewActions';\r\n\r\nimport { EvergisFeature } from '../core';\r\n\r\nexport const useZoomToFeature = () => {\r\n const { animateTo } = useMapViewActions();\r\n\r\n return useCallback(\r\n (feature: EvergisFeature) => {\r\n const extent = feature.extent();\r\n\r\n if (extent) {\r\n animateTo({ extent });\r\n }\r\n },\r\n [animateTo]\r\n );\r\n};\r\n","import { useCallback, useEffect } from 'react';\r\n\r\nimport { usePagination } from './usePagination';\r\nimport { useZoomToFeature } from './useZoomToFeature';\r\n\r\nimport { EvergisFeature } from '../core';\r\n\r\nexport type UseEvergisCard = {\r\n feature: EvergisFeature;\r\n current: number;\r\n prev: () => void;\r\n next: () => void;\r\n zoom: () => void;\r\n};\r\n\r\nexport const useEvergisCard = (features: EvergisFeature[]): UseEvergisCard => {\r\n const [current, { prev, next, reset }] = usePagination(features.length);\r\n\r\n const feature = features[current];\r\n\r\n const zoomToFeature = useZoomToFeature();\r\n\r\n const zoom = useCallback(() => zoomToFeature(feature), [\r\n zoomToFeature,\r\n feature,\r\n ]);\r\n\r\n useEffect(() => {\r\n reset();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [features.length]);\r\n\r\n return { feature, current, prev, next, zoom };\r\n};\r\n","export function numberWithSpaces(\r\n x: number,\r\n fractionDigits = 2,\r\n delim: ',' | '.' | '' = ','\r\n): string {\r\n const [num, frac] = x.toFixed(fractionDigits).split('.');\r\n const numWithSpaces = num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\r\n\r\n return [numWithSpaces, frac].join(delim);\r\n}\r\n","export function matchPhone(value: string) {\r\n const phoneRegexp = /((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/g;\r\n\r\n return !isStringAsInn(value) && value.match(phoneRegexp);\r\n}\r\n\r\nexport function isStringAsInn(value: string) {\r\n const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;\r\n\r\n return innRegexp.test(value);\r\n}\r\n\r\nexport function isStringAsKpp(value: string) {\r\n const kppRegexp = /^(([0-9]{9}))$/;\r\n\r\n return kppRegexp.test(value);\r\n}\r\n\r\nexport function isStringAsOgrn(value: string) {\r\n const ogrnRegexp = /^([0-9]{13})?$/;\r\n\r\n return ogrnRegexp.test((+value).toString());\r\n}\r\n\r\nexport function isStringContainsDate(value: string) {\r\n const dateRegexp = /\\d{4}(-|\\/)\\d{2}(-|\\/)\\d{2}/g;\r\n return dateRegexp.test(value);\r\n}\r\n\r\nexport function isRequisiteNumbers(value: string) {\r\n return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);\r\n}\r\n\r\nexport function isStringAsPhone(value: string) {\r\n const phoneRegexp = /^((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/;\r\n\r\n return (\r\n !isRequisiteNumbers(value) &&\r\n !isStringContainsDate(value) &&\r\n phoneRegexp.test(value)\r\n );\r\n}\r\n\r\nexport function isStringAsMail(value: string) {\r\n return isStringAsUrl(value) && value.includes('@');\r\n}\r\n\r\nexport function isStringAsUrl(value: string) {\r\n if (isValidUrl(value)) {\r\n return true;\r\n }\r\n\r\n const urlRegexp = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;\r\n\r\n const urlKind = value.match(urlRegexp);\r\n\r\n return urlKind !== null;\r\n}\r\n\r\nexport function isValidUrl(value: string) {\r\n try {\r\n new URL(value);\r\n } catch (_) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport const mailHref = (mail: string) => `mailto:${mail}`;\r\n\r\nexport const phoneHref = (mail: string) => `tel:${mail}`;\r\n\r\nexport const urlHref = (url: string) => (isValidUrl(url) ? url : `//${url}`);\r\n","import { AttributeValue, AttributeValueType, FeatureAttribute } from './types';\r\n\r\nimport { numberWithSpaces } from '../../utils/format';\r\nimport {\r\n isStringAsMail,\r\n isStringAsPhone,\r\n isStringAsUrl,\r\n matchPhone,\r\n isRequisiteNumbers,\r\n isStringAsOgrn,\r\n isStringContainsDate,\r\n} from '../../utils/url';\r\n\r\nexport const NO_CONTENT_VALUE = '—';\r\n\r\nconst stringAttribute = (value: string) => ({\r\n type: AttributeValueType.String,\r\n value,\r\n});\r\n\r\nconst urlAttribute = (value: string) => ({\r\n type: AttributeValueType.Url,\r\n value,\r\n});\r\n\r\nconst mailAttribute = (value: string) => ({\r\n type: AttributeValueType.Mail,\r\n value,\r\n});\r\n\r\nconst phoneAttribute = (value: string) => ({\r\n type: AttributeValueType.Phone,\r\n value,\r\n});\r\n\r\nconst convertStringAttribute = (value: string) => {\r\n if (isStringAsMail(value)) {\r\n return mailAttribute(value);\r\n }\r\n\r\n if (isStringAsUrl(value)) {\r\n return urlAttribute(value);\r\n }\r\n\r\n if (isStringAsPhone(value)) {\r\n return phoneAttribute(value);\r\n }\r\n\r\n return stringAttribute(value);\r\n};\r\n\r\nconst formatStringAttribute = (value: string): AttributeValue[] => {\r\n const phones = matchPhone(value);\r\n\r\n if (\r\n !isRequisiteNumbers(value) &&\r\n !isStringContainsDate(value) &&\r\n phones &&\r\n phones.length\r\n ) {\r\n return phones.map(phoneAttribute);\r\n }\r\n\r\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\r\n\r\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\r\n return [\r\n stringAttribute(\r\n attributeValues\r\n .map(({ value }) =>\r\n isNaN(+value) || isRequisiteNumbers(value)\r\n ? isStringAsOgrn(value)\r\n ? +value\r\n : value\r\n : numberWithSpaces(+value, 0, '')\r\n )\r\n .join(' ')\r\n ),\r\n ];\r\n }\r\n\r\n return attributeValues;\r\n};\r\n\r\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\r\n stringAttribute(value.toString());\r\n\r\nconst formatIntAttribute = (value: number): AttributeValue =>\r\n stringAttribute(numberWithSpaces(value, 0, ''));\r\n\r\nconst DOUBLE_FRACTIONS = 2;\r\n\r\nconst formatDoubleAttribute = (value: number): AttributeValue =>\r\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\r\n\r\nconst isNullOrUndefined = <Value>(\r\n value: Value | null | undefined\r\n): value is null | undefined => value === null || value === undefined;\r\n\r\nconst NO_CONTENT_ATTRIBUTE = {\r\n type: AttributeValueType.String,\r\n value: NO_CONTENT_VALUE,\r\n};\r\n\r\nexport const formatAttributeValue = (\r\n attribute: FeatureAttribute\r\n): AttributeValue[] => {\r\n if (isNullOrUndefined(attribute.value)) {\r\n return [NO_CONTENT_ATTRIBUTE];\r\n }\r\n\r\n switch (attribute.type) {\r\n case 'String':\r\n return formatStringAttribute(attribute.value as string);\r\n case 'DateTime':\r\n return [formatDateTimeAttribute(attribute.value as Date)];\r\n case 'Int32':\r\n case 'Int64':\r\n return [formatIntAttribute(attribute.value as number)];\r\n case 'Double':\r\n return [formatDoubleAttribute(attribute.value as number)];\r\n default:\r\n return [NO_CONTENT_ATTRIBUTE];\r\n }\r\n};\r\n","import { ParameterValue, ParameterValueWithSymbol } from '../style';\r\n\r\nimport { ClassificationAttribute } from '../attributes';\r\n\r\nexport type NestedClassificationParameters =\r\n | 'fill.color'\r\n | 'fill.hatchColor'\r\n | 'stroke.width'\r\n | 'stroke.color'\r\n | 'background.fillColor'\r\n | 'background.strokeColor'\r\n | 'background.strokeWidth'\r\n | 'figure.fillColor';\r\n\r\nexport type SimpleClassificationParameters =\r\n | 'fillColor'\r\n | 'strokeColor'\r\n | 'strokeWidth'\r\n | 'size'\r\n | 'symbol'\r\n | 'angle'\r\n | 'maskedColor';\r\n\r\nexport type ClassificationParameter =\r\n | NestedClassificationParameters\r\n | SimpleClassificationParameters;\r\n\r\nexport type ClassificationParameterExtended =\r\n | ClassificationParameter\r\n | 'width'\r\n | 'height';\r\n\r\nexport interface ClassBase {\r\n title: string | null;\r\n parameterValue: ParameterValueWithSymbol;\r\n attribute?: ClassificationAttribute;\r\n}\r\n\r\nexport type UniqueClass = ClassBase & {\r\n uniqueValue: string;\r\n};\r\n\r\nexport type RangeClass = ClassBase & {\r\n from: number | string | null;\r\n to: number | string | null;\r\n};\r\n\r\nexport type ClassificationClass = UniqueClass | RangeClass;\r\nexport type ClassificationValues = ClassificationClass[];\r\n\r\nexport const enum ClassificationType {\r\n Range,\r\n Unique,\r\n}\r\n\r\nexport interface Classification<\r\n Type extends ClassificationType = ClassificationType,\r\n Value extends ClassificationClass = ClassificationClass\r\n> {\r\n parameter?: ClassificationParameterExtended;\r\n attribute?: string;\r\n type: Type;\r\n values: Value[];\r\n}\r\n\r\nexport type RangeClassification = Classification<\r\n ClassificationType.Range,\r\n RangeClass\r\n>;\r\n\r\nexport type UniqueClassification = Classification<\r\n ClassificationType.Unique,\r\n UniqueClass\r\n>;\r\n\r\nexport interface ClassificationExtras {\r\n defaultTitle: string;\r\n defaultValue: ParameterValue;\r\n}\r\n\r\nexport type ExtendedClassification<\r\n Type extends ClassificationType = ClassificationType,\r\n Value extends ClassificationClass = ClassificationClass\r\n> = Classification<Type, Value> & ClassificationExtras;\r\n\r\nexport function isRangeClass(value: ClassificationClass): value is RangeClass {\r\n return Boolean(value && 'from' in value);\r\n}\r\n\r\nexport function isUniqueClass(\r\n value: ClassificationClass\r\n): value is UniqueClass {\r\n return Boolean(value && 'uniqueValue' in value);\r\n}\r\n","import {\r\n ConditionInterpreter,\r\n Expression,\r\n TokenType,\r\n} from '@evergis/condition';\r\n\r\nimport { ClassificationType } from './types';\r\n\r\nconst NULL_EXPRESSION: Expression = {\r\n // @ts-ignore TODO\r\n attribute: null,\r\n // @ts-ignore TODO\r\n operation: null,\r\n value: null,\r\n};\r\n\r\nexport class ClassificationCondition {\r\n private readonly condition: string;\r\n private readonly expressions: Expression[] = [];\r\n\r\n constructor(condition: string) {\r\n this.condition = condition;\r\n const conditionResult = new ConditionInterpreter(condition).value;\r\n\r\n this.expressions =\r\n conditionResult instanceof Error ? [] : conditionResult.expressions;\r\n }\r\n\r\n public get attributeName() {\r\n return this.leftExpression.attribute;\r\n }\r\n\r\n public get uniqueValue() {\r\n if (this.isUnique()) {\r\n const { value } = this.leftExpression;\r\n\r\n return typeof value === 'string' ? value : '';\r\n }\r\n\r\n console.warn(`Trying to get unique from range condition ${this.condition}`);\r\n\r\n return '';\r\n }\r\n\r\n public get range(): [number, number] {\r\n if (!this.isRange()) {\r\n console.warn(\r\n `Trying to get range from unique condition ${this.condition}`\r\n );\r\n\r\n return [0, 0];\r\n }\r\n\r\n if (this.expressions.length === 2) {\r\n const { value: from } = this.leftExpression;\r\n const { value: to } = this.rightExpression;\r\n\r\n return [from, to] as [number, number];\r\n }\r\n\r\n if (this.expressions.length === 1) {\r\n const { operation, value } = this.leftExpression;\r\n const isFrom = operation === TokenType.ArGr;\r\n\r\n return [isFrom ? value : null, isFrom ? null : value] as [number, number];\r\n }\r\n\r\n return [0, 0];\r\n }\r\n\r\n public get type(): ClassificationType {\r\n return this.isUnique()\r\n ? ClassificationType.Unique\r\n : ClassificationType.Range;\r\n }\r\n\r\n public isUnique() {\r\n return this.leftExpression.operation === TokenType.ArEq;\r\n }\r\n\r\n public isRange() {\r\n return [\r\n TokenType.ArGr,\r\n TokenType.ArGre,\r\n TokenType.ArLs,\r\n TokenType.ArLse,\r\n ].includes(this.leftExpression.operation);\r\n }\r\n\r\n public toString() {\r\n return this.condition;\r\n }\r\n\r\n private get leftExpression(): Expression {\r\n return this.expressions.length > 0 ? this.expressions[0] : NULL_EXPRESSION;\r\n }\r\n\r\n private get rightExpression(): Expression {\r\n return this.expressions.length > 1 ? this.expressions[1] : NULL_EXPRESSION;\r\n }\r\n}\r\n","import { ClassificationParameterExtended } from './types';\r\n\r\nexport const PARAMETER_SEPARATOR = '.';\r\n\r\nexport const parameterToPaths = (\r\n parameter: ClassificationParameterExtended\r\n): ClassificationParameterExtended[] =>\r\n parameter.split(PARAMETER_SEPARATOR) as ClassificationParameterExtended[];\r\n\r\nexport const pathsToParameter = (\r\n paths: ClassificationParameterExtended[]\r\n): ClassificationParameterExtended =>\r\n paths.join(PARAMETER_SEPARATOR) as ClassificationParameterExtended;\r\n","export function isObject<T>(value: T | object): value is object {\r\n return typeof value === 'object' && value !== null && !Array.isArray(value);\r\n}\r\n","import { parameterToPaths } from './parameter';\r\nimport { ClassificationParameterExtended } from './types';\r\n\r\nimport {\r\n CalculatedAble,\r\n CalculatedParameter,\r\n ClassifyAble,\r\n ParameterByAttribute,\r\n ParameterValue,\r\n StyleSymbolType,\r\n UnidentifiedParameterValue,\r\n} from '../style';\r\n\r\nimport { isObject } from '../../utils/isObject';\r\n\r\ntype ParameterValueModifier = (\r\n parameterValue: ClassifyAble<ParameterValue>\r\n) => ClassifyAble<ParameterValue> | void;\r\n\r\nexport const isParameterByAttribute = (\r\n value: UnidentifiedParameterValue\r\n): value is ParameterByAttribute<ParameterValue> =>\r\n Boolean(isObject(value) && value.type && value.type === 'byAttribute');\r\n\r\nexport const isCalculatedParameter = (\r\n value: UnidentifiedParameterValue\r\n): value is CalculatedParameter<ParameterValue> =>\r\n Boolean(isObject(value) && value.type && value.type === 'calculated');\r\n\r\nexport const getParameterValue = <Value extends ParameterValue>(\r\n value: ClassifyAble<Value> | CalculatedAble<Value>\r\n): Value => {\r\n if (isParameterByAttribute(value) || isCalculatedParameter(value)) {\r\n return value.defaultValue;\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport const symbolParameterWalker = (\r\n valueModifier: ParameterValueModifier\r\n) => <S extends StyleSymbolType>(\r\n symbol: S,\r\n parameter: ClassificationParameterExtended | ClassificationParameterExtended[]\r\n): S => {\r\n const paths = Array.isArray(parameter)\r\n ? parameter\r\n : parameterToPaths(parameter);\r\n const [firstKey, ...restKeys] = paths;\r\n\r\n // @ts-ignore\r\n const symbolPart = symbol[firstKey];\r\n\r\n if (restKeys.length) {\r\n const goDeeper = symbolParameterWalker(valueModifier);\r\n\r\n return {\r\n ...symbol,\r\n [firstKey]: goDeeper(symbolPart, restKeys) || symbolPart,\r\n };\r\n }\r\n\r\n return {\r\n ...symbol,\r\n [firstKey]: valueModifier(symbolPart) || symbolPart,\r\n };\r\n};\r\n\r\nexport const setDefaultParameterValue = symbolParameterWalker(\r\n getParameterValue\r\n);\r\n\r\nexport const setParameterValue = <S extends StyleSymbolType>(\r\n symbol: S,\r\n path: ClassificationParameterExtended,\r\n value: ClassifyAble<ParameterValue>\r\n): S => symbolParameterWalker(() => value)(symbol, path);\r\n\r\nexport function applyParameterValue(\r\n symbol: StyleSymbolType,\r\n path: ClassificationParameterExtended,\r\n value: ClassifyAble<ParameterValue>\r\n) {\r\n if (path === 'symbol') {\r\n return value as StyleSymbolType;\r\n }\r\n\r\n return setParameterValue(symbol, path, value);\r\n}\r\n","import { ParameterDcColor, ParameterDcDouble } from '@evergis/api';\r\n\r\nimport { CalculatedAble, ClassifyAble } from './parameterValue';\r\nimport { Offset } from './offset';\r\nimport { LineMiterKind, LineMiterSize } from './miters';\r\nimport { StyleSymbolType } from './symbol';\r\nimport { FillBrushType, StrokeBrushType, TextBackgroundType } from './brush';\r\n\r\ntype ToClientSymbolField<\r\n F,\r\n IsClassifyable extends boolean\r\n> = F extends ParameterDcDouble\r\n ? IsClassifyable extends true\r\n ? ClassifyAble<number>\r\n : number\r\n : F extends ParameterDcColor\r\n ? IsClassifyable extends true\r\n ? ClassifyAble<string>\r\n : string\r\n : F;\r\n\r\ntype ExtraClientSymbolFields = {\r\n offset: Offset;\r\n /* TODO: DC has other type */\r\n fontWeight: number;\r\n childSymbols: StyleSymbolType[];\r\n stroke: StrokeBrushType;\r\n fill: FillBrushType;\r\n textBackground: TextBackgroundType;\r\n beginning: null | LineMiterKind;\r\n beginningSize: LineMiterSize;\r\n ending: null | LineMiterKind;\r\n endingSize: LineMiterSize;\r\n angle: CalculatedAble<number>;\r\n};\r\n\r\nexport type ClientSymbol<\r\n SymbolType,\r\n SymbolDcType,\r\n NonClassifiedFields extends keyof SymbolDcType = never\r\n> = {\r\n [K in keyof SymbolDcType]: K extends 'type'\r\n ? SymbolType\r\n : K extends keyof ExtraClientSymbolFields\r\n ? ExtraClientSymbolFields[K]\r\n : ToClientSymbolField<\r\n SymbolDcType[K],\r\n K extends NonClassifiedFields ? false : true\r\n >;\r\n};\r\n\r\nexport const symbolTypeGuard = <ClientSymbol extends { type?: string }>(\r\n type: ClientSymbol['type']\r\n) => (symbol: { type?: string }): symbol is ClientSymbol =>\r\n symbol && symbol.type === type;\r\n\r\nexport type Unclassify<T> = {\r\n [K in keyof T]: T[K] extends ClassifyAble<infer V>\r\n ? V\r\n : T[K] extends CalculatedAble<infer V2>\r\n ? V2\r\n : T[K];\r\n};\r\n","import {\r\n PointLabelSymbolDc,\r\n PolygonLabelSymbolDc,\r\n PolylineLabelSymbolDc,\r\n} from '@evergis/api';\r\n\r\nimport { UnknownSymbol } from './symbol';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\n\r\ntype NonClassifyableLabelFields = 'fontColor' | 'fontSize' | 'haloColor';\r\n\r\nexport type PointLabelSymbol = ClientSymbol<\r\n 'labelPointSymbol',\r\n PointLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\nexport type PolygonLabelSymbol = ClientSymbol<\r\n 'polygonLabelSymbol',\r\n PolygonLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\nexport type PolylineLabelSymbol = ClientSymbol<\r\n 'polylineLabelSymbol',\r\n PolylineLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\n\r\nexport const isPointLabelSymbol = symbolTypeGuard<PointLabelSymbol>(\r\n 'labelPointSymbol'\r\n);\r\nexport const isPolygonLabelSymbol = symbolTypeGuard<PolygonLabelSymbol>(\r\n 'polygonLabelSymbol'\r\n);\r\nexport const isPolylineLabelSymbol = symbolTypeGuard<PolylineLabelSymbol>(\r\n 'polylineLabelSymbol'\r\n);\r\n\r\nexport const isLabelSymbol = (symbol: UnknownSymbol): symbol is LabelType =>\r\n Boolean(\r\n symbol &&\r\n (isPointLabelSymbol(symbol) ||\r\n isPolygonLabelSymbol(symbol) ||\r\n isPolylineLabelSymbol(symbol))\r\n );\r\n\r\nexport type LabelType =\r\n | PolylineLabelSymbol\r\n | PolygonLabelSymbol\r\n | PointLabelSymbol;\r\n","import {\r\n CirclePointSymbolDc,\r\n ClusterSymbolDc,\r\n CompositeSymbolDc,\r\n H3GridSymbolDc,\r\n ImagePointSymbolDc,\r\n MaskedImagePointSymbolDc,\r\n PolygonSymbolDc,\r\n PolylineSymbolDc,\r\n RasterSymbolDc,\r\n SimplePolylineSymbolDc,\r\n SquarePointSymbolDc,\r\n StyleDc,\r\n SvgPointSymbolDc,\r\n} from '@evergis/api';\r\n\r\nimport { isLabelSymbol, LabelType } from './label';\r\nimport { CalculatedAble } from './parameterValue';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\nimport { FillBrushType, StrokeBrushType } from './brush';\r\n\r\nexport type PointSymbol = ClientSymbol<\r\n 'circlePointSymbol',\r\n CirclePointSymbolDc\r\n>;\r\n\r\nexport type SvgPointSymbol = ClientSymbol<\r\n 'svgPointSymbol',\r\n SvgPointSymbolDc\r\n>;\r\n\r\nexport type SquareSymbol = ClientSymbol<\r\n 'squarePointSymbol',\r\n SquarePointSymbolDc\r\n> & {\r\n angle?: CalculatedAble<number>;\r\n};\r\n\r\nexport type MaskedImageSymbol = ClientSymbol<\r\n 'maskedImagePointSymbol',\r\n MaskedImagePointSymbolDc\r\n>;\r\n\r\nexport type StaticImageSymbol = ClientSymbol<\r\n 'imagePointSymbol',\r\n ImagePointSymbolDc\r\n>;\r\n\r\nexport type PolygonSymbol<\r\n Fill = FillBrushType,\r\n Stroke = StrokeBrushType\r\n> = ClientSymbol<'polygonSymbol', PolygonSymbolDc> & {\r\n fill: Fill;\r\n stroke: Stroke;\r\n};\r\n\r\nexport type SimplePolylineSymbol = ClientSymbol<\r\n 'simplePolylineSymbol',\r\n SimplePolylineSymbolDc\r\n>;\r\n\r\nexport type PolylineSymbol = ClientSymbol<'polylineSymbol', PolylineSymbolDc>;\r\n\r\nexport type RasterSymbol = ClientSymbol<'rasterSymbol', RasterSymbolDc>;\r\n\r\nexport type CompositeSymbolType = ClientSymbol<\r\n 'compositeSymbol',\r\n CompositeSymbolDc\r\n>;\r\n\r\nexport type H3GridSymbol = ClientSymbol<\r\n 'h3grid',\r\n H3GridSymbolDc\r\n>;\r\n\r\nexport type SimpleShapeSymbol = PointSymbol | SquareSymbol;\r\n\r\nexport type ImageSymbol = MaskedImageSymbol | StaticImageSymbol;\r\n\r\nexport type PointSymbolType = SimpleShapeSymbol | ImageSymbol;\r\n\r\nexport type PolylineSymbols = PolylineSymbol | SimplePolylineSymbol;\r\n\r\nexport type StyleSymbolType =\r\n | PointSymbolType\r\n | PolygonSymbol\r\n | PolylineSymbols\r\n | LabelType\r\n | RasterSymbol\r\n | CompositeSymbolType\r\n | H3GridSymbolDc\r\n | ClusterSymbolDc;\r\n\r\nexport type StyleSymbolTypes = StyleSymbolType['type'];\r\n\r\nexport type UnknownSymbol = StyleDc['symbol'] | StyleSymbolType;\r\n\r\nexport type LayerSymbol = PointSymbol | PolylineSymbols | PolygonSymbol;\r\n\r\nexport type FillStyledSymbols = PolygonSymbol;\r\n\r\nexport type StrokeStyledSymbols = PolygonSymbol | PolylineSymbols;\r\n\r\nexport const isPointSymbol = symbolTypeGuard<PointSymbol>('circlePointSymbol');\r\n\r\nexport const isSquareSymbol = symbolTypeGuard<SquareSymbol>(\r\n 'squarePointSymbol'\r\n);\r\n\r\nexport const isMaskedImageSymbol = symbolTypeGuard<MaskedImageSymbol>(\r\n 'maskedImagePointSymbol'\r\n);\r\n\r\nexport const isStaticImageSymbol = symbolTypeGuard<StaticImageSymbol>(\r\n 'imagePointSymbol'\r\n);\r\n\r\nexport const isPolygonSymbol = symbolTypeGuard<PolygonSymbol>('polygonSymbol');\r\n\r\nexport const isPolylineSymbol = symbolTypeGuard<PolylineSymbol>(\r\n 'polylineSymbol'\r\n);\r\n\r\nexport const isSimplePolylineSymbol = symbolTypeGuard<SimplePolylineSymbol>(\r\n 'simplePolylineSymbol'\r\n);\r\n\r\nexport const isPolylineSymbols = (\r\n symbol: UnknownSymbol\r\n): symbol is PolylineSymbols =>\r\n Boolean(\r\n symbol && (isPolylineSymbol(symbol) || isSimplePolylineSymbol(symbol))\r\n );\r\n\r\nexport const isCompositeSymbol = symbolTypeGuard<CompositeSymbolType>(\r\n 'compositeSymbol'\r\n);\r\nexport const isRasterSymbol = symbolTypeGuard<RasterSymbol>('rasterSymbol');\r\n\r\nexport const isImageSymbol = (symbol: UnknownSymbol): symbol is ImageSymbol =>\r\n Boolean(\r\n symbol && (isMaskedImageSymbol(symbol) || isStaticImageSymbol(symbol))\r\n );\r\n\r\nexport const isTwoDimensionalSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is ImageSymbol => Boolean(symbol && 'width' in symbol);\r\n\r\nexport const isSizableSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is SimpleShapeSymbol => Boolean(symbol && 'size' in symbol);\r\n\r\nexport const isStrokeStyledSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is StrokeStyledSymbols =>\r\n Boolean(symbol && (isPolygonSymbol(symbol) || isPolylineSymbols(symbol)));\r\n\r\nexport const isScalablePolylineSymbol = (\r\n symbol: PolylineSymbol | SimplePolylineSymbol\r\n) =>\r\n (symbol.beginning !== null && symbol.ending !== null) ||\r\n (symbol.stroke && symbol.stroke.type !== 'solid');\r\n\r\nexport const isSimpleSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is Exclude<StyleSymbolType, LabelType | CompositeSymbolType> =>\r\n Boolean(\r\n symbol &&\r\n !isLabelSymbol(symbol) &&\r\n !isCompositeSymbol(symbol) &&\r\n !isRasterSymbol(symbol)\r\n );\r\n","import {\r\n DashedBrushDc,\r\n HatchBrushDc,\r\n PatternBrushDc,\r\n SolidStrokeBrushDc,\r\n TextBackgroundDc,\r\n} from '@evergis/api';\r\n\r\nimport { ClientSymbol, symbolTypeGuard, Unclassify } from './utils';\r\nimport { isPolygonSymbol, PolygonSymbol, UnknownSymbol } from './symbol';\r\n\r\nexport type SolidBrush = ClientSymbol<'solid', SolidStrokeBrushDc>;\r\nexport type DashedBrush = ClientSymbol<'dashed', DashedBrushDc>;\r\nexport type HatchBrush = ClientSymbol<'hatch', HatchBrushDc>;\r\nexport type PatternBrush = ClientSymbol<'pattern', PatternBrushDc>;\r\nexport type StrokeBrushType = SolidBrush | DashedBrush;\r\nexport type FillBrushType = SolidBrush | HatchBrush | PatternBrush;\r\n\r\nexport const isHatchBrush = symbolTypeGuard<HatchBrush>('hatch');\r\nexport const isPatternBrush = symbolTypeGuard<PatternBrush>('pattern');\r\nexport const isDashedBrush = symbolTypeGuard<DashedBrush>('dashed');\r\nexport const isSolidBrush = symbolTypeGuard<SolidBrush>('solid');\r\n\r\nexport const isPolygonHasPatternBrush = (\r\n symbol: UnknownSymbol\r\n): symbol is PolygonSymbol<PatternBrush> =>\r\n Boolean(symbol && isPolygonSymbol(symbol) && isPatternBrush(symbol.fill));\r\n\r\nexport const isPolygonHasHatchBrush = (\r\n symbol: UnknownSymbol\r\n): symbol is PolygonSymbol<HatchBrush> =>\r\n Boolean(symbol && isPolygonSymbol(symbol) && isHatchBrush(symbol.fill));\r\n\r\nexport type TextBackgroundType = Omit<TextBackgroundDc, 'fill' | 'stroke'> & {\r\n fill: Unclassify<FillBrushType>;\r\n stroke: Unclassify<StrokeBrushType>;\r\n};\r\n","import { ClassifyAble } from './parameterValue';\r\n\r\nexport const enum LineMiterSize {\r\n Small = 'small',\r\n Large = 'large',\r\n}\r\n\r\nexport enum LineMiterKind {\r\n None = 'none',\r\n Arrow = 'arrow',\r\n FilledArrow = 'filledArrow',\r\n Square = 'square',\r\n FilledSquare = 'filledSquare',\r\n Circle = 'circle',\r\n FilledCircle = 'filledCircle',\r\n}\r\n\r\nexport type NoLineMiterType = {\r\n type: LineMiterKind.None;\r\n};\r\n\r\ntype LineMiterBase<T extends LineMiterKind> = {\r\n type: T;\r\n color?: ClassifyAble<string>;\r\n};\r\n\r\nexport type ArrowLineType = LineMiterBase<LineMiterKind.Arrow> & {\r\n strokeWidth?: number;\r\n arrowLength?: number;\r\n arrowWidth?: number;\r\n};\r\nexport type FilledArrowLineMiterType = LineMiterBase<\r\n LineMiterKind.FilledArrow\r\n> & {\r\n arrowLength?: number;\r\n arrowWidth?: number;\r\n};\r\nexport type SquareLineMiterType = LineMiterBase<LineMiterKind.Square> & {\r\n size?: number;\r\n strokeWidth?: number;\r\n};\r\nexport type FilledSquareLineMiterType = LineMiterBase<\r\n LineMiterKind.FilledSquare\r\n> & {\r\n size?: number;\r\n};\r\nexport type CircleLineMiterType = LineMiterBase<LineMiterKind.Circle> & {\r\n size?: number;\r\n strokeWidth?: number;\r\n};\r\nexport type FilledCircleLineMiterType = LineMiterBase<\r\n LineMiterKind.FilledCircle\r\n> & {\r\n size?: number;\r\n};\r\n\r\nexport type FilledLineMitters =\r\n | FilledArrowLineMiterType\r\n | FilledSquareLineMiterType\r\n | FilledCircleLineMiterType;\r\nexport type ArrowLineMiters = ArrowLineType | FilledArrowLineMiterType;\r\nexport type SquareLineMiters = SquareLineMiterType | FilledSquareLineMiterType;\r\nexport type CircleLineMiters = CircleLineMiterType | FilledCircleLineMiterType;\r\nexport type LineMiterType =\r\n | NoLineMiterType\r\n | ArrowLineMiters\r\n | SquareLineMiters\r\n | CircleLineMiters;\r\n\r\nexport const isMiterExist = (\r\n miter?: undefined | LineMiterType\r\n): miter is Exclude<LineMiterType, NoLineMiterType> =>\r\n Boolean(miter && miter.type !== LineMiterKind.None);\r\n\r\nexport const isFilledLineMitter = (\r\n miter: LineMiterType\r\n): miter is FilledLineMitters =>\r\n miter.type === LineMiterKind.FilledCircle ||\r\n miter.type === LineMiterKind.FilledArrow ||\r\n miter.type === LineMiterKind.FilledSquare;\r\n\r\nexport const isArrowLineMiter = (\r\n miter: LineMiterType\r\n): miter is ArrowLineMiters =>\r\n miter.type === LineMiterKind.Arrow ||\r\n miter.type === LineMiterKind.FilledArrow;\r\n\r\nexport const isSquareLineMiter = (\r\n miter: LineMiterType\r\n): miter is SquareLineMiters =>\r\n miter.type === LineMiterKind.Square ||\r\n miter.type === LineMiterKind.FilledSquare;\r\n\r\nexport const isCircleLineMiter = (\r\n miter: LineMiterType\r\n): miter is CircleLineMiters =>\r\n miter.type === LineMiterKind.Circle ||\r\n miter.type === LineMiterKind.FilledCircle;\r\n","import { PointSymbolType, UnknownSymbol } from './symbol';\r\nimport { ParameterByAttribute } from './parameterValue';\r\n\r\nimport { isParameterByAttribute } from '../../classification/parameterValue';\r\n\r\nexport type SimpleOffset = [number, number];\r\n\r\nexport type ClassifiedOffset = [\r\n ParameterByAttribute<number>,\r\n ParameterByAttribute<number>\r\n];\r\n\r\nexport type Offset = SimpleOffset | ClassifiedOffset;\r\n\r\nexport const isSimpleOffset = (offset: Offset): offset is SimpleOffset =>\r\n offset &&\r\n !isParameterByAttribute(offset[0]) &&\r\n !isParameterByAttribute(offset[1]);\r\n\r\nexport const isSymbolWithOffset = (\r\n symbol: UnknownSymbol\r\n): symbol is PointSymbolType => Boolean(symbol && 'offset' in symbol);\r\n","import { StyleSymbolType } from './symbol';\r\n\r\nexport type ParameterByAttributeValue<Value> = {\r\n condition: string;\r\n value: Value;\r\n title: string | null;\r\n};\r\n\r\nexport type ParameterByAttribute<Value> = {\r\n type: 'byAttribute';\r\n defaultValue: Value;\r\n title: string | null;\r\n values: ParameterByAttributeValue<Value>[];\r\n};\r\n\r\nexport type CalculatedParameter<Value> = {\r\n type: 'calculated';\r\n expression: string;\r\n defaultValue: Value;\r\n title?: string | null;\r\n};\r\n\r\nexport type ClassifyAble<Value> = Value | ParameterByAttribute<Value>;\r\n\r\nexport type CalculatedAble<Value> = Value | CalculatedParameter<Value>;\r\n\r\nexport type ParameterValue = string | number;\r\n\r\nexport type ParameterByAttributeValues = ParameterByAttributeValue<\r\n ParameterValue\r\n>[];\r\n\r\nexport type ParameterValueWithSymbol = ParameterValue | StyleSymbolType;\r\n\r\nexport type ClassifiedParameterValue = ClassifyAble<ParameterValueWithSymbol>;\r\n\r\nexport type UnidentifiedParameterValue =\r\n | ParameterValueWithSymbol\r\n | Partial<ClassifyAble<ParameterValueWithSymbol>>\r\n | Partial<CalculatedAble<ParameterValue>>;\r\n\r\nexport type CalculatedParameterValue = CalculatedAble<ParameterValue>;\r\n\r\nexport const isStringParameterValue = (\r\n parameterValue: ParameterValueWithSymbol\r\n): parameterValue is string => typeof parameterValue === 'string';\r\n\r\nexport const isParameterValueSimple = (\r\n parameterValue: ParameterValueWithSymbol\r\n): parameterValue is ParameterValue =>\r\n typeof parameterValue === 'number' || typeof parameterValue === 'string';\r\n\r\nexport const isParameterValueSymbol = (\r\n parameterValue: ParameterValueWithSymbol\r\n): parameterValue is StyleSymbolType => !isParameterValueSimple(parameterValue);\r\n","import { StyleDc } from '@evergis/api';\r\n\r\nimport { LabelType } from './label';\r\nimport { CompositeSymbolType, RasterSymbol, StyleSymbolType } from './symbol';\r\n\r\nexport type Style = Omit<StyleDc, 'symbol' | 'children'> & {\r\n symbol: Exclude<StyleSymbolType, CompositeSymbolType>;\r\n ignoreLabel?: boolean;\r\n label: LabelType | null;\r\n raster: RasterSymbol | null;\r\n children: Style[] | null;\r\n};\r\n\r\nexport const isStyle = (value: object): value is Style => 'symbol' in value;\r\n","import {\r\n ClassificationClass,\r\n ClassificationExtras,\r\n ClassificationParameterExtended,\r\n ExtendedClassification,\r\n} from './types';\r\nimport { ClassificationCondition } from './ClassificationCondition';\r\nimport { pathsToParameter } from './parameter';\r\nimport { isParameterByAttribute } from './parameterValue';\r\n\r\nimport {\r\n isStyle,\r\n isTwoDimensionalSymbol,\r\n ParameterByAttributeValue,\r\n ParameterValue,\r\n ParameterValueWithSymbol,\r\n Style,\r\n StyleSymbolType,\r\n} from '../style/types';\r\n\r\nimport { isObject } from '../../utils/isObject';\r\n\r\nconst toClassificationClass = (\r\n parameterValue: ParameterValueWithSymbol,\r\n title: string,\r\n condition: ClassificationCondition\r\n): ClassificationClass => ({\r\n parameterValue,\r\n title,\r\n ...(condition.isUnique()\r\n ? {\r\n uniqueValue: condition.uniqueValue,\r\n }\r\n : {\r\n from: condition.range[0],\r\n to: condition.range[1],\r\n }),\r\n});\r\n\r\nconst DEFAULT_EXTRAS: ClassificationExtras = {\r\n defaultTitle: '',\r\n // @ts-ignore\r\n defaultValue: null,\r\n};\r\n\r\nexport const toClassification = (\r\n values: (ParameterByAttributeValue<ParameterValue> | Style)[],\r\n parameter: ClassificationParameterExtended,\r\n extras: ClassificationExtras = DEFAULT_EXTRAS\r\n): ExtendedClassification =>\r\n // @ts-ignore\r\n values.reduce(\r\n // @ts-ignore\r\n (classification: ExtendedClassification, value) => {\r\n const classificationCondition = new ClassificationCondition(\r\n value.condition || ''\r\n );\r\n const classificationValue = toClassificationClass(\r\n isStyle(value) ? value.symbol : value.value,\r\n // @ts-ignore\r\n value.title,\r\n classificationCondition\r\n );\r\n\r\n classification.values.push(classificationValue);\r\n\r\n return {\r\n ...classification,\r\n type: classification.type || classificationCondition.type,\r\n attribute:\r\n classification.attribute || classificationCondition.attributeName,\r\n };\r\n },\r\n {\r\n ...extras,\r\n attribute: null,\r\n parameter,\r\n type: null,\r\n values: [],\r\n }\r\n );\r\n\r\nexport const getClassifications = (\r\n symbol: StyleSymbolType,\r\n pathContext: ClassificationParameterExtended[] = []\r\n): ExtendedClassification[] =>\r\n Object.entries(symbol).reduce(\r\n (classifications, [parameter, parameterValue]) => {\r\n const skipHeight =\r\n isTwoDimensionalSymbol(symbol) && parameter === 'height';\r\n const skip = !isObject(parameterValue) || skipHeight;\r\n\r\n if (skip) {\r\n return classifications;\r\n }\r\n\r\n if (!isParameterByAttribute(parameterValue)) {\r\n return [\r\n ...classifications,\r\n // @ts-ignore\r\n ...getClassifications(symbol[parameter], [\r\n ...pathContext,\r\n parameter as ClassificationParameterExtended,\r\n ]),\r\n ];\r\n }\r\n\r\n const classification = toClassification(\r\n parameterValue.values,\r\n pathsToParameter([\r\n ...pathContext,\r\n parameter as ClassificationParameterExtended,\r\n ]),\r\n {\r\n // @ts-ignore\r\n defaultTitle: parameterValue.title,\r\n defaultValue: parameterValue.defaultValue,\r\n }\r\n );\r\n\r\n return [...classifications, classification];\r\n },\r\n [] as ExtendedClassification[]\r\n );\r\n","import { getClassifications, toClassification } from './getClassifications';\r\nimport { ExtendedClassification } from './types';\r\n\r\nimport { Style } from '../style/types';\r\n\r\nexport class ClassificationManager {\r\n private classifications: ExtendedClassification[] = [];\r\n\r\n constructor(private style: Style) {\r\n this.collectClassifications();\r\n }\r\n\r\n public get values() {\r\n return this.classifications;\r\n }\r\n\r\n public find(predicate: (classification: ExtendedClassification) => boolean) {\r\n for (const classification of this.classifications) {\r\n if (predicate(classification)) {\r\n return classification;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public filter(callback: (classification: ExtendedClassification) => boolean) {\r\n return this.classifications.filter(callback);\r\n }\r\n\r\n public map<T extends ValueOf<ExtendedClassification>>(\r\n callback: (classification: ExtendedClassification) => T\r\n ) {\r\n return this.classifications.map(callback);\r\n }\r\n\r\n public reduce<T>(\r\n callback: (classifications: T, classification: ExtendedClassification) => T,\r\n initial: T\r\n ) {\r\n return this.classifications.reduce(callback, initial);\r\n }\r\n\r\n public hasClassifications() {\r\n return this.classifications.length > 0;\r\n }\r\n\r\n private collectClassifications() {\r\n if (this.style.children && this.style.children.length) {\r\n this.classifications.push(\r\n toClassification(this.style.children, 'symbol')\r\n );\r\n }\r\n\r\n if (this.style.symbol) {\r\n this.classifications.push(...getClassifications(this.style.symbol));\r\n }\r\n }\r\n}\r\n","import { getParameterValue } from './parameterValue';\r\n\r\nimport { StyleSymbolType, Unclassify } from '../style';\r\n\r\nimport { isObject } from '../../utils/isObject';\r\n\r\nexport const unClassify = <V extends StyleSymbolType>(\r\n symbol: V\r\n): Unclassify<V> =>\r\n Object.entries(symbol).reduce((flatSymbol, [parameter, parameterValue]) => {\r\n let result = Array.isArray(parameterValue)\r\n ? parameterValue.map(getParameterValue)\r\n : getParameterValue(parameterValue);\r\n\r\n if (isObject(result)) {\r\n return {\r\n ...flatSymbol,\r\n [parameter]: unClassify(parameterValue),\r\n };\r\n }\r\n\r\n return {\r\n ...flatSymbol,\r\n [parameter]: result,\r\n };\r\n }, {} as Unclassify<V>);\r\n","import { RangeClass } from './types';\r\n\r\nexport const printRangeClass = (value: RangeClass, index: number): string => {\r\n const isDouble = Boolean(value.attribute?.type === 'Double');\r\n const isDate = Boolean(value.attribute?.type === 'DateTime');\r\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\r\n\r\n if (from === null) {\r\n return `${to} ${isDate ? 'и до' : 'и менее'}`;\r\n }\r\n\r\n if (to === null) {\r\n return `${isDate ? 'после' : 'более'} ${from}`;\r\n }\r\n\r\n return from === to ? `${from}` : `${from} - ${to}`;\r\n};\r\n\r\nfunction getRangeValues(\r\n { from, to }: Pick<RangeClass, 'from' | 'to'>,\r\n isDouble: boolean,\r\n isDate: boolean,\r\n index: number\r\n): Pick<RangeClass, 'from' | 'to'> {\r\n return {\r\n from: from !== null && index !== 0 ?\r\n (isDate ? from : (isDouble ? +from : +from + 1)) : from,\r\n to,\r\n };\r\n}\r\n","import {\r\n Crs,\r\n ellipticalMercator,\r\n geo,\r\n webMercator,\r\n wgs84,\r\n} from '@evergis/sgis/es/Crs';\r\n\r\n/** Spatial Reference WKID using for @evergis/sgis */\r\nexport enum SrId {\r\n /** 3857 */\r\n WebMercator = 3857,\r\n /** 4326 */\r\n Geo = 4326,\r\n /** 84 */\r\n Wgs84 = 84,\r\n /** 3395 */\r\n EllipticalMercator = 3395,\r\n}\r\n\r\nexport const CRS_MAP: Record<SrId, Crs> = {\r\n [SrId.WebMercator]: webMercator,\r\n [SrId.Geo]: geo,\r\n [SrId.Wgs84]: wgs84,\r\n [SrId.EllipticalMercator]: ellipticalMercator,\r\n};\r\n\r\nexport const DEFAULT_SRID = SrId.WebMercator;\r\n\r\nexport const DEFAULT_CRS = CRS_MAP[DEFAULT_SRID];\r\n\r\nexport const getCrs = (srId: number): Crs => CRS_MAP[srId as SrId];\r\n","import { AttributeType, LayerDefinitionDc } from '@evergis/api';\r\n\r\nimport {\r\n Attribute,\r\n ClassificationAttribute,\r\n FeatureAttribute,\r\n FeatureAttributeValue,\r\n LayerAttribute,\r\n} from './types';\r\n\r\nimport { LayerAttributes } from '../layer';\r\n\r\nexport const getFeatureAttributeType = (\r\n attributeValue?: FeatureAttributeValue\r\n): AttributeType => {\r\n if (attributeValue instanceof Date) {\r\n return AttributeType.DateTime;\r\n }\r\n\r\n if (typeof attributeValue === 'string') {\r\n return AttributeType.String;\r\n }\r\n\r\n if (typeof attributeValue === 'number') {\r\n return AttributeType.Int64;\r\n }\r\n\r\n return AttributeType.Unknown;\r\n};\r\n\r\nexport const getLayerAttributes = (\r\n layerDefinition?: LayerDefinitionDc\r\n): LayerAttribute[] => {\r\n const attributes = (layerDefinition && layerDefinition.attributes) || {};\r\n\r\n return Object.entries(attributes).map(([name, definition]) => ({\r\n name,\r\n ...definition,\r\n })) as LayerAttribute[];\r\n};\r\n\r\nexport const getFeatureAttributes = (\r\n attributes?: Record<string, FeatureAttributeValue>\r\n): FeatureAttribute[] => {\r\n return attributes\r\n ? Object.entries(attributes).map(([name, value]) => ({\r\n name,\r\n value,\r\n type: getFeatureAttributeType(value),\r\n }))\r\n : [];\r\n};\r\n\r\nexport const getClassificationAttribute = (\r\n attributeName: string,\r\n attributes: LayerAttributes\r\n): ClassificationAttribute => {\r\n const attribute = attributes[attributeName];\r\n const attrNamePart = {\r\n name: attributeName,\r\n type: attribute?.type || AttributeType.Unknown,\r\n };\r\n\r\n return attribute ? { ...attrNamePart, ...attribute } : attrNamePart;\r\n};\r\n\r\nexport const mergeAttributes = (\r\n attributes1: Attribute[],\r\n attributes2: Attribute[]\r\n) => {\r\n return attributes1.map(attribute => ({\r\n ...attribute,\r\n ...(attributes2.find(({ name }) => attribute.name === name) || {}),\r\n }));\r\n};\r\n","import { StyleDc } from '@evergis/api';\r\n\r\nimport {\r\n CompositeSymbolType,\r\n isCompositeSymbol,\r\n isLabelSymbol,\r\n isRasterSymbol,\r\n isSimpleSymbol,\r\n Style,\r\n StyleSymbolType,\r\n UnknownSymbol,\r\n} from './types';\r\n\r\nexport const createCompositeSymbol = (\r\n childSymbols: StyleSymbolType[]\r\n): CompositeSymbolType => ({\r\n type: 'compositeSymbol',\r\n childSymbols,\r\n});\r\n\r\nexport const getChildSymbols = (symbol?: UnknownSymbol): StyleSymbolType[] => {\r\n if (!symbol || !isCompositeSymbol(symbol)) return [];\r\n\r\n return symbol.childSymbols || [];\r\n};\r\n\r\nexport const extractSymbol = (\r\n symbol?: UnknownSymbol\r\n): Pick<Style, 'symbol' | 'label' | 'raster'> => {\r\n const childSymbols = getChildSymbols(symbol);\r\n\r\n return {\r\n // @ts-ignore\r\n symbol: childSymbols.find(isSimpleSymbol),\r\n label: childSymbols.find(isLabelSymbol) || null,\r\n raster: childSymbols.find(isRasterSymbol) || null,\r\n };\r\n};\r\n\r\nexport const extractStyle = (style: StyleDc): Style => {\r\n // @ts-ignore\r\n if (isCompositeSymbol(style.symbol)) {\r\n return {\r\n ...style,\r\n ...extractSymbol(style.symbol),\r\n // @ts-ignore\r\n children: style.children && style.children.map(extractStyle),\r\n };\r\n }\r\n\r\n // NOTE: for cases when style is exist style object should have same reference for all extractStyle calls\r\n return (style || {}) as Style;\r\n};\r\n\r\nexport const packStyle = (style: Style): StyleDc => {\r\n const { ignoreLabel, label, symbol, raster, children, ...styleDc } = style;\r\n const childSymbols = [!ignoreLabel && label, raster].filter(Boolean);\r\n\r\n return {\r\n ...styleDc,\r\n symbol: childSymbols.length\r\n ? // @ts-ignore\r\n createCompositeSymbol([symbol, ...childSymbols])\r\n : symbol,\r\n // @ts-ignore\r\n children: children\r\n ? // @ts-ignore\r\n children.map(childStyle =>\r\n packStyle({ ...childStyle, ignoreLabel, label })\r\n )\r\n : children,\r\n };\r\n};\r\n","import { StyleDc } from '@evergis/api';\r\n\r\nimport { extractStyle, packStyle } from './compositeSymbol';\r\nimport { Style } from './types';\r\n\r\nimport { ClassificationManager } from '../classification';\r\n\r\nexport class EvergisStyle {\r\n public classificationManager: ClassificationManager;\r\n private readonly style: Style;\r\n\r\n constructor(style: StyleDc) {\r\n this.style = extractStyle(style);\r\n this.classificationManager = new ClassificationManager(this.style);\r\n }\r\n\r\n public serialize() {\r\n return packStyle(this.style);\r\n }\r\n\r\n public hasRasters() {\r\n return !!(\r\n this.style.raster ||\r\n (this.style.children || []).some(style => style.raster)\r\n );\r\n }\r\n\r\n get symbol() {\r\n return this.style.symbol;\r\n }\r\n\r\n get raster() {\r\n return this.style.raster;\r\n }\r\n get label() {\r\n return this.style.label;\r\n }\r\n\r\n get children() {\r\n return this.style.children;\r\n }\r\n\r\n get title() {\r\n return this.style.title;\r\n }\r\n\r\n get condition() {\r\n return this.style.condition;\r\n }\r\n\r\n get ignoreLabel() {\r\n return this.style.ignoreLabel;\r\n }\r\n\r\n get resolution(): Nullable<[number, number]> {\r\n const { minResolution, maxResolution } = this.style;\r\n\r\n return minResolution === void 0 || maxResolution === void 0\r\n ? null\r\n : [minResolution, maxResolution];\r\n }\r\n}\r\n","import { Color } from '@evergis/color';\r\n\r\nexport const getHexColor = (colorString: string): string | undefined =>\r\n colorString ? new Color(colorString).toString('hex') : undefined;\r\n","// TODO reduce\r\nexport const PREVIEW_LIMITS = {\r\n STROKE_WIDTH_MIN: 0.25,\r\n STROKE_WIDTH_MAX: 6.5,\r\n};\r\n","export function clamp(num: number, min: number, max: number): number {\r\n return Math.min(Math.max(num, min), max);\r\n}\r\n","/* eslint-disable @typescript-eslint/no-magic-numbers */\r\nimport { unique } from '@evergis/api';\r\n\r\nimport { PREVIEW_LIMITS } from './previewLimits';\r\n\r\nimport { getParameterValue } from '../core/classification';\r\n\r\nimport { ClassifyAble, StrokeBrushType } from '../core/style';\r\n\r\nimport { clamp } from '../utils/math';\r\n\r\n// TODO refactoring\r\nexport const enum StrokeStyle {\r\n Solid,\r\n Dash,\r\n Dot,\r\n DashDot,\r\n DashDotDot,\r\n Custom,\r\n}\r\n\r\ninterface StrokeStylePreset {\r\n style: StrokeStyle;\r\n type: StrokeBrushType['type'];\r\n intervals: number[];\r\n}\r\nexport const SOLID_INTERVALS: number[] = [];\r\n\r\nexport const solidStrokeStylePreset: StrokeStylePreset = {\r\n style: StrokeStyle.Solid,\r\n type: 'solid',\r\n intervals: SOLID_INTERVALS,\r\n};\r\nexport const strokeStylePresets: StrokeStylePreset[] = [\r\n solidStrokeStylePreset,\r\n {\r\n style: StrokeStyle.Dot,\r\n type: 'dashed',\r\n intervals: [2, 2],\r\n },\r\n {\r\n style: StrokeStyle.Dash,\r\n type: 'dashed',\r\n intervals: [3, 3, 3, 3],\r\n },\r\n {\r\n style: StrokeStyle.DashDot,\r\n type: 'dashed',\r\n intervals: [5, 2, 1, 2],\r\n },\r\n {\r\n style: StrokeStyle.DashDotDot,\r\n type: 'dashed',\r\n intervals: [5, 2, 1, 1, 1, 2],\r\n },\r\n {\r\n style: StrokeStyle.Custom,\r\n type: 'dashed',\r\n intervals: [5, 4],\r\n },\r\n];\r\n\r\nconst walkByNumbersGroup = (\r\n numbers: number[],\r\n offset: number,\r\n walker: (group: [number, number], offset: number) => [number, number]\r\n): number[] => {\r\n if (!numbers || !numbers.length) return [];\r\n\r\n const newNumbers = [];\r\n\r\n for (let i = 0; i < numbers.length; i++) {\r\n if (i % 2) {\r\n newNumbers.push(...walker([numbers[i - 1], numbers[i]], offset));\r\n }\r\n }\r\n\r\n return newNumbers;\r\n};\r\n\r\nexport const toIntervals = (numbers: number[], width: ClassifyAble<number>) =>\r\n walkByNumbersGroup(\r\n numbers,\r\n clamp(\r\n getParameterValue(width),\r\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\r\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\r\n ),\r\n ([length, gap], offset) => [length * offset, gap * offset]\r\n );\r\n\r\nexport const toLineDash = (numbers: number[], width: ClassifyAble<number>) =>\r\n walkByNumbersGroup(\r\n numbers,\r\n clamp(\r\n getParameterValue(width),\r\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\r\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\r\n ),\r\n ([length, gap], offset) => [\r\n Math.round(length / Math.max(1, Math.min(offset, 16) / 4)),\r\n Math.round(gap + 1 + Math.max(1, Math.min(offset, 16) / 2)),\r\n ]\r\n );\r\n\r\nexport const getLineDash = (brush: StrokeBrushType): number[] => {\r\n if (!brush || brush.type === 'solid') return [];\r\n\r\n // @ts-ignore\r\n return toLineDash(brush.intervals, brush.width);\r\n};\r\n\r\nexport const defineStrokeStylePreset = (intervals: number[]) => {\r\n if (!intervals.length) return solidStrokeStylePreset;\r\n\r\n return strokeStylePresets.find(preset => {\r\n if (preset.intervals.length !== intervals.length) return false;\r\n\r\n const uniqueStrokeWidths = preset.intervals\r\n .map((presetInterval, i) => intervals[i] / presetInterval)\r\n .filter(unique);\r\n\r\n return uniqueStrokeWidths.length === 1;\r\n });\r\n};\r\n\r\nexport const getDashStylePreset = (\r\n dashStyle: StrokeStyle\r\n): StrokeStylePreset | undefined =>\r\n strokeStylePresets.find(preset => preset.style === dashStyle);\r\n","import { BrushFill as sBrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\r\nimport { Color } from '@evergis/color';\r\n\r\nimport { getParameterValue } from '../../core/classification';\r\n\r\nimport {\r\n FillBrushType,\r\n HatchBrush,\r\n isHatchBrush,\r\n PolygonSymbol,\r\n} from '../../core/style';\r\n\r\nimport { getHexColor } from '../../utils/color';\r\nimport { getLineDash } from '../strokeStyle';\r\n\r\nconst ALPHA_NORMALIZER = 65025;\r\n\r\nconst sum = (numbers: number[]) =>\r\n numbers.reduce((result, num) => result + num, 0);\r\n\r\nconst shouldFillMatrixCell = (\r\n matrixSize: number,\r\n hatchAngle: number,\r\n x: number,\r\n y: number\r\n) => {\r\n const center = Math.round(matrixSize / 2);\r\n\r\n if ((hatchAngle === 0 || hatchAngle === Math.PI) && x === center) {\r\n return true;\r\n }\r\n if (hatchAngle === Math.PI / 4 && y === x) {\r\n return true;\r\n }\r\n if (hatchAngle === Math.PI / 2 && y === center) {\r\n return true;\r\n }\r\n\r\n return hatchAngle === (3 * Math.PI) / 4 && matrixSize - 1 - y === x;\r\n};\r\n\r\nconst createEmptyMatrix = (size: number): number[][] =>\r\n Array(size)\r\n .fill(null)\r\n .map(() => Array(size));\r\n\r\nconst fillMatrix = (\r\n matrix: number[][],\r\n filler: (x: number, y: number, size: number) => number\r\n) => {\r\n const matrixSize = matrix.length;\r\n\r\n for (let x = 0; x < matrixSize; x++) {\r\n for (let y = 0; y < matrixSize; y++) {\r\n matrix[x][y] = filler(x, y, matrixSize);\r\n }\r\n }\r\n};\r\n\r\nconst createFillBrushMatrix = (\r\n hatchAngle: number,\r\n hatchWidth: number,\r\n scalingFactor: number[]\r\n) => {\r\n const matrixSize = Math.max(\r\n Math.round(sum([Math.max(...scalingFactor), hatchWidth])),\r\n hatchWidth\r\n );\r\n const matrix = createEmptyMatrix(matrixSize);\r\n\r\n fillMatrix(matrix, (x, y, size) =>\r\n shouldFillMatrixCell(size, hatchAngle, x, y) ? 255 : 0\r\n );\r\n\r\n return matrix;\r\n};\r\n\r\nconst createSymbolFillBrush = (\r\n fillBrush: FillBrushType\r\n): number[][] | undefined => {\r\n if (fillBrush.type !== 'hatch') return undefined;\r\n\r\n return createFillBrushMatrix(\r\n // @ts-ignore\r\n getParameterValue(fillBrush.hatchAngle),\r\n // @ts-ignore\r\n Math.round(fillBrush.hatchWidth),\r\n fillBrush.scalingFactor\r\n );\r\n};\r\n\r\nexport class SGisBrushFill extends sBrushFill {\r\n constructor(public originalSymbol: PolygonSymbol<HatchBrush>) {\r\n super({\r\n // @ts-ignore\r\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\r\n // @ts-ignore\r\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\r\n lineDash: getLineDash(originalSymbol.stroke),\r\n fillBackground: getHexColor(\r\n // @ts-ignore\r\n getParameterValue(originalSymbol.fill?.color)\r\n ),\r\n fillForeground: isHatchBrush(originalSymbol.fill)\r\n ? // @ts-ignore\r\n getHexColor(getParameterValue(originalSymbol.fill?.hatchColor))\r\n : void 0,\r\n fillBrush: createSymbolFillBrush(originalSymbol.fill),\r\n lineCap: 'square',\r\n });\r\n }\r\n\r\n _updateBrush() {\r\n // @ts-ignore\r\n if (!this._initialized) return;\r\n\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n\r\n if (!ctx) {\r\n return;\r\n }\r\n\r\n const brush = this.fillBrush;\r\n const brushSize = brush.length;\r\n const foreground = new Color(this.fillForeground);\r\n const background = new Color(this.fillBackground);\r\n\r\n canvas.height = brushSize;\r\n canvas.width = brushSize;\r\n for (let i = 0; i < brushSize; i++) {\r\n // eslint-disable-next-line id-length\r\n for (let j = 0; j < brush[i].length; j++) {\r\n const srcA = (brush[i][j] * foreground.a) / ALPHA_NORMALIZER;\r\n const dstA = (background.a / 255) * (1 - srcA);\r\n const alpha = +Math.min(1, srcA + dstA).toFixed(2);\r\n const red = Math.round(\r\n Math.min(255, background.r * dstA + foreground.r * srcA)\r\n );\r\n const green = Math.round(\r\n Math.min(255, background.g * dstA + foreground.g * srcA)\r\n );\r\n const blue = Math.round(\r\n Math.min(255, background.b * dstA + foreground.b * srcA)\r\n );\r\n\r\n ctx.fillStyle = `rgba(${red},${green},${blue},${alpha})`;\r\n ctx.fillRect(j, i, 1, 1);\r\n }\r\n }\r\n this._brush = new Image();\r\n this._brush.src = canvas.toDataURL();\r\n }\r\n\r\n clone() {\r\n return new SGisBrushFill(this.originalSymbol);\r\n }\r\n}\r\n","import { ImageFill as sImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\r\n\r\nimport { getParameterValue } from '../../core/classification';\r\n\r\nimport { isDashedBrush, PatternBrush, PolygonSymbol } from '../../core/style';\r\n\r\nimport { getHexColor } from '../../utils/color';\r\nimport { getLineDash } from '../strokeStyle';\r\n\r\nexport class SGisImageFill extends sImageFill {\r\n constructor(public originalSymbol: PolygonSymbol<PatternBrush>) {\r\n super({\r\n // @ts-ignore\r\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\r\n // @ts-ignore\r\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\r\n lineDash: getLineDash(originalSymbol.stroke),\r\n src: `data:image/png;base64,${originalSymbol.fill.pattern}`,\r\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\r\n });\r\n }\r\n\r\n clone() {\r\n return new SGisImageFill(this.originalSymbol);\r\n }\r\n}\r\n","import { PolygonSymbol as sPolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\r\n\r\nimport { getParameterValue } from '../../core/classification';\r\n\r\nimport { isDashedBrush, PolygonSymbol } from '../../core/style/types';\r\n\r\nimport { getHexColor } from '../../utils/color';\r\nimport { getLineDash } from '../strokeStyle';\r\n\r\nexport class SGisPolygonSymbol extends sPolygonSymbol {\r\n constructor(public originalSymbol: PolygonSymbol) {\r\n super({\r\n // @ts-ignore\r\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\r\n // @ts-ignore\r\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\r\n lineDash: getLineDash(originalSymbol.stroke),\r\n // @ts-ignore\r\n fillColor: getHexColor(getParameterValue(originalSymbol.fill?.color)),\r\n // TODO?: may be it should be defined by user\r\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\r\n });\r\n }\r\n\r\n clone() {\r\n return new SGisPolygonSymbol(this.originalSymbol);\r\n }\r\n}\r\n","import { Crs } from '@evergis/sgis/es/Crs';\r\nimport { projectRings } from '@evergis/sgis/es/geotools';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\r\n\r\nimport { LineMiterKind, LineMiterSize } from '../../core/style/types';\r\n\r\nexport type MiterPosition = 'left' | 'right';\r\n\r\nexport interface LineMiterRenderBaseInfo {\r\n position: MiterPosition;\r\n color: string;\r\n strokeWidth: number;\r\n kind: LineMiterKind;\r\n size: LineMiterSize;\r\n}\r\n\r\nconst adaptMiterRings = (\r\n rings: Coordinates[][],\r\n resolution: number,\r\n fromCrs: Crs,\r\n toCrs: Crs\r\n) => {\r\n const projected = projectRings(rings, fromCrs, toCrs);\r\n\r\n return simplifyCoordinates(\r\n projected.map(ring =>\r\n // @ts-ignore\r\n ring.map(([x, y]) => [x / resolution, y / -resolution])\r\n ),\r\n 1\r\n );\r\n};\r\n\r\nconst miterSizeCalcs: Record<LineMiterSize, (strokeWidth: number) => number> = {\r\n [LineMiterSize.Small]: strokeWidth => (strokeWidth + 1) * 3 + 1,\r\n [LineMiterSize.Large]: strokeWidth => (strokeWidth + 1) * 5 - 1,\r\n};\r\n\r\nexport abstract class LineMiterRender implements LineMiterRenderBaseInfo {\r\n // @ts-ignore\r\n position: MiterPosition;\r\n // @ts-ignore\r\n color: string;\r\n // @ts-ignore\r\n strokeWidth: number;\r\n // @ts-ignore\r\n kind: LineMiterKind;\r\n // @ts-ignore\r\n size: LineMiterSize;\r\n\r\n constructor(baseInfo: LineMiterRenderBaseInfo) {\r\n Object.assign(this, baseInfo);\r\n }\r\n\r\n getAnchor = (rings: Coordinates[][]): Coordinates => {\r\n if (this.position === 'right') {\r\n const lastRing = rings[rings.length - 1];\r\n\r\n return (lastRing && lastRing[lastRing.length - 1]) || null;\r\n }\r\n\r\n const firstRing = rings[0];\r\n\r\n return (firstRing && firstRing[0]) || null;\r\n };\r\n\r\n getRender(\r\n anchorRings: Coordinates[][],\r\n anchorCrs: Crs,\r\n resolution: number,\r\n currentCrs: Crs\r\n ): Render {\r\n const xMultiplier = this.position === 'right' ? 1 : -1;\r\n const miterAnchor = this.getAnchor(anchorRings);\r\n const miterRings = this.createRings(miterAnchor, xMultiplier);\r\n const projectedMiterRings = adaptMiterRings(\r\n miterRings,\r\n resolution,\r\n anchorCrs,\r\n currentCrs\r\n );\r\n\r\n return this.createRender(projectedMiterRings);\r\n }\r\n\r\n get miterSize() {\r\n const calcMiterSize = miterSizeCalcs[this.size];\r\n\r\n return calcMiterSize ? calcMiterSize(this.strokeWidth) : 1;\r\n }\r\n abstract get usageSize(): number;\r\n abstract createRings(\r\n anchor: Coordinates,\r\n xMultiplier: number\r\n ): Coordinates[][];\r\n abstract createRender(rings: Coordinates[][]): Render;\r\n}\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { LineMiterRender } from './LineMiterRender';\r\n\r\nimport { LineMiterKind } from '../../core/style/types';\r\n\r\nexport class ArrowLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth;\r\n }\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [\r\n [\r\n [x, y + this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y],\r\n [x, y - this.miterSize / 2],\r\n ],\r\n ];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineMiterKind.FilledArrow;\r\n\r\n return new PolyRender(miterRings, {\r\n enclosed: isFilled,\r\n fillColor: isFilled ? this.color : void 0,\r\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\r\n lineCap: 'square',\r\n lineJoin: 'miter',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n }\r\n}\r\n","import { formatLength, formatPolygonMeasure } from '../core';\r\n\r\nexport interface MeasureToolFormatters {\r\n polygon: typeof formatPolygonMeasure;\r\n length: typeof formatLength;\r\n}\r\n\r\nexport const DEFAULT_FORMATTERS: MeasureToolFormatters = {\r\n polygon: formatPolygonMeasure,\r\n length: formatLength,\r\n};\r\n","import { PolylineControl } from '@evergis/sgis/es/controls/PolylineControl';\r\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { Map as SMap } from '@evergis/sgis/es/Map';\r\nimport { PolyControlParams } from '@evergis/sgis/es/controls/PolyControl';\r\nimport { sGisMouseMoveEvent } from '@evergis/sgis/es/commonEvents';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport {\r\n area as calcArea,\r\n length as calcLength,\r\n} from '@evergis/sgis/es/geotools';\r\nimport { geo } from '@evergis/sgis/es/Crs';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport {\r\n ChangeEvent,\r\n DrawingFinishEvent,\r\n} from '@evergis/sgis/es/controls/Control';\r\n\r\nimport { renderLabelSymbolType } from '../components';\r\n\r\nimport { isPolylineLikePolygon } from '../core';\r\n\r\nimport {\r\n createLabelSymbol,\r\n measureAreaSymbol,\r\n ShadowedPolySymbol,\r\n} from '../symbols';\r\nimport {\r\n DEFAULT_FORMATTERS,\r\n MeasureToolFormatters,\r\n} from './MeasureToolFormatters';\r\n\r\ninterface BaseMeasureToolCreatorParams extends PolyControlParams {\r\n renderLabelSymbol: renderLabelSymbolType;\r\n formatters?: MeasureToolFormatters;\r\n areaSymbol?: ShadowedPolySymbol;\r\n}\r\n\r\nconst COORD_FRACTION = 6;\r\nconst DEFAULT_LABEL_POSITION: [number, number] = [Infinity, Infinity];\r\n\r\nexport class BaseMeasureToolCreator extends PolylineControl {\r\n private tempLabel?: LabelFeature;\r\n private coordLabel?: LabelFeature;\r\n private measureResultLabel?: LabelFeature;\r\n private tempPolygon?: Poly;\r\n formatters: MeasureToolFormatters;\r\n painter: DomPainter;\r\n renderLabelSymbol: renderLabelSymbolType;\r\n areaSymbol?: ShadowedPolySymbol;\r\n\r\n constructor(\r\n map: SMap,\r\n painter: DomPainter,\r\n params: BaseMeasureToolCreatorParams\r\n ) {\r\n super(map, params);\r\n this.painter = painter;\r\n this.renderLabelSymbol = params.renderLabelSymbol;\r\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\r\n this.areaSymbol = params.areaSymbol;\r\n this.on('pointAdd', this.handlePointAdd);\r\n // @ts-ignore\r\n this.on('change', this.updateDistance);\r\n }\r\n\r\n protected _handleMousemove(event: sGisMouseMoveEvent): void {\r\n super._handleMousemove(event);\r\n this.drawPointOnMouseMove(event);\r\n }\r\n\r\n protected _activate(): void {\r\n super._activate();\r\n this.addTempLabel();\r\n this.setCursor('pointer');\r\n }\r\n\r\n protected _deactivate(): void {\r\n super._deactivate();\r\n this.removeCoordLabel();\r\n this.removeTempLabel();\r\n this.removeMeasureLabel();\r\n this.removeTempPolygon();\r\n this.setCursor('default');\r\n }\r\n\r\n private handlePointAdd() {\r\n const feature = this.activeFeature;\r\n\r\n if (!feature) return;\r\n const { rings, crs }: Polyline = feature;\r\n\r\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\r\n this.finishDrawing();\r\n this.fire(new DrawingFinishEvent(feature, new MouseEvent('mouseup')));\r\n\r\n return;\r\n }\r\n\r\n if (rings[0].length === 2) {\r\n const projection = crs.projectionTo(geo);\r\n const point = rings[0][0];\r\n if (!projection) return;\r\n const [lat, long] = projection(point);\r\n\r\n this.removeTempLabel();\r\n this.addMeasureResultLabel();\r\n this.addCoordLabel(\r\n `${lat.toFixed(COORD_FRACTION)}, ${long.toFixed(COORD_FRACTION)}`,\r\n point\r\n );\r\n } else {\r\n this.removeCoordLabel();\r\n }\r\n }\r\n\r\n private polygonPreview() {\r\n if (this.tempPolygon) {\r\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\r\n }\r\n\r\n const feature = this.activeFeature;\r\n\r\n if (!feature) return;\r\n const { rings, crs } = feature;\r\n const polygonRings = [...rings[0]];\r\n\r\n polygonRings.shift();\r\n this.tempPolygon = new Polygon(polygonRings, { crs });\r\n this.tempPolygon.symbol = this.areaSymbol || measureAreaSymbol;\r\n\r\n this.activeFeature && this.activeFeature.hide();\r\n this._tempLayer && this._tempLayer.add(this.tempPolygon);\r\n }\r\n\r\n private removeTempPolygon() {\r\n if (this.tempPolygon) {\r\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\r\n delete this.tempPolygon;\r\n }\r\n }\r\n\r\n private updateDistance(event: ChangeEvent) {\r\n const feature = this.activeFeature;\r\n const { ringIndex, pointIndex } = event;\r\n\r\n if (!feature || ringIndex === null || pointIndex === null) return;\r\n\r\n const { rings, crs } = feature;\r\n\r\n const position = rings[ringIndex][pointIndex];\r\n const length = calcLength(rings, crs);\r\n let content = this.formatters.length(length);\r\n\r\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\r\n this.polygonPreview();\r\n\r\n const area = calcArea(rings, crs);\r\n\r\n content = this.formatters.polygon(area, length);\r\n } else if (this.tempPolygon) {\r\n feature.show();\r\n this.removeTempPolygon();\r\n }\r\n\r\n if (this.measureResultLabel) {\r\n this.measureResultLabel.position = position;\r\n this.measureResultLabel.content = content;\r\n }\r\n }\r\n\r\n private addTempLabel() {\r\n this.tempLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\r\n content: 'Нажмите на карту, чтобы начать измерение',\r\n crs: this.map.crs,\r\n symbol: createLabelSymbol({\r\n renderLabel: this.renderLabelSymbol,\r\n }),\r\n });\r\n this._tempLayer && this._tempLayer.add(this.tempLabel);\r\n }\r\n\r\n private addCoordLabel(content: string, position: Coordinates) {\r\n this.coordLabel = new LabelFeature(position, {\r\n content,\r\n crs: this.map.crs,\r\n symbol: createLabelSymbol({\r\n renderLabel: this.renderLabelSymbol,\r\n onClose: this.cancel,\r\n }),\r\n });\r\n this._tempLayer && this.coordLabel && this._tempLayer.add(this.coordLabel);\r\n }\r\n\r\n private addMeasureResultLabel() {\r\n this.measureResultLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\r\n crs: this.map.crs,\r\n symbol: createLabelSymbol({\r\n renderLabel: this.renderLabelSymbol,\r\n }),\r\n });\r\n this._tempLayer &&\r\n this.measureResultLabel &&\r\n this._tempLayer.add(this.measureResultLabel);\r\n }\r\n\r\n private removeTempLabel() {\r\n if (this.tempLabel) {\r\n this._tempLayer && this._tempLayer.remove(this.tempLabel);\r\n delete this.tempLabel;\r\n }\r\n }\r\n\r\n private removeCoordLabel() {\r\n if (this.coordLabel) {\r\n this._tempLayer && this._tempLayer.remove(this.coordLabel);\r\n delete this.coordLabel;\r\n }\r\n }\r\n\r\n private removeMeasureLabel() {\r\n if (this.measureResultLabel) {\r\n this._tempLayer && this._tempLayer.remove(this.measureResultLabel);\r\n delete this.measureResultLabel;\r\n }\r\n }\r\n\r\n private drawPointOnMouseMove(event: sGisMouseMoveEvent) {\r\n if (this.tempLabel) {\r\n this.tempLabel.position = event.point.position;\r\n }\r\n }\r\n\r\n private setCursor(cursor: 'pointer' | 'default') {\r\n const { wrapper } = this.painter;\r\n\r\n if (wrapper && typeof wrapper !== 'string') {\r\n wrapper.style.cursor = cursor;\r\n }\r\n }\r\n\r\n private cancel = () => {\r\n this.fire('cancel');\r\n };\r\n}\r\n","import { PolyEditor } from '@evergis/sgis/es/controls/PolyEditor';\r\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { Map as SMap } from '@evergis/sgis/es/Map';\r\nimport { ControlWithSymbolParams } from '@evergis/sgis/es/controls/Control';\r\nimport {\r\n area as calcArea,\r\n length as calcLength,\r\n} from '@evergis/sgis/es/geotools';\r\n\r\nimport { renderLabelSymbolType } from '../components';\r\n\r\nimport { createLabelSymbol } from '../symbols';\r\nimport {\r\n DEFAULT_FORMATTERS,\r\n MeasureToolFormatters,\r\n} from './MeasureToolFormatters';\r\n\r\ninterface BaseMeasureToolEditorParams extends ControlWithSymbolParams {\r\n renderLabelSymbol: renderLabelSymbolType;\r\n formatters?: MeasureToolFormatters;\r\n}\r\n\r\nexport class BaseMeasureToolEditor extends PolyEditor {\r\n private measureResultLabel?: LabelFeature;\r\n formatters: MeasureToolFormatters;\r\n painter: DomPainter;\r\n renderLabelSymbol: renderLabelSymbolType;\r\n\r\n constructor(\r\n map: SMap,\r\n painter: DomPainter,\r\n params: BaseMeasureToolEditorParams\r\n ) {\r\n super(map, params);\r\n this.painter = painter;\r\n this.renderLabelSymbol = params.renderLabelSymbol;\r\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\r\n this.on('change', this.updateMeasureResult);\r\n this.on('edit', this.updateMeasureResult);\r\n }\r\n\r\n protected _activate(): void {\r\n super._activate();\r\n this.addMeasureResultLabel();\r\n }\r\n\r\n private measureResult = () => {\r\n const feature = this.activeFeature;\r\n\r\n if (!feature) return null;\r\n\r\n const { rings, isEnclosed, crs } = feature;\r\n const pointsCount = rings[0].length;\r\n const position = rings[0][pointsCount - 1];\r\n\r\n const area = calcArea(rings, crs);\r\n const length = calcLength(rings, crs, isEnclosed);\r\n const content = isEnclosed\r\n ? this.formatters.polygon(area, length)\r\n : this.formatters.length(length);\r\n\r\n return {\r\n content,\r\n position,\r\n };\r\n };\r\n\r\n private addMeasureResultLabel() {\r\n const measureResult = this.measureResult();\r\n if (measureResult === null) return;\r\n\r\n const { content, position } = measureResult;\r\n\r\n this.measureResultLabel = new LabelFeature(position, {\r\n content,\r\n crs: this.map.crs,\r\n symbol: createLabelSymbol({\r\n onClose: this.removeFeature,\r\n renderLabel: this.renderLabelSymbol,\r\n }),\r\n });\r\n this._tempLayer && this._tempLayer.add(this.measureResultLabel);\r\n }\r\n\r\n updateMeasureResult() {\r\n if (this.measureResultLabel) {\r\n const measureResult = this.measureResult();\r\n\r\n if (measureResult === null) return;\r\n\r\n const { content, position } = measureResult;\r\n\r\n this.measureResultLabel.content = content;\r\n this.measureResultLabel.position = position;\r\n }\r\n }\r\n\r\n private removeFeature = () => {\r\n this.fire('remove');\r\n };\r\n}\r\n","import { Crs, geo } from '@evergis/sgis/es/Crs';\r\nimport { distance } from '@evergis/sgis/es/geotools';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\n\r\ntype ConvertionContext = {\r\n painter: DomPainter;\r\n crs?: Crs;\r\n};\r\n\r\nexport const metersToPixels = (\r\n meters: number,\r\n { painter, crs = geo }: ConvertionContext\r\n): number => {\r\n const { width } = painter;\r\n const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);\r\n const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);\r\n const widthDistance: number = distance(zeroPoint, maxWidthPoint);\r\n const pxK = width / (widthDistance || 1);\r\n\r\n return Math.round(meters * pxK);\r\n};\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nexport const polygonCircleFromPoint = (\r\n center: Coordinates,\r\n diameter: number\r\n): Coordinates[][] => {\r\n const coordinates: Coordinates[] = [];\r\n const radius = diameter / 2;\r\n const endAngle = Math.PI * 2;\r\n const step = Math.max(Math.PI / 2 / radius, endAngle / 128);\r\n let start = 0;\r\n let end = endAngle;\r\n\r\n for (let ang = start; ang < end; ang += step) {\r\n coordinates.push([\r\n Math.cos(ang) * radius + center[0],\r\n Math.sin(ang) * radius + center[1],\r\n ]);\r\n }\r\n\r\n return [coordinates];\r\n};\r\n","export const isNumeric = (number: string | number): boolean =>\r\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\r\n","import { ClassificationParameterExtended } from \"../core\";\r\n\r\ntype IsParameterType = \"size\" | \"strokeWidth\" | \"stroke.width\" | \"strokeColor\" | \"stroke.color\";\r\n\r\nexport const isParameterType = (\r\n types: IsParameterType | Array<IsParameterType>,\r\n parameter?: ClassificationParameterExtended,\r\n): boolean => (typeof types === \"string\"\r\n ? parameter?.toLowerCase()?.includes(types.toLowerCase())\r\n : types.some(type => parameter?.toLowerCase()?.includes(type.toLowerCase()))) || false;\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { polygonCircleFromPoint } from '../../';\r\nimport { LineMiterRender } from './LineMiterRender';\r\nimport { LineMiterKind } from '../../core';\r\n\r\nexport class CircleLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth * 3;\r\n }\r\n\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [[[x + (this.miterSize / 2 + this.strokeWidth) * xMultiplier, y]]];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineMiterKind.FilledCircle;\r\n\r\n return new PolyRender(\r\n polygonCircleFromPoint(miterRings[0][0], this.miterSize),\r\n {\r\n fillColor: isFilled ? this.color : 'transparent',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n enclosed: true,\r\n }\r\n );\r\n }\r\n}\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { LineMiterRender } from './LineMiterRender';\r\n\r\nimport { LineMiterKind } from '../../core/style/types';\r\n\r\nexport class SquareLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth;\r\n }\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [\r\n [\r\n [x, y + this.miterSize / 2],\r\n [x, y - this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y - this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y + this.miterSize / 2],\r\n ],\r\n ];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineMiterKind.FilledSquare;\r\n\r\n return new PolyRender(miterRings, {\r\n enclosed: true,\r\n fillColor: isFilled ? this.color : void 0,\r\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\r\n lineCap: 'square',\r\n lineJoin: 'miter',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n }\r\n}\r\n","import { ArrowLineMiterRender } from './ArrowLineMiterRender';\r\nimport { CircleLineMiterRender } from './CircleLineMiterRender';\r\nimport { LineMiterRenderBaseInfo, LineMiterRender } from './LineMiterRender';\r\nimport { SquareLineMiterRender } from './SquareLineMiterRender';\r\n\r\nimport { LineMiterKind } from '../../core/style/types';\r\n\r\nexport const getLineMiterRender = (\r\n options: LineMiterRenderBaseInfo\r\n): LineMiterRender | null => {\r\n switch (options.kind) {\r\n case LineMiterKind.Arrow:\r\n case LineMiterKind.FilledArrow:\r\n return new ArrowLineMiterRender(options);\r\n case LineMiterKind.Square:\r\n case LineMiterKind.FilledSquare:\r\n return new SquareLineMiterRender(options);\r\n case LineMiterKind.Circle:\r\n case LineMiterKind.FilledCircle:\r\n return new CircleLineMiterRender(options);\r\n default:\r\n return null;\r\n }\r\n};\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { MiterPosition } from './LineMiterRender';\r\n\r\nconst updateRingForRightMiter = (\r\n ring: Coordinates[],\r\n miterSize: number,\r\n isLastRing: boolean\r\n): Coordinates[] => {\r\n const reversedRing = ring.slice().reverse();\r\n\r\n for (let i = 0; i < reversedRing.length; i++) {\r\n const coordinates = reversedRing[i];\r\n\r\n if (isLastRing && i === 0) {\r\n reversedRing[i] = [coordinates[0] - miterSize, coordinates[1]];\r\n }\r\n\r\n const nextCoordinates = reversedRing[i - 1];\r\n\r\n if (nextCoordinates && nextCoordinates[0] < coordinates[0]) {\r\n reversedRing[i] = [\r\n nextCoordinates[0] - Math.abs(nextCoordinates[0] - coordinates[0]),\r\n coordinates[1],\r\n ];\r\n }\r\n }\r\n\r\n return reversedRing.reverse();\r\n};\r\n\r\nconst updateRingForLeftMiter = (\r\n ring: Coordinates[],\r\n miterSize: number,\r\n isFirstRing: boolean\r\n): Coordinates[] => {\r\n const newRing = ring.slice();\r\n\r\n for (let i = 0; i < newRing.length; i++) {\r\n const coordinates = newRing[i];\r\n\r\n if (i === 0 && isFirstRing) {\r\n newRing[i] = [coordinates[0] + miterSize, coordinates[1]];\r\n }\r\n\r\n const prevCoordinates = newRing[i - 1];\r\n\r\n if (prevCoordinates && prevCoordinates[0] > coordinates[0]) {\r\n newRing[i] = [\r\n prevCoordinates[0] + Math.abs(coordinates[0] - prevCoordinates[0]),\r\n coordinates[1],\r\n ];\r\n }\r\n }\r\n\r\n return newRing;\r\n};\r\n\r\nexport const updateRingsForMiter = (\r\n rings: Coordinates[][],\r\n position: MiterPosition,\r\n miterSize: number\r\n): Coordinates[][] => {\r\n return rings.map((ring, ringIndex) => {\r\n switch (position) {\r\n case 'right':\r\n return updateRingForRightMiter(\r\n ring,\r\n miterSize,\r\n ringIndex === rings.length - 1\r\n );\r\n default:\r\n return updateRingForLeftMiter(ring, miterSize, ringIndex === 0);\r\n }\r\n });\r\n};\r\n","import { PolylineSymbol as sPolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { getLineMiterRender } from '../LineMiters/getLineMiterRender';\r\nimport { updateRingsForMiter } from '../LineMiters/updateRingsForMiter';\r\n\r\nimport { getParameterValue } from '../../core/classification';\r\n\r\nimport {\r\n isDashedBrush,\r\n isSimplePolylineSymbol,\r\n PolylineSymbols,\r\n} from '../../core/style';\r\n\r\nimport { getHexColor } from '../../utils/color';\r\nimport { clamp } from '../../utils/math';\r\nimport { PREVIEW_LIMITS } from '../previewLimits';\r\nimport { getLineDash } from '../strokeStyle';\r\n\r\nexport const copyRings = (rings: Coordinates[][]): Coordinates[][] =>\r\n rings.map(ring =>\r\n ring.map(coordinates => coordinates.slice() as Coordinates)\r\n );\r\n\r\nexport class SGisPolylineSymbol extends sPolylineSymbol {\r\n constructor(public originalSymbol: PolylineSymbols) {\r\n super({\r\n // @ts-ignore\r\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\r\n strokeWidth: clamp(\r\n // @ts-ignore\r\n getParameterValue(originalSymbol.stroke?.width),\r\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\r\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\r\n ),\r\n // @ts-ignore\r\n lineDash: getLineDash(originalSymbol.stroke),\r\n // @ts-ignore\r\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\r\n });\r\n }\r\n\r\n renderFunction(feature: Polyline, resolution: number, crs: Crs): Render[] {\r\n if (!isSimplePolylineSymbol(this.originalSymbol))\r\n return super.renderFunction(feature, resolution, crs);\r\n\r\n const {\r\n ending,\r\n beginningSize,\r\n beginning,\r\n endingSize,\r\n } = this.originalSymbol;\r\n const renders: Render[] = [];\r\n\r\n const featureCopy = feature.clone();\r\n\r\n const beginningMiterRender = getLineMiterRender({\r\n color: this.strokeColor,\r\n // @ts-ignore\r\n kind: beginning,\r\n position: 'left',\r\n // @ts-ignore\r\n size: beginningSize,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n const endingMiterRender = getLineMiterRender({\r\n color: this.strokeColor,\r\n // @ts-ignore\r\n kind: ending,\r\n position: 'right',\r\n // @ts-ignore\r\n size: endingSize,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n\r\n if (beginningMiterRender) {\r\n const updatedRings = updateRingsForMiter(\r\n featureCopy.rings,\r\n 'left',\r\n beginningMiterRender.usageSize\r\n );\r\n const render = beginningMiterRender.getRender(\r\n updatedRings,\r\n feature.crs,\r\n resolution,\r\n crs\r\n );\r\n\r\n featureCopy.rings = updatedRings;\r\n renders.push(render);\r\n }\r\n\r\n if (endingMiterRender) {\r\n const updatedRings = updateRingsForMiter(\r\n featureCopy.rings,\r\n 'right',\r\n endingMiterRender.usageSize\r\n );\r\n const render = endingMiterRender.getRender(\r\n updatedRings,\r\n feature.crs,\r\n resolution,\r\n crs\r\n );\r\n\r\n featureCopy.rings = updatedRings;\r\n renders.push(render);\r\n }\r\n\r\n // NOTE: линия должна быть в начале чтобы быть под митерами\r\n renders.unshift(...super.renderFunction(featureCopy, resolution, crs));\r\n\r\n return renders;\r\n }\r\n\r\n clone() {\r\n return new SGisPolylineSymbol(this.originalSymbol);\r\n }\r\n}\r\n","import React, { ComponentType } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { DynamicPointSymbol } from '@evergis/sgis/es/symbols/Symbol';\r\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\r\nimport { Offset } from '@evergis/sgis/es/baseTypes';\r\n\r\nexport type LabelSymbolComponent =\r\n | ComponentType<{ content: string }>\r\n | ComponentType;\r\n\r\ntype LabelSymbolParams = {\r\n offset?: Offset;\r\n component?: LabelSymbolComponent;\r\n};\r\n\r\nexport class LabelSymbol extends DynamicPointSymbol {\r\n public component?: LabelSymbolComponent;\r\n\r\n constructor({ component, offset }: LabelSymbolParams = {}) {\r\n super({ offset });\r\n this.component = component;\r\n }\r\n\r\n protected _getFeatureNode(feature: LabelFeature): HTMLElement {\r\n const node = document.createElement('div');\r\n\r\n this.renderDom(feature.content, node);\r\n\r\n return node;\r\n }\r\n\r\n protected _updateFeatureNode(feature: LabelFeature): void {\r\n this.renderDom(feature.content, this.getNode(feature));\r\n }\r\n\r\n private renderDom(content: string, node: HTMLElement): void {\r\n if (!node) {\r\n return;\r\n }\r\n\r\n const Component = this.component;\r\n\r\n if (Component) {\r\n ReactDOM.render(<Component content={content} />, node);\r\n } else {\r\n node.innerText = content;\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Offset } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { renderLabelSymbolType } from '../../components';\r\nimport { LabelSymbol } from './LabelSymbol';\r\n\r\nexport const defaultOffset: Offset = [8, -16];\r\n\r\ntype createLabelSymbolParams = {\r\n offset?: Offset;\r\n onClose?: VoidFunction;\r\n renderLabel: renderLabelSymbolType;\r\n};\r\n\r\nexport const createLabelSymbol = (props: createLabelSymbolParams) => {\r\n const {\r\n offset = defaultOffset,\r\n renderLabel = ({ content }: { content: string }) => <div>{content}</div>,\r\n onClose = undefined,\r\n } = props || {};\r\n\r\n return new LabelSymbol({\r\n offset,\r\n component: ({ content }: { content: string }) =>\r\n renderLabel({ content, onClose }),\r\n });\r\n};\r\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { polygonCircleFromPoint } from '../../';\r\nimport { EditorPointSymbolParams } from './ShadowedPointSymbol';\r\n\r\nexport function createShadowRender(\r\n position: Coordinates,\r\n {\r\n strokeWidth = 2,\r\n shadowColor,\r\n shadowSize,\r\n size = 6,\r\n }: EditorPointSymbolParams\r\n) {\r\n const shadowDiameter = size + strokeWidth + shadowSize;\r\n\r\n return new PolyRender(polygonCircleFromPoint(position, shadowDiameter), {\r\n fillColor: 'transparent',\r\n strokeColor: shadowColor,\r\n strokeWidth: shadowSize,\r\n enclosed: true,\r\n });\r\n}\r\n\r\nexport function getEditorPointRenderer(\r\n position: Coordinates,\r\n {\r\n strokeColor,\r\n strokeWidth,\r\n shadowColor,\r\n fillColor,\r\n shadowSize,\r\n size = 0,\r\n }: EditorPointSymbolParams\r\n) {\r\n return [\r\n createShadowRender(position, {\r\n strokeWidth,\r\n strokeColor,\r\n shadowSize,\r\n shadowColor,\r\n size,\r\n }),\r\n new PolyRender(polygonCircleFromPoint(position, size), {\r\n fillColor,\r\n strokeColor,\r\n strokeWidth,\r\n enclosed: true,\r\n }),\r\n ];\r\n}\r\n","import {\r\n PointSymbol,\r\n PointSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/point/Point';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { polygonCircleFromPoint } from '../..';\r\n\r\nexport type EditorPointSymbolParams = {\r\n shadowColor: string;\r\n shadowSize: number;\r\n} & PointSymbolConstructorParams;\r\n\r\nexport class ShadowedPointSymbol extends PointSymbol {\r\n shadowColor!: string;\r\n shadowSize!: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(options: EditorPointSymbolParams) {\r\n super(options);\r\n }\r\n\r\n static getShadowArc(\r\n position: Coordinates,\r\n {\r\n strokeWidth = 2,\r\n shadowColor,\r\n shadowSize,\r\n size = 6,\r\n }: EditorPointSymbolParams\r\n ): PolyRender {\r\n return new PolyRender(\r\n polygonCircleFromPoint(position, size + strokeWidth + shadowSize),\r\n {\r\n fillColor: 'transparent',\r\n strokeColor: shadowColor,\r\n strokeWidth: shadowSize,\r\n enclosed: true,\r\n }\r\n );\r\n }\r\n\r\n static getPointArc(\r\n position: Coordinates,\r\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams\r\n ): PolyRender {\r\n return new PolyRender(polygonCircleFromPoint(position, size), {\r\n fillColor,\r\n strokeColor,\r\n strokeWidth,\r\n enclosed: true,\r\n });\r\n }\r\n\r\n static getArcs(\r\n position: Coordinates,\r\n params: EditorPointSymbolParams\r\n ): PolyRender[] {\r\n const shadowRender = ShadowedPointSymbol.getShadowArc(position, params);\r\n const pointRender = ShadowedPointSymbol.getPointArc(position, params);\r\n\r\n return shadowRender ? [shadowRender, pointRender] : [pointRender];\r\n }\r\n\r\n public renderFunction(\r\n feature: PointFeature,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n if (!(feature instanceof PointFeature)) return [];\r\n const { position } = feature.projectTo(crs);\r\n\r\n const pxPosition: Coordinates = [\r\n position[0] / resolution + (this.offset[0] || 0),\r\n -position[1] / resolution + (this.offset[1] || 0),\r\n ];\r\n\r\n const shadowRender = this.getShadow(pxPosition, feature);\r\n const pointArc = this.getPoint(pxPosition, feature);\r\n\r\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\r\n }\r\n\r\n protected getShadow(\r\n position: Coordinates,\r\n _feature?: Feature\r\n ): PolyRender | void {\r\n return ShadowedPointSymbol.getShadowArc(position, this);\r\n }\r\n\r\n protected getPoint(position: Coordinates, _feature?: Feature): PolyRender {\r\n return ShadowedPointSymbol.getPointArc(position, this);\r\n }\r\n}\r\n","import {\r\n PolylineSymbol,\r\n PolylineSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { getEditorPointRenderer } from './getEditorPointRenderer';\r\nimport { ShadowedPointSymbol } from './ShadowedPointSymbol';\r\n\r\nexport type EditorPolySymbolParams = {\r\n shadowColor: string;\r\n shadowSize: number;\r\n fillColor?: string;\r\n enclose?: boolean;\r\n showVertex?: boolean;\r\n vertexShadowSize?: number;\r\n} & PolylineSymbolConstructorParams;\r\n\r\nexport class ShadowedPolySymbol extends PolylineSymbol {\r\n shadowColor!: string;\r\n shadowSize!: number;\r\n fillColor?: string;\r\n enclose?: boolean;\r\n showVertex?: boolean;\r\n vertexShadowSize?: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(options: EditorPolySymbolParams) {\r\n super(options);\r\n }\r\n\r\n public renderFunction(\r\n feature: Polygon,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n if (!(feature instanceof Poly)) return [];\r\n\r\n const coordinates = super.getRenderedCoordinates(\r\n feature,\r\n resolution,\r\n crs\r\n );\r\n const polyRender = this.getPolyRender(coordinates, feature);\r\n const shadowRender = this.getShadow(coordinates, feature);\r\n const vertexRenders = this.getVertexRenders(coordinates);\r\n let renders: Render[] = [polyRender];\r\n\r\n if (shadowRender) {\r\n renders = [shadowRender, polyRender];\r\n }\r\n\r\n if (vertexRenders) {\r\n renders = renders.concat(vertexRenders);\r\n }\r\n\r\n return renders;\r\n }\r\n\r\n protected getShadow(\r\n coordinates: Coordinates[][],\r\n _feature?: Feature\r\n ): PolyRender | void {\r\n return new PolyRender(coordinates, {\r\n fillStyle: FillStyle.None,\r\n enclosed: this.enclose,\r\n strokeColor: this.shadowColor,\r\n strokeWidth: this.shadowSize,\r\n lineDash: this.lineDash,\r\n });\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n _feature?: Feature\r\n ): PolyRender {\r\n return new PolyRender(coordinates, {\r\n fillStyle: this.enclose ? FillStyle.Color : FillStyle.None,\r\n enclosed: this.enclose,\r\n fillColor: this.fillColor,\r\n strokeColor: this.strokeColor,\r\n strokeWidth: this.strokeWidth,\r\n lineDash: this.lineDash,\r\n });\r\n }\r\n\r\n protected getVertexRenders(\r\n coordinates: Coordinates[][]\r\n ): PolyRender[] | void {\r\n if (!this.showVertex) return;\r\n\r\n const vertexCoordinates = coordinates.reduce((acc, curr) => {\r\n return acc.concat(curr);\r\n }, []);\r\n\r\n return vertexCoordinates\r\n .map(coord =>\r\n getEditorPointRenderer(coord, {\r\n size: 6,\r\n strokeWidth: 2,\r\n shadowColor: this.shadowColor,\r\n strokeColor: this.strokeColor,\r\n shadowSize:\r\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\r\n fillColor: '#ffffff',\r\n })\r\n )\r\n .reduce((acc, curr) => acc.concat(curr), []);\r\n }\r\n}\r\n\r\nconst polySymbolParams = {\r\n strokeWidth: 2,\r\n strokeColor: '#e33600',\r\n shadowSize: 8,\r\n shadowColor: 'rgba(227, 54, 0, 0.3)',\r\n};\r\n\r\nconst measureSymbolParams = {\r\n strokeColor: '#ff6933',\r\n shadowSize: 0,\r\n vertexShadowSize: 0,\r\n};\r\n\r\nexport const measureLengthSymbol = new ShadowedPolySymbol({\r\n ...polySymbolParams,\r\n ...measureSymbolParams,\r\n enclose: false,\r\n showVertex: true,\r\n});\r\n\r\nexport const measureAreaSymbol = new ShadowedPolySymbol({\r\n ...polySymbolParams,\r\n ...measureSymbolParams,\r\n fillColor: 'rgba(255, 105, 51, 0.25)',\r\n enclose: true,\r\n showVertex: true,\r\n});\r\n\r\nconst snapSymbolParams = {\r\n size: 10,\r\n strokeWidth: 2,\r\n strokeColor: '#e33600',\r\n fillColor: '#ffffff',\r\n shadowColor: 'rgba(227, 54, 0, 0.3)',\r\n shadowSize: 3,\r\n};\r\n\r\nexport const measurePolygonSnapSymbol = new ShadowedPointSymbol({\r\n ...snapSymbolParams,\r\n strokeColor: '#ff6933',\r\n shadowSize: 0,\r\n});\r\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\n\r\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\r\n\r\ntype SelectedFeature = PointFeature & {\r\n isSelected: boolean;\r\n};\r\n\r\nexport type SelectedPointSymbolParams = {\r\n selectedStrokeColor: string;\r\n selectedFillColor: string;\r\n} & EditorPointSymbolParams;\r\n\r\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\r\n selectedStrokeColor!: string;\r\n selectedFillColor!: string;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(props: SelectedPointSymbolParams) {\r\n super(props);\r\n }\r\n\r\n protected getShadow(\r\n position: [number, number],\r\n feature: SelectedFeature\r\n ): PolyRender | void {\r\n if (feature.isSelected) {\r\n return super.getShadow(position, feature);\r\n }\r\n }\r\n\r\n protected getPoint(\r\n position: [number, number],\r\n feature: SelectedFeature\r\n ): PolyRender {\r\n const pointRender = super.getPoint(position, feature);\r\n\r\n if (feature.isSelected) {\r\n pointRender.strokeColor = this.selectedStrokeColor;\r\n pointRender.fillColor = this.selectedFillColor;\r\n }\r\n\r\n return pointRender;\r\n }\r\n}\r\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\n\r\nimport {\r\n EditorPolySymbolParams,\r\n ShadowedPolySymbol,\r\n} from '../Shadowed/ShadowedPolySymbol';\r\n\r\ntype SelectedFeature = Polygon & {\r\n isSelected: boolean;\r\n};\r\n\r\nexport type SelectedPolySymbolParams = {\r\n selectedFillColor?: string;\r\n selectedStrokeColor: string;\r\n selectedStrokeWidth?: number;\r\n} & EditorPolySymbolParams;\r\n\r\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\r\n selectedFillColor!: string;\r\n selectedStrokeColor!: string;\r\n selectedStrokeWidth!: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(props: SelectedPolySymbolParams) {\r\n super(props);\r\n }\r\n\r\n protected getShadow(\r\n coordinates: Coordinates[][],\r\n feature: SelectedFeature\r\n ): PolyRender | void {\r\n if (feature.isSelected) {\r\n return super.getShadow(coordinates, feature);\r\n }\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n feature: SelectedFeature\r\n ): PolyRender {\r\n const polyRender = super.getPolyRender(coordinates, feature);\r\n if (feature.isSelected) {\r\n polyRender.fillColor = this.selectedFillColor;\r\n polyRender.strokeColor = this.selectedStrokeColor;\r\n if (this.selectedStrokeWidth !== void 0) {\r\n polyRender.strokeWidth = this.selectedStrokeWidth;\r\n }\r\n }\r\n\r\n return polyRender;\r\n }\r\n}\r\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\r\nimport { SelectedPointSymbol } from './SelectedPointSymbol';\r\n\r\nexport const selectedPoint = new SelectedPointSymbol({\r\n size: 8,\r\n strokeWidth: 2,\r\n strokeColor: 'rgba(255, 87, 34, 0.3)',\r\n fillColor: 'rgba(255, 255, 255, 0.65)',\r\n shadowColor: 'rgba(255, 87, 34, 0.3)',\r\n shadowSize: 3,\r\n\r\n selectedStrokeColor: '#ff5722',\r\n selectedFillColor: 'rgba(255, 255, 255, 0.65)',\r\n});\r\n\r\nexport const selectedPolyline = new SelectedPolySymbol({\r\n strokeWidth: 6,\r\n strokeColor: 'rgba(255, 87, 34, 0.2)',\r\n shadowSize: 8,\r\n shadowColor: 'rgba(255, 87, 34, 0.3)',\r\n selectedStrokeColor: '#ff5722',\r\n selectedStrokeWidth: 2,\r\n});\r\n\r\nexport const selectedPolygon = new SelectedPolySymbol({\r\n strokeWidth: 2,\r\n strokeColor: 'rgba(255, 87, 34, 0.3)',\r\n shadowSize: 8,\r\n shadowColor: 'rgba(255, 87, 34, 0.3)',\r\n fillColor: 'rgba(255, 255, 255, 0.36)',\r\n enclose: true,\r\n selectedFillColor: 'rgba(255, 255, 255, 0.56)',\r\n selectedStrokeColor: '#ff5722',\r\n});\r\n","import { Symbol } from '@evergis/sgis/es/symbols/Symbol';\r\nimport { Render, DynamicRender } from '@evergis/sgis/es/renders/Render';\r\nimport { SvgRender } from '@evergis/sgis/es/painters/DomPainter/SvgRender';\r\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { Bbox } from '@evergis/sgis/es/Bbox';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { FillStyle } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { listenDomEvent } from '@evergis/sgis/es/utils/domEvent';\r\nimport {\r\n MouseEventFlags,\r\n mouseEvents,\r\n Handler,\r\n} from '@evergis/sgis/es/EventHandler';\r\n\r\nimport { metersToPixels } from '../../utils/metersToPixels';\r\n\r\nimport { SVGPolyProps, SVGFeaturePoly, SvgPolyPathStyles } from './types';\r\n\r\nconst defaultPathStyles: SvgPolyPathStyles = {\r\n strokeWidth: 2,\r\n strokeColor: 'rgb(0, 163, 245)',\r\n fillStyle: FillStyle.None,\r\n};\r\n\r\nexport class SVGPoly extends Symbol<SVGFeaturePoly> {\r\n container: HTMLDivElement = document.createElement('div');\r\n redrawFeatureNode: SVGPolyProps['redrawFeatureNode'];\r\n pathStyles?: SvgPolyPathStyles;\r\n circle?: SVGPolyProps['circle'];\r\n className?: string;\r\n appendToSvg?: SVGPolyProps['appendToSvg'];\r\n\r\n constructor({\r\n redrawFeatureNode,\r\n pathStyles,\r\n circle,\r\n className,\r\n appendToSvg,\r\n }: SVGPolyProps = {}) {\r\n super();\r\n this.container.style.position = 'absolute';\r\n this.redrawFeatureNode = redrawFeatureNode;\r\n this.pathStyles = { center: [0, 0], fillColor: 'none', ...pathStyles };\r\n this.circle = circle;\r\n this.className = className;\r\n this.appendToSvg = appendToSvg;\r\n }\r\n\r\n renderFunction(\r\n feature: SVGFeaturePoly,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n const coordinates =\r\n feature instanceof Poly\r\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\r\n : feature.centroid;\r\n\r\n this.setCirclePxRaius(crs);\r\n this.container.innerHTML = '';\r\n const svg = this.setSvg(coordinates);\r\n svg && this.container.append(svg);\r\n\r\n feature.__dynamicSymbolRender = new DynamicRender({\r\n node: this.container,\r\n update: (bbox, resolution) =>\r\n this.update({ bbox, resolution, feature, crs }),\r\n redraw: () => {\r\n this.redrawFeatureNode && this.redrawFeatureNode(feature);\r\n },\r\n });\r\n\r\n this._setEventListeners(feature);\r\n\r\n return [feature.__dynamicSymbolRender];\r\n }\r\n\r\n setCirclePxRaius(crs: Crs) {\r\n if (this.circle && this.pathStyles) {\r\n this.pathStyles.radius =\r\n metersToPixels(this.circle.radius, {\r\n painter: this.circle.painter,\r\n crs,\r\n }) + (this.circle?.pxOffset || 0);\r\n }\r\n }\r\n\r\n update({\r\n bbox,\r\n resolution,\r\n feature,\r\n crs,\r\n }: {\r\n bbox?: Bbox;\r\n resolution?: number;\r\n feature: SVGFeaturePoly;\r\n crs: Crs;\r\n }) {\r\n if (!feature) return;\r\n\r\n if (!bbox) bbox = feature.__lastBbox;\r\n if (!resolution) resolution = feature.__lastResolution;\r\n\r\n if (!bbox || !resolution || !feature.crs.canProjectTo(bbox.crs)) return;\r\n\r\n if (feature.__lastResolution && resolution !== feature.__lastResolution) {\r\n const newCoordinates =\r\n feature instanceof Poly\r\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\r\n : feature.centroid;\r\n\r\n this.setCirclePxRaius(crs);\r\n this.container.innerHTML = '';\r\n const svg = this.setSvg(newCoordinates);\r\n svg && this.container.append(svg);\r\n }\r\n\r\n const polygon = feature.projectTo(bbox.crs);\r\n const radiusOffset = this.pathStyles?.radius\r\n ? this.pathStyles?.radius +\r\n (this.pathStyles?.strokeWidth ? this.pathStyles?.strokeWidth / 2 : 0)\r\n : 0;\r\n const dx =\r\n Math.round((polygon.bbox.xMin - bbox.xMin) / resolution) - radiusOffset;\r\n const dy =\r\n Math.round((bbox.yMax - polygon.bbox.yMax) / resolution) - radiusOffset;\r\n\r\n this.container.style.left = `${dx.toString()}px`;\r\n this.container.style.top = `${dy.toString()}px`;\r\n\r\n feature.__lastBbox = bbox;\r\n feature.__lastResolution = resolution;\r\n }\r\n\r\n setSvg(\r\n coordinates: [number, number][][] | Coordinates\r\n ): SVGElement | undefined {\r\n const { lineCap, lineJoin, miterLimit, lineDash, dashOffset } =\r\n this.pathStyles || {};\r\n const svgRender = new SvgRender({\r\n coordinates,\r\n ...defaultPathStyles,\r\n appendToSvg: this.appendToSvg,\r\n ...this.pathStyles,\r\n });\r\n\r\n if (this.circle) {\r\n svgRender._setArcNode();\r\n } else {\r\n svgRender._setPolyNode();\r\n }\r\n\r\n let svgElement;\r\n svgRender.getNode((_: null, svg: SVGElement) => {\r\n svgElement = svg;\r\n this.className && svgElement.classList.add(this.className);\r\n const path =\r\n svgElement && svgElement.querySelector(this.circle ? 'circle' : 'path');\r\n\r\n if (path) {\r\n path.setAttribute('stroke-linecap', lineCap || 'round');\r\n path.setAttribute('stroke-linejoin', lineJoin || 'round');\r\n path.setAttribute('stroke-miterlimit', (miterLimit || 10).toString());\r\n path.setAttribute('stroke-dashoffset', (dashOffset || 0).toString());\r\n\r\n if (this.circle) {\r\n path.setAttribute(\r\n 'stroke-dasharray',\r\n lineDash && lineDash.length > 0 ? lineDash.join(',') : ''\r\n );\r\n }\r\n }\r\n });\r\n\r\n return svgElement;\r\n }\r\n\r\n private _setEventListeners(dynamicFeature: SVGFeaturePoly): void {\r\n if (dynamicFeature.eventFlags === MouseEventFlags.None) return;\r\n\r\n const svgNode = dynamicFeature?.__dynamicSymbolRender?.node.querySelector(\r\n this.circle ? 'circle' : 'path'\r\n );\r\n\r\n Object.keys(mouseEvents).forEach(eventName => {\r\n if (dynamicFeature.eventFlags & mouseEvents[eventName].flag) {\r\n listenDomEvent(\r\n svgNode,\r\n mouseEvents[eventName].type,\r\n (event: Handler) => {\r\n dynamicFeature.fire(mouseEvents[eventName].type, {\r\n node: svgNode,\r\n browserEvent: event,\r\n });\r\n }\r\n );\r\n }\r\n });\r\n }\r\n}\r\n","import { BrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\r\nimport { ImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\r\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { SquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\r\nimport { PolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\r\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\r\nimport { PointSymbol } from '@evergis/sgis/es/symbols/point/Point';\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { ClusterSymbol } from \"@evergis/sgis/es/symbols/ClusterSymbol\";\r\nimport { ClusterSymbolDc } from \"@evergis/api\";\r\n\r\nimport {\r\n SGisImageSymbolType,\r\n SGisPointSymbolType,\r\n SGisPolygonSymbolType,\r\n SGisPolylineSymbolType,\r\n SGisSymbolType,\r\n} from './types';\r\n\r\nexport function isSGisPointSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPointSymbolType {\r\n return (\r\n symbol instanceof PointSymbol ||\r\n symbol instanceof StaticImageSymbol ||\r\n symbol instanceof SquareSymbol ||\r\n symbol instanceof MaskedImage\r\n );\r\n}\r\n\r\nexport function isSGisImageSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisImageSymbolType {\r\n return symbol instanceof StaticImageSymbol || symbol instanceof MaskedImage;\r\n}\r\n\r\nexport function isSGisPolygonSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPolygonSymbolType {\r\n return (\r\n symbol instanceof PolygonSymbol ||\r\n symbol instanceof BrushFill ||\r\n symbol instanceof ImageFill\r\n );\r\n}\r\n\r\nexport function isSGisPolylineSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPolylineSymbolType {\r\n return symbol instanceof PolylineSymbol;\r\n}\r\n\r\nexport function isSGisH3Symbol(\r\n symbol: SGisSymbolType\r\n): symbol is H3Symbol {\r\n return symbol instanceof H3Symbol;\r\n}\r\n\r\nexport function isSGisClusterSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is ClusterSymbol {\r\n return !!(symbol as ClusterSymbolDc).singleObjectSymbol;\r\n}\r\n","import { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { H3Feature } from \"@evergis/sgis/es/features/H3Feature\";\r\nimport { plain } from '@evergis/sgis/es/Crs';\r\n\r\n/**\r\n * Моки фич для отображения превью символа\r\n * http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217\r\n */\r\n\r\nexport const viewBoxSize = 100;\r\n\r\nexport const pointFeature = new PointFeature([50, -50], { crs: plain });\r\n\r\nexport const lineFeature = new Polyline(\r\n [\r\n [0, -57],\r\n [26, -57],\r\n [40, -35],\r\n [60, -65],\r\n [74, -43],\r\n [100, -43],\r\n ],\r\n {\r\n crs: plain,\r\n }\r\n);\r\nexport const polygonFeature = new Polygon(\r\n [\r\n [20, -20],\r\n [80, -20],\r\n [80, -80],\r\n [20, -80],\r\n ],\r\n { crs: plain }\r\n);\r\nexport const h3gridFeature = new H3Feature(\r\n [\r\n [50, -15],\r\n [80, -33],\r\n [80, -67],\r\n [50, -85],\r\n [20, -67],\r\n [20, -33],\r\n [50, -15],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const lineLegendFeature = new Polyline(\r\n [\r\n [0, -50],\r\n [100, -50],\r\n ],\r\n {\r\n crs: plain,\r\n }\r\n);\r\n\r\nexport const polygonLegendFeature = new Polygon(\r\n [\r\n [20, -20],\r\n [80, -20],\r\n [80, -80],\r\n [20, -80],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const polygonMapLegendFeature = new Polygon(\r\n [\r\n [50, 0],\r\n [100, -25],\r\n [100, -75],\r\n [50, -100],\r\n [0, -75],\r\n [0, -25],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const MAP_LEGEND_FEATURES = {\r\n polygon: polygonMapLegendFeature,\r\n};\r\n\r\nexport const LEGEND_FEATURES = {\r\n point: pointFeature,\r\n polyline: lineLegendFeature,\r\n polygon: polygonLegendFeature,\r\n h3grid: h3gridFeature,\r\n};\r\n\r\nexport const MOCK_FEATURES = {\r\n point: pointFeature,\r\n polyline: lineFeature,\r\n polygon: polygonFeature,\r\n h3grid: h3gridFeature,\r\n} as const;\r\n","import { plain } from '@evergis/sgis/es/Crs';\r\n\r\nimport { isSGisH3Symbol, isSGisPolygonSymbol, isSGisPolylineSymbol } from './guards';\r\nimport {\r\n LEGEND_FEATURES,\r\n MAP_LEGEND_FEATURES,\r\n MOCK_FEATURES,\r\n viewBoxSize,\r\n} from './mockFeatures';\r\nimport { SGisSymbolType } from './types';\r\n\r\nexport function getSymbolRenders(\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize,\r\n features: Partial<typeof MOCK_FEATURES> = {}\r\n) {\r\n const resolution = viewBoxSize / size;\r\n const featuresToRender = { ...MOCK_FEATURES, ...features };\r\n\r\n if (isSGisPolygonSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.polygon,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n if (isSGisPolylineSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.polyline,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n if (isSGisH3Symbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.h3grid,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n return symbol.renderFunctionAsync(featuresToRender.point, resolution, plain);\r\n}\r\n\r\nexport const getMapLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => getSymbolRenders(symbol, size, MAP_LEGEND_FEATURES);\r\n\r\nexport const getLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => getSymbolRenders(symbol, size, LEGEND_FEATURES);\r\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { RenderForCanvas } from \"@evergis/sgis/es/painters/DomPainter/types\";\r\n\r\nexport function renderSymbolToCanvas(renders: Render[], canvas: Canvas) {\r\n renders.forEach(render => {\r\n canvas.draw(<RenderForCanvas>render);\r\n });\r\n}\r\n","import { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\r\nimport { PointSymbol as SPointSymbol, PointSymbolConstructorParams } from '@evergis/sgis/es/symbols/point/Point';\r\nimport { SquareSymbol as SSquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\r\nimport { Color } from '@evergis/color';\r\nimport { StaticImageSymbol as SStaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { ClusterSymbolDc, SvgParameterDc } from \"@evergis/api\";\r\n\r\nimport { getParameterValue } from '../core/classification';\r\n\r\nimport {\r\n ClassifyAble,\r\n H3GridSymbol,\r\n isPolygonHasHatchBrush,\r\n isPolygonHasPatternBrush,\r\n MaskedImageSymbol,\r\n Offset,\r\n ParameterValue,\r\n PointSymbol,\r\n PolygonSymbol,\r\n PolylineSymbols,\r\n SimpleOffset,\r\n SquareSymbol,\r\n StaticImageSymbol,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n} from '../core/style';\r\n\r\nimport {\r\n SGisBrushFill,\r\n SGisImageFill,\r\n SGisPolygonSymbol,\r\n SGisPolylineSymbol,\r\n} from './Evergis';\r\n\r\nimport { SGisSymbolType } from './types';\r\n\r\n// TODO create classes from unClassified symbols only\r\nexport function deserializeSymbol(\r\n symbol: StyleSymbolType\r\n): SGisSymbolType | null {\r\n switch (symbol.type) {\r\n case \"h3grid\":\r\n return deserializeH3Symbol(symbol as H3Symbol);\r\n case \"svgPointSymbol\":\r\n return deserializeSvgPointSymbol(symbol as SvgPointSymbol);\r\n case 'circlePointSymbol':\r\n return deserializePointSymbol(symbol as PointSymbol);\r\n case 'squarePointSymbol':\r\n return deserializeSquareSymbol(symbol as SquareSymbol);\r\n case 'maskedImagePointSymbol':\r\n return deserializeMaskedImageSymbol(symbol as MaskedImageSymbol);\r\n case 'imagePointSymbol':\r\n return deserializeImagePointSymbol(symbol as StaticImageSymbol);\r\n case 'polygonSymbol':\r\n return deserializePolygonSymbol(symbol as PolygonSymbol);\r\n case 'simplePolylineSymbol':\r\n case 'polylineSymbol':\r\n return deserializePolylineSymbol(symbol as PolylineSymbols);\r\n case \"clusterSymbol\":\r\n return deserializeSymbol((symbol as ClusterSymbolDc).singleObjectSymbol as StyleSymbolType);\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nfunction deserializeH3Symbol(symbol: H3GridSymbol) {\r\n return new H3Symbol({\r\n ...symbol,\r\n cellSize: getParameterValue(symbol.cellSize as number),\r\n strokeWidth: getParameterValue(symbol?.stroke?.width as number),\r\n strokeColor: getParameterValue(symbol?.stroke?.color as string),\r\n fillColor: getParameterValue(symbol?.fill?.color as string),\r\n });\r\n}\r\n\r\nfunction deserializePointSymbol(symbol: PointSymbol) {\r\n // @ts-ignore\r\n return new SPointSymbol(deserializePointSymbolParams(symbol));\r\n}\r\n\r\nexport const getOffsetParameterValue = (offset: Offset): SimpleOffset => [\r\n getParameterValue(offset?.[0]),\r\n getParameterValue(offset?.[1]),\r\n];\r\n\r\nfunction deserializeSvgPointSymbolParams({ type, data, size, offset, angle, background, figure }: SvgPointSymbol) {\r\n return {\r\n type: getParameterValue(type as ParameterValue),\r\n data: getParameterValue(data as ParameterValue),\r\n size: getParameterValue(size as ParameterValue),\r\n offset: getOffsetParameterValue(offset as Offset),\r\n angle: getParameterValue(angle as ParameterValue),\r\n ...(background\r\n ? {\r\n background: {\r\n ...(background as SvgParameterDc),\r\n fillColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.fillColor as string)),\r\n strokeColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.strokeColor as string)),\r\n strokeWidth: getParameterValue((background as SvgParameterDc)?.strokeWidth as ParameterValue),\r\n },\r\n }\r\n : {}),\r\n ...(figure\r\n ? {\r\n figure: {\r\n ...(figure as SvgParameterDc),\r\n fillColor: deserializeColor(\r\n getParameterValue((figure as SvgParameterDc)?.fillColor as ParameterValue) as string,\r\n ),\r\n },\r\n }\r\n : {}),\r\n };\r\n}\r\n\r\nfunction deserializeSvgPointSymbol(symbol: SvgPointSymbol) {\r\n return new SPointSymbol(deserializeSvgPointSymbolParams(symbol) as PointSymbolConstructorParams);\r\n}\r\n\r\nfunction deserializeSquareSymbol(symbol: SquareSymbol) {\r\n return new SSquareSymbol({\r\n ...deserializePointSymbolParams(symbol),\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n });\r\n}\r\n\r\nfunction deserializeMaskedImageSymbol(symbol: MaskedImageSymbol) {\r\n return new MaskedImage({\r\n ...symbol,\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n // @ts-ignore\r\n width: getParameterValue(symbol.width),\r\n // @ts-ignore\r\n height: getParameterValue(symbol.height),\r\n // @ts-ignore\r\n anchorPoint: deserializeAnchor(symbol.offset),\r\n // @ts-ignore\r\n imageSource: deserializeBase64(symbol.image),\r\n // @ts-ignore\r\n maskSource: deserializeBase64(symbol.imageMask),\r\n // @ts-ignore\r\n maskColor: deserializeColor(getParameterValue(symbol.maskedColor)),\r\n });\r\n}\r\n\r\nfunction deserializeImagePointSymbol(symbol: StaticImageSymbol) {\r\n return new SStaticImageSymbol({\r\n ...symbol,\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n // @ts-ignore\r\n width: getParameterValue(symbol.width),\r\n // @ts-ignore\r\n height: getParameterValue(symbol.height),\r\n // @ts-ignore\r\n anchorPoint: deserializeAnchor(symbol.offset),\r\n // @ts-ignore\r\n source: deserializeBase64(symbol.image),\r\n });\r\n}\r\n\r\nfunction deserializePolygonSymbol(symbol: PolygonSymbol) {\r\n if (isPolygonHasPatternBrush(symbol)) {\r\n return new SGisImageFill(symbol);\r\n }\r\n\r\n if (isPolygonHasHatchBrush(symbol)) {\r\n return new SGisBrushFill(symbol);\r\n }\r\n\r\n return new SGisPolygonSymbol(symbol);\r\n}\r\n\r\nfunction deserializePolylineSymbol(symbol: PolylineSymbols) {\r\n return new SGisPolylineSymbol(symbol);\r\n}\r\n\r\nfunction deserializePointSymbolParams({\r\n size,\r\n offset,\r\n strokeColor,\r\n strokeWidth,\r\n fillColor,\r\n}: PointSymbol | SquareSymbol) {\r\n return {\r\n size: getParameterValue(size as ClassifyAble<number>),\r\n offset: deserializeAnchor(offset as Offset),\r\n strokeWidth: getParameterValue(strokeWidth as ClassifyAble<number>),\r\n strokeColor: deserializeColor(\r\n getParameterValue(strokeColor as ClassifyAble<string>)\r\n ),\r\n fillColor: deserializeColor(\r\n getParameterValue(fillColor as ClassifyAble<string>)\r\n ),\r\n };\r\n}\r\n\r\nfunction deserializeBase64(base: string) {\r\n return `data:image/png;base64,${base}`;\r\n}\r\n\r\nexport function deserializeAnchor(offset: Offset) {\r\n // @ts-ignore\r\n return offset.map(getParameterValue);\r\n}\r\n\r\nfunction deserializeColor(color: string): string | null {\r\n return color ? new Color(color).toString() : null;\r\n}\r\n","import { SGisSymbolType } from './types';\r\nimport { isSGisImageSymbol, isSGisPointSymbol } from './guards';\r\n\r\nimport { clamp } from '../utils/math';\r\n\r\nexport const clampSymbol = (\r\n symbol: SGisSymbolType,\r\n min: number,\r\n max: number\r\n): SGisSymbolType => {\r\n if (isSGisImageSymbol(symbol)) {\r\n symbol.width = clamp(symbol.width, min, max);\r\n symbol.height = clamp(symbol.height, min, max);\r\n } else if (isSGisPointSymbol(symbol)) {\r\n symbol.size = clamp(symbol.size, min, max);\r\n }\r\n\r\n return symbol;\r\n};\r\n\r\nexport function centerAlignSymbol(symbol: SGisSymbolType) {\r\n if (isSGisImageSymbol(symbol)) {\r\n symbol.anchorPoint = [symbol.width / 2, symbol.height / 2];\r\n } else if (isSGisPointSymbol(symbol)) {\r\n symbol.offset = [0, 0];\r\n }\r\n\r\n return symbol;\r\n}\r\n\r\nexport const adjustSymbol = (\r\n symbol: SGisSymbolType,\r\n { size }: { size: number }\r\n) => centerAlignSymbol(clampSymbol(symbol, 0, size));\r\n","import { FeatureDc, GeometryDc, GeometryType } from '@evergis/api';\r\nimport { MultiPoint } from '@evergis/sgis/es/features/MultiPoint';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\n\r\nimport { CRS_MAP, SrId } from '../crs';\r\n\r\nimport { FeatureAttribute } from '../attributes';\r\nimport { getFeatureAttributes } from '../attributes/utils';\r\n\r\nimport { StyleSymbolType } from '../style';\r\n\r\nimport {\r\n selectedPoint,\r\n selectedPolygon,\r\n selectedPolyline,\r\n} from '../../symbols';\r\n\r\nexport type FeatureDCExtened = FeatureDc & {\r\n layer?: string;\r\n};\r\n\r\nexport class EvergisFeature {\r\n public id?: string | null = null;\r\n public displayName?: string | null = null;\r\n public geometry?: GeometryDc | null = null;\r\n\r\n public layerName?: string | null = null;\r\n public layerAlias?: string | null = null;\r\n public attributes?: FeatureAttribute[] | null = null;\r\n public symbol?: StyleSymbolType | null = null;\r\n\r\n constructor(feature: FeatureDCExtened) {\r\n this.id = feature.id;\r\n this.displayName = feature.id;\r\n this.geometry = feature.geometry;\r\n\r\n this.layerName = feature.layer;\r\n this.layerAlias = feature.layer;\r\n this.attributes = getFeatureAttributes(feature.attributes);\r\n }\r\n\r\n public sGisFeature() {\r\n if (!this.geometry || !this.symbol) {\r\n return null;\r\n }\r\n\r\n // @ts-ignore\r\n const { type, coordinates, sr } = this.geometry;\r\n const crs = CRS_MAP[sr as SrId];\r\n\r\n if (!crs) {\r\n return null;\r\n }\r\n\r\n switch (type) {\r\n case GeometryType.Point:\r\n return new PointFeature(coordinates, {\r\n symbol: selectedPoint,\r\n crs,\r\n });\r\n case GeometryType.Multipoint:\r\n return new MultiPoint(coordinates, {\r\n symbol: selectedPoint,\r\n crs,\r\n });\r\n case GeometryType.Polyline:\r\n return new Polyline(coordinates, {\r\n symbol: selectedPolyline,\r\n crs,\r\n });\r\n case GeometryType.Polygon:\r\n return new Polygon(coordinates, {\r\n symbol: selectedPolygon,\r\n crs,\r\n });\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n public extent() {\r\n const feature = this.sGisFeature();\r\n\r\n return feature && feature.bbox;\r\n }\r\n}\r\n","import { ConditionAttributes, ConditionEvaluator } from '@evergis/condition';\r\n\r\nexport function evaluateCondition(\r\n condition: string,\r\n attributes: ConditionAttributes\r\n) {\r\n try {\r\n const evaluator = new ConditionEvaluator(attributes);\r\n const result = evaluator.evaluate(condition);\r\n\r\n if (result instanceof Error) {\r\n return null;\r\n }\r\n\r\n return result;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n","import { evaluateCondition } from './evaluateCondition';\r\n\r\nimport { FeatureAttribute, FeatureAttributeValue } from '../attributes';\r\n\r\nimport {\r\n ClassificationCondition,\r\n isParameterByAttribute,\r\n} from '../classification';\r\n\r\nimport {\r\n ClassifiedParameterValue,\r\n EvergisStyle,\r\n ParameterByAttributeValue,\r\n ParameterByAttributeValues,\r\n ParameterValueWithSymbol,\r\n Style,\r\n StyleSymbolType,\r\n} from '../style';\r\n\r\nimport { isObject } from '../../utils/isObject';\r\n\r\nfunction getAttributeValue(\r\n attributes: FeatureAttribute[],\r\n attributeName: string\r\n) {\r\n const attributeMeta = attributes.find(({ name }) => name === attributeName);\r\n\r\n return attributeMeta ? attributeMeta.value : null;\r\n}\r\n\r\nexport const getAttributeNameFromCondition = (\r\n condition: string\r\n): string | null => new ClassificationCondition(condition).attributeName;\r\n\r\nexport const getAttributeNameFromClassified = (\r\n values: ParameterByAttributeValue<ParameterValueWithSymbol>[]\r\n): string | null =>\r\n values.length > 0 ? getAttributeNameFromCondition(values[0].condition) : null;\r\n\r\nfunction findFeatureValue(\r\n parameterValues: ParameterByAttributeValues,\r\n [name, value]: [string, FeatureAttributeValue | undefined]\r\n) {\r\n return value !== null\r\n ? parameterValues.find(\r\n ({ condition }) =>\r\n value !== undefined && evaluateCondition(condition, { [name]: value })\r\n )\r\n : null;\r\n}\r\n\r\nfunction extractValuesAttribute(\r\n parameterValues: ParameterByAttributeValues,\r\n attributes: FeatureAttribute[]\r\n): [string, FeatureAttributeValue | undefined] {\r\n const name = getAttributeNameFromClassified(parameterValues) || '';\r\n const value = name && getAttributeValue(attributes, name);\r\n\r\n return [name, value];\r\n}\r\n\r\nfunction evaluateFeatureSymbol(attributes: FeatureAttribute[]) {\r\n // @ts-ignore\r\n function calc(\r\n result: StyleSymbolType,\r\n [parameterName, parameterValue]: [string, ClassifiedParameterValue]\r\n ) {\r\n let newParameterValue;\r\n\r\n if (isParameterByAttribute(parameterValue)) {\r\n const [attributeName, attributeValue] = extractValuesAttribute(\r\n parameterValue.values,\r\n attributes\r\n );\r\n const featureValue = findFeatureValue(parameterValue.values, [\r\n attributeName,\r\n attributeValue,\r\n ]);\r\n\r\n newParameterValue = featureValue\r\n ? featureValue.value\r\n : parameterValue.defaultValue;\r\n } else if (isObject(parameterValue)) {\r\n // @ts-ignore\r\n newParameterValue = Object.entries(parameterValue).reduce(\r\n calc,\r\n parameterValue\r\n );\r\n }\r\n\r\n return newParameterValue !== undefined\r\n ? {\r\n ...result,\r\n [parameterName]: newParameterValue,\r\n }\r\n : result;\r\n }\r\n\r\n return calc;\r\n}\r\n\r\nexport function findChildFeatureStyle(\r\n childStyles: Style[],\r\n attributes: FeatureAttribute[]\r\n) {\r\n return (\r\n (childStyles || []).find(({ condition }) => {\r\n const attributeName =\r\n condition && getAttributeNameFromCondition(condition);\r\n const attributeValue =\r\n attributeName && getAttributeValue(attributes, attributeName);\r\n\r\n if (condition && attributeName && attributeValue !== undefined) {\r\n return evaluateCondition(condition, {\r\n [attributeName]: attributeValue,\r\n });\r\n }\r\n\r\n return false;\r\n }) || null\r\n );\r\n}\r\n\r\nexport function findChildFeatureSymbol(\r\n childStyles: Style[],\r\n attributes: FeatureAttribute[]\r\n) {\r\n const featureStyle = findChildFeatureStyle(childStyles, attributes);\r\n\r\n return featureStyle ? featureStyle.symbol : null;\r\n}\r\n\r\nexport function getFeatureSymbol(\r\n style: EvergisStyle,\r\n attributes: FeatureAttribute[]\r\n): StyleSymbolType | null {\r\n if (!style || !style.symbol) {\r\n return null;\r\n }\r\n\r\n if (style.children !== null) {\r\n return findChildFeatureSymbol(style.children, attributes) || style.symbol;\r\n }\r\n\r\n return Object.entries(style.symbol).reduce(\r\n evaluateFeatureSymbol(attributes),\r\n style.symbol\r\n );\r\n}\r\n","import { FeatureLayerServiceInfoDc, ServiceInfoDc } from '@evergis/api';\r\n\r\nimport { LayerAttribute, formatAttributeValue } from '../attributes';\r\nimport { getLayerAttributes, mergeAttributes } from '../attributes/utils';\r\n\r\nimport { EvergisFeature, getFeatureSymbol } from '../feature';\r\n\r\nimport { EvergisStyle } from '../style';\r\n\r\nexport class EvergisLayer {\r\n public readonly name: string | null = null;\r\n private readonly titleAttribute: string | null = null;\r\n private readonly alias: string | null = null;\r\n private readonly attributes: LayerAttribute[] | null = null;\r\n private readonly style: EvergisStyle | null = null;\r\n\r\n constructor(service: ServiceInfoDc) {\r\n const evergisService = service as FeatureLayerServiceInfoDc;\r\n const { name, alias, style, layerDefinition } = evergisService;\r\n\r\n this.name = name;\r\n this.alias = alias || name;\r\n this.attributes = getLayerAttributes(layerDefinition);\r\n this.style = (style && new EvergisStyle(style)) || null;\r\n this.titleAttribute =\r\n (layerDefinition && layerDefinition.titleAttribute) || null;\r\n }\r\n\r\n public evaluateFeature(feature: EvergisFeature): EvergisFeature {\r\n feature.attributes = mergeAttributes(\r\n feature.attributes || [],\r\n this.attributes || []\r\n );\r\n\r\n feature.symbol =\r\n this.style && getFeatureSymbol(this.style, feature.attributes);\r\n\r\n feature.layerAlias = this.alias;\r\n\r\n const titleAttribute = (feature.attributes || []).find(\r\n ({ name }) => name === this.titleAttribute\r\n );\r\n\r\n const displayName =\r\n (titleAttribute && formatAttributeValue(titleAttribute)[0].value) ||\r\n feature.id;\r\n\r\n feature.displayName = displayName ? `${displayName}` : feature.id;\r\n\r\n return feature;\r\n }\r\n}\r\n\r\nconst findFeatureLayer = (feature: EvergisFeature) => (layer: EvergisLayer) =>\r\n layer.name === feature.layerName;\r\n\r\nexport const evaluateFeature = (layers: EvergisLayer[]) => (\r\n feature: EvergisFeature\r\n) => {\r\n const featureLayer = layers.find(findFeatureLayer(feature));\r\n\r\n return featureLayer ? featureLayer.evaluateFeature(feature) : feature;\r\n};\r\n","import { getClassificationAttribute } from '../attributes/utils';\r\n\r\nimport { ExtendedClassification } from '../classification';\r\nimport { LegendConfig, LegendItem, LegendValueType } from './types';\r\n\r\nconst OTHERS_TITLE = 'Другое';\r\n\r\nexport const createLegendItem = ({\r\n attributes,\r\n renderTitle,\r\n skipDefaultValue,\r\n reverse,\r\n}: LegendConfig) => (classification: ExtendedClassification): LegendItem => {\r\n const {\r\n defaultTitle,\r\n defaultValue,\r\n values,\r\n attribute: attributeName,\r\n parameter,\r\n } = classification;\r\n\r\n const attribute =\r\n attributeName && attributes\r\n ? getClassificationAttribute(attributeName, attributes)\r\n : undefined;\r\n\r\n const defaultLegendValue: LegendValueType = {\r\n title: defaultTitle || OTHERS_TITLE,\r\n parameterValue: defaultValue,\r\n };\r\n\r\n const legendValues = values.map((value, index) => ({\r\n title: renderTitle && renderTitle({ ...value, attribute }, index),\r\n parameterValue: value.parameterValue,\r\n }));\r\n\r\n const withDefault = skipDefaultValue\r\n ? legendValues\r\n : [...legendValues, defaultLegendValue];\r\n\r\n const reversedValues = reverse ? [...withDefault].reverse() : withDefault;\r\n\r\n return {\r\n title: (attribute && attribute.alias) || attributeName,\r\n attribute,\r\n parameter,\r\n values: reversedValues,\r\n } as LegendItem;\r\n};\r\n","import { ClassificationParameterExtended } from \"../classification\";\r\n\r\nexport function isValidParameter(parameter: ClassificationParameterExtended) {\r\n return !parameter?.includes(\"labelSymbol\") && !parameter?.includes(\"singleObjectSymbol\");\r\n}\r\n","import { ClusterSymbolDc } from \"@evergis/api\";\r\n\r\nimport { createLegendItem } from './createLegendItem';\r\nimport { isValidParameter } from \"./isValidParameter\";\r\nimport { ClassificationParameterExtended, unClassify } from '../classification';\r\nimport { EvergisStyle, StyleSymbolType } from '../style';\r\nimport { LayerLegend, LegendConfig } from './types';\r\n\r\nexport function createStyleLegend(\r\n style: EvergisStyle,\r\n config: LegendConfig\r\n): LayerLegend | null {\r\n const { classificationManager, symbol } = style;\r\n\r\n const items = classificationManager.filter(({ parameter }) => {\r\n return config.parameters && parameter\r\n ? config.parameters.includes(parameter)\r\n : isValidParameter(parameter as ClassificationParameterExtended)\r\n });\r\n\r\n if (!items.length) {\r\n return null;\r\n }\r\n\r\n return {\r\n symbol: unClassify((symbol as ClusterSymbolDc).singleObjectSymbol || symbol) as StyleSymbolType,\r\n items: items.map(createLegendItem(config)),\r\n };\r\n}\r\n","import {\r\n ClassificationClass,\r\n isRangeClass,\r\n isUniqueClass,\r\n printRangeClass,\r\n} from '../classification';\r\n\r\nexport function createValueTitle(\r\n value: ClassificationClass,\r\n index: number\r\n): string {\r\n if (value.title) return value.title;\r\n\r\n if (isRangeClass(value)) return printRangeClass(value, index);\r\n if (isUniqueClass(value)) return value.uniqueValue;\r\n\r\n return '';\r\n}\r\n","import { softEquals } from '@evergis/sgis/es/utils/math';\r\n\r\nimport { numberWithSpaces } from '../utils/format';\r\n\r\nexport function formatArea(num: number): string {\r\n let result = num;\r\n let measure = 'м²';\r\n\r\n if (num >= 10000000) {\r\n result = num / 1000000;\r\n measure = 'км²';\r\n } else if (num >= 10000) {\r\n result = num / 10000;\r\n measure = 'га';\r\n }\r\n\r\n return `${numberWithSpaces(result)} ${measure}`;\r\n}\r\n\r\nexport function formatLength(num: number): string {\r\n let result = num;\r\n let measure = 'м';\r\n\r\n if (num > 10000) {\r\n result = num / 1000;\r\n measure = 'км';\r\n }\r\n\r\n return `${numberWithSpaces(result)} ${measure}`;\r\n}\r\nexport function formatPolygonMeasure(area: number, perimiter: number): string {\r\n return `S : ${formatArea(area)} P : ${formatLength(perimiter)}`;\r\n}\r\n\r\nexport function isPolylineLikePolygon(\r\n rings: [number, number][][],\r\n resolution: number\r\n): boolean {\r\n if (rings[0].length <= 3) {\r\n return false;\r\n }\r\n\r\n const coords = rings[0];\r\n const firstPoint = coords[0];\r\n const lastPoint = coords[coords.length - 1];\r\n const distance = resolution * 2;\r\n\r\n return (\r\n softEquals(firstPoint[0], lastPoint[0], distance) &&\r\n softEquals(firstPoint[1], lastPoint[1], distance)\r\n );\r\n}\r\n","export function getScale(scale: number): number {\r\n const scales = [1, 2, 5];\r\n\r\n for (let x = 0; x < 21; x++) {\r\n for (let y = 0; y < scales.length; y++) {\r\n const result = Math.pow(10, x) * scales[y];\r\n\r\n if (result > scale) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n return 1;\r\n}\r\n","import { useMemo } from 'react';\r\n\r\nimport {\r\n createStyleLegend,\r\n EvergisStyle,\r\n LayerLegend,\r\n LegendConfig,\r\n} from '../../core';\r\n\r\nexport const useLegend = (\r\n style?: EvergisStyle,\r\n config?: LegendConfig\r\n): LayerLegend | null =>\r\n useMemo(() => {\r\n if (!style || !(config && config.attributes)) return null;\r\n\r\n return createStyleLegend(style, config);\r\n }, [style, config]);\r\n","import { FeatureLayerServiceInfoDc } from '@evergis/api';\r\n\r\nimport { useLegend } from './useLegend';\r\n\r\nimport {\r\n createValueTitle,\r\n EvergisStyle,\r\n LayerAttributes,\r\n LayerLegend,\r\n LegendConfig,\r\n} from '../../core';\r\n\r\nconst DEFAULT_LEGEND_CONFIG: LegendConfig = {\r\n renderTitle: createValueTitle,\r\n};\r\n\r\nexport const useLayerLegend = (\r\n layer?: FeatureLayerServiceInfoDc,\r\n config?: LegendConfig\r\n): LayerLegend | null => {\r\n const { style, layerDefinition } = layer || {};\r\n const { attributes } = layerDefinition || {};\r\n\r\n const styleProxy = style && new EvergisStyle(style);\r\n\r\n return useLegend(styleProxy, {\r\n attributes: attributes as LayerAttributes,\r\n ...DEFAULT_LEGEND_CONFIG,\r\n ...config,\r\n });\r\n};\r\n","import { FeatureLayerServiceInfoDc } from '@evergis/api';\r\n\r\nimport { useLayerLegend } from './useLayerLegend';\r\n\r\nimport { LegendConfig } from '../../core';\r\n\r\nexport const useMapLegend = (\r\n layer?: FeatureLayerServiceInfoDc,\r\n config?: LegendConfig\r\n) => {\r\n const legend = useLayerLegend(layer, config);\r\n\r\n if (!legend) {\r\n return null;\r\n }\r\n\r\n return {\r\n symbol: legend.symbol,\r\n items: legend.items,\r\n };\r\n};\r\n","import { useLegendContext } from '../../contexts';\r\n\r\nimport {\r\n applyParameterValue,\r\n ClassificationParameterExtended,\r\n ParameterValueWithSymbol,\r\n} from '../../core';\r\n\r\nimport { adjustSymbol, deserializeSymbol, SGisSymbolType } from '../../symbols';\r\n\r\nexport type LegendSymbolPart = {\r\n parameter: ClassificationParameterExtended;\r\n parameterValue: ParameterValueWithSymbol;\r\n};\r\n\r\nconst LEGEND_SYMBOL_MAX_SIZE = 32;\r\n\r\nexport const useLegendValueSymbol = ({\r\n parameter,\r\n parameterValue,\r\n}: LegendSymbolPart) => {\r\n const symbol = useLegendContext();\r\n const valueSymbol =\r\n // @ts-ignore\r\n symbol && applyParameterValue(symbol, parameter, parameterValue);\r\n let sGisSymbol: SGisSymbolType | null = null;\r\n\r\n try {\r\n sGisSymbol = valueSymbol && deserializeSymbol(valueSymbol);\r\n } catch (e) {}\r\n\r\n return (\r\n sGisSymbol && adjustSymbol(sGisSymbol, { size: LEGEND_SYMBOL_MAX_SIZE - 1 })\r\n );\r\n};\r\n","import { MutableRefObject, useEffect } from 'react';\r\nimport { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\n\r\nimport {\r\n getSymbolRenders,\r\n renderSymbolToCanvas,\r\n SGisSymbolType,\r\n} from '../symbols';\r\n\r\nexport interface UseSymbolParams {\r\n symbol: SGisSymbolType;\r\n render?: (symbol: SGisSymbolType, size: number) => Promise<Render[]>;\r\n size?: number;\r\n maxWidth?: number;\r\n}\r\n\r\nexport const DEFAULT_SYMBOL_SIZE = 26;\r\n\r\nexport function useSymbol(\r\n {\r\n symbol,\r\n size = DEFAULT_SYMBOL_SIZE,\r\n render = getSymbolRenders,\r\n maxWidth,\r\n }: UseSymbolParams,\r\n canvasRef: MutableRefObject<Canvas | null>\r\n) {\r\n useEffect(() => {\r\n if (canvasRef.current !== null && symbol !== undefined) {\r\n const canvas = canvasRef.current;\r\n setCanvasSize(canvas, size, maxWidth);\r\n\r\n render(symbol, size).then(renders => {\r\n renderSymbolToCanvas(renders, canvas);\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [symbol, size, maxWidth]);\r\n}\r\n\r\nfunction setCanvasSize(canvas: Canvas, size: number, maxWidth?: number) {\r\n canvas.node.height = size;\r\n canvas.node.width = maxWidth ? Math.min(size, maxWidth) : size;\r\n}\r\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\r\nimport { useCallback, useRef } from 'react';\r\n\r\nexport function useCanvas() {\r\n const canvas = useRef<Canvas | null>(null);\r\n const ref = useCallback((node: HTMLCanvasElement | null) => {\r\n if (node !== null) {\r\n canvas.current = new Canvas(node);\r\n } else {\r\n canvas.current = null;\r\n }\r\n }, []);\r\n\r\n return { canvas, ref };\r\n}\r\n","import { useEffect } from 'react';\r\n\r\nexport function useMount({ onMount, onUnmount }: UseMountOptions) {\r\n useEffect(() => {\r\n onMount && onMount();\r\n return onUnmount;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n}\r\n\r\ntype UseMountOptions = {\r\n onMount?: () => void;\r\n onUnmount?: () => void;\r\n};\r\n","import { useMemo, useRef } from 'react';\r\n\r\nimport { useMount } from './useMount';\r\n\r\nexport function useProperty<T, D extends unknown[] | []>(\r\n { factory, destructor, update }: UsePropertyOptions<T, D>,\r\n deps: D = [] as D\r\n): T {\r\n const propRef = useRef<T>();\r\n\r\n useMount({\r\n onUnmount() {\r\n if (propRef.current && destructor) {\r\n destructor(propRef.current);\r\n }\r\n },\r\n });\r\n\r\n return useMemo(() => {\r\n if (propRef.current) {\r\n if (update) {\r\n const newProp = update(propRef.current, deps, { factory, destructor });\r\n if (newProp) propRef.current = newProp;\r\n } else if (destructor) {\r\n destructor(propRef.current);\r\n }\r\n } else {\r\n if (!update || !propRef.current) {\r\n propRef.current = factory(deps);\r\n }\r\n }\r\n\r\n return propRef.current;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n}\r\n\r\ntype UsePropertyOptions<T, D> = {\r\n factory: (deps: D) => T;\r\n destructor?: (prop: T) => void;\r\n\r\n /**\r\n * Allows to update useProperty return value.\r\n * If that property is not exist then each update of deps call factory\r\n */\r\n update?: (\r\n prop: T,\r\n deps: D,\r\n propertyOptions: Omit<UsePropertyOptions<T, D>, 'update'>\r\n ) => void | T;\r\n};\r\n","import { useEffect } from 'react';\r\n\r\nexport function useUpdate<Deps extends Array<unknown>>({\r\n onUpdate,\r\n shouldUpdate,\r\n deps,\r\n}: UseUpdateOptions<Deps>) {\r\n useEffect(() => {\r\n if (!shouldUpdate || shouldUpdate()) {\r\n onUpdate();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n}\r\n\r\ntype UseUpdateOptions<Deps> = {\r\n onUpdate: () => void;\r\n shouldUpdate?: () => boolean;\r\n deps?: Deps;\r\n};\r\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\r\n\r\nimport { useUpdate } from './useUpdate';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useLayerOrder(layer: Layer, zIndex: number) {\r\n const { map } = useMapContext();\r\n\r\n useUpdate({\r\n onUpdate: () => map.insertLayer(layer, zIndex),\r\n deps: [zIndex, layer],\r\n });\r\n}\r\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\r\n\r\nimport { useUpdate } from './useUpdate';\r\n\r\nexport function useLayerVisibility(layer: Layer, isDisplayed: boolean = true) {\r\n useUpdate({\r\n shouldUpdate: () => layer.isDisplayed !== isDisplayed,\r\n onUpdate: () => (layer.isDisplayed = isDisplayed),\r\n deps: [isDisplayed, layer],\r\n });\r\n}\r\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\r\n\r\nimport { useUpdate } from './useUpdate';\r\n\r\nexport function useLayerOpacity(layer: Layer, opacity: number = 1) {\r\n useUpdate({\r\n shouldUpdate: () => layer.opacity !== opacity,\r\n onUpdate: () => (layer.opacity = opacity),\r\n deps: [opacity, layer],\r\n });\r\n}\r\n","import { EvergisDynamicLayer, EvergisDynamicLayerParams } from '@evergis/api';\r\nimport { Layer } from \"@evergis/sgis/es/layers/Layer\";\r\n\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { LayerProps } from './LayerProps';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\n\r\nimport { useEvergisContext, useMapContext } from '../contexts';\r\nimport { useLayerOpacity } from './useLayerOpacity';\r\n\r\nexport function useEvergisDynamicLayer({\r\n name,\r\n zIndex,\r\n style,\r\n condition,\r\n isDisplayed,\r\n opacity,\r\n dataFilterId,\r\n onLoadStart,\r\n onLoadEnd,\r\n}: EvergisDynamicLayerProps) {\r\n const api = useEvergisContext();\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new EvergisDynamicLayer({ name, condition, style, dataFilterId, onLoadStart, onLoadEnd }, api),\r\n destructor: layer => map.indexOf(layer as unknown as Layer) !== -1 && map.removeLayer(layer as unknown as Layer),\r\n update: (layer, [name, style, condition, dataFilterId]) => {\r\n layer.name = name;\r\n layer.style = style;\r\n layer.condition = condition;\r\n layer.dataFilterId = dataFilterId;\r\n },\r\n },\r\n [name, style, condition, dataFilterId, onLoadStart, onLoadEnd]\r\n );\r\n\r\n useLayerOrder(layer as unknown as Layer, zIndex);\r\n useLayerVisibility(layer as unknown as Layer, isDisplayed);\r\n useLayerOpacity(layer as unknown as Layer, opacity);\r\n\r\n return layer;\r\n}\r\n\r\nexport type EvergisDynamicLayerProps = EvergisDynamicLayerParams & LayerProps;\r\n","import { EvergisTileLayer, EvergisTileLayerParams } from '@evergis/api';\r\nimport { Layer } from '@evergis/sgis/es/layers/Layer';\r\n\r\nimport { LayerProps } from './LayerProps';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\n\r\nimport { useEvergisContext, useMapContext } from '../contexts';\r\nimport { useEffect, useMemo } from 'react';\r\n\r\nexport type EvergisTileLayerProps = EvergisTileLayerParams & LayerProps & {\r\n sourceUrl?: string;\r\n};\r\n\r\nexport function useEvergisTileLayer({\r\n name,\r\n sourceUrl,\r\n subDomains,\r\n zIndex,\r\n isDisplayed,\r\n crs,\r\n opacity,\r\n}: EvergisTileLayerProps) {\r\n const api = useEvergisContext();\r\n const { map } = useMapContext();\r\n const layer = useMemo(\r\n () => new EvergisTileLayer({ name, sourceUrl, subDomains, crs, opacity }, api),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [name, sourceUrl, subDomains, crs, opacity]\r\n );\r\n\r\n useEffect(\r\n () => () => {\r\n map.indexOf((layer as unknown) as Layer) !== -1 &&\r\n map.removeLayer((layer as unknown) as Layer);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [layer]\r\n );\r\n\r\n useLayerOrder((layer as unknown) as Layer, zIndex);\r\n useLayerVisibility((layer as unknown) as Layer, isDisplayed);\r\n\r\n return layer;\r\n}\r\n","import { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\r\n\r\nimport { useMapContext } from '../contexts';\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\nimport { useLayerOpacity } from \"./useLayerOpacity\";\r\n\r\nimport { LayerProps } from './LayerProps';\r\n\r\nexport function useFeatureLayer({\r\n zIndex,\r\n isDisplayed = true,\r\n features,\r\n opacity,\r\n}: FeatureLayerProps) {\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new FeatureLayer({ features, opacity }),\r\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\r\n update: (layer, [features]) => {\r\n layer.features = features;\r\n },\r\n },\r\n [features]\r\n );\r\n\r\n useLayerOrder(layer, zIndex);\r\n useLayerVisibility(layer, isDisplayed);\r\n useLayerOpacity(layer, opacity);\r\n\r\n return layer;\r\n}\r\n\r\nexport type FeatureLayerProps = {\r\n features: Feature[];\r\n} & LayerProps;\r\n","import { useCallback, useEffect } from 'react';\r\nimport { BboxChangeEndEvent, BboxChangeEvent, Map } from '@evergis/sgis/es/Map';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapBboxChange(\r\n onBboxChange?: (mapState: MapState) => void,\r\n force?: boolean\r\n) {\r\n const { map } = useMapContext();\r\n\r\n const event = force ? BboxChangeEvent : BboxChangeEndEvent;\r\n\r\n const handleBboxChange = useCallback(() => {\r\n onBboxChange && onBboxChange(getMapState(map));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [onBboxChange, map, event]);\r\n\r\n useEffect(() => {\r\n map.on(event.type, handleBboxChange);\r\n\r\n return () => {\r\n map.off(event.type, handleBboxChange);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [handleBboxChange, event]);\r\n}\r\n\r\nexport type MapState = {\r\n position: Coordinates;\r\n resolution: number;\r\n};\r\n\r\nexport function getMapState(map: Map): MapState {\r\n return {\r\n position: map.position.slice(0) as Coordinates,\r\n resolution: map.resolution,\r\n };\r\n}\r\n","import { MapResize } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { useCallback, useEffect } from 'react';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapResize(onResize?: (size: number[]) => void) {\r\n const { painter } = useMapContext();\r\n\r\n const handleMapResize = useCallback(() => {\r\n onResize && onResize([painter.width, painter.height]);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [onResize, painter]);\r\n\r\n useEffect(() => {\r\n painter.on(MapResize.type, handleMapResize);\r\n\r\n return () => {\r\n painter.off(MapResize.type, handleMapResize);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [handleMapResize]);\r\n}\r\n","import { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\r\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\r\nimport {\r\n EvergisDynamicLayer,\r\n EvergisLayer,\r\n isEvergisDynamicLayer,\r\n} from '@evergis/api';\r\nimport { useCallback, useMemo, useState } from 'react';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMount } from './useMount';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\ntype BboxCoordinates = [number, number, number, number];\r\n\r\nexport type Envelopes = {\r\n [layerName: string]: BboxCoordinates;\r\n};\r\n\r\nexport type MapPickResult = {\r\n clickPoint: Coordinates;\r\n envelopes: Envelopes;\r\n imageRectangle: [number, number, number, number];\r\n extentSr: number;\r\n};\r\n\r\nexport const useMapPick = (): MapPickResult | undefined => {\r\n const { map, painter } = useMapContext();\r\n const [geometryParams, setGeometryParams] = useState<MapPickResult>();\r\n\r\n const evergisLayers = useMemo(() => map.layers as unknown as EvergisLayer[], [\r\n map.layers,\r\n ]);\r\n\r\n const pick = useCallback(\r\n (event: sGisEvent) => {\r\n if (!(event instanceof sGisClickEvent)) {\r\n return;\r\n }\r\n\r\n const imageRectangle = [0, 0, painter.width, painter.height];\r\n const [x, y] = painter.getPxPosition(event.point.position);\r\n\r\n setGeometryParams({\r\n clickPoint: [Math.round(x), Math.round(y)],\r\n envelopes: collectLayerEnvelopes(evergisLayers),\r\n imageRectangle,\r\n extentSr: map.crs.wkid,\r\n } as MapPickResult);\r\n },\r\n\r\n [painter, evergisLayers, map.crs.wkid]\r\n );\r\n\r\n useMount({\r\n onMount: () => map.on('click', pick),\r\n onUnmount: () => map.off('click', pick),\r\n });\r\n\r\n return geometryParams;\r\n};\r\n\r\nfunction getLayerBboxCoors(layer: EvergisDynamicLayer): BboxCoordinates {\r\n return (\r\n // @ts-ignore TODO _currentRender prop on DynamicLayer private\r\n layer._currentRender &&\r\n // @ts-ignore\r\n layer._currentRender.bbox &&\r\n // @ts-ignore\r\n layer._currentRender.bbox.coordinates\r\n );\r\n}\r\n\r\nfunction collectLayerEnvelopes(layers: EvergisLayer[]) {\r\n let envelopes: Envelopes = {};\r\n\r\n for (const layer of layers) {\r\n if (!isEvergisDynamicLayer(layer)) {\r\n continue;\r\n }\r\n\r\n envelopes[layer.name] = getLayerBboxCoors(layer);\r\n }\r\n\r\n return envelopes;\r\n}\r\n","import { useCallback, useReducer } from 'react';\r\n\r\nimport { getMapState, MapState, useMapBboxChange } from './useMapBboxChange';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapState(force?: boolean) {\r\n const { map } = useMapContext();\r\n\r\n const [, dispatch] = useReducer(mapStateReducer, undefined, () =>\r\n getMapState(map)\r\n );\r\n\r\n const handleBboxChange = useCallback(dispatch, [dispatch]);\r\n\r\n useMapBboxChange(handleBboxChange, force);\r\n\r\n return getMapState(map);\r\n}\r\n\r\nfunction mapStateReducer(_: MapState, mapState: MapState): MapState {\r\n return mapState;\r\n}\r\n","import { useMemo } from 'react';\r\nimport { Bbox } from '@evergis/sgis/es/Bbox';\r\n\r\nimport { useMapState } from './useMapState';\r\nimport { MapState } from './useMapBboxChange';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapView(): MapView {\r\n const { map, painter } = useMapContext();\r\n const { position, resolution } = useMapState();\r\n\r\n const level = useMemo(() => {\r\n const index = map.tileScheme.getLevel(resolution);\r\n\r\n if (index === void 0 && index === null) return;\r\n\r\n return map.tileScheme.levels[index].zIndex;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [resolution]);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const bbox = useMemo(() => painter.bbox, [position, resolution]);\r\n\r\n return {\r\n position,\r\n resolution,\r\n level,\r\n bbox,\r\n };\r\n}\r\n\r\nexport function useMapLevel() {\r\n const { map } = useMapContext();\r\n const { resolution } = useMapState(true);\r\n\r\n return useMemo(() => {\r\n const index = map.tileScheme.getLevel(resolution);\r\n\r\n if (index === void 0 && index === null) return;\r\n\r\n return map.tileScheme.levels[index].zIndex;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [resolution]);\r\n}\r\n\r\ntype MapView = MapState & {\r\n level?: number;\r\n bbox: Bbox;\r\n};\r\n","import { useRef } from 'react';\r\n\r\nimport { useMount } from './useMount';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapWrapper() {\r\n const { painter } = useMapContext();\r\n const wrapperRef = useRef<HTMLDivElement | null>(null);\r\n\r\n useMount({\r\n onMount: () => (painter.wrapper = wrapperRef.current),\r\n onUnmount: () => (painter.wrapper = null),\r\n });\r\n\r\n return wrapperRef;\r\n}\r\n","import { LevelDefinition } from '@evergis/sgis/es/TileScheme';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { useEffect } from 'react';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nconst byScale = (scale: number) => ({ zIndex }: LevelDefinition) =>\r\n zIndex === scale;\r\n\r\nexport const useMaxMinScale = (\r\n minScale?: number,\r\n maxScale?: number,\r\n currentPosition?: [number, number],\r\n currentResolution?: number\r\n) => {\r\n const { map } = useMapContext();\r\n\r\n useEffect(() => {\r\n const levels = map.tileScheme.levels;\r\n\r\n if (maxScale !== undefined) {\r\n const { resolution } = levels.find(byScale(maxScale)) || {\r\n resolution: -1,\r\n };\r\n map.minResolution = resolution;\r\n }\r\n if (minScale !== undefined) {\r\n const { resolution } = levels.find(byScale(minScale)) || {\r\n resolution: -1,\r\n };\r\n map.maxResolution = resolution;\r\n }\r\n\r\n if (minScale !== undefined || maxScale !== undefined) {\r\n updateMapResolution(map, currentPosition, currentResolution);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [map, minScale, maxScale]);\r\n};\r\n\r\nexport const updateMapResolution = (\r\n map: Map,\r\n currentPosition?: [number, number],\r\n currentResolution?: number\r\n) => {\r\n if (currentPosition && currentResolution) {\r\n const newResolution = Math.min(\r\n Math.max(currentResolution, map.minResolution || 0),\r\n map.maxResolution || Number.MAX_VALUE\r\n );\r\n\r\n map.animateTo(currentPosition, newResolution);\r\n }\r\n};\r\n","import { useMemo } from 'react';\r\nimport { distance } from '@evergis/sgis/es/geotools';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nfunction getScale(scale: number): number {\r\n const pow10 = Math.pow(10, (Math.floor(scale) + '').length - 1);\r\n const d = scale / pow10;\r\n\r\n return pow10 * (d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1);\r\n}\r\n\r\nfunction useCorrectedResolution(resolution: number): number {\r\n const { painter } = useMapContext();\r\n const {\r\n height,\r\n width,\r\n bbox: { xMin, xMax, yMin, yMax, crs },\r\n } = painter;\r\n\r\n return useMemo(() => {\r\n if (width === 0) {\r\n return resolution;\r\n }\r\n const segmentLength = width / 10;\r\n const a = painter.getPointFromPxPosition(0, height / 2);\r\n const b = painter.getPointFromPxPosition(segmentLength, height / 2);\r\n\r\n return distance(a, b) / segmentLength;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [height, width, xMin, xMax, yMin, yMax, crs.wkid, resolution, painter]);\r\n}\r\n\r\nexport function useScale({\r\n resolution,\r\n minLength = 50,\r\n}: {\r\n resolution: number;\r\n minLength?: number;\r\n}) {\r\n const correctedResolution = useCorrectedResolution(resolution);\r\n\r\n return useMemo(() => {\r\n const minScale = minLength * correctedResolution;\r\n const currentScale = getScale(minScale);\r\n const width = getScale(minScale) / correctedResolution;\r\n\r\n return {\r\n currentScale,\r\n width,\r\n };\r\n }, [correctedResolution, minLength]);\r\n}\r\n","import { softEquals } from '@evergis/sgis/es/utils/math';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { useEffect } from 'react';\r\n\r\nimport { MapState } from './useMapBboxChange';\r\nimport { useMapViewActions } from './useMapViewActions';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useUpdateMapView(\r\n { position, resolution }: Partial<MapState>,\r\n force?: boolean\r\n) {\r\n const { map } = useMapContext();\r\n const { animateTo } = useMapViewActions();\r\n\r\n useEffect(() => {\r\n if (shouldUpdateMapState(map, { position, resolution })) {\r\n animateTo({\r\n position,\r\n resolution,\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [position, resolution, force]);\r\n}\r\n\r\nfunction shouldUpdatePosition(map: Map, position?: Coordinates) {\r\n return (\r\n position &&\r\n (!softEquals(map.position[0], position[0]) ||\r\n !softEquals(map.position[1], position[1]))\r\n );\r\n}\r\n\r\nfunction shouldUpdateResolution(map: Map, resolution?: number) {\r\n return resolution && !softEquals(map.resolution, resolution);\r\n}\r\n\r\nexport function shouldUpdateMapState(\r\n map: Map,\r\n { position, resolution }: Partial<MapState>\r\n) {\r\n return (\r\n shouldUpdatePosition(map, position) ||\r\n shouldUpdateResolution(map, resolution)\r\n );\r\n}\r\n","import {\r\n MutableRefObject,\r\n ReactNode,\r\n useCallback,\r\n useEffect,\r\n useRef,\r\n} from 'react';\r\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\r\nimport {\r\n sGisClickEvent,\r\n sGisMouseEvent,\r\n sGisMouseMoveEvent,\r\n sGisMouseOverEvent,\r\n} from '@evergis/sgis/es/commonEvents';\r\nimport { Handler } from '@evergis/sgis/es/EventHandler';\r\nimport { IPoint } from '@evergis/sgis/es/Point';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useEventPoint } from './useEventPoint';\r\n\r\nimport { useMapContext, useTooltipContext } from '../contexts';\r\n\r\nimport { LabelSymbol, LabelSymbolComponent } from '../symbols';\r\n\r\nexport type TooltipParams = {\r\n position?: Coordinates;\r\n component?: ReactNode;\r\n feature?: Feature | Map;\r\n clickMode?: boolean;\r\n};\r\n\r\ntype TargetEvent = (event: sGisMouseEvent) => void;\r\n\r\nexport type FeatureEvents = {\r\n [key: string]: TargetEvent | null;\r\n};\r\n\r\n// TODO HOW to read that?\r\nexport const useTooltip = (zIndex = 1) => {\r\n const { layer, popupLayer } = useTooltipContext();\r\n const { map } = useMapContext();\r\n const getEventPoint = useEventPoint();\r\n\r\n const targetFeatures: MutableRefObject<Feature[] | Map[]> = useRef([]);\r\n const labelFeature: MutableRefObject<LabelFeature | null> = useRef(null);\r\n const events: MutableRefObject<FeatureEvents[]> = useRef([]);\r\n\r\n const onClickMap = useCallback(() => popupLayer.remove(popupLayer.features), [\r\n popupLayer,\r\n ]);\r\n\r\n const reset = useCallback(() => {\r\n targetFeatures.current.forEach((feature: Feature | Map, index: number) => {\r\n const currentFeatureEvents = events.current[index];\r\n\r\n if (currentFeatureEvents) {\r\n const {\r\n onMouseOver,\r\n onMouseMove,\r\n onMouseOut,\r\n onClick,\r\n } = currentFeatureEvents;\r\n\r\n if (feature.hasListener('mouseover', onMouseOver as Handler)) {\r\n feature.off('mouseover', onMouseOver as Handler);\r\n }\r\n\r\n if (feature.hasListener('mousemove', onMouseMove as Handler)) {\r\n feature.off('mousemove', onMouseMove as Handler);\r\n }\r\n\r\n if (feature.hasListener('mouseout', onMouseOut as Handler)) {\r\n feature.off('mouseout', onMouseOut as Handler);\r\n }\r\n\r\n if (feature.hasListener('click', onClick as Handler)) {\r\n feature.off('click', onClick as Handler);\r\n }\r\n }\r\n });\r\n\r\n map.off('click', onClickMap as Handler);\r\n targetFeatures.current = [];\r\n labelFeature.current = null;\r\n layer.remove(layer.features);\r\n events.current = [];\r\n\r\n if (map.indexOf(popupLayer) !== -1) {\r\n map.removeLayer(popupLayer);\r\n }\r\n }, [onClickMap, popupLayer, layer, map]);\r\n\r\n useEffect(() => {\r\n if (map.indexOf(layer) === -1) {\r\n map.insertLayer(layer, zIndex);\r\n }\r\n return reset;\r\n }, [reset, map, layer, zIndex]);\r\n\r\n const onSetLabelFeature = useCallback(\r\n ({\r\n point,\r\n position,\r\n component,\r\n clickMode,\r\n }: {\r\n point: IPoint;\r\n } & TooltipParams) => {\r\n const feature = new LabelFeature(position || point.position, {\r\n symbol: new LabelSymbol({\r\n component: component as LabelSymbolComponent,\r\n }),\r\n crs: map.crs,\r\n });\r\n\r\n if (clickMode) {\r\n if (map.indexOf(popupLayer) === -1) {\r\n map.insertLayer(popupLayer, zIndex);\r\n }\r\n\r\n popupLayer.remove(popupLayer.features);\r\n popupLayer.add(feature);\r\n } else {\r\n labelFeature.current = feature;\r\n layer.add(feature);\r\n }\r\n },\r\n [popupLayer, layer, map, zIndex]\r\n );\r\n\r\n const onRemoveLabelFeature = useCallback(\r\n event => {\r\n if (event.node) {\r\n event.node.doNotBubbleToMap = true;\r\n }\r\n event.stopPropagation();\r\n labelFeature.current &&\r\n layer.has(labelFeature.current) &&\r\n layer.remove(labelFeature.current);\r\n labelFeature.current = null;\r\n layer.remove(layer.features);\r\n },\r\n [layer]\r\n );\r\n\r\n return useCallback(\r\n (tooltipParams: TooltipParams) => {\r\n const { feature, position, component, clickMode } = tooltipParams;\r\n const target = feature || map;\r\n targetFeatures.current.push(target as Feature & Map);\r\n const isMap = target instanceof Map;\r\n\r\n const featureEvents: FeatureEvents = {};\r\n\r\n featureEvents.onMouseOver = (event: sGisMouseOverEvent) => {\r\n event.stopPropagation();\r\n onRemoveLabelFeature(event);\r\n\r\n onSetLabelFeature({ point: getEventPoint(event), position, component });\r\n };\r\n\r\n featureEvents.onMouseMove = (\r\n event: sGisMouseMoveEvent & {\r\n node?: HTMLImageElement & { doNotBubbleToMap?: boolean };\r\n }\r\n ) => {\r\n if (!isMap) {\r\n event.stopPropagation();\r\n }\r\n\r\n if (event.node) {\r\n event.node.doNotBubbleToMap = true;\r\n }\r\n\r\n const point = getEventPoint(event);\r\n\r\n if (labelFeature.current) {\r\n isMap &&\r\n !layer.has(labelFeature.current) &&\r\n layer.add(labelFeature.current);\r\n\r\n labelFeature.current.position = position || point.position;\r\n } else {\r\n onSetLabelFeature({ point: point, position, component });\r\n }\r\n };\r\n\r\n if (clickMode) {\r\n featureEvents.onClick = (event: sGisClickEvent) => {\r\n event.stopPropagation();\r\n\r\n onSetLabelFeature({\r\n point: getEventPoint(event),\r\n position,\r\n component,\r\n clickMode,\r\n });\r\n };\r\n }\r\n\r\n featureEvents.onMouseOut = onRemoveLabelFeature;\r\n\r\n events.current.push(featureEvents);\r\n\r\n const { onMouseOver, onMouseMove, onMouseOut, onClick } = featureEvents;\r\n\r\n if (clickMode && !isMap) {\r\n target.on('mouseover', onMouseOut as Handler);\r\n target.on('mousemove', onMouseOut as Handler);\r\n target.on('click', onClick as Handler);\r\n\r\n if (!map.hasListener('click', onClickMap as Handler)) {\r\n map.on('click', onClickMap as Handler);\r\n }\r\n } else {\r\n if (!isMap) {\r\n target.on('mouseover', onMouseOver as Handler);\r\n }\r\n target.on('mousemove', onMouseMove as Handler);\r\n target.on('mouseout', onMouseOut as Handler);\r\n }\r\n },\r\n [\r\n onRemoveLabelFeature,\r\n onClickMap,\r\n map,\r\n onSetLabelFeature,\r\n getEventPoint,\r\n layer,\r\n ]\r\n );\r\n};\r\n","import { useRef } from 'react';\r\nimport { ClusterLayer } from '@evergis/sgis/es/layers/ClusterLayer';\r\nimport { GridClusterProvider } from '@evergis/sgis/es/layers/clusterProviders/GridClusterProvider';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { Symbol } from '@evergis/sgis/es/symbols/Symbol';\r\n\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\nimport { useProperty } from './useProperty';\r\nimport { LayerProps } from './LayerProps';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport type ClusterLayerProps = {\r\n features: Feature[];\r\n zIndex?: number;\r\n size?: number;\r\n distance?: number;\r\n onChangeGrid?: (fetures: Feature[], layer: ClusterLayer) => void;\r\n clusterSymbol?: Symbol<Feature>;\r\n} & LayerProps;\r\n\r\nexport function useClusterLayer({\r\n zIndex,\r\n isDisplayed = true,\r\n features,\r\n onChangeGrid,\r\n size,\r\n distance,\r\n clusterSymbol,\r\n}: ClusterLayerProps) {\r\n const { map } = useMapContext();\r\n const currentFeatures = useRef(features);\r\n\r\n const layer: ClusterLayer = useProperty(\r\n {\r\n factory: () => {\r\n const gridClusterProvider = new GridClusterProvider({\r\n size,\r\n distance,\r\n onChangeGrid: onChangeGrid\r\n ? features => onChangeGrid(features, layer)\r\n : void 0,\r\n });\r\n\r\n const clusterLayer = new ClusterLayer({\r\n gridClusterProvider,\r\n clusterSymbol,\r\n });\r\n currentFeatures.current = features;\r\n\r\n clusterLayer.add(features);\r\n\r\n return clusterLayer;\r\n },\r\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\r\n update: (clusterLayer, [features]) => {\r\n clusterLayer.remove(currentFeatures.current);\r\n clusterLayer.add(features);\r\n\r\n currentFeatures.current = features;\r\n },\r\n },\r\n [features]\r\n );\r\n\r\n useLayerOrder(layer, zIndex);\r\n useLayerVisibility(layer, isDisplayed);\r\n\r\n return layer;\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\r\n\r\nimport { useMapPick } from './useMapPick';\r\n\r\nimport { useEvergisSelectContext } from '../contexts';\r\n\r\nimport { evaluateFeature, EvergisFeature } from '../core';\r\n\r\nimport { EvergisSelectProps } from '../components/EvergisSelect/types';\r\n\r\nconst INIT_FEATURES: EvergisFeature[] = [];\r\n\r\ntype SelectionResult = [EvergisFeature[], () => void];\r\n\r\nexport const useEvergisSelect = ({\r\n onPick,\r\n onFeatures,\r\n}: Pick<EvergisSelectProps, 'onPick' | 'onFeatures'>): SelectionResult => {\r\n const mapPickResult = useMapPick();\r\n const layers = useEvergisSelectContext();\r\n const [features, setFeatures] = useState<EvergisFeature[]>(INIT_FEATURES);\r\n\r\n const resetSelection = useCallback(() => setFeatures(INIT_FEATURES), [\r\n setFeatures,\r\n ]);\r\n\r\n useEffect(() => {\r\n if (!mapPickResult) {\r\n return;\r\n }\r\n\r\n onPick(mapPickResult).then(features => {\r\n setFeatures(features.map(evaluateFeature(layers)));\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [mapPickResult]);\r\n\r\n return [\r\n typeof onFeatures === 'function' ? onFeatures(features) : features,\r\n resetSelection,\r\n ];\r\n};\r\n","import { useMemo } from 'react';\r\nimport { CRS_MAP, DEFAULT_CRS, DEFAULT_SRID, SrId } from '../core';\r\n\r\nexport const useCrs = (srId?: SrId) => {\r\n return useMemo(() => {\r\n return CRS_MAP[srId || DEFAULT_SRID] || DEFAULT_CRS;\r\n }, [srId]);\r\n};\r\n","import { useRef, useEffect, useCallback } from 'react';\r\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\r\nimport { PointEditor } from '@evergis/sgis/es/controls/PointEditor';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\r\nimport { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\n\r\nimport { useMount } from './useMount';\r\nimport { useMapContext } from '../contexts';\r\n\r\nimport { DraggableMarkerProps } from '../components';\r\n\r\nconst setCursor = (painter: DomPainter, cursor: string) =>\r\n painter.wrapper &&\r\n typeof painter.wrapper !== 'string' &&\r\n (painter.wrapper.style.cursor = cursor);\r\n\r\nfunction none() {\r\n return;\r\n}\r\n\r\nexport const useDraggableMarker = ({\r\n position,\r\n onChange,\r\n symbol,\r\n}: DraggableMarkerProps) => {\r\n const feature = useRef<Feature | null>(null);\r\n const { map, painter } = useMapContext();\r\n const layer = useRef(new FeatureLayer());\r\n const pointEditor = useRef(\r\n new PointEditor(map, {\r\n isActive: false,\r\n activeLayer: layer.current,\r\n })\r\n );\r\n\r\n const onMapClick = useCallback(\r\n (event: sGisEvent) => {\r\n event.stopPropagation();\r\n if (!(event instanceof sGisClickEvent)) {\r\n return;\r\n }\r\n\r\n map.off('click', onMapClick);\r\n setCursor(painter, 'default');\r\n onChange(event.point.position);\r\n },\r\n [painter, map, onChange]\r\n );\r\n\r\n useMount({\r\n onMount: () => {\r\n map.addLayer(layer.current);\r\n pointEditor.current.on('edit', () =>\r\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\r\n );\r\n\r\n if (!position) {\r\n setCursor(painter, 'pointer');\r\n map.on('click', onMapClick);\r\n }\r\n },\r\n onUnmount: () => {\r\n map.removeLayer(layer.current);\r\n map.off('click', onMapClick);\r\n pointEditor.current.off('edit', () =>\r\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\r\n );\r\n setCursor(painter, 'default');\r\n },\r\n });\r\n\r\n useEffect(() => {\r\n if (position) {\r\n if (!feature.current) {\r\n const hasMapClick = map.hasListener('click', onMapClick);\r\n\r\n const pointFeature = new PointFeature(position, {\r\n crs: map.crs,\r\n symbol: symbol || new StaticImageSymbol(),\r\n });\r\n\r\n pointFeature.on('mousemove', none);\r\n pointFeature.on('mouseover', () => setCursor(painter, 'pointer'));\r\n pointFeature.on('mouseout', () => setCursor(painter, 'default'));\r\n\r\n layer.current.add(pointFeature);\r\n pointEditor.current.activeFeature = pointFeature;\r\n pointEditor.current.isActive = true;\r\n feature.current = pointFeature;\r\n if (hasMapClick) {\r\n map.off('click', onMapClick);\r\n setCursor(painter, 'default');\r\n }\r\n } else if (feature.current && pointEditor.current.activeFeature) {\r\n pointEditor.current.activeFeature.position = position;\r\n layer.current.redraw();\r\n }\r\n } else if (feature.current) {\r\n layer.current.remove(feature.current as Feature);\r\n feature.current = null;\r\n setCursor(painter, 'pointer');\r\n map.on('click', onMapClick);\r\n }\r\n }, [onMapClick, painter, map, position, symbol]);\r\n};\r\n","import { useMemo, useCallback } from 'react';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\n\r\nimport { useMapContext } from '../contexts';\r\nimport { useMapState } from '../hooks';\r\nimport { metersToPixels } from '../utils/metersToPixels';\r\n\r\nexport const useMetersToPixels = (meters: number, crs?: Crs): number => {\r\n const { painter, map } = useMapContext();\r\n const { resolution } = useMapState();\r\n\r\n return useMemo(\r\n () =>\r\n metersToPixels(meters, {\r\n painter: painter,\r\n crs: crs || map.crs,\r\n }),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [painter, meters, crs, map.crs, resolution]\r\n );\r\n};\r\n\r\nexport const useMetersToPixelsCb = () => {\r\n const { painter, map } = useMapContext();\r\n\r\n return useCallback(\r\n (meters: number, crs?: Crs) =>\r\n metersToPixels(meters, {\r\n painter: painter,\r\n crs: crs || map.crs,\r\n }),\r\n [painter, map.crs]\r\n );\r\n};\r\n","import { useMemo } from 'react';\r\nimport { debounce } from '@evergis/sgis/es/utils/utils';\r\n\r\nexport const useDebouncedCallback = <CallbackFn extends () => void>(\r\n interval: number\r\n): ((cb: CallbackFn) => void) => {\r\n return useMemo(\r\n () =>\r\n debounce((cb: CallbackFn) => {\r\n cb();\r\n }, interval),\r\n [interval]\r\n );\r\n};\r\n","import { useCallback, useState } from \"react\";\r\n\r\nexport const useToggle = (initial?: boolean): [boolean, VoidFunction, (value: boolean) => void] => {\r\n const [state, setState] = useState(initial !== undefined ? initial : false);\r\n const toggle = useCallback(() => setState(!state), [state]);\r\n\r\n return [state, toggle, setState];\r\n};\r\n","import React from 'react';\r\n\r\nimport { useCanvas, useSymbol, UseSymbolParams } from '../../hooks';\r\n\r\ninterface Props extends UseSymbolParams {}\r\n\r\nexport const Symbol: React.FC<Props> = ({ symbol, size, render }) => {\r\n const { canvas, ref } = useCanvas();\r\n useSymbol({ symbol, size, render }, canvas);\r\n\r\n return <canvas ref={ref} />;\r\n};\r\n","import { GeometryType } from '@evergis/api';\r\nimport styled from 'styled-components';\r\n\r\nexport type CompoundIconProps = {\r\n geometryType: GeometryType;\r\n icons: Record<GeometryType, string>;\r\n};\r\n\r\nexport const CompoundIcon = styled.div<CompoundIconProps>`\r\n background: ${({ geometryType, icons }) =>\r\n `url(${icons[geometryType]}) center center / ${\r\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\r\n } no-repeat`};\r\n height: 32px;\r\n width: 32px;\r\n`;\r\n\r\nexport const ClusterSymbol = styled.div<{ color?: string }>`\r\n position: relative;\r\n width: 32px;\r\n height: 32px;\r\n\r\n :before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: inherit;\r\n height: inherit;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n opacity: 0.28;\r\n }\r\n \r\n :after {\r\n content: \"99\";\r\n position: absolute;\r\n top: 4px;\r\n left: 4px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 24px;\r\n height: 24px;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n color: white;\r\n font-size: 0.75rem;\r\n line-height: 1;\r\n }\r\n`;\r\n","import React, { PropsWithChildren } from 'react';\r\nimport { SvgPointSymbolDc } from \"@evergis/api\";\r\n\r\nimport { Symbol } from './Symbol';\r\nimport { ClusterSymbol } from \"./styled\";\r\nimport { getParameterValue, StyleSymbolType } from '../../core';\r\nimport { deserializeSymbol, adjustSymbol, isSGisClusterSymbol, SGisSymbolType } from '../../symbols';\r\n\r\ntype StyleSymbolProps = PropsWithChildren<{\r\n symbol: StyleSymbolType;\r\n size?: number;\r\n}>;\r\n\r\nconst MAX_SIZE = 32;\r\n\r\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\r\n symbol,\r\n size = MAX_SIZE,\r\n children,\r\n}) => {\r\n if (children) {\r\n return <>{children}</>;\r\n }\r\n\r\n let sGisSymbol = null;\r\n\r\n try {\r\n sGisSymbol = deserializeSymbol(symbol);\r\n } catch (e) {\r\n // TODO generate Error symbol\r\n }\r\n\r\n if (!sGisSymbol) {\r\n return null;\r\n }\r\n\r\n if (isSGisClusterSymbol(symbol as SGisSymbolType)) {\r\n const color = getParameterValue((sGisSymbol as SvgPointSymbolDc).background?.fillColor as string) ||\r\n getParameterValue((sGisSymbol as SvgPointSymbolDc).figure?.fillColor as string) || \"rgb(0, 170, 255)\";\r\n\r\n return <ClusterSymbol color={color} />\r\n }\r\n\r\n return (\r\n <Symbol\r\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\r\n size={size}\r\n />\r\n );\r\n};\r\n","import { Icon } from '@evergis/icons';\r\nimport styled from 'styled-components';\r\n\r\nexport const EvergisCardContainer = styled.div`\r\n position: absolute;\r\n top: 2.25rem;\r\n right: 0.5rem;\r\n width: 22.5rem;\r\n margin-bottom: 1rem;\r\n max-height: 90%;\r\n min-height: 1rem;\r\n background: #fff;\r\n border-radius: 4px;\r\n z-index: 1;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n flex-grow: 1;\r\n overflow: initial;\r\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\r\n\r\n ${Icon} {\r\n color: rgba(0, 0, 0, 0.65);\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &:hover {\r\n color: #1fb3aa;\r\n }\r\n }\r\n`;\r\n\r\nexport const StickyHeader = styled.div`\r\n display: flex;\r\n position: sticky;\r\n top: 0;\r\n flex-direction: column;\r\n background: #fff;\r\n`;\r\n\r\nexport const CardHeader = styled.div`\r\n display: flex;\r\n padding: 1.5rem 1.5rem 1rem;\r\n align-items: center;\r\n`;\r\n\r\nexport const CardTitle = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin: 0 0.5rem;\r\n flex-grow: 1;\r\n`;\r\n\r\nexport const CardControls = styled.div`\r\n display: flex;\r\n\r\n ${Icon} {\r\n margin: 0 0.5rem;\r\n }\r\n`;\r\n\r\nexport const FeatureName = styled.div`\r\n font-size: 1.25rem;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const LayerName = styled.div`\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const CardPagination = styled.div`\r\n display: flex;\r\n height: 2.5rem;\r\n padding: 0 1.5rem;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n justify-content: space-between;\r\n background: linear-gradient(\r\n 0deg,\r\n rgba(161, 186, 208, 0.12),\r\n rgba(161, 186, 208, 0.12)\r\n );\r\n`;\r\n\r\nexport const PaginationDescription = styled.div`\r\n display: flex;\r\n`;\r\n\r\nexport const CurrentFeatureIndex = styled.div`\r\n cursor: pointer;\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n`;\r\n\r\nexport const CardAttributes = styled.div`\r\n padding: 1rem 1.5rem;\r\n overflow-y: scroll;\r\n`;\r\n\r\nexport const AttributeContainer = styled.div`\r\n padding-bottom: 0.5rem;\r\n`;\r\n\r\nexport const AttributeTitle = styled.div`\r\n margin: 0.25rem 0;\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const AttributeValueContainer = styled.div`\r\n flex-wrap: wrap;\r\n display: flex;\r\n`;\r\n\r\nexport const SimpleAttribute = styled.div``;\r\n\r\nexport const ValueLink = styled.a`\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n text-decoration: none;\r\n`;\r\n","import React from 'react';\r\n\r\nimport { ValueLink } from './styled';\r\nimport { mailHref } from '../../utils/url';\r\n\r\ntype MailValueProps = {\r\n mail: string;\r\n};\r\n\r\nexport const MailValue = ({ mail }: MailValueProps) => (\r\n <ValueLink target={'_blank'} rel={'noreferrer'} href={mailHref(mail)}>\r\n {mail}\r\n </ValueLink>\r\n);\r\n","import React from 'react';\r\n\r\nimport { ValueLink } from './styled';\r\nimport { phoneHref } from '../../utils/url';\r\n\r\ntype PhoneValueProps = {\r\n phone: string;\r\n};\r\n\r\nexport const PhoneValue = ({ phone }: PhoneValueProps) => (\r\n <ValueLink target={'_blank'} rel={'noreferrer'} href={phoneHref(phone)}>\r\n {phone}\r\n </ValueLink>\r\n);\r\n","import React from 'react';\r\n\r\nimport { ValueLink } from './styled';\r\nimport { urlHref } from '../../utils/url';\r\n\r\ntype UrlValueProps = {\r\n url: string;\r\n};\r\n\r\nexport const UrlValue = ({ url }: UrlValueProps) => (\r\n <ValueLink target={'_blank'} rel={'noreferrer'} href={urlHref(url)}>\r\n {url}\r\n </ValueLink>\r\n);\r\n","import React from 'react';\r\nimport { AttributeValueContainer, SimpleAttribute } from './styled';\r\nimport { MailValue } from './MailValue';\r\nimport { PhoneValue } from './PhoneValue';\r\nimport { UrlValue } from './UrlValue';\r\nimport { EvergisCardAttributeProps } from './EvergisCardAttribute';\r\n\r\nimport punycode from 'punycode';\r\n\r\nimport {\r\n AttributeValueType,\r\n formatAttributeValue,\r\n} from '../../core/attributes';\r\n\r\nexport const AttributeValue: React.FC<EvergisCardAttributeProps> = ({\r\n attribute,\r\n}) => {\r\n const attributeValues = formatAttributeValue(attribute);\r\n\r\n return (\r\n <AttributeValueContainer>\r\n {attributeValues.map((attributeValue, index) => {\r\n const { value } = attributeValue;\r\n const key = `${value}-${index}`;\r\n\r\n if (attributeValue.type === AttributeValueType.Url) {\r\n return <UrlValue key={key} url={punycodeDecode(value)} />;\r\n }\r\n\r\n if (attributeValue.type === AttributeValueType.Mail) {\r\n return <MailValue key={key} mail={value} />;\r\n }\r\n\r\n if (attributeValue.type === AttributeValueType.Phone) {\r\n return <PhoneValue key={key} phone={value} />;\r\n }\r\n\r\n return <SimpleAttribute key={value}>{value}</SimpleAttribute>;\r\n })}\r\n </AttributeValueContainer>\r\n );\r\n};\r\n\r\nfunction punycodeDecode(domains: string) {\r\n try {\r\n return domains\r\n .split('/')\r\n .map(punycode.toUnicode)\r\n .join('/');\r\n } catch (error) {\r\n return domains;\r\n }\r\n}\r\n","import React from 'react';\r\n\r\nimport { AttributeContainer, AttributeTitle } from './styled';\r\n\r\nimport { FeatureAttribute } from '../../core';\r\nimport { AttributeValue } from './AttributeValue';\r\n\r\nexport type EvergisCardAttributeProps = {\r\n attribute: FeatureAttribute;\r\n className?: string;\r\n};\r\n\r\nexport const EvergisCardAttribute: React.FC<EvergisCardAttributeProps> = ({\r\n attribute,\r\n className,\r\n}) => (\r\n <AttributeContainer className={className}>\r\n <AttributeTitle>{attribute.alias || attribute.name}</AttributeTitle>\r\n <AttributeValue attribute={attribute} />\r\n </AttributeContainer>\r\n);\r\n","import React, { FC, useEffect } from 'react';\r\nimport {\r\n IconButton,\r\n EverCloudCloseIcon,\r\n EverCloudStatisticsIcon,\r\n EverCloudZoomtoIcon,\r\n EverCloudPlayPrevIcon,\r\n EverCloudPlayNextIcon,\r\n} from \"@evergis/icons\";\r\n\r\nimport { StyleSymbol } from '../Symbol';\r\nimport { EvergisCardAttribute } from './EvergisCardAttribute';\r\n\r\nimport {\r\n CardAttributes,\r\n CardControls,\r\n CardHeader,\r\n CardPagination,\r\n CardTitle,\r\n CurrentFeatureIndex,\r\n EvergisCardContainer,\r\n FeatureName,\r\n LayerName,\r\n PaginationDescription,\r\n StickyHeader,\r\n} from './styled';\r\n\r\nimport { EvergisCardProps } from './EvergisCard';\r\nimport { UseEvergisCard } from '../../hooks/useEvergisCard';\r\nimport { FeatureAttribute } from '../../';\r\n\r\nexport const StyledCard: FC<EvergisCardProps & UseEvergisCard> = ({\r\n features = [],\r\n className,\r\n reset,\r\n feature,\r\n zoom,\r\n prev,\r\n current,\r\n next,\r\n onAttributes,\r\n onStatistics,\r\n onFeatureChange,\r\n headerExtra,\r\n hideZoom,\r\n}) => {\r\n useEffect(() => {\r\n onFeatureChange && onFeatureChange(current);\r\n }, [current, onFeatureChange]);\r\n\r\n return (\r\n <EvergisCardContainer className={className}>\r\n <StickyHeader>\r\n <CardHeader>\r\n <StyleSymbol symbol={feature.symbol || {}} />\r\n <CardTitle>\r\n <FeatureName title={feature.displayName || ''}>\r\n {feature.displayName}\r\n </FeatureName>\r\n <LayerName>{feature.layerAlias}</LayerName>\r\n </CardTitle>\r\n <CardControls>\r\n {onStatistics && <IconButton onClick={() => onStatistics(feature)}><EverCloudStatisticsIcon /></IconButton>}\r\n {!hideZoom && <IconButton onClick={zoom}><EverCloudZoomtoIcon /></IconButton>}\r\n <IconButton onClick={reset}><EverCloudCloseIcon /></IconButton>\r\n </CardControls>\r\n </CardHeader>\r\n {features.length > 1 ? (\r\n <CardPagination>\r\n <IconButton onClick={prev}><EverCloudPlayPrevIcon /></IconButton>\r\n <PaginationDescription>\r\n <CurrentFeatureIndex onClick={zoom}>\r\n {current + 1}\r\n </CurrentFeatureIndex>\r\n объект из {features.length}\r\n </PaginationDescription>\r\n <IconButton onClick={next}><EverCloudPlayNextIcon /></IconButton>\r\n </CardPagination>\r\n ) : null}\r\n {headerExtra}\r\n </StickyHeader>\r\n <CardAttributes>\r\n {feature.attributes &&\r\n (typeof onAttributes === 'function'\r\n ? onAttributes(feature.attributes)\r\n : feature.attributes\r\n ).map((attribute: FeatureAttribute) => {\r\n return (\r\n attribute.render || (\r\n <EvergisCardAttribute\r\n key={attribute.name}\r\n attribute={attribute}\r\n />\r\n )\r\n );\r\n })}\r\n </CardAttributes>\r\n </EvergisCardContainer>\r\n );\r\n};\r\n","import React, { ReactElement, ReactNode } from 'react';\r\n\r\nimport { useEvergisCard, UseEvergisCard } from '../../hooks/useEvergisCard';\r\n\r\nimport { StyledCard } from './StyledCard';\r\nimport { EvergisFeature, FeatureAttribute } from '../../core';\r\n\r\nexport type EvergisCardProps = {\r\n features?: EvergisFeature[];\r\n reset?: VoidFunction;\r\n children?: (current: number) => React.ReactNode;\r\n className?: string;\r\n renderCard?: (\r\n cardProps: Omit<EvergisCardProps, 'className' | 'renderCard' | 'children'> &\r\n UseEvergisCard\r\n ) => ReactElement;\r\n onAttributes?: (attributes: FeatureAttribute[]) => FeatureAttribute[];\r\n onStatistics?: (feature: EvergisFeature) => void;\r\n onFeatureChange?: (current: number) => void;\r\n headerExtra?: ReactNode;\r\n hideZoom?: boolean;\r\n};\r\n\r\nexport const EvergisCard: React.FC<EvergisCardProps> = ({\r\n renderCard,\r\n className,\r\n children,\r\n ...props\r\n}) => {\r\n const { features = [] } = props;\r\n const hookProps = useEvergisCard(features);\r\n const { feature, current } = hookProps;\r\n const cardProps = { ...props, ...hookProps };\r\n\r\n return feature ? (\r\n <>\r\n {typeof renderCard === 'function' ? (\r\n renderCard(cardProps)\r\n ) : (\r\n <StyledCard className={className} {...cardProps} />\r\n )}\r\n {children && children(current)}\r\n </>\r\n ) : null;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { ClusterLayerProps, useClusterLayer } from '../../hooks';\r\n\r\nexport const ClusterLayer: React.FC<ClusterLayerProps> = props => {\r\n useClusterLayer(props);\r\n\r\n return null;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { EvergisDynamicLayerProps, useEvergisDynamicLayer } from '../../hooks';\r\n\r\nexport const EvergisDynamicLayer: React.FC<EvergisDynamicLayerProps> = props => {\r\n useEvergisDynamicLayer(props);\r\n\r\n return null;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { FeatureLayerProps, useFeatureLayer } from '../../hooks';\r\n\r\nexport const FeatureLayer: React.FC<FeatureLayerProps> = props => {\r\n useFeatureLayer(props);\r\n\r\n return null;\r\n};\r\n","import { useMemo } from 'react';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { EvergisFeature } from '../../core';\r\n\r\nconst truthly = <Value>(value: Value | null | undefined): value is Value =>\r\n Boolean(value);\r\n\r\nconst setSelected = (current: number) => (feature: Feature, index: number) => {\r\n // @ts-ignore\r\n feature['isSelected'] = index === current;\r\n\r\n return feature;\r\n};\r\n\r\nconst toSgis = (feature: EvergisFeature) => feature.sGisFeature();\r\n\r\n// TODO inner hooks???\r\nexport const useSGisFeatures = (\r\n features: EvergisFeature[],\r\n currentIndex: number\r\n) =>\r\n useMemo(\r\n () =>\r\n features\r\n .map(toSgis)\r\n .filter(truthly)\r\n .map(setSelected(currentIndex)),\r\n [features, currentIndex]\r\n );\r\n","import React from 'react';\r\n\r\nimport { FeatureLayer } from './FeatureLayer';\r\nimport { useSGisFeatures } from './useSGisFeatures';\r\n\r\nimport { EvergisFeature } from '../../core';\r\n\r\ntype EvergisSelectLayerProps = {\r\n features: EvergisFeature[];\r\n current: number;\r\n zIndex: number;\r\n};\r\n\r\nexport const EvergisSelectLayer: React.FC<EvergisSelectLayerProps> = ({\r\n features,\r\n zIndex,\r\n current,\r\n}) => {\r\n const sGisFeatures = useSGisFeatures(features, current);\r\n\r\n return <FeatureLayer features={sGisFeatures} zIndex={zIndex} />;\r\n};\r\n","import React from 'react';\r\n\r\nimport { EvergisTileLayerProps, useEvergisTileLayer } from '../../hooks';\r\n\r\nexport const EvergisTileLayer: React.FC<EvergisTileLayerProps> = props => {\r\n useEvergisTileLayer(props);\r\n\r\n return null;\r\n};\r\n","import {\r\n GetTileUrl,\r\n TileLayer,\r\n TileLayerConstructorParams,\r\n} from '@evergis/sgis/es/layers/TileLayer';\r\n\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { LayerProps } from './LayerProps';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useTileLayer({\r\n maskUrl,\r\n zIndex,\r\n isDisplayed,\r\n ...tileLayerParams\r\n}: TileLayerProps) {\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new TileLayer(maskUrl, tileLayerParams),\r\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\r\n },\r\n [maskUrl]\r\n );\r\n\r\n useLayerOrder(layer, zIndex);\r\n useLayerVisibility(layer, isDisplayed);\r\n\r\n return layer;\r\n}\r\n\r\nexport type TileLayerProps = {\r\n maskUrl: string | GetTileUrl;\r\n} & LayerProps &\r\n TileLayerConstructorParams;\r\n","import * as React from 'react';\r\n\r\nimport { useTileLayer, TileLayerProps } from '../../hooks/useTileLayer';\r\n\r\nexport const TileLayer: React.FC<TileLayerProps> = props => {\r\n useTileLayer(props);\r\n\r\n return null;\r\n};\r\n","import React from 'react';\r\n\r\nimport { EvergisCard } from '../EvergisCard';\r\nimport { EvergisSelectLayer } from '../Layers';\r\n\r\nimport { useEvergisSelect } from '../../hooks';\r\n\r\nimport { EvergisSelectProps } from './types';\r\n\r\nconst defaultZIndex = 200;\r\n\r\nexport const EvergisSelect: React.FC<EvergisSelectProps> = ({\r\n onPick,\r\n className,\r\n renderCard,\r\n zIndex,\r\n onFeatures,\r\n onAttributes,\r\n onStatistics,\r\n}) => {\r\n const [features, resetSelection] = useEvergisSelect({ onPick, onFeatures });\r\n\r\n return (\r\n <EvergisCard\r\n className={className}\r\n features={features}\r\n reset={resetSelection}\r\n renderCard={renderCard}\r\n onAttributes={onAttributes}\r\n onStatistics={onStatistics}\r\n >\r\n {current => (\r\n <EvergisSelectLayer\r\n features={features}\r\n current={current}\r\n zIndex={zIndex || defaultZIndex}\r\n />\r\n )}\r\n </EvergisCard>\r\n );\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const LegendContainer = styled.div`\r\n background-color: white;\r\n`;\r\n\r\nexport const LegendSectionContainer = styled.div``;\r\n\r\nexport const LegendSymbolTitle = styled.p`\r\n margin: 0;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n`;\r\n\r\nexport const LegendValueContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n\r\n ${LegendSymbolTitle} {\r\n padding-left: 0.5rem;\r\n }\r\n`;\r\n\r\nexport const LegendSectionHeader = styled.div`\r\n font-size: 0.75rem;\r\n font-weight: 600;\r\n line-height: 1rem;\r\n`;\r\n","import React from 'react';\r\n\r\nimport { LegendSectionContainer, LegendSectionHeader } from './styled';\r\nimport { LegendItem, LegendValueType } from '../../core';\r\n\r\ntype LegendSectionProps = {\r\n item: LegendItem;\r\n children: (value: LegendValueType) => React.ReactNode;\r\n hideTitle?: boolean;\r\n renderLegendTitle?: (item: React.ReactNode | LegendItem) => React.ReactNode;\r\n};\r\n\r\nexport const LegendSection: React.FC<LegendSectionProps> = ({\r\n item,\r\n renderLegendTitle,\r\n hideTitle,\r\n children,\r\n}) => (\r\n <LegendSectionContainer>\r\n {!hideTitle && (\r\n <LegendSectionHeader>\r\n {renderLegendTitle ? renderLegendTitle(item) : item.title}\r\n </LegendSectionHeader>\r\n )}\r\n {item.values.map(children)}\r\n </LegendSectionContainer>\r\n);\r\n","import styled from 'styled-components';\r\n\r\nexport const InputContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n border-radius: 0.125rem;\r\n box-sizing: border-box;\r\n border: 0.0625rem solid rgba(48, 69, 79, 0.12);\r\n margin-bottom: 0.5rem;\r\n \r\n i {\r\n color: rgba(48, 69, 79, 0.54);\r\n padding: 0.25rem;\r\n\r\n &:hover {\r\n cursor: pointer;\r\n color: rgba(48, 69, 79, 0.87);\r\n }\r\n }\r\n`;\r\n\r\nexport const InputField = styled.input`\r\n width: 100%;\r\n border: none;\r\n outline: none;\r\n font-size: 1rem;\r\n line-height: 1.1875rem;\r\n padding: 0 0.5rem;\r\n background-color: transparent;\r\n color: rgba(48, 69, 79, 0.87);\r\n`;\r\n","import React from 'react';\r\nimport { EverCloudSearchIcon } from \"@evergis/icons\";\r\n\r\nimport { InputContainer, InputField } from './styled';\r\n\r\ntype SearchInputProps = {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n};\r\n\r\nexport const SearchInput: React.FC<SearchInputProps> = ({ onChange }) => (\r\n <InputContainer>\r\n <EverCloudSearchIcon />\r\n <InputField onChange={onChange} />\r\n </InputContainer>\r\n);\r\n","import React from 'react';\r\n\r\nimport { LegendSymbolPart, useLegendValueSymbol } from '../../hooks';\r\n\r\nimport { SGisSymbolType } from '../../symbols';\r\n\r\ntype LegendSymbolProps = {\r\n children: (symbol: SGisSymbolType) => React.ReactNode;\r\n} & LegendSymbolPart;\r\n\r\nexport const LegendSymbol: React.FC<LegendSymbolProps> = ({\r\n parameter,\r\n parameterValue,\r\n children,\r\n}) => {\r\n const symbol = useLegendValueSymbol({ parameterValue, parameter });\r\n\r\n if (!symbol) {\r\n return null;\r\n }\r\n\r\n return <>{children(symbol)}</>;\r\n};\r\n","import React from 'react';\r\n\r\nimport { LegendSymbolTitle, LegendValueContainer } from './styled';\r\nimport { LegendSymbol } from './LegendSymbol';\r\nimport { Symbol } from '../Symbol';\r\n\r\nimport { ClassificationParameterExtended, LegendValueType } from '../../core';\r\n\r\nimport { getLegendSymbolRenders } from '../../symbols';\r\n\r\nimport { LegendProps } from './types';\r\n\r\nexport type LegendValueProps = {\r\n value: LegendValueType;\r\n parameter: ClassificationParameterExtended;\r\n} & Pick<LegendProps, 'maxSize'>;\r\n\r\nexport const LegendValue: React.FC<LegendValueProps> = ({\r\n value,\r\n parameter,\r\n maxSize,\r\n}) => (\r\n <LegendValueContainer>\r\n <LegendSymbol parameter={parameter} parameterValue={value.parameterValue}>\r\n {symbol => (\r\n <Symbol\r\n render={getLegendSymbolRenders}\r\n symbol={symbol}\r\n size={maxSize}\r\n />\r\n )}\r\n </LegendSymbol>\r\n <LegendSymbolTitle>{value.title}</LegendSymbolTitle>\r\n </LegendValueContainer>\r\n);\r\n","import { LegendProps } from './types';\r\nimport { LegendValueType } from '../../core';\r\n\r\nconst MAX_SIZE = 26;\r\n\r\nconst getNumberParam = (parameterValue: any, param: string): number | null => {\r\n return typeof parameterValue === 'object' &&\r\n param in parameterValue &&\r\n typeof parameterValue[param] === 'number'\r\n ? parameterValue[param]\r\n : null;\r\n};\r\n\r\nexport const getSymbolSize = ({\r\n parameterValue,\r\n maxSize,\r\n}: Pick<LegendProps, 'maxSize'> &\r\n Pick<LegendValueType, 'parameterValue'>): number => {\r\n const size = getNumberParam(parameterValue, 'size');\r\n const strokeWidth = getNumberParam(parameterValue, 'strokeWidth');\r\n const width = getNumberParam(parameterValue, 'width');\r\n const height = getNumberParam(parameterValue, 'height');\r\n\r\n if (width && height) {\r\n return Math.max(width, height);\r\n } else if (width) {\r\n return width;\r\n } else if (height) {\r\n return height;\r\n } else if (size) {\r\n return size + (strokeWidth || 0);\r\n } else if (typeof maxSize === 'number') {\r\n return maxSize;\r\n } else {\r\n return MAX_SIZE;\r\n }\r\n};\r\n","import React from 'react';\r\n\r\nimport { LegendContainer } from './styled';\r\nimport { LegendSection } from './LegendSection';\r\nimport { SearchInput } from '../SearchInput/SearchInput';\r\nimport { LegendValue } from './LegendValue';\r\nimport { LegendProps } from './types';\r\n\r\nimport { LegendProvider } from '../../contexts';\r\nimport { getSymbolSize } from './getSymbolSize';\r\n\r\nimport { useLayerLegend } from '../../hooks';\r\n\r\nexport const Legend: React.FC<LegendProps> = ({\r\n layer,\r\n children,\r\n className,\r\n config,\r\n maxSize,\r\n}) => {\r\n const legend = useLayerLegend(layer, config);\r\n const { renderCustomLegend, searchLayer, searchable } = config || {};\r\n const { symbol } = legend || {};\r\n\r\n if (!legend && !renderCustomLegend) {\r\n return null;\r\n }\r\n\r\n return (\r\n <LegendProvider symbol={symbol}>\r\n <LegendContainer className={className}>\r\n {searchable && searchLayer && <SearchInput onChange={searchLayer} />}\r\n {renderCustomLegend && layer\r\n ? renderCustomLegend(layer)\r\n : children\r\n ? legend && children(legend)\r\n : legend &&\r\n legend.items.map((legendItem, index) => (\r\n <LegendSection\r\n key={`${legendItem.attribute}-${legendItem.parameter}`}\r\n item={legendItem}\r\n hideTitle={layer?.alias === legendItem.title}\r\n renderLegendTitle={config && config.renderLegendTitle}\r\n >\r\n {legendValue => (\r\n <LegendValue\r\n key={`${legendValue.title}-${index}`}\r\n value={legendValue}\r\n parameter={legendItem.parameter}\r\n maxSize={getSymbolSize({\r\n parameterValue: legendValue.parameterValue,\r\n maxSize,\r\n })}\r\n />\r\n )}\r\n </LegendSection>\r\n ))}\r\n </LegendContainer>\r\n </LegendProvider>\r\n );\r\n};\r\n","import React, { CSSProperties, PropsWithChildren, useCallback } from 'react';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMapContext } from '../../contexts';\r\n\r\nimport {\r\n MapState,\r\n shouldUpdateMapState,\r\n useMapBboxChange,\r\n useMapWrapper,\r\n useMaxMinScale,\r\n useUpdateMapView,\r\n} from '../../hooks';\r\n\r\nexport type MapProps = PropsWithChildren<{\r\n className?: string;\r\n position?: Coordinates;\r\n resolution?: number;\r\n minScale?: number;\r\n maxScale?: number;\r\n style?: CSSProperties;\r\n onBboxChange?: (mapState: MapState) => void;\r\n}>;\r\n\r\nexport const Map: React.FC<MapProps> = ({\r\n className,\r\n position,\r\n resolution,\r\n minScale,\r\n maxScale,\r\n children,\r\n onBboxChange,\r\n style,\r\n}) => {\r\n const wrapperRef = useMapWrapper();\r\n const { map } = useMapContext();\r\n\r\n const handleBboxChange = useCallback(\r\n (state: MapState) => {\r\n if (onBboxChange && shouldUpdateMapState(map, { position, resolution })) {\r\n onBboxChange(state);\r\n }\r\n },\r\n [map, onBboxChange, position, resolution]\r\n );\r\n\r\n useUpdateMapView({ position, resolution });\r\n useMaxMinScale(minScale, maxScale, position, resolution);\r\n\r\n useMapBboxChange(handleBboxChange);\r\n\r\n return (\r\n <div className={className} ref={wrapperRef} style={style}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n","import { css } from 'styled-components';\r\n\r\nexport const CONTROL_PLACEMENTS: Placement[] = [\r\n 'top-left',\r\n 'top-right',\r\n 'bottom-left',\r\n 'bottom-right',\r\n];\r\n\r\nconst topLeft = (distance: string) => css`\r\n top: ${distance};\r\n left: ${distance};\r\n`;\r\n\r\nconst topRight = (distance: string) => css`\r\n top: ${distance};\r\n right: ${distance};\r\n`;\r\n\r\nconst bottomLeft = (distance: string) => css`\r\n bottom: ${distance};\r\n left: ${distance};\r\n`;\r\n\r\nconst bottomRight = (distance: string) => css`\r\n bottom: ${distance};\r\n right: ${distance};\r\n`;\r\n\r\nexport type Placement =\r\n | 'top-left'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-right';\r\n\r\nexport const placementMixin = (\r\n placement: Placement = 'bottom-left',\r\n distance: string = '1rem'\r\n) => css`\r\n ${placement === 'top-left' && topLeft(distance)}\r\n ${placement === 'top-right' && topRight(distance)}\r\n ${placement === 'bottom-left' && bottomLeft(distance)}\r\n ${placement === 'bottom-right' && bottomRight(distance)}\r\n`;\r\n","import styled, { css } from 'styled-components';\r\nimport { Icon } from \"@evergis/icons\";\r\n\r\nimport { Placement, placementMixin } from '../../ui/mixins/placementMixin';\r\n\r\nexport type MapControlsProps = {\r\n placement?: Placement;\r\n vertical?: boolean;\r\n};\r\n\r\nconst mapControlBtnMixin = css`\r\n width: 2rem;\r\n height: 2rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n color: #fff;\r\n`;\r\n\r\ntype MapControlBtnProps = {\r\n onClick?: () => void;\r\n};\r\n\r\nexport const ZoomInBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// ZoomInBtn.defaultProps = { kind: \"plus\" };\r\n\r\nexport const ZoomOutBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// ZoomOutBtn.defaultProps = { kind: \"minus\" };\r\n\r\nexport const SearchBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// SearchBtn.defaultProps = { kind: \"search\" };\r\n\r\n// TODO not exists in fonts\r\nexport const FullscreenBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// FullscreenBtn.defaultProps = { kind: \"maximize\" };\r\n\r\nexport const MeasureBtn = styled(Icon)<\r\n MapControlBtnProps\r\n>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// MeasureBtn.defaultProps = { kind: \"measure_length\" };\r\n\r\nexport const MapControl = styled.div`\r\n border-radius: 0.15rem;\r\n background: rgba(28, 33, 48, 0.8);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: #fff;\r\n font-size: 1.5rem;\r\n cursor: pointer;\r\n height: auto;\r\n width: auto;\r\n padding: 0.25rem;\r\n`;\r\n\r\nexport const MapControls = styled.div<MapControlsProps>`\r\n position: absolute;\r\n display: flex;\r\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\r\n\r\n ${({ placement }) => placementMixin(placement)}\r\n\r\n ${MapControl} {\r\n margin-bottom: ${({ vertical }) => (vertical ? '0.5rem' : '0')};\r\n margin-right: ${({ vertical }) => (vertical ? '0' : '0.5rem')};\r\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\r\n }\r\n`;\r\n","import React from 'react';\r\nimport { MapControl, MeasureBtn } from './styled';\r\n\r\n// TODO\r\nexport const Measure = () => {\r\n return (\r\n <MapControl>\r\n <MeasureBtn onClick={() => {}} />\r\n </MapControl>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { MapControl, SearchBtn } from './styled';\r\n\r\n// TODO\r\nexport const Search = () => {\r\n return (\r\n <MapControl>\r\n <SearchBtn onClick={() => {}} />\r\n </MapControl>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { FullscreenBtn, MapControl } from './styled';\r\n\r\n// TODO\r\nexport const Fullscreen = () => {\r\n return (\r\n <MapControl>\r\n <FullscreenBtn onClick={() => {}} />\r\n </MapControl>\r\n );\r\n};\r\n","import styled, { css } from 'styled-components';\r\n\r\nimport { LegendSectionHeader } from '../Legend/styled';\r\nimport { MapControl } from '../MapControls';\r\nimport { isParameterType } from \"../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended } from \"../../core\";\r\nimport { MapLegendItemProps } from \"./types\";\r\n\r\nexport const MapLegendControl = styled(MapControl)`\r\n cursor: default;\r\n`;\r\n\r\nexport const MapLegendContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n padding-bottom: 1rem;\r\n box-sizing: border-box;\r\n\r\n canvas {\r\n height: 1.625rem;\r\n width: 1.625rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendHeader = styled(LegendSectionHeader)`\r\n max-width: 15rem;\r\n margin-bottom: 0.25rem;\r\n font-weight: 500;\r\n`;\r\n\r\nexport const MapLegendDescriptionContainer = styled.div`\r\n margin-bottom: 0.5rem;\r\n font-weight: 400;\r\n font-size: 0.625rem;\r\n color: rgba(255, 255, 255, 0.65);\r\n`;\r\n\r\nexport const MinimizedLegendContainer = styled.div`\r\n width: calc(100% - 1.5rem);\r\n padding-right: 1.5rem;\r\n \r\n :not(:first-child) {\r\n margin-top: 1rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendValueDescr = styled.div`\r\n min-height: 1rem;\r\n margin-bottom: 0.25rem;\r\n font-size: 0.75rem;\r\n font-weight: 600;\r\n line-height: 1rem;\r\n`;\r\n\r\nconst SizeLegendItemMixin = (value = 0) => css`\r\n position: absolute;\r\n top: 0;\r\n left: 50%;\r\n flex: none;\r\n height: inherit;\r\n width: inherit;\r\n margin: 0 auto;\r\n background: none;\r\n border: none;\r\n\r\n :after {\r\n content: \"\";\r\n display: flex;\r\n border: 1px rgba(48, 69, 79, 0.28) solid;\r\n border-radius: 50%;\r\n margin: 0 0 0 -${value / 2}px;\r\n width: ${value}px;\r\n height: ${value}px;\r\n }\r\n`;\r\n\r\nconst StrokeWidthLegendItemMixin = (value = 0) => css`\r\n position: relative;\r\n background: none;\r\n border: none;\r\n display: flex;\r\n align-items: center;\r\n flex: none;\r\n width: calc(100% - 2rem);\r\n height: ${value}px;\r\n margin: 0 0 0.25rem 0;\r\n padding-left: 2rem;\r\n font-size: 0.75rem;\r\n \r\n :first-child, :last-child {\r\n height: auto;\r\n }\r\n \r\n :after {\r\n content: \"\";\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 1.5rem;\r\n height: ${value}px;\r\n margin-top: -${Math.round(value / 2)}px;\r\n background: rgb(224, 224, 224);\r\n }\r\n`;\r\n\r\nconst StrokeColorLegendItemMixin = css`\r\n margin-right: 0.5rem;\r\n width: 1.5rem;\r\n`;\r\n\r\nexport const MapLegendItem = styled.div<MapLegendItemProps>`\r\n flex: 1;\r\n height: ${({ parameter }) =>\r\n isParameterType([\"strokeColor\", \"stroke.color\"], parameter as ClassificationParameterExtended) ? 0.25 : 1}rem;\r\n background: ${({ value }) => typeof value === \"number\" ? \"none\" : value};\r\n border: 1px rgba(48, 69, 79, 0.1) solid;\r\n margin-right: -1px;\r\n opacity: ${({ isHidden }) => isHidden ? 0.28 : 1};\r\n\r\n ${({ value, parameter }) => isParameterType(\"size\", parameter as ClassificationParameterExtended)\r\n && SizeLegendItemMixin(value as number)}\r\n\r\n ${({ value, parameter }) => isParameterType(\r\n [\"strokeWidth\", \"stroke.width\"],\r\n parameter as ClassificationParameterExtended,\r\n ) && StrokeWidthLegendItemMixin(value as number)}\r\n`;\r\n\r\nexport const MapLegendOther = styled(MapLegendItem)`\r\n flex: none;\r\n position: relative;\r\n width: 1rem;\r\n margin-left: 0.25rem;\r\n border-radius: 0.125rem;\r\n`;\r\n\r\nconst SizeLegendItemsMixin = css`\r\n position: relative;\r\n width: 2rem;\r\n height: 2rem;\r\n margin: 0 auto;\r\n\r\n ${MapLegendOther} {\r\n width: auto;\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nconst StrokeWidthLegendItemsMixin = css`\r\n position: relative;\r\n flex-direction: column;\r\n width: auto;\r\n\r\n ${MapLegendOther} {\r\n width: calc(100% - 2rem);\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nexport const SizeMinimizedLegend = styled.div`\r\n display: flex;\r\n flex-wrap: nowrap;\r\n align-items: center;\r\n margin-top: 0.5rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendSymbol = styled.div`\r\n width: 4rem;\r\n margin-right: 0.75rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendLabel = styled.div`\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendDown = styled.div`\r\n color: white;\r\n opacity: 0.65;\r\n`;\r\n\r\nexport const SizeMinimizedLegendUp = styled(SizeMinimizedLegendDown)`\r\n text-align: right;\r\n`;\r\n\r\nconst SingleSizeLegendItemsMixin = css`\r\n width: 4rem;\r\n margin-right: 0.75rem;\r\n\r\n ${MapLegendItem}:after {\r\n margin: 0 auto;\r\n }\r\n`;\r\n\r\nconst SingleLegendItemsMixin = css<{\r\n parameter: ClassificationParameterExtended;\r\n isSize?: boolean;\r\n}>`\r\n justify-content: center;\r\n width: 2rem;\r\n margin: 0;\r\n ${({ isSize }) => isSize && SingleSizeLegendItemsMixin}\r\n \r\n ${MapLegendItem} {\r\n position: relative;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n align-content: center;\r\n justify-content: center;\r\n margin: 0;\r\n height: auto;\r\n width: auto;\r\n\r\n ${({ parameter }) => isParameterType(\r\n [\"strokeColor\", \"stroke.color\"],\r\n parameter as ClassificationParameterExtended,\r\n ) && StrokeColorLegendItemMixin}\r\n }\r\n`;\r\n\r\nexport const MapLegendItems = styled.div<{\r\n parameter: ClassificationParameterExtended;\r\n isSize?: boolean;\r\n isStrokeWidth?: boolean;\r\n isStrokeColor?: boolean;\r\n isSingle?: boolean;\r\n}>`\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n border-radius: 0.125rem;\r\n\r\n ${({ isSize }) => isSize && SizeLegendItemsMixin};\r\n ${({ isStrokeWidth }) => isStrokeWidth && StrokeWidthLegendItemsMixin};\r\n ${({ isSingle }) => isSingle && SingleLegendItemsMixin};\r\n`;\r\n\r\nexport const MapLegendItemsContainer = styled.div`\r\n display: flex;\r\n width: 100%;\r\n \r\n ${MapLegendItem} {\r\n :first-child {\r\n border-top-left-radius: 0.125rem;\r\n border-bottom-left-radius: 0.125rem;\r\n }\r\n\r\n :last-child {\r\n border-top-right-radius: 0.125rem;\r\n border-bottom-right-radius: 0.125rem;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendValues = styled.div`\r\n display: flex;\r\n width: 100%;\r\n font-size: 0.75rem;\r\n color: rgba(48, 69, 79, 0.65);\r\n`;\r\n\r\nexport const MapLegendValuesRange = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n width: calc(100% - 1.25rem);\r\n \r\n div {\r\n flex: 1;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n\r\n :first-child {\r\n margin-right: 0.5rem;\r\n }\r\n\r\n :last-child {\r\n margin-left: 0.5rem;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendValuesOther = styled(MapLegendOther)`\r\n border: 0;\r\n text-align: center;\r\n overflow: visible;\r\n`;\r\n\r\nexport const MapLegendExpandButton = styled.div`\r\n cursor: pointer;\r\n margin: 0.1rem 0 0.5rem;\r\n font-size: 0.625rem;\r\n color: #1FB3AA;\r\n`;\r\n","import React from 'react';\r\n\r\nimport {\r\n MapLegendContainer,\r\n MapLegendControl,\r\n MapLegendHeader,\r\n} from './styled';\r\nimport { Legend } from \"../Legend\";\r\nimport { LegendProvider } from '../../contexts';\r\nimport { useMapLegend } from '../../hooks';\r\nimport { MapLegendProps } from \"./types\";\r\n\r\nexport const MapLegend: React.FC<MapLegendProps> = ({\r\n layer,\r\n config,\r\n className,\r\n hideTitle,\r\n}) => {\r\n const legend = useMapLegend(layer, config);\r\n\r\n if (!legend) {\r\n return null;\r\n }\r\n\r\n const { symbol, items } = legend;\r\n\r\n return (\r\n <LegendProvider symbol={symbol}>\r\n <MapLegendControl className={className}>\r\n {!hideTitle && <MapLegendHeader>{layer?.alias}</MapLegendHeader>}\r\n {!!items.length && (\r\n <MapLegendContainer>\r\n <Legend layer={layer} config={config} />\r\n </MapLegendContainer>\r\n )}\r\n </MapLegendControl>\r\n </LegendProvider>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nimport { LegendSymbol } from '../Legend';\r\nimport { Symbol } from '../Symbol';\r\n\r\nimport { ClassificationParameterExtended, LegendValueType } from '../../core';\r\n\r\nimport { getMapLegendSymbolRenders } from '../../symbols';\r\n\r\nconst MAX_SIZE = 100;\r\n\r\nexport type MapLegendSymbolProps = {\r\n value: LegendValueType;\r\n parameter: ClassificationParameterExtended;\r\n};\r\n\r\nexport const MapLegendSymbol: React.FC<MapLegendSymbolProps> = ({\r\n value,\r\n parameter,\r\n}) => (\r\n <LegendSymbol\r\n key={value.title}\r\n parameter={parameter}\r\n parameterValue={value.parameterValue}\r\n >\r\n {symbol => (\r\n <Symbol\r\n render={getMapLegendSymbolRenders}\r\n symbol={symbol}\r\n size={MAX_SIZE}\r\n />\r\n )}\r\n </LegendSymbol>\r\n);\r\n","import React, { FC } from 'react';\r\n\r\nimport { MapLegendDescriptionContainer } from './styled';\r\nimport { isParameterType } from \"../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended } from \"../../core\";\r\n\r\nexport const MapLegendDescription: FC<{ parameter: ClassificationParameterExtended }> = ({ parameter }) => {\r\n const isSize = isParameterType(\"size\", parameter);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\r\n const isStrokeColor = isParameterType([\"strokeColor\", \"stroke.color\"], parameter);\r\n\r\n return (\r\n <MapLegendDescriptionContainer>\r\n {isStrokeWidth || isStrokeColor\r\n ? (isStrokeWidth ? \"Толщина обводки\" : \"Цвет обводки\")\r\n : isSize ? \"Размер знака\" : \"Цвет символа\"}\r\n </MapLegendDescriptionContainer>\r\n );\r\n};\r\n","import React, { FC, useCallback } from \"react\";\r\n\r\nimport {\r\n MapLegendItem,\r\n MapLegendItems,\r\n MapLegendItemsContainer,\r\n MapLegendOther,\r\n MapLegendValueDescr,\r\n MapLegendValues,\r\n MapLegendValuesOther,\r\n MapLegendValuesRange,\r\n MinimizedLegendContainer,\r\n SizeMinimizedLegend,\r\n SizeMinimizedLegendDown,\r\n SizeMinimizedLegendLabel,\r\n SizeMinimizedLegendSymbol,\r\n SizeMinimizedLegendUp,\r\n} from \"./styled\";\r\nimport { isNumeric } from \"../../utils/isNumeric\";\r\nimport { isParameterType } from \"../../utils/isParameterType\";\r\nimport { MinimizedLegendProps } from \"./types\";\r\n\r\nconst getValueFromLegendTitle = (title: string, minOrMax: \"min\" | \"max\"): string => {\r\n if (title.includes(\" - \")) {\r\n const result = title?.split(\" - \");\r\n\r\n return minOrMax === \"min\" ? result?.[0] : result?.[1];\r\n }\r\n\r\n if (title.includes(\",\")) {\r\n const result = title?.split(\",\");\r\n\r\n return result.join(\", \");\r\n }\r\n\r\n return title.split(\" \").find(isNumeric) || title || \"\";\r\n};\r\n\r\nexport const MinimizedLegend: FC<MinimizedLegendProps> = ({\r\n values,\r\n title,\r\n parameter,\r\n hiddenLegends,\r\n}) => {\r\n const currentValues = [...values];\r\n const other = currentValues.pop();\r\n const isSize = isParameterType(\"size\", parameter);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\r\n const titleMax = getValueFromLegendTitle(currentValues[0]?.title, \"max\");\r\n const titleMin = getValueFromLegendTitle(currentValues[currentValues.length - 1]?.title, \"min\");\r\n\r\n const checkIsHidden = useCallback((hiddenCondition?: string) => hiddenCondition\r\n ? hiddenLegends?.some(condition => hiddenCondition.includes(condition))\r\n : false, [hiddenLegends]);\r\n\r\n return (\r\n <MinimizedLegendContainer>\r\n {!!title && <MapLegendValueDescr>{title}</MapLegendValueDescr>}\r\n {isSize ? (\r\n <>\r\n <SizeMinimizedLegend>\r\n <SizeMinimizedLegendSymbol>\r\n <MapLegendItems parameter={parameter} isSize>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n />\r\n ))}\r\n </MapLegendItems>\r\n </SizeMinimizedLegendSymbol>\r\n <SizeMinimizedLegendLabel>\r\n <SizeMinimizedLegendDown>{currentValues[0]?.title}</SizeMinimizedLegendDown>\r\n <SizeMinimizedLegendUp>{currentValues[currentValues.length - 1]?.title}</SizeMinimizedLegendUp>\r\n </SizeMinimizedLegendLabel>\r\n </SizeMinimizedLegend>\r\n <SizeMinimizedLegend>\r\n <SizeMinimizedLegendSymbol>\r\n <MapLegendItems parameter={parameter} isSize>\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n </SizeMinimizedLegendSymbol>\r\n <SizeMinimizedLegendLabel>\r\n <SizeMinimizedLegendUp>Другое</SizeMinimizedLegendUp>\r\n </SizeMinimizedLegendLabel>\r\n </SizeMinimizedLegend>\r\n </>\r\n ) : isStrokeWidth ? (\r\n <MapLegendItems parameter={parameter} isStrokeWidth>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n >\r\n {(!index || index === currentValues.length - 1) && value.title}\r\n </MapLegendItem>\r\n ))}\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n >\r\n Другое\r\n </MapLegendOther>\r\n </MapLegendItems>\r\n ) : (\r\n <MapLegendItems parameter={parameter}>\r\n <MapLegendItemsContainer>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n />\r\n ))}\r\n </MapLegendItemsContainer>\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n )}\r\n {typeof other?.parameterValue === \"string\" && (titleMax || titleMin) && (\r\n <MapLegendValues>\r\n <MapLegendValuesRange>\r\n <div>{titleMax}</div>\r\n <div>{titleMin}</div>\r\n </MapLegendValuesRange>\r\n <MapLegendValuesOther>-</MapLegendValuesOther>\r\n </MapLegendValues>\r\n )}\r\n </MinimizedLegendContainer>\r\n )\r\n}\r\n","import React from 'react';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Map as SMap } from '@evergis/sgis/es/Map';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\r\nimport { DrawingFinishEvent } from '@evergis/sgis/es/controls/Control';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\n\r\nimport { renderLabelSymbolType, MeasureProps } from './Measurer';\r\n\r\nimport { BaseMeasureToolCreator, BaseMeasureToolEditor } from '../../controls';\r\n\r\nimport { isPolylineLikePolygon } from '../../core';\r\n\r\nimport {\r\n measureAreaSymbol,\r\n measureLengthSymbol,\r\n measurePolygonSnapSymbol,\r\n} from '../../symbols';\r\n\r\ninterface MeasureToolProps extends Omit<MeasureProps, 'isActive'> {\r\n map: SMap;\r\n painter: DomPainter;\r\n}\r\n\r\nexport class MeasureTool extends React.Component<MeasureToolProps> {\r\n layer?: FeatureLayer;\r\n createControl?: BaseMeasureToolCreator;\r\n editorControl?: BaseMeasureToolEditor;\r\n\r\n componentDidMount(): void {\r\n const { map, painter, renderLabelSymbol } = this.props;\r\n\r\n this.layer = new FeatureLayer();\r\n this.initCreateMode(map, painter, renderLabelSymbol);\r\n this.initEditMode(map, painter, renderLabelSymbol);\r\n\r\n this.props.map.addLayer(this.layer);\r\n this.switchMode(true, false);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.layer && this.props.map.removeLayer(this.layer);\r\n this.switchMode(false, false);\r\n this.offEvents();\r\n this.clearProperties();\r\n }\r\n\r\n initCreateMode(\r\n map: SMap,\r\n painter: DomPainter,\r\n renderLabelSymbol: renderLabelSymbolType\r\n ): void {\r\n const { lengthSymbol, formatters, areaSymbol } = this.props;\r\n\r\n this.createControl = new BaseMeasureToolCreator(map, painter, {\r\n isActive: false,\r\n useTempLayer: true,\r\n symbol: lengthSymbol || measureLengthSymbol,\r\n areaSymbol,\r\n dblClickMinTime: 300,\r\n renderLabelSymbol,\r\n formatters: formatters,\r\n });\r\n // @ts-ignore\r\n this.createControl.on('drawingFinish', this.createFeature);\r\n this.createControl.on('cancel', this.cancelFeatureCreation);\r\n }\r\n\r\n initEditMode(\r\n map: SMap,\r\n painter: DomPainter,\r\n renderLabelSymbol: renderLabelSymbolType\r\n ): void {\r\n const { lengthSymbol, snapSymbol, formatters } = this.props;\r\n\r\n this.editorControl = new BaseMeasureToolEditor(map, painter, {\r\n isActive: false,\r\n activeLayer: this.layer,\r\n snappingSymbol: snapSymbol || measurePolygonSnapSymbol,\r\n symbol: lengthSymbol || measureLengthSymbol,\r\n renderLabelSymbol,\r\n formatters,\r\n });\r\n this.editorControl.featureDragAllowed = false;\r\n this.editorControl.on('remove', this.removeFeature);\r\n }\r\n\r\n componentDidUpdate({ formatters }: MeasureToolProps) {\r\n const { formatters: currentFormatters } = this.props;\r\n\r\n if (currentFormatters !== formatters && currentFormatters)\r\n if (this.editorControl) {\r\n this.editorControl.formatters = currentFormatters;\r\n this.editorControl.updateMeasureResult();\r\n }\r\n }\r\n\r\n offEvents(): void {\r\n if (this.createControl) {\r\n // @ts-ignore\r\n this.createControl.off('drawingFinish', this.createFeature);\r\n }\r\n\r\n this.editorControl && this.editorControl.off('remove', this.removeFeature);\r\n this.createControl &&\r\n this.createControl.off('cancel', this.cancelFeatureCreation);\r\n }\r\n\r\n clearProperties(): void {\r\n delete this.createControl;\r\n delete this.editorControl;\r\n delete this.layer;\r\n }\r\n\r\n switchMode(create: boolean, edit: boolean): void {\r\n if (this.createControl) {\r\n this.createControl.isActive = create;\r\n }\r\n\r\n if (this.editorControl) {\r\n this.editorControl.isActive = edit;\r\n }\r\n }\r\n\r\n getFeature(rings: [number, number][][]): Feature | Feature[] {\r\n const { lengthSymbol, areaSymbol, map } = this.props;\r\n let feature;\r\n\r\n if (isPolylineLikePolygon(rings, map.resolution)) {\r\n rings[0].shift();\r\n feature = new Polygon(rings, { crs: map.crs });\r\n feature.symbol = areaSymbol || measureAreaSymbol;\r\n } else {\r\n feature = new Polyline(rings, { crs: map.crs });\r\n feature.symbol = lengthSymbol || measureLengthSymbol;\r\n }\r\n\r\n return feature;\r\n }\r\n\r\n createFeature = (event: DrawingFinishEvent<Polyline>): void => {\r\n const feature = this.getFeature([...event.feature.rings]);\r\n\r\n this.layer && this.layer.add(feature);\r\n if (this.editorControl) {\r\n this.editorControl.activeFeature = feature as Poly;\r\n }\r\n this.switchMode(false, true);\r\n };\r\n\r\n removeFeature = (): void => {\r\n if (this.editorControl && this.editorControl.activeFeature) {\r\n this.layer && this.layer.remove(this.editorControl.activeFeature);\r\n }\r\n\r\n this.switchMode(true, false);\r\n };\r\n\r\n cancelFeatureCreation = (): void => {\r\n setTimeout(() => {\r\n this.switchMode(false, false);\r\n this.switchMode(true, false);\r\n }, 10);\r\n };\r\n\r\n render(): React.ReactElement {\r\n return <div style={{ display: 'none' }} />;\r\n }\r\n}\r\n","import React, { ReactElement } from 'react';\r\n\r\nimport { useMapContext } from '../../contexts';\r\nimport { MeasureToolFormatters } from '../../controls/MeasureToolFormatters';\r\nimport { MeasureTool } from './MeasureTool';\r\nimport { ShadowedPolySymbol, ShadowedPointSymbol } from '../../symbols';\r\n\r\nexport type renderLabelSymbolType = (props: {\r\n content: string;\r\n onClose?: VoidFunction;\r\n}) => ReactElement;\r\n\r\nexport type MeasureProps = {\r\n isActive: boolean;\r\n renderLabelSymbol: renderLabelSymbolType;\r\n formatters?: MeasureToolFormatters;\r\n snapSymbol?: ShadowedPointSymbol;\r\n lengthSymbol?: ShadowedPolySymbol;\r\n areaSymbol?: ShadowedPolySymbol;\r\n};\r\n\r\nexport const Measurer: React.FC<MeasureProps> = ({ isActive, ...props }) => {\r\n const { map, painter } = useMapContext();\r\n\r\n return isActive ? (\r\n <MeasureTool map={map} painter={painter} {...props} />\r\n ) : null;\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const ScaleRulerContainer = styled.div`\r\n height: 2rem;\r\n cursor: default;\r\n display: flex;\r\n align-items: flex-end;\r\n padding: 0 0.5rem 0.5rem;\r\n box-sizing: border-box;\r\n`;\r\n\r\ntype ScaleRulerBlockProps = {\r\n width: number;\r\n};\r\n\r\nexport const ScaleRulerBlock = styled.div<ScaleRulerBlockProps>`\r\n display: flex;\r\n align-items: flex-end;\r\n justify-content: center;\r\n width: ${({ width }) => `${width}px`};\r\n height: 0.25rem;\r\n border: 0.0625rem solid white;\r\n border-top: 0;\r\n`;\r\n\r\ntype TextContainerProps = {\r\n margin?: string;\r\n width?: string;\r\n buttonText?: boolean;\r\n alignEnd?: boolean;\r\n};\r\n\r\nexport const TextContainer = styled.div<TextContainerProps>`\r\n height: 2rem;\r\n display: flex;\r\n justify-content: center;\r\n align-items: ${({ alignEnd }) => (alignEnd ? 'flex-end' : 'center')};\r\n width: ${({ width }) => width || 'auto'};\r\n color: #fff;\r\n font-size: 1rem;\r\n cursor: default;\r\n padding: 0 0.5rem;\r\n`;\r\n","import React from 'react';\r\nimport { ScaleRulerBlock, ScaleRulerContainer, TextContainer } from './styled';\r\nimport { useMapView, useScale } from '../../hooks';\r\n\r\nexport const ScaleRuler: React.FC = () => {\r\n const { resolution } = useMapView();\r\n const { currentScale, width } = useScale({ resolution: resolution || 0 });\r\n\r\n return (\r\n <ScaleRulerContainer>\r\n <ScaleRulerBlock width={width}>\r\n <TextContainer alignEnd margin={'0'}>\r\n {currentScale >= 1000\r\n ? `${currentScale / 1000}km`\r\n : `${currentScale}m`}\r\n </TextContainer>\r\n </ScaleRulerBlock>\r\n </ScaleRulerContainer>\r\n );\r\n};\r\n","import React, { PropsWithChildren } from 'react';\r\n\r\nimport { MapControl, ZoomInBtn, ZoomOutBtn } from '../MapControls/styled';\r\n\r\nimport { useMapViewActions } from '../../hooks';\r\n\r\ntype ZoomProps = PropsWithChildren<{}>;\r\n\r\nexport const Zoom: React.FC<ZoomProps> = ({ children }) => {\r\n const { zoomIn, zoomOut } = useMapViewActions();\r\n\r\n return (\r\n <MapControl>\r\n <ZoomInBtn onClick={zoomIn} />\r\n <ZoomOutBtn onClick={zoomOut} />\r\n {children}\r\n </MapControl>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nimport { TextContainer } from './styled';\r\n\r\nimport { useMapLevel } from '../../hooks';\r\n\r\nexport const ZoomLevel: React.FC = () => {\r\n const level = useMapLevel();\r\n\r\n return (\r\n <TextContainer buttonText={true} width={'2rem'}>\r\n {level || 0}\r\n </TextContainer>\r\n );\r\n};\r\n","import styled, { css } from 'styled-components';\r\n\r\nimport { TooltipComponentProps, Placement } from './types';\r\n\r\nexport const TOOLTIP_PLACEMENTS: Placement[] = [\r\n 'top',\r\n 'right',\r\n 'left',\r\n 'bottom',\r\n];\r\n\r\nconst cornerBottom = (cornerSize: string) => css`\r\n &:before {\r\n left: 50%;\r\n transform: translate(-50%, 100%);\r\n bottom: 0;\r\n border-left: ${cornerSize} solid transparent;\r\n border-right: ${cornerSize} solid transparent;\r\n border-top: ${cornerSize} solid rgba(28, 33, 48, 0.8);\r\n }\r\n`;\r\n\r\nconst cornerLeft = (cornerSize: string) => css`\r\n &:before {\r\n transform: translate(-100%, -50%);\r\n left: 0;\r\n top: 50%;\r\n border-top: ${cornerSize} solid transparent;\r\n border-right: ${cornerSize} solid rgba(28, 33, 48, 0.8);\r\n border-bottom: ${cornerSize} solid transparent;\r\n }\r\n`;\r\n\r\nconst cornerRight = (cornerSize: string) => css`\r\n &:before {\r\n transform: translate(100%, -50%);\r\n right: 0;\r\n top: 50%;\r\n border-top: ${cornerSize} solid transparent;\r\n border-left: ${cornerSize} solid rgba(28, 33, 48, 0.8);\r\n border-bottom: ${cornerSize} solid transparent;\r\n }\r\n`;\r\n\r\nconst cornerTop = (cornerSize: string) => css`\r\n &:before {\r\n transform: translate(-50%, -100%);\r\n left: 50%;\r\n top: 0;\r\n border-left: ${cornerSize} solid transparent;\r\n border-right: ${cornerSize} solid transparent;\r\n border-bottom: ${cornerSize} solid rgba(28, 33, 48, 0.8);\r\n }\r\n`;\r\n\r\nconst top = (distance: string, cornerSize: string | null) => css`\r\n transform: translate(-50%, 0);\r\n left: -50%;\r\n bottom: ${distance};\r\n ${cornerSize && cornerBottom(cornerSize)}\r\n`;\r\n\r\nconst right = (distance: string, cornerSize: string | null) => css`\r\n transform: translate(0, -50%);\r\n top: -50%;\r\n left: ${distance};\r\n ${cornerSize && cornerLeft(cornerSize)}\r\n`;\r\n\r\nconst left = (distance: string, cornerSize: string | null) => css`\r\n transform: translate(0, -50%);\r\n top: -50%;\r\n right: ${distance};\r\n ${cornerSize && cornerRight(cornerSize)}\r\n`;\r\n\r\nconst bottom = (distance: string, cornerSize: string | null) => css`\r\n transform: translate(-50%, 0);\r\n left: -50%;\r\n top: ${distance};\r\n ${cornerSize && cornerTop(cornerSize)}\r\n`;\r\n\r\nexport const placementMixin = (\r\n placement: Placement = 'top',\r\n distance: string,\r\n cornerSize: string | null\r\n) => css`\r\n ${placement === 'top' && top(distance, cornerSize)}\r\n ${placement === 'right' && right(distance, cornerSize)}\r\n ${placement === 'left' && left(distance, cornerSize)}\r\n ${placement === 'bottom' && bottom(distance, cornerSize)}\r\n`;\r\n\r\nconst corner = css`\r\n &:before {\r\n content: '';\r\n width: 0;\r\n height: 0;\r\n position: absolute;\r\n }\r\n`;\r\n\r\nexport const TooltipComponent = styled.div<TooltipComponentProps>`\r\n position: absolute;\r\n z-index: 999;\r\n display: flex;\r\n font-size: 0.625rem;\r\n color: #fff;\r\n background-color: rgba(28, 33, 48, 0.8);\r\n padding: 0.4em 0.6em;\r\n border-radius: 2px;\r\n user-select: none;\r\n box-sizing: border-box;\r\n white-space: pre;\r\n ${({ placement, distance = '0.5rem', withArrow, cornerSize = '0.25rem' }) =>\r\n placementMixin(placement, distance, withArrow ? cornerSize : null)}\r\n ${({ withArrow }) => withArrow && corner}\r\n`;\r\n","import React, { createContext, useEffect } from 'react';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\n\r\nimport { TooltipComponent } from './styled';\r\nimport { ITooltip } from './types';\r\n\r\nimport { useTooltip } from '../../hooks';\r\n\r\n// TODO why???\r\nconst { Provider, Consumer } = createContext<Feature[]>([]);\r\n\r\n// TODO I just cant read that\r\nexport const Tooltip: React.FC<ITooltip> = ({\r\n features = [],\r\n map,\r\n center,\r\n component,\r\n zIndex,\r\n children,\r\n content,\r\n onEachFeature,\r\n clickMode,\r\n ...props\r\n}: ITooltip) => {\r\n const onTooltip = useTooltip(zIndex);\r\n\r\n useEffect(() => {\r\n (map ? [map] : features).forEach((feature: Feature | Map) => {\r\n const position =\r\n center && !(feature instanceof Map) && feature.bbox.center\r\n ? feature.bbox.center\r\n : undefined;\r\n\r\n onTooltip({\r\n feature,\r\n component:\r\n typeof onEachFeature === 'function'\r\n ? () => onEachFeature(feature)\r\n : () => <TooltipComponent {...props}>{content}</TooltipComponent>,\r\n position,\r\n clickMode,\r\n });\r\n });\r\n }, [\r\n content,\r\n clickMode,\r\n onEachFeature,\r\n onTooltip,\r\n map,\r\n center,\r\n features,\r\n component,\r\n props,\r\n ]);\r\n\r\n return (\r\n <Provider value={features}>\r\n {map ? children : children ? <Consumer>{children}</Consumer> : null}\r\n </Provider>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\n/** No operation element */\r\nexport const Noop = () => <div style={{ display: 'none' }}></div>;\r\n","import React, { FC, ReactElement, Fragment } from 'react';\r\n\r\nimport { useDraggableMarker } from '../../hooks';\r\n\r\nimport { DraggableMarkerProps } from './types';\r\n\r\nexport const DraggableMarker: FC<DraggableMarkerProps> = ({\r\n position,\r\n onChange,\r\n symbol,\r\n}): ReactElement => {\r\n useDraggableMarker({ position, onChange, symbol });\r\n\r\n return <Fragment />;\r\n};\r\n"],"names":["usePagination","length","current","setCurrent","useState","next","useCallback","value","prev","reset","BASE_URL","defaultApi","Api","url","evergisContext","createContext","EvergisProvider","api","children","useMemo","React","Provider","useEvergisContext","useContext","defaultMap","Map","defaultPainter","DomPainter","mapContext","map","painter","MapProvider","useMapContext","defaultLayer","FeatureLayer","defaultPopupLayer","tooltipContext","layer","popupLayer","TooltipProvider","useTooltipContext","LegendContext","LegendProvider","symbol","useLegendContext","evergisSelectContext","EvergisSelectProvider","layers","useEvergisSelectContext","useEventPoint","event","point","browserEvent","wrapper","x","y","getMouseOffset","pageX","touches","pageY","originalPoint","getPointFromPxPosition","useMapViewActions","getEventPoint","zoomTo","k","zoom","position","zoomIn","zoomOut","animateTo","resolution","extent","nextPosition","slice","xMax","xMin","yMax","yMin","bbox","Bbox","crs","show","zoomAround","changeZoomLevel","level","tileScheme","tileLevel","levels","find","zIndex","animateSetResolution","useZoomToFeature","feature","useEvergisCard","features","zoomToFeature","useEffect","numberWithSpaces","fractionDigits","delim","num","frac","toFixed","split","numWithSpaces","replace","join","matchPhone","phoneRegexp","isStringAsInn","match","innRegexp","test","isStringAsKpp","kppRegexp","isStringAsOgrn","ogrnRegexp","toString","isStringContainsDate","dateRegexp","isRequisiteNumbers","isStringAsPhone","isStringAsMail","isStringAsUrl","includes","isValidUrl","urlRegexp","urlKind","URL","_","mailHref","mail","phoneHref","urlHref","NO_CONTENT_VALUE","stringAttribute","type","urlAttribute","mailAttribute","phoneAttribute","convertStringAttribute","formatStringAttribute","phones","attributeValues","every","isNaN","formatDateTimeAttribute","formatIntAttribute","DOUBLE_FRACTIONS","formatDoubleAttribute","isNullOrUndefined","undefined","NO_CONTENT_ATTRIBUTE","formatAttributeValue","attribute","isRangeClass","Boolean","isUniqueClass","NULL_EXPRESSION","operation","ClassificationCondition","condition","conditionResult","ConditionInterpreter","expressions","Error","leftExpression","isUnique","console","warn","isRange","from","to","rightExpression","isFrom","TokenType","ArGr","ArEq","ArGre","ArLs","ArLse","PARAMETER_SEPARATOR","parameterToPaths","parameter","pathsToParameter","paths","isObject","Array","isArray","isParameterByAttribute","isCalculatedParameter","getParameterValue","defaultValue","symbolParameterWalker","valueModifier","firstKey","restKeys","symbolPart","goDeeper","setDefaultParameterValue","setParameterValue","path","applyParameterValue","symbolTypeGuard","isPointLabelSymbol","isPolygonLabelSymbol","isPolylineLabelSymbol","isLabelSymbol","isPointSymbol","isSquareSymbol","isMaskedImageSymbol","isStaticImageSymbol","isPolygonSymbol","isPolylineSymbol","isSimplePolylineSymbol","isPolylineSymbols","isCompositeSymbol","isRasterSymbol","isImageSymbol","isTwoDimensionalSymbol","isSizableSymbol","isStrokeStyledSymbol","isScalablePolylineSymbol","beginning","ending","stroke","isSimpleSymbol","isHatchBrush","isPatternBrush","isDashedBrush","isSolidBrush","isPolygonHasPatternBrush","fill","isPolygonHasHatchBrush","LineMiterKind","isMiterExist","miter","None","isFilledLineMitter","FilledCircle","FilledArrow","FilledSquare","isArrowLineMiter","Arrow","isSquareLineMiter","Square","isCircleLineMiter","Circle","isSimpleOffset","offset","isSymbolWithOffset","isStringParameterValue","parameterValue","isParameterValueSimple","isParameterValueSymbol","isStyle","toClassificationClass","title","uniqueValue","range","DEFAULT_EXTRAS","defaultTitle","toClassification","values","extras","reduce","classification","classificationCondition","classificationValue","push","attributeName","getClassifications","pathContext","Object","entries","classifications","skipHeight","skip","ClassificationManager","style","collectClassifications","predicate","callback","filter","initial","unClassify","flatSymbol","result","printRangeClass","index","isDouble","isDate","getRangeValues","SrId","CRS_MAP","WebMercator","webMercator","Geo","geo","Wgs84","wgs84","EllipticalMercator","ellipticalMercator","DEFAULT_SRID","DEFAULT_CRS","getCrs","srId","getFeatureAttributeType","attributeValue","Date","AttributeType","DateTime","String","Int64","Unknown","getLayerAttributes","layerDefinition","attributes","name","definition","getFeatureAttributes","getClassificationAttribute","attrNamePart","mergeAttributes","attributes1","attributes2","createCompositeSymbol","childSymbols","getChildSymbols","extractSymbol","label","raster","extractStyle","packStyle","ignoreLabel","styleDc","childStyle","EvergisStyle","classificationManager","some","minResolution","maxResolution","getHexColor","colorString","Color","PREVIEW_LIMITS","STROKE_WIDTH_MIN","STROKE_WIDTH_MAX","clamp","min","max","Math","SOLID_INTERVALS","solidStrokeStylePreset","intervals","strokeStylePresets","walkByNumbersGroup","numbers","walker","newNumbers","i","toIntervals","width","gap","toLineDash","round","getLineDash","brush","defineStrokeStylePreset","preset","uniqueStrokeWidths","presetInterval","unique","getDashStylePreset","dashStyle","ALPHA_NORMALIZER","sum","shouldFillMatrixCell","matrixSize","hatchAngle","center","PI","createEmptyMatrix","size","fillMatrix","matrix","filler","createFillBrushMatrix","hatchWidth","scalingFactor","createSymbolFillBrush","fillBrush","SGisBrushFill","originalSymbol","strokeColor","color","strokeWidth","lineDash","fillBackground","fillForeground","hatchColor","lineCap","_initialized","canvas","document","createElement","ctx","getContext","brushSize","foreground","background","height","j","srcA","a","dstA","alpha","red","r","green","g","blue","b","fillStyle","fillRect","_brush","Image","src","toDataURL","sBrushFill","SGisImageFill","pattern","sImageFill","SGisPolygonSymbol","fillColor","sPolygonSymbol","adaptMiterRings","rings","fromCrs","toCrs","projected","projectRings","simplifyCoordinates","ring","miterSizeCalcs","LineMiterRender","baseInfo","lastRing","firstRing","assign","anchorRings","anchorCrs","currentCrs","xMultiplier","miterAnchor","getAnchor","miterRings","createRings","projectedMiterRings","createRender","calcMiterSize","ArrowLineMiterRender","miterSize","isFilled","kind","PolyRender","enclosed","FillStyle","lineJoin","DEFAULT_FORMATTERS","polygon","formatPolygonMeasure","formatLength","COORD_FRACTION","DEFAULT_LABEL_POSITION","Infinity","BaseMeasureToolCreator","params","fire","renderLabelSymbol","formatters","areaSymbol","on","handlePointAdd","updateDistance","drawPointOnMouseMove","addTempLabel","setCursor","removeCoordLabel","removeTempLabel","removeMeasureLabel","removeTempPolygon","activeFeature","isPolylineLikePolygon","finishDrawing","DrawingFinishEvent","MouseEvent","projection","projectionTo","lat","long","addMeasureResultLabel","addCoordLabel","tempPolygon","_tempLayer","remove","polygonRings","shift","Polygon","measureAreaSymbol","hide","add","ringIndex","pointIndex","calcLength","content","polygonPreview","area","calcArea","measureResultLabel","tempLabel","LabelFeature","createLabelSymbol","renderLabel","coordLabel","onClose","cancel","cursor","PolylineControl","BaseMeasureToolEditor","isEnclosed","pointsCount","updateMeasureResult","measureResult","removeFeature","PolyEditor","metersToPixels","meters","zeroPoint","projectTo","maxWidthPoint","widthDistance","distance","pxK","polygonCircleFromPoint","diameter","coordinates","radius","endAngle","step","start","end","ang","cos","sin","isNumeric","number","parseFloat","isFinite","isParameterType","types","toLowerCase","CircleLineMiterRender","SquareLineMiterRender","getLineMiterRender","options","updateRingForRightMiter","isLastRing","reversedRing","reverse","nextCoordinates","abs","updateRingForLeftMiter","isFirstRing","newRing","prevCoordinates","updateRingsForMiter","copyRings","SGisPolylineSymbol","beginningSize","endingSize","renders","featureCopy","clone","beginningMiterRender","endingMiterRender","updatedRings","usageSize","render","getRender","unshift","sPolylineSymbol","LabelSymbol","component","node","renderDom","getNode","Component","ReactDOM","innerText","DynamicPointSymbol","defaultOffset","props","createShadowRender","shadowColor","shadowSize","shadowDiameter","getEditorPointRenderer","ShadowedPointSymbol","PointFeature","pxPosition","shadowRender","getShadow","pointArc","getPoint","_feature","getShadowArc","getPointArc","pointRender","PointSymbol","ShadowedPolySymbol","Poly","polyRender","getPolyRender","vertexRenders","getVertexRenders","concat","enclose","showVertex","vertexCoordinates","acc","curr","coord","vertexShadowSize","PolylineSymbol","polySymbolParams","measureSymbolParams","measureLengthSymbol","snapSymbolParams","measurePolygonSnapSymbol","SelectedPointSymbol","isSelected","selectedStrokeColor","selectedFillColor","SelectedPolySymbol","selectedStrokeWidth","selectedPoint","selectedPolyline","selectedPolygon","defaultPathStyles","SVGPoly","redrawFeatureNode","pathStyles","circle","className","appendToSvg","container","getRenderedCoordinates","centroid","setCirclePxRaius","innerHTML","svg","setSvg","append","__dynamicSymbolRender","DynamicRender","update","redraw","_setEventListeners","pxOffset","__lastBbox","__lastResolution","canProjectTo","newCoordinates","radiusOffset","dx","dy","left","top","miterLimit","dashOffset","svgRender","SvgRender","_setArcNode","_setPolyNode","svgElement","classList","querySelector","setAttribute","dynamicFeature","eventFlags","MouseEventFlags","svgNode","keys","mouseEvents","forEach","eventName","flag","listenDomEvent","Symbol","isSGisPointSymbol","StaticImageSymbol","SquareSymbol","MaskedImage","isSGisImageSymbol","isSGisPolygonSymbol","PolygonSymbol","BrushFill","ImageFill","isSGisPolylineSymbol","isSGisH3Symbol","H3Symbol","isSGisClusterSymbol","singleObjectSymbol","viewBoxSize","pointFeature","plain","lineFeature","Polyline","polygonFeature","h3gridFeature","H3Feature","lineLegendFeature","polygonLegendFeature","polygonMapLegendFeature","MAP_LEGEND_FEATURES","LEGEND_FEATURES","polyline","h3grid","MOCK_FEATURES","getSymbolRenders","featuresToRender","renderFunctionAsync","getMapLegendSymbolRenders","getLegendSymbolRenders","renderSymbolToCanvas","draw","deserializeSymbol","deserializeH3Symbol","deserializeSvgPointSymbol","deserializePointSymbol","deserializeSquareSymbol","deserializeMaskedImageSymbol","deserializeImagePointSymbol","deserializePolygonSymbol","deserializePolylineSymbol","cellSize","SPointSymbol","deserializePointSymbolParams","getOffsetParameterValue","deserializeSvgPointSymbolParams","data","angle","figure","deserializeColor","SSquareSymbol","anchorPoint","deserializeAnchor","imageSource","deserializeBase64","image","maskSource","imageMask","maskColor","maskedColor","SStaticImageSymbol","source","base","clampSymbol","centerAlignSymbol","adjustSymbol","EvergisFeature","id","displayName","geometry","layerName","layerAlias","sr","GeometryType","Point","Multipoint","MultiPoint","sGisFeature","evaluateCondition","evaluator","ConditionEvaluator","evaluate","getAttributeValue","attributeMeta","getAttributeNameFromCondition","getAttributeNameFromClassified","findFeatureValue","parameterValues","extractValuesAttribute","evaluateFeatureSymbol","calc","parameterName","newParameterValue","featureValue","findChildFeatureStyle","childStyles","findChildFeatureSymbol","featureStyle","getFeatureSymbol","EvergisLayer","service","evergisService","alias","titleAttribute","findFeatureLayer","evaluateFeature","featureLayer","OTHERS_TITLE","createLegendItem","renderTitle","skipDefaultValue","defaultLegendValue","legendValues","withDefault","reversedValues","isValidParameter","createStyleLegend","config","items","parameters","createValueTitle","formatArea","measure","perimiter","coords","firstPoint","lastPoint","softEquals","getScale","scale","scales","pow","useLegend","DEFAULT_LEGEND_CONFIG","useLayerLegend","styleProxy","useMapLegend","legend","LEGEND_SYMBOL_MAX_SIZE","useLegendValueSymbol","valueSymbol","sGisSymbol","e","DEFAULT_SYMBOL_SIZE","useSymbol","canvasRef","maxWidth","setCanvasSize","then","useCanvas","useRef","ref","Canvas","useMount","onMount","onUnmount","useProperty","deps","factory","destructor","propRef","newProp","useUpdate","onUpdate","shouldUpdate","useLayerOrder","insertLayer","useLayerVisibility","isDisplayed","useLayerOpacity","opacity","useEvergisDynamicLayer","dataFilterId","onLoadStart","onLoadEnd","EvergisDynamicLayer","indexOf","removeLayer","useEvergisTileLayer","sourceUrl","subDomains","EvergisTileLayer","useFeatureLayer","useMapBboxChange","onBboxChange","force","BboxChangeEvent","BboxChangeEndEvent","handleBboxChange","getMapState","off","useMapResize","onResize","handleMapResize","MapResize","useMapPick","geometryParams","setGeometryParams","evergisLayers","pick","sGisClickEvent","imageRectangle","getPxPosition","clickPoint","envelopes","collectLayerEnvelopes","extentSr","wkid","getLayerBboxCoors","_currentRender","isEvergisDynamicLayer","useMapState","dispatch","useReducer","mapStateReducer","mapState","useMapView","getLevel","useMapLevel","useMapWrapper","wrapperRef","byScale","useMaxMinScale","minScale","maxScale","currentPosition","currentResolution","updateMapResolution","newResolution","Number","MAX_VALUE","pow10","floor","d","useCorrectedResolution","segmentLength","useScale","minLength","correctedResolution","currentScale","useUpdateMapView","shouldUpdateMapState","shouldUpdatePosition","shouldUpdateResolution","useTooltip","targetFeatures","labelFeature","events","onClickMap","currentFeatureEvents","onMouseOver","onMouseMove","onMouseOut","onClick","hasListener","onSetLabelFeature","clickMode","onRemoveLabelFeature","doNotBubbleToMap","stopPropagation","has","tooltipParams","target","isMap","featureEvents","useClusterLayer","onChangeGrid","clusterSymbol","currentFeatures","gridClusterProvider","GridClusterProvider","clusterLayer","ClusterLayer","INIT_FEATURES","useEvergisSelect","onPick","onFeatures","mapPickResult","setFeatures","resetSelection","useCrs","none","useDraggableMarker","onChange","pointEditor","PointEditor","isActive","activeLayer","onMapClick","addLayer","hasMapClick","useMetersToPixels","useMetersToPixelsCb","useDebouncedCallback","interval","debounce","cb","useToggle","state","setState","toggle","CompoundIcon","styled","div","geometryType","icons","ClusterSymbol","MAX_SIZE","StyleSymbol","EvergisCardContainer","Icon","StickyHeader","CardHeader","CardTitle","CardControls","FeatureName","LayerName","CardPagination","PaginationDescription","CurrentFeatureIndex","CardAttributes","AttributeContainer","AttributeTitle","AttributeValueContainer","SimpleAttribute","ValueLink","MailValue","rel","href","PhoneValue","phone","UrlValue","AttributeValue","key","punycodeDecode","domains","punycode","toUnicode","error","EvergisCardAttribute","StyledCard","onAttributes","onStatistics","onFeatureChange","headerExtra","hideZoom","IconButton","EverCloudStatisticsIcon","EverCloudZoomtoIcon","EverCloudCloseIcon","EverCloudPlayPrevIcon","EverCloudPlayNextIcon","EvergisCard","renderCard","hookProps","cardProps","truthly","setSelected","toSgis","useSGisFeatures","currentIndex","EvergisSelectLayer","sGisFeatures","useTileLayer","maskUrl","tileLayerParams","TileLayer","defaultZIndex","EvergisSelect","LegendContainer","LegendSectionContainer","LegendSymbolTitle","p","LegendValueContainer","LegendSectionHeader","LegendSection","item","renderLegendTitle","hideTitle","InputContainer","InputField","input","SearchInput","EverCloudSearchIcon","LegendSymbol","LegendValue","maxSize","getNumberParam","param","getSymbolSize","Legend","renderCustomLegend","searchLayer","searchable","legendItem","legendValue","topLeft","css","topRight","bottomLeft","bottomRight","placementMixin","placement","mapControlBtnMixin","ZoomInBtn","ZoomOutBtn","SearchBtn","FullscreenBtn","MeasureBtn","MapControl","MapControls","vertical","Measure","Search","Fullscreen","MapLegendControl","MapLegendContainer","MapLegendHeader","MapLegendDescriptionContainer","MinimizedLegendContainer","MapLegendValueDescr","SizeLegendItemMixin","StrokeWidthLegendItemMixin","StrokeColorLegendItemMixin","MapLegendItem","isHidden","MapLegendOther","SizeLegendItemsMixin","StrokeWidthLegendItemsMixin","SizeMinimizedLegend","SizeMinimizedLegendSymbol","SizeMinimizedLegendLabel","SizeMinimizedLegendDown","SizeMinimizedLegendUp","SingleSizeLegendItemsMixin","SingleLegendItemsMixin","isSize","MapLegendItems","isStrokeWidth","isSingle","MapLegendItemsContainer","MapLegendValues","MapLegendValuesRange","MapLegendValuesOther","MapLegendExpandButton","MapLegend","MapLegendSymbol","MapLegendDescription","isStrokeColor","getValueFromLegendTitle","minOrMax","MinimizedLegend","hiddenLegends","currentValues","other","pop","titleMax","titleMin","checkIsHidden","hiddenCondition","MeasureTool","getFeature","editorControl","switchMode","setTimeout","initCreateMode","initEditMode","offEvents","clearProperties","lengthSymbol","createControl","useTempLayer","dblClickMinTime","createFeature","cancelFeatureCreation","snapSymbol","snappingSymbol","featureDragAllowed","currentFormatters","create","edit","display","Measurer","ScaleRulerContainer","ScaleRulerBlock","TextContainer","alignEnd","ScaleRuler","margin","Zoom","ZoomLevel","buttonText","cornerBottom","cornerSize","cornerLeft","cornerRight","cornerTop","right","bottom","corner","TooltipComponent","withArrow","Consumer","Tooltip","onEachFeature","onTooltip","Noop","DraggableMarker","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react.esm.js","sources":["../src/hooks/usePagination.ts","../src/contexts/EvergisContext.tsx","../src/contexts/MapContext.tsx","../src/contexts/TooltipContext.tsx","../src/contexts/LegendContext.tsx","../src/contexts/EvergisSelectContext.tsx","../src/hooks/useEventPoint.ts","../src/hooks/useMapViewActions.ts","../src/hooks/useZoomToFeature.ts","../src/hooks/useEvergisCard.ts","../src/utils/format.ts","../src/utils/url.ts","../src/core/attributes/format.ts","../src/core/classification/types.ts","../src/core/classification/ClassificationCondition.ts","../src/core/classification/parameter.ts","../src/utils/isObject.ts","../src/core/classification/parameterValue.ts","../src/core/style/types/utils.ts","../src/core/style/types/label.ts","../src/core/style/types/symbol.ts","../src/core/style/types/brush.ts","../src/core/style/types/miters.ts","../src/core/style/types/offset.ts","../src/core/style/types/parameterValue.ts","../src/core/style/types/style.ts","../src/core/classification/getClassifications.ts","../src/core/classification/ClassificationManager.ts","../src/core/classification/unClassify.ts","../src/core/classification/printClass.ts","../src/core/crs/index.ts","../src/core/attributes/utils.ts","../src/core/style/compositeSymbol.ts","../src/core/style/EvergisStyle.ts","../src/utils/color.ts","../src/symbols/previewLimits.ts","../src/utils/math.ts","../src/symbols/strokeStyle.ts","../src/symbols/Evergis/SGisBrushFill.ts","../src/symbols/Evergis/SGisImageFill.ts","../src/symbols/Evergis/SGisPolygonSymbol.ts","../src/symbols/LineMiters/LineMiterRender.ts","../src/symbols/LineMiters/ArrowLineMiterRender.ts","../src/controls/MeasureToolFormatters.ts","../src/controls/BaseMeasureToolCreator.ts","../src/controls/BaseMeasureToolEditor.ts","../src/utils/metersToPixels.ts","../src/utils/polygonCircleFromPoint.ts","../src/utils/isNumeric.ts","../src/utils/isParameterType.ts","../src/symbols/LineMiters/CircleLineMiterRender.ts","../src/symbols/LineMiters/SquareLineMiterRender.ts","../src/symbols/LineMiters/getLineMiterRender.ts","../src/symbols/LineMiters/updateRingsForMiter.ts","../src/symbols/Evergis/SGisPolylineSymbol.ts","../src/symbols/Label/LabelSymbol.tsx","../src/symbols/Label/createLabelSymbol.tsx","../src/symbols/Shadowed/getEditorPointRenderer.ts","../src/symbols/Shadowed/ShadowedPointSymbol.ts","../src/symbols/Shadowed/ShadowedPolySymbol.ts","../src/symbols/Selected/SelectedPointSymbol.ts","../src/symbols/Selected/SelectedPolySymbol.ts","../src/symbols/Selected/selectedSymbols.ts","../src/symbols/SVGPoly/index.ts","../src/symbols/guards.ts","../src/symbols/mockFeatures.ts","../src/symbols/getSymbolRenders.ts","../src/symbols/renderSymbolToCanvas.ts","../src/symbols/deserializeSymbol.ts","../src/symbols/adjustSymbol.ts","../src/core/feature/EvergisFeature.ts","../src/core/feature/evaluateCondition.ts","../src/core/feature/getFeatureSymbol.ts","../src/core/layer/EvergisLayer.ts","../src/core/legend/createLegendItem.ts","../src/core/legend/isValidParameter.ts","../src/core/legend/createStyleLegend.ts","../src/core/legend/createValueTitle.ts","../src/core/measurer.ts","../src/core/scale.ts","../src/hooks/useLegend/useLegend.ts","../src/hooks/useLegend/useLayerLegend.ts","../src/hooks/useLegend/useMapLegend.ts","../src/hooks/useLegend/useLegendValueSymbol.ts","../src/hooks/useSymbol.ts","../src/hooks/useCanvas.ts","../src/hooks/useMount.ts","../src/hooks/useProperty.ts","../src/hooks/useUpdate.ts","../src/hooks/useLayerOrder.ts","../src/hooks/useLayerVisibility.ts","../src/hooks/useLayerOpacity.ts","../src/hooks/useEvergisDynamicLayer.ts","../src/hooks/useEvergisTileLayer.ts","../src/hooks/useFeatureLayer.ts","../src/hooks/useMapBboxChange.ts","../src/hooks/useMapResize.ts","../src/hooks/useMapPick.ts","../src/hooks/useMapState.ts","../src/hooks/useMapView.ts","../src/hooks/useMapWrapper.ts","../src/hooks/useMaxMinScale.ts","../src/hooks/useScale.ts","../src/hooks/useUpdateMapView.ts","../src/hooks/useTooltip.ts","../src/hooks/useClusterLayer.ts","../src/hooks/useEvergisSelect.ts","../src/hooks/useCrs.ts","../src/hooks/useDraggableMarker.ts","../src/hooks/useMetersToPixels.ts","../src/hooks/useDebouncedCallback.ts","../src/hooks/useToggle.ts","../src/components/Symbol/Symbol.tsx","../src/components/Symbol/styled.ts","../src/components/Symbol/StyleSymbol.tsx","../src/components/EvergisCard/styled.ts","../src/components/EvergisCard/MailValue.tsx","../src/components/EvergisCard/PhoneValue.tsx","../src/components/EvergisCard/UrlValue.tsx","../src/components/EvergisCard/AttributeValue.tsx","../src/components/EvergisCard/EvergisCardAttribute.tsx","../src/components/EvergisCard/StyledCard.tsx","../src/components/EvergisCard/EvergisCard.tsx","../src/components/Layers/ClusterLayer.tsx","../src/components/Layers/EvergisDynamicLayer.tsx","../src/components/Layers/FeatureLayer.tsx","../src/components/Layers/useSGisFeatures.ts","../src/components/Layers/EvergisSelectLayer.tsx","../src/components/Layers/EvergisTileLayer.tsx","../src/hooks/useTileLayer.ts","../src/components/Layers/TileLayer.tsx","../src/components/EvergisSelect/EvergisSelect.tsx","../src/components/Legend/styled.ts","../src/components/Legend/LegendSection.tsx","../src/components/SearchInput/styled.ts","../src/components/SearchInput/SearchInput.tsx","../src/components/Legend/LegendSymbol.tsx","../src/components/Legend/LegendValue.tsx","../src/components/Legend/getSymbolSize.ts","../src/components/Legend/Legend.tsx","../src/components/Map/Map.tsx","../src/ui/mixins/placementMixin.ts","../src/components/MapControls/styled.ts","../src/components/MapControls/Measure.tsx","../src/components/MapControls/Search.tsx","../src/components/MapControls/Fullscreen.tsx","../src/components/MapLegend/styled.ts","../src/components/MapLegend/MapLegend.tsx","../src/components/MapLegend/MapLegendSymbol.tsx","../src/components/MapLegend/MapLegendDescription.tsx","../src/components/MapLegend/MinimizedLegend.tsx","../src/components/Measurer/MeasureTool.tsx","../src/components/Measurer/Measurer.tsx","../src/components/ScaleControl/styled.ts","../src/components/ScaleControl/ScaleRuler.tsx","../src/components/ScaleControl/Zoom.tsx","../src/components/ScaleControl/ZoomLevel.tsx","../src/components/Tooltip/styled.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Noop/index.tsx","../src/components/DraggableMarker/DraggableMarker.tsx"],"sourcesContent":["import { useCallback, useState } from 'react';\r\n\r\ntype Pagination = [\r\n number,\r\n { prev: () => void; next: () => void; reset: () => void }\r\n];\r\n\r\nexport const usePagination = (length: number): Pagination => {\r\n const [current, setCurrent] = useState(0);\r\n\r\n const next = useCallback(\r\n () => setCurrent(value => (value < length - 1 ? value + 1 : value)),\r\n [length, setCurrent]\r\n );\r\n\r\n const prev = useCallback(\r\n () => setCurrent(value => (value === 0 ? value : value - 1)),\r\n [setCurrent]\r\n );\r\n\r\n const reset = useCallback(() => setCurrent(0), [setCurrent]);\r\n\r\n return [current, { prev, next, reset }];\r\n};\r\n","import React, { createContext, useContext, useMemo } from 'react';\r\nimport { Api } from '@evergis/api';\r\n\r\nconst BASE_URL = '/';\r\n\r\nconst defaultApi = new Api({\r\n url: BASE_URL,\r\n});\r\n\r\nconst evergisContext = createContext<Api>(defaultApi);\r\n\r\ntype EvergisProviderProps = {\r\n api?: Api;\r\n};\r\n\r\nexport const EvergisProvider: React.FC<EvergisProviderProps> = ({\r\n api,\r\n children,\r\n}) => {\r\n const value = useMemo(() => api || defaultApi, [api]);\r\n return (\r\n <evergisContext.Provider value={value}>{children}</evergisContext.Provider>\r\n );\r\n};\r\n\r\nexport const useEvergisContext = () => useContext(evergisContext);\r\n","import React, { createContext, useContext, useMemo } from 'react';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\n\r\ntype MapContext = {\r\n map: Map;\r\n painter: DomPainter;\r\n};\r\n\r\nconst defaultMap = new Map();\r\nconst defaultPainter = new DomPainter(defaultMap);\r\n\r\nconst mapContext = createContext<MapContext>({\r\n map: defaultMap,\r\n painter: defaultPainter,\r\n});\r\n\r\ntype MapProviderProps = {\r\n map?: Map;\r\n painter?: DomPainter;\r\n};\r\n\r\nexport const MapProvider: React.FC<MapProviderProps> = ({\r\n map,\r\n painter,\r\n children,\r\n}) => {\r\n const value = useMemo(\r\n () => ({\r\n map: map || defaultMap,\r\n painter: painter || (map ? new DomPainter(map) : defaultPainter),\r\n }),\r\n [map, painter]\r\n );\r\n return <mapContext.Provider value={value}>{children}</mapContext.Provider>;\r\n};\r\n\r\nexport const useMapContext = () => useContext(mapContext);\r\n","import React, { createContext, useContext, useMemo } from 'react';\r\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\r\n\r\ntype TooltipContext = {\r\n layer: FeatureLayer;\r\n popupLayer: FeatureLayer;\r\n};\r\n\r\nconst defaultLayer = new FeatureLayer();\r\n\r\nconst defaultPopupLayer = new FeatureLayer();\r\n\r\nconst tooltipContext = createContext<TooltipContext>({\r\n layer: defaultLayer,\r\n popupLayer: defaultPopupLayer,\r\n});\r\n\r\ntype TooltipProviderProps = {\r\n layer?: FeatureLayer;\r\n popupLayer?: FeatureLayer;\r\n zIndex?: number;\r\n};\r\n\r\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\r\n layer,\r\n popupLayer,\r\n children,\r\n}) => {\r\n const value = useMemo(\r\n () => ({\r\n layer: layer || defaultLayer,\r\n popupLayer: popupLayer || defaultPopupLayer,\r\n }),\r\n [layer, popupLayer]\r\n );\r\n\r\n return (\r\n <tooltipContext.Provider value={value}>{children}</tooltipContext.Provider>\r\n );\r\n};\r\n\r\nexport const useTooltipContext = () => useContext(tooltipContext);\r\n","import React, { createContext, useContext } from 'react';\r\nimport { StyleSymbolType } from '../core/style/types/symbol';\r\n\r\nconst LegendContext = createContext<StyleSymbolType | null>(null);\r\n\r\ntype LegendProviderProps = {\r\n symbol?: StyleSymbolType;\r\n};\r\n\r\nexport const LegendProvider: React.FC<LegendProviderProps> = ({\r\n symbol,\r\n children,\r\n}) => {\r\n return (\r\n <LegendContext.Provider value={symbol || null}>\r\n {children}\r\n </LegendContext.Provider>\r\n );\r\n};\r\n\r\nexport const useLegendContext = () => useContext(LegendContext);\r\n","import React, { createContext, useContext } from 'react';\r\nimport { EvergisLayer } from '../core/layer/EvergisLayer';\r\n\r\nconst evergisSelectContext = createContext<EvergisLayer[]>([]);\r\n\r\ntype EvergisSelectProviderProps = {\r\n layers: EvergisLayer[];\r\n};\r\n\r\nexport const EvergisSelectProvider: React.FC<EvergisSelectProviderProps> = ({\r\n layers,\r\n children,\r\n}) => (\r\n <evergisSelectContext.Provider value={layers}>\r\n {children}\r\n </evergisSelectContext.Provider>\r\n);\r\nexport const useEvergisSelectContext = () => useContext(evergisSelectContext);\r\n","import { useCallback } from 'react';\r\nimport { getMouseOffset } from '@evergis/sgis/es/utils/domEvent';\r\nimport { sGisMouseEvent } from '@evergis/sgis/es/commonEvents';\r\nimport { IPoint } from '@evergis/sgis/es/Point';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport const useEventPoint = () => {\r\n const { painter } = useMapContext();\r\n\r\n return useCallback(\r\n (event: sGisMouseEvent | TouchEvent | MouseEvent): IPoint => {\r\n if ('point' in event) {\r\n return event.point;\r\n }\r\n\r\n const browserEvent =\r\n 'browserEvent' in event ? event['browserEvent'] : event;\r\n\r\n const wrapper = painter.wrapper;\r\n const { x, y } = getMouseOffset(\r\n wrapper,\r\n 'touches' in browserEvent\r\n ? {\r\n pageX: browserEvent.touches[0].pageX,\r\n pageY: browserEvent.touches[0].pageY,\r\n }\r\n : browserEvent\r\n );\r\n const originalPoint = painter.getPointFromPxPosition(x, y);\r\n\r\n return originalPoint;\r\n },\r\n [painter]\r\n );\r\n};\r\n","import { useCallback } from 'react';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Bbox } from '@evergis/sgis/es/Bbox';\r\nimport { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\r\n\r\nimport { useEventPoint } from '../hooks/useEventPoint';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapViewActions() {\r\n const { map, painter } = useMapContext();\r\n const getEventPoint = useEventPoint();\r\n\r\n const zoomTo = useCallback(\r\n (k: number) => {\r\n map.zoom(k, map.position);\r\n },\r\n [map]\r\n );\r\n\r\n const zoomIn = useCallback(() => zoomTo(1), [zoomTo]);\r\n const zoomOut = useCallback(() => zoomTo(-1), [zoomTo]);\r\n\r\n const animateTo = useCallback(\r\n ({ position, resolution, extent }: AnimateToParams) => {\r\n if (position || resolution) {\r\n const nextPosition = position\r\n ? (position.slice(0) as Coordinates)\r\n : map.position;\r\n map.animateTo(nextPosition, resolution || map.resolution);\r\n }\r\n\r\n if (extent) {\r\n const { xMax, xMin, yMax, yMin } = extent;\r\n const bbox = new Bbox([xMin, yMax], [xMax, yMin], map.crs);\r\n painter && painter.show(bbox, true);\r\n }\r\n },\r\n [map, painter]\r\n );\r\n\r\n const zoomAround = useCallback(\r\n (event: sGisClickEvent) => {\r\n map.zoom(1, getEventPoint(event));\r\n },\r\n [getEventPoint, map]\r\n );\r\n\r\n const changeZoomLevel = useCallback(\r\n (level: number) => {\r\n const { tileScheme } = map;\r\n let tileLevel = tileScheme.levels.find(({ zIndex }) => zIndex === level);\r\n const resolution = tileLevel ? tileLevel.resolution : map.resolution;\r\n\r\n map.animateSetResolution(resolution, map.position);\r\n },\r\n [map]\r\n );\r\n\r\n return {\r\n zoomTo,\r\n zoomIn,\r\n zoomOut,\r\n zoomAround,\r\n animateTo,\r\n changeZoomLevel,\r\n };\r\n}\r\n\r\ntype AnimateToParams = {\r\n position?: Coordinates;\r\n resolution?: number;\r\n extent?: { xMax: number; yMax: number; xMin: number; yMin: number };\r\n};\r\n","import { useCallback } from 'react';\r\n\r\nimport { useMapViewActions } from './useMapViewActions';\r\n\r\nimport { EvergisFeature } from '../core';\r\n\r\nexport const useZoomToFeature = () => {\r\n const { animateTo } = useMapViewActions();\r\n\r\n return useCallback(\r\n (feature: EvergisFeature) => {\r\n const extent = feature.extent();\r\n\r\n if (extent) {\r\n animateTo({ extent });\r\n }\r\n },\r\n [animateTo]\r\n );\r\n};\r\n","import { useCallback, useEffect } from 'react';\r\n\r\nimport { usePagination } from './usePagination';\r\nimport { useZoomToFeature } from './useZoomToFeature';\r\n\r\nimport { EvergisFeature } from '../core';\r\n\r\nexport type UseEvergisCard = {\r\n feature: EvergisFeature;\r\n current: number;\r\n prev: () => void;\r\n next: () => void;\r\n zoom: () => void;\r\n};\r\n\r\nexport const useEvergisCard = (features: EvergisFeature[]): UseEvergisCard => {\r\n const [current, { prev, next, reset }] = usePagination(features.length);\r\n\r\n const feature = features[current];\r\n\r\n const zoomToFeature = useZoomToFeature();\r\n\r\n const zoom = useCallback(() => zoomToFeature(feature), [\r\n zoomToFeature,\r\n feature,\r\n ]);\r\n\r\n useEffect(() => {\r\n reset();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [features.length]);\r\n\r\n return { feature, current, prev, next, zoom };\r\n};\r\n","export function numberWithSpaces(\r\n x: number,\r\n fractionDigits = 2,\r\n delim: ',' | '.' | '' = ','\r\n): string {\r\n const [num, frac] = x.toFixed(fractionDigits).split('.');\r\n const numWithSpaces = num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\r\n\r\n return [numWithSpaces, frac].join(delim);\r\n}\r\n","export function matchPhone(value: string) {\r\n const phoneRegexp = /((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/g;\r\n\r\n return !isStringAsInn(value) && value.match(phoneRegexp);\r\n}\r\n\r\nexport function isStringAsInn(value: string) {\r\n const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;\r\n\r\n return innRegexp.test(value);\r\n}\r\n\r\nexport function isStringAsKpp(value: string) {\r\n const kppRegexp = /^(([0-9]{9}))$/;\r\n\r\n return kppRegexp.test(value);\r\n}\r\n\r\nexport function isStringAsOgrn(value: string) {\r\n const ogrnRegexp = /^([0-9]{13})?$/;\r\n\r\n return ogrnRegexp.test((+value).toString());\r\n}\r\n\r\nexport function isStringContainsDate(value: string) {\r\n const dateRegexp = /\\d{4}(-|\\/)\\d{2}(-|\\/)\\d{2}/g;\r\n return dateRegexp.test(value);\r\n}\r\n\r\nexport function isRequisiteNumbers(value: string) {\r\n return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);\r\n}\r\n\r\nexport function isStringAsPhone(value: string) {\r\n const phoneRegexp = /^((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/;\r\n\r\n return (\r\n !isRequisiteNumbers(value) &&\r\n !isStringContainsDate(value) &&\r\n phoneRegexp.test(value)\r\n );\r\n}\r\n\r\nexport function isStringAsMail(value: string) {\r\n return isStringAsUrl(value) && value.includes('@');\r\n}\r\n\r\nexport function isStringAsUrl(value: string) {\r\n if (isValidUrl(value)) {\r\n return true;\r\n }\r\n\r\n const urlRegexp = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;\r\n\r\n const urlKind = value.match(urlRegexp);\r\n\r\n return urlKind !== null;\r\n}\r\n\r\nexport function isValidUrl(value: string) {\r\n try {\r\n new URL(value);\r\n } catch (_) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport const mailHref = (mail: string) => `mailto:${mail}`;\r\n\r\nexport const phoneHref = (mail: string) => `tel:${mail}`;\r\n\r\nexport const urlHref = (url: string) => (isValidUrl(url) ? url : `//${url}`);\r\n","import { AttributeValue, AttributeValueType, FeatureAttribute } from './types';\r\n\r\nimport { numberWithSpaces } from '../../utils/format';\r\nimport {\r\n isStringAsMail,\r\n isStringAsPhone,\r\n isStringAsUrl,\r\n matchPhone,\r\n isRequisiteNumbers,\r\n isStringAsOgrn,\r\n isStringContainsDate,\r\n} from '../../utils/url';\r\n\r\nexport const NO_CONTENT_VALUE = '—';\r\n\r\nconst stringAttribute = (value: string) => ({\r\n type: AttributeValueType.String,\r\n value,\r\n});\r\n\r\nconst urlAttribute = (value: string) => ({\r\n type: AttributeValueType.Url,\r\n value,\r\n});\r\n\r\nconst mailAttribute = (value: string) => ({\r\n type: AttributeValueType.Mail,\r\n value,\r\n});\r\n\r\nconst phoneAttribute = (value: string) => ({\r\n type: AttributeValueType.Phone,\r\n value,\r\n});\r\n\r\nconst convertStringAttribute = (value: string) => {\r\n if (isStringAsMail(value)) {\r\n return mailAttribute(value);\r\n }\r\n\r\n if (isStringAsUrl(value)) {\r\n return urlAttribute(value);\r\n }\r\n\r\n if (isStringAsPhone(value)) {\r\n return phoneAttribute(value);\r\n }\r\n\r\n return stringAttribute(value);\r\n};\r\n\r\nconst formatStringAttribute = (value: string): AttributeValue[] => {\r\n const phones = matchPhone(value);\r\n\r\n if (\r\n !isRequisiteNumbers(value) &&\r\n !isStringContainsDate(value) &&\r\n phones &&\r\n phones.length\r\n ) {\r\n return phones.map(phoneAttribute);\r\n }\r\n\r\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\r\n\r\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\r\n return [\r\n stringAttribute(\r\n attributeValues\r\n .map(({ value }) =>\r\n isNaN(+value) || isRequisiteNumbers(value)\r\n ? isStringAsOgrn(value)\r\n ? +value\r\n : value\r\n : numberWithSpaces(+value, 0, '')\r\n )\r\n .join(' ')\r\n ),\r\n ];\r\n }\r\n\r\n return attributeValues;\r\n};\r\n\r\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\r\n stringAttribute(value.toString());\r\n\r\nconst formatIntAttribute = (value: number): AttributeValue =>\r\n stringAttribute(numberWithSpaces(value, 0, ''));\r\n\r\nconst DOUBLE_FRACTIONS = 2;\r\n\r\nconst formatDoubleAttribute = (value: number): AttributeValue =>\r\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\r\n\r\nconst isNullOrUndefined = <Value>(\r\n value: Value | null | undefined\r\n): value is null | undefined => value === null || value === undefined;\r\n\r\nconst NO_CONTENT_ATTRIBUTE = {\r\n type: AttributeValueType.String,\r\n value: NO_CONTENT_VALUE,\r\n};\r\n\r\nexport const formatAttributeValue = (\r\n attribute: FeatureAttribute\r\n): AttributeValue[] => {\r\n if (isNullOrUndefined(attribute.value)) {\r\n return [NO_CONTENT_ATTRIBUTE];\r\n }\r\n\r\n switch (attribute.type) {\r\n case 'String':\r\n return formatStringAttribute(attribute.value as string);\r\n case 'DateTime':\r\n return [formatDateTimeAttribute(attribute.value as Date)];\r\n case 'Int32':\r\n case 'Int64':\r\n return [formatIntAttribute(attribute.value as number)];\r\n case 'Double':\r\n return [formatDoubleAttribute(attribute.value as number)];\r\n default:\r\n return [NO_CONTENT_ATTRIBUTE];\r\n }\r\n};\r\n","import { ParameterValue, ParameterValueWithSymbol } from '../style';\r\n\r\nimport { ClassificationAttribute } from '../attributes';\r\n\r\nexport type NestedClassificationParameters =\r\n | 'fill.color'\r\n | 'fill.hatchColor'\r\n | 'stroke.width'\r\n | 'stroke.color'\r\n | 'background.fillColor'\r\n | 'background.strokeColor'\r\n | 'background.strokeWidth'\r\n | 'figure.fillColor';\r\n\r\nexport type SimpleClassificationParameters =\r\n | 'fillColor'\r\n | 'strokeColor'\r\n | 'strokeWidth'\r\n | 'size'\r\n | 'symbol'\r\n | 'angle'\r\n | 'maskedColor';\r\n\r\nexport type ClassificationParameter =\r\n | NestedClassificationParameters\r\n | SimpleClassificationParameters;\r\n\r\nexport type ClassificationParameterExtended =\r\n | ClassificationParameter\r\n | 'width'\r\n | 'height';\r\n\r\nexport interface ClassBase {\r\n title: string | null;\r\n parameterValue: ParameterValueWithSymbol;\r\n attribute?: ClassificationAttribute;\r\n}\r\n\r\nexport type UniqueClass = ClassBase & {\r\n uniqueValue: string;\r\n};\r\n\r\nexport type RangeClass = ClassBase & {\r\n from: number | string | null;\r\n to: number | string | null;\r\n};\r\n\r\nexport type ClassificationClass = UniqueClass | RangeClass;\r\nexport type ClassificationValues = ClassificationClass[];\r\n\r\nexport const enum ClassificationType {\r\n Range,\r\n Unique,\r\n}\r\n\r\nexport interface Classification<\r\n Type extends ClassificationType = ClassificationType,\r\n Value extends ClassificationClass = ClassificationClass\r\n> {\r\n parameter?: ClassificationParameterExtended;\r\n attribute?: string;\r\n type: Type;\r\n values: Value[];\r\n}\r\n\r\nexport type RangeClassification = Classification<\r\n ClassificationType.Range,\r\n RangeClass\r\n>;\r\n\r\nexport type UniqueClassification = Classification<\r\n ClassificationType.Unique,\r\n UniqueClass\r\n>;\r\n\r\nexport interface ClassificationExtras {\r\n defaultTitle: string;\r\n defaultValue: ParameterValue;\r\n}\r\n\r\nexport type ExtendedClassification<\r\n Type extends ClassificationType = ClassificationType,\r\n Value extends ClassificationClass = ClassificationClass\r\n> = Classification<Type, Value> & ClassificationExtras;\r\n\r\nexport function isRangeClass(value: ClassificationClass): value is RangeClass {\r\n return Boolean(value && 'from' in value);\r\n}\r\n\r\nexport function isUniqueClass(\r\n value: ClassificationClass\r\n): value is UniqueClass {\r\n return Boolean(value && 'uniqueValue' in value);\r\n}\r\n","import {\r\n ConditionInterpreter,\r\n Expression,\r\n TokenType,\r\n} from '@evergis/condition';\r\n\r\nimport { ClassificationType } from './types';\r\n\r\nconst NULL_EXPRESSION: Expression = {\r\n // @ts-ignore TODO\r\n attribute: null,\r\n // @ts-ignore TODO\r\n operation: null,\r\n value: null,\r\n};\r\n\r\nexport class ClassificationCondition {\r\n private readonly condition: string;\r\n private readonly expressions: Expression[] = [];\r\n\r\n constructor(condition: string) {\r\n this.condition = condition;\r\n const conditionResult = new ConditionInterpreter(condition).value;\r\n\r\n this.expressions =\r\n conditionResult instanceof Error ? [] : conditionResult.expressions;\r\n }\r\n\r\n public get attributeName() {\r\n return this.leftExpression.attribute;\r\n }\r\n\r\n public get uniqueValue() {\r\n if (this.isUnique()) {\r\n const { value } = this.leftExpression;\r\n\r\n return typeof value === 'string' ? value : '';\r\n }\r\n\r\n console.warn(`Trying to get unique from range condition ${this.condition}`);\r\n\r\n return '';\r\n }\r\n\r\n public get range(): [number, number] {\r\n if (!this.isRange()) {\r\n console.warn(\r\n `Trying to get range from unique condition ${this.condition}`\r\n );\r\n\r\n return [0, 0];\r\n }\r\n\r\n if (this.expressions.length === 2) {\r\n const { value: from } = this.leftExpression;\r\n const { value: to } = this.rightExpression;\r\n\r\n return [from, to] as [number, number];\r\n }\r\n\r\n if (this.expressions.length === 1) {\r\n const { operation, value } = this.leftExpression;\r\n const isFrom = operation === TokenType.ArGr;\r\n\r\n return [isFrom ? value : null, isFrom ? null : value] as [number, number];\r\n }\r\n\r\n return [0, 0];\r\n }\r\n\r\n public get type(): ClassificationType {\r\n return this.isUnique()\r\n ? ClassificationType.Unique\r\n : ClassificationType.Range;\r\n }\r\n\r\n public isUnique() {\r\n return this.leftExpression.operation === TokenType.ArEq;\r\n }\r\n\r\n public isRange() {\r\n return [\r\n TokenType.ArGr,\r\n TokenType.ArGre,\r\n TokenType.ArLs,\r\n TokenType.ArLse,\r\n ].includes(this.leftExpression.operation);\r\n }\r\n\r\n public toString() {\r\n return this.condition;\r\n }\r\n\r\n private get leftExpression(): Expression {\r\n return this.expressions.length > 0 ? this.expressions[0] : NULL_EXPRESSION;\r\n }\r\n\r\n private get rightExpression(): Expression {\r\n return this.expressions.length > 1 ? this.expressions[1] : NULL_EXPRESSION;\r\n }\r\n}\r\n","import { ClassificationParameterExtended } from './types';\r\n\r\nexport const PARAMETER_SEPARATOR = '.';\r\n\r\nexport const parameterToPaths = (\r\n parameter: ClassificationParameterExtended\r\n): ClassificationParameterExtended[] =>\r\n parameter.split(PARAMETER_SEPARATOR) as ClassificationParameterExtended[];\r\n\r\nexport const pathsToParameter = (\r\n paths: ClassificationParameterExtended[]\r\n): ClassificationParameterExtended =>\r\n paths.join(PARAMETER_SEPARATOR) as ClassificationParameterExtended;\r\n","export function isObject<T>(value: T | object): value is object {\r\n return typeof value === 'object' && value !== null && !Array.isArray(value);\r\n}\r\n","import { parameterToPaths } from './parameter';\r\nimport { ClassificationParameterExtended } from './types';\r\n\r\nimport {\r\n CalculatedAble,\r\n CalculatedParameter,\r\n ClassifyAble,\r\n ParameterByAttribute,\r\n ParameterValue,\r\n StyleSymbolType,\r\n UnidentifiedParameterValue,\r\n} from '../style';\r\n\r\nimport { isObject } from '../../utils/isObject';\r\n\r\ntype ParameterValueModifier = (\r\n parameterValue: ClassifyAble<ParameterValue>\r\n) => ClassifyAble<ParameterValue> | void;\r\n\r\nexport const isParameterByAttribute = (\r\n value: UnidentifiedParameterValue\r\n): value is ParameterByAttribute<ParameterValue> =>\r\n Boolean(isObject(value) && value.type && value.type === 'byAttribute');\r\n\r\nexport const isCalculatedParameter = (\r\n value: UnidentifiedParameterValue\r\n): value is CalculatedParameter<ParameterValue> =>\r\n Boolean(isObject(value) && value.type && value.type === 'calculated');\r\n\r\nexport const getParameterValue = <Value extends ParameterValue>(\r\n value: ClassifyAble<Value> | CalculatedAble<Value>\r\n): Value => {\r\n if (isParameterByAttribute(value) || isCalculatedParameter(value)) {\r\n return value.defaultValue;\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport const symbolParameterWalker = (\r\n valueModifier: ParameterValueModifier\r\n) => <S extends StyleSymbolType>(\r\n symbol: S,\r\n parameter: ClassificationParameterExtended | ClassificationParameterExtended[]\r\n): S => {\r\n const paths = Array.isArray(parameter)\r\n ? parameter\r\n : parameterToPaths(parameter);\r\n const [firstKey, ...restKeys] = paths;\r\n\r\n // @ts-ignore\r\n const symbolPart = symbol[firstKey];\r\n\r\n if (restKeys.length) {\r\n const goDeeper = symbolParameterWalker(valueModifier);\r\n\r\n return {\r\n ...symbol,\r\n [firstKey]: goDeeper(symbolPart, restKeys) || symbolPart,\r\n };\r\n }\r\n\r\n return {\r\n ...symbol,\r\n [firstKey]: valueModifier(symbolPart) || symbolPart,\r\n };\r\n};\r\n\r\nexport const setDefaultParameterValue = symbolParameterWalker(\r\n getParameterValue\r\n);\r\n\r\nexport const setParameterValue = <S extends StyleSymbolType>(\r\n symbol: S,\r\n path: ClassificationParameterExtended,\r\n value: ClassifyAble<ParameterValue>\r\n): S => symbolParameterWalker(() => value)(symbol, path);\r\n\r\nexport function applyParameterValue(\r\n symbol: StyleSymbolType,\r\n path: ClassificationParameterExtended,\r\n value: ClassifyAble<ParameterValue>\r\n) {\r\n if (path === 'symbol') {\r\n return value as StyleSymbolType;\r\n }\r\n\r\n return setParameterValue(symbol, path, value);\r\n}\r\n","import { ParameterDcColor, ParameterDcDouble } from '@evergis/api';\r\n\r\nimport { CalculatedAble, ClassifyAble } from './parameterValue';\r\nimport { Offset } from './offset';\r\nimport { LineMiterKind, LineMiterSize } from './miters';\r\nimport { StyleSymbolType } from './symbol';\r\nimport { FillBrushType, StrokeBrushType, TextBackgroundType } from './brush';\r\n\r\ntype ToClientSymbolField<\r\n F,\r\n IsClassifyable extends boolean\r\n> = F extends ParameterDcDouble\r\n ? IsClassifyable extends true\r\n ? ClassifyAble<number>\r\n : number\r\n : F extends ParameterDcColor\r\n ? IsClassifyable extends true\r\n ? ClassifyAble<string>\r\n : string\r\n : F;\r\n\r\ntype ExtraClientSymbolFields = {\r\n offset: Offset;\r\n /* TODO: DC has other type */\r\n fontWeight: number;\r\n childSymbols: StyleSymbolType[];\r\n stroke: StrokeBrushType;\r\n fill: FillBrushType;\r\n textBackground: TextBackgroundType;\r\n beginning: null | LineMiterKind;\r\n beginningSize: LineMiterSize;\r\n ending: null | LineMiterKind;\r\n endingSize: LineMiterSize;\r\n angle: CalculatedAble<number>;\r\n};\r\n\r\nexport type ClientSymbol<\r\n SymbolType,\r\n SymbolDcType,\r\n NonClassifiedFields extends keyof SymbolDcType = never\r\n> = {\r\n [K in keyof SymbolDcType]: K extends 'type'\r\n ? SymbolType\r\n : K extends keyof ExtraClientSymbolFields\r\n ? ExtraClientSymbolFields[K]\r\n : ToClientSymbolField<\r\n SymbolDcType[K],\r\n K extends NonClassifiedFields ? false : true\r\n >;\r\n};\r\n\r\nexport const symbolTypeGuard = <ClientSymbol extends { type?: string }>(\r\n type: ClientSymbol['type']\r\n) => (symbol: { type?: string }): symbol is ClientSymbol =>\r\n symbol && symbol.type === type;\r\n\r\nexport type Unclassify<T> = {\r\n [K in keyof T]: T[K] extends ClassifyAble<infer V>\r\n ? V\r\n : T[K] extends CalculatedAble<infer V2>\r\n ? V2\r\n : T[K];\r\n};\r\n","import {\r\n PointLabelSymbolDc,\r\n PolygonLabelSymbolDc,\r\n PolylineLabelSymbolDc,\r\n} from '@evergis/api';\r\n\r\nimport { UnknownSymbol } from './symbol';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\n\r\ntype NonClassifyableLabelFields = 'fontColor' | 'fontSize' | 'haloColor';\r\n\r\nexport type PointLabelSymbol = ClientSymbol<\r\n 'labelPointSymbol',\r\n PointLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\nexport type PolygonLabelSymbol = ClientSymbol<\r\n 'polygonLabelSymbol',\r\n PolygonLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\nexport type PolylineLabelSymbol = ClientSymbol<\r\n 'polylineLabelSymbol',\r\n PolylineLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\n\r\nexport const isPointLabelSymbol = symbolTypeGuard<PointLabelSymbol>(\r\n 'labelPointSymbol'\r\n);\r\nexport const isPolygonLabelSymbol = symbolTypeGuard<PolygonLabelSymbol>(\r\n 'polygonLabelSymbol'\r\n);\r\nexport const isPolylineLabelSymbol = symbolTypeGuard<PolylineLabelSymbol>(\r\n 'polylineLabelSymbol'\r\n);\r\n\r\nexport const isLabelSymbol = (symbol: UnknownSymbol): symbol is LabelType =>\r\n Boolean(\r\n symbol &&\r\n (isPointLabelSymbol(symbol) ||\r\n isPolygonLabelSymbol(symbol) ||\r\n isPolylineLabelSymbol(symbol))\r\n );\r\n\r\nexport type LabelType =\r\n | PolylineLabelSymbol\r\n | PolygonLabelSymbol\r\n | PointLabelSymbol;\r\n","import {\r\n CirclePointSymbolDc,\r\n ClusterSymbolDc,\r\n CompositeSymbolDc,\r\n H3GridSymbolDc,\r\n ImagePointSymbolDc,\r\n MaskedImagePointSymbolDc,\r\n PolygonSymbolDc,\r\n PolylineSymbolDc,\r\n RasterSymbolDc,\r\n SimplePolylineSymbolDc,\r\n SquarePointSymbolDc,\r\n StyleDc,\r\n SvgPointSymbolDc,\r\n} from '@evergis/api';\r\n\r\nimport { isLabelSymbol, LabelType } from './label';\r\nimport { CalculatedAble } from './parameterValue';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\nimport { FillBrushType, StrokeBrushType } from './brush';\r\n\r\nexport type PointSymbol = ClientSymbol<\r\n 'circlePointSymbol',\r\n CirclePointSymbolDc\r\n>;\r\n\r\nexport type SvgPointSymbol = ClientSymbol<\r\n 'svgPointSymbol',\r\n SvgPointSymbolDc\r\n>;\r\n\r\nexport type SquareSymbol = ClientSymbol<\r\n 'squarePointSymbol',\r\n SquarePointSymbolDc\r\n> & {\r\n angle?: CalculatedAble<number>;\r\n};\r\n\r\nexport type MaskedImageSymbol = ClientSymbol<\r\n 'maskedImagePointSymbol',\r\n MaskedImagePointSymbolDc\r\n>;\r\n\r\nexport type StaticImageSymbol = ClientSymbol<\r\n 'imagePointSymbol',\r\n ImagePointSymbolDc\r\n>;\r\n\r\nexport type PolygonSymbol<\r\n Fill = FillBrushType,\r\n Stroke = StrokeBrushType\r\n> = ClientSymbol<'polygonSymbol', PolygonSymbolDc> & {\r\n fill: Fill;\r\n stroke: Stroke;\r\n};\r\n\r\nexport type SimplePolylineSymbol = ClientSymbol<\r\n 'simplePolylineSymbol',\r\n SimplePolylineSymbolDc\r\n>;\r\n\r\nexport type PolylineSymbol = ClientSymbol<'polylineSymbol', PolylineSymbolDc>;\r\n\r\nexport type RasterSymbol = ClientSymbol<'rasterSymbol', RasterSymbolDc>;\r\n\r\nexport type CompositeSymbolType = ClientSymbol<\r\n 'compositeSymbol',\r\n CompositeSymbolDc\r\n>;\r\n\r\nexport type H3GridSymbol = ClientSymbol<\r\n 'h3grid',\r\n H3GridSymbolDc\r\n>;\r\n\r\nexport type SimpleShapeSymbol = PointSymbol | SquareSymbol;\r\n\r\nexport type ImageSymbol = MaskedImageSymbol | StaticImageSymbol;\r\n\r\nexport type PointSymbolType = SimpleShapeSymbol | ImageSymbol;\r\n\r\nexport type PolylineSymbols = PolylineSymbol | SimplePolylineSymbol;\r\n\r\nexport type StyleSymbolType =\r\n | PointSymbolType\r\n | PolygonSymbol\r\n | PolylineSymbols\r\n | LabelType\r\n | RasterSymbol\r\n | CompositeSymbolType\r\n | H3GridSymbolDc\r\n | ClusterSymbolDc;\r\n\r\nexport type StyleSymbolTypes = StyleSymbolType['type'];\r\n\r\nexport type UnknownSymbol = StyleDc['symbol'] | StyleSymbolType;\r\n\r\nexport type LayerSymbol = PointSymbol | PolylineSymbols | PolygonSymbol;\r\n\r\nexport type FillStyledSymbols = PolygonSymbol;\r\n\r\nexport type StrokeStyledSymbols = PolygonSymbol | PolylineSymbols;\r\n\r\nexport const isPointSymbol = symbolTypeGuard<PointSymbol>('circlePointSymbol');\r\n\r\nexport const isSquareSymbol = symbolTypeGuard<SquareSymbol>(\r\n 'squarePointSymbol'\r\n);\r\n\r\nexport const isMaskedImageSymbol = symbolTypeGuard<MaskedImageSymbol>(\r\n 'maskedImagePointSymbol'\r\n);\r\n\r\nexport const isStaticImageSymbol = symbolTypeGuard<StaticImageSymbol>(\r\n 'imagePointSymbol'\r\n);\r\n\r\nexport const isPolygonSymbol = symbolTypeGuard<PolygonSymbol>('polygonSymbol');\r\n\r\nexport const isPolylineSymbol = symbolTypeGuard<PolylineSymbol>(\r\n 'polylineSymbol'\r\n);\r\n\r\nexport const isSimplePolylineSymbol = symbolTypeGuard<SimplePolylineSymbol>(\r\n 'simplePolylineSymbol'\r\n);\r\n\r\nexport const isPolylineSymbols = (\r\n symbol: UnknownSymbol\r\n): symbol is PolylineSymbols =>\r\n Boolean(\r\n symbol && (isPolylineSymbol(symbol) || isSimplePolylineSymbol(symbol))\r\n );\r\n\r\nexport const isCompositeSymbol = symbolTypeGuard<CompositeSymbolType>(\r\n 'compositeSymbol'\r\n);\r\nexport const isRasterSymbol = symbolTypeGuard<RasterSymbol>('rasterSymbol');\r\n\r\nexport const isImageSymbol = (symbol: UnknownSymbol): symbol is ImageSymbol =>\r\n Boolean(\r\n symbol && (isMaskedImageSymbol(symbol) || isStaticImageSymbol(symbol))\r\n );\r\n\r\nexport const isTwoDimensionalSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is ImageSymbol => Boolean(symbol && 'width' in symbol);\r\n\r\nexport const isSizableSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is SimpleShapeSymbol => Boolean(symbol && 'size' in symbol);\r\n\r\nexport const isStrokeStyledSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is StrokeStyledSymbols =>\r\n Boolean(symbol && (isPolygonSymbol(symbol) || isPolylineSymbols(symbol)));\r\n\r\nexport const isScalablePolylineSymbol = (\r\n symbol: PolylineSymbol | SimplePolylineSymbol\r\n) =>\r\n (symbol.beginning !== null && symbol.ending !== null) ||\r\n (symbol.stroke && symbol.stroke.type !== 'solid');\r\n\r\nexport const isSimpleSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is Exclude<StyleSymbolType, LabelType | CompositeSymbolType> =>\r\n Boolean(\r\n symbol &&\r\n !isLabelSymbol(symbol) &&\r\n !isCompositeSymbol(symbol) &&\r\n !isRasterSymbol(symbol)\r\n );\r\n","import {\r\n DashedBrushDc,\r\n HatchBrushDc,\r\n PatternBrushDc,\r\n SolidStrokeBrushDc,\r\n TextBackgroundDc,\r\n} from '@evergis/api';\r\n\r\nimport { ClientSymbol, symbolTypeGuard, Unclassify } from './utils';\r\nimport { isPolygonSymbol, PolygonSymbol, UnknownSymbol } from './symbol';\r\n\r\nexport type SolidBrush = ClientSymbol<'solid', SolidStrokeBrushDc>;\r\nexport type DashedBrush = ClientSymbol<'dashed', DashedBrushDc>;\r\nexport type HatchBrush = ClientSymbol<'hatch', HatchBrushDc>;\r\nexport type PatternBrush = ClientSymbol<'pattern', PatternBrushDc>;\r\nexport type StrokeBrushType = SolidBrush | DashedBrush;\r\nexport type FillBrushType = SolidBrush | HatchBrush | PatternBrush;\r\n\r\nexport const isHatchBrush = symbolTypeGuard<HatchBrush>('hatch');\r\nexport const isPatternBrush = symbolTypeGuard<PatternBrush>('pattern');\r\nexport const isDashedBrush = symbolTypeGuard<DashedBrush>('dashed');\r\nexport const isSolidBrush = symbolTypeGuard<SolidBrush>('solid');\r\n\r\nexport const isPolygonHasPatternBrush = (\r\n symbol: UnknownSymbol\r\n): symbol is PolygonSymbol<PatternBrush> =>\r\n Boolean(symbol && isPolygonSymbol(symbol) && isPatternBrush(symbol.fill));\r\n\r\nexport const isPolygonHasHatchBrush = (\r\n symbol: UnknownSymbol\r\n): symbol is PolygonSymbol<HatchBrush> =>\r\n Boolean(symbol && isPolygonSymbol(symbol) && isHatchBrush(symbol.fill));\r\n\r\nexport type TextBackgroundType = Omit<TextBackgroundDc, 'fill' | 'stroke'> & {\r\n fill: Unclassify<FillBrushType>;\r\n stroke: Unclassify<StrokeBrushType>;\r\n};\r\n","import { ClassifyAble } from './parameterValue';\r\n\r\nexport const enum LineMiterSize {\r\n Small = 'small',\r\n Large = 'large',\r\n}\r\n\r\nexport enum LineMiterKind {\r\n None = 'none',\r\n Arrow = 'arrow',\r\n FilledArrow = 'filledArrow',\r\n Square = 'square',\r\n FilledSquare = 'filledSquare',\r\n Circle = 'circle',\r\n FilledCircle = 'filledCircle',\r\n}\r\n\r\nexport type NoLineMiterType = {\r\n type: LineMiterKind.None;\r\n};\r\n\r\ntype LineMiterBase<T extends LineMiterKind> = {\r\n type: T;\r\n color?: ClassifyAble<string>;\r\n};\r\n\r\nexport type ArrowLineType = LineMiterBase<LineMiterKind.Arrow> & {\r\n strokeWidth?: number;\r\n arrowLength?: number;\r\n arrowWidth?: number;\r\n};\r\nexport type FilledArrowLineMiterType = LineMiterBase<\r\n LineMiterKind.FilledArrow\r\n> & {\r\n arrowLength?: number;\r\n arrowWidth?: number;\r\n};\r\nexport type SquareLineMiterType = LineMiterBase<LineMiterKind.Square> & {\r\n size?: number;\r\n strokeWidth?: number;\r\n};\r\nexport type FilledSquareLineMiterType = LineMiterBase<\r\n LineMiterKind.FilledSquare\r\n> & {\r\n size?: number;\r\n};\r\nexport type CircleLineMiterType = LineMiterBase<LineMiterKind.Circle> & {\r\n size?: number;\r\n strokeWidth?: number;\r\n};\r\nexport type FilledCircleLineMiterType = LineMiterBase<\r\n LineMiterKind.FilledCircle\r\n> & {\r\n size?: number;\r\n};\r\n\r\nexport type FilledLineMitters =\r\n | FilledArrowLineMiterType\r\n | FilledSquareLineMiterType\r\n | FilledCircleLineMiterType;\r\nexport type ArrowLineMiters = ArrowLineType | FilledArrowLineMiterType;\r\nexport type SquareLineMiters = SquareLineMiterType | FilledSquareLineMiterType;\r\nexport type CircleLineMiters = CircleLineMiterType | FilledCircleLineMiterType;\r\nexport type LineMiterType =\r\n | NoLineMiterType\r\n | ArrowLineMiters\r\n | SquareLineMiters\r\n | CircleLineMiters;\r\n\r\nexport const isMiterExist = (\r\n miter?: undefined | LineMiterType\r\n): miter is Exclude<LineMiterType, NoLineMiterType> =>\r\n Boolean(miter && miter.type !== LineMiterKind.None);\r\n\r\nexport const isFilledLineMitter = (\r\n miter: LineMiterType\r\n): miter is FilledLineMitters =>\r\n miter.type === LineMiterKind.FilledCircle ||\r\n miter.type === LineMiterKind.FilledArrow ||\r\n miter.type === LineMiterKind.FilledSquare;\r\n\r\nexport const isArrowLineMiter = (\r\n miter: LineMiterType\r\n): miter is ArrowLineMiters =>\r\n miter.type === LineMiterKind.Arrow ||\r\n miter.type === LineMiterKind.FilledArrow;\r\n\r\nexport const isSquareLineMiter = (\r\n miter: LineMiterType\r\n): miter is SquareLineMiters =>\r\n miter.type === LineMiterKind.Square ||\r\n miter.type === LineMiterKind.FilledSquare;\r\n\r\nexport const isCircleLineMiter = (\r\n miter: LineMiterType\r\n): miter is CircleLineMiters =>\r\n miter.type === LineMiterKind.Circle ||\r\n miter.type === LineMiterKind.FilledCircle;\r\n","import { PointSymbolType, UnknownSymbol } from './symbol';\r\nimport { ParameterByAttribute } from './parameterValue';\r\n\r\nimport { isParameterByAttribute } from '../../classification/parameterValue';\r\n\r\nexport type SimpleOffset = [number, number];\r\n\r\nexport type ClassifiedOffset = [\r\n ParameterByAttribute<number>,\r\n ParameterByAttribute<number>\r\n];\r\n\r\nexport type Offset = SimpleOffset | ClassifiedOffset;\r\n\r\nexport const isSimpleOffset = (offset: Offset): offset is SimpleOffset =>\r\n offset &&\r\n !isParameterByAttribute(offset[0]) &&\r\n !isParameterByAttribute(offset[1]);\r\n\r\nexport const isSymbolWithOffset = (\r\n symbol: UnknownSymbol\r\n): symbol is PointSymbolType => Boolean(symbol && 'offset' in symbol);\r\n","import { StyleSymbolType } from './symbol';\r\n\r\nexport type ParameterByAttributeValue<Value> = {\r\n condition: string;\r\n value: Value;\r\n title: string | null;\r\n};\r\n\r\nexport type ParameterByAttribute<Value> = {\r\n type: 'byAttribute';\r\n defaultValue: Value;\r\n title: string | null;\r\n values: ParameterByAttributeValue<Value>[];\r\n};\r\n\r\nexport type CalculatedParameter<Value> = {\r\n type: 'calculated';\r\n expression: string;\r\n defaultValue: Value;\r\n title?: string | null;\r\n};\r\n\r\nexport type ClassifyAble<Value> = Value | ParameterByAttribute<Value>;\r\n\r\nexport type CalculatedAble<Value> = Value | CalculatedParameter<Value>;\r\n\r\nexport type ParameterValue = string | number;\r\n\r\nexport type ParameterByAttributeValues = ParameterByAttributeValue<\r\n ParameterValue\r\n>[];\r\n\r\nexport type ParameterValueWithSymbol = ParameterValue | StyleSymbolType;\r\n\r\nexport type ClassifiedParameterValue = ClassifyAble<ParameterValueWithSymbol>;\r\n\r\nexport type UnidentifiedParameterValue =\r\n | ParameterValueWithSymbol\r\n | Partial<ClassifyAble<ParameterValueWithSymbol>>\r\n | Partial<CalculatedAble<ParameterValue>>;\r\n\r\nexport type CalculatedParameterValue = CalculatedAble<ParameterValue>;\r\n\r\nexport const isStringParameterValue = (\r\n parameterValue: ParameterValueWithSymbol\r\n): parameterValue is string => typeof parameterValue === 'string';\r\n\r\nexport const isParameterValueSimple = (\r\n parameterValue: ParameterValueWithSymbol\r\n): parameterValue is ParameterValue =>\r\n typeof parameterValue === 'number' || typeof parameterValue === 'string';\r\n\r\nexport const isParameterValueSymbol = (\r\n parameterValue: ParameterValueWithSymbol\r\n): parameterValue is StyleSymbolType => !isParameterValueSimple(parameterValue);\r\n","import { StyleDc } from '@evergis/api';\r\n\r\nimport { LabelType } from './label';\r\nimport { CompositeSymbolType, RasterSymbol, StyleSymbolType } from './symbol';\r\n\r\nexport type Style = Omit<StyleDc, 'symbol' | 'children'> & {\r\n symbol: Exclude<StyleSymbolType, CompositeSymbolType>;\r\n ignoreLabel?: boolean;\r\n label: LabelType | null;\r\n raster: RasterSymbol | null;\r\n children: Style[] | null;\r\n};\r\n\r\nexport const isStyle = (value: object): value is Style => 'symbol' in value;\r\n","import {\r\n ClassificationClass,\r\n ClassificationExtras,\r\n ClassificationParameterExtended,\r\n ExtendedClassification,\r\n} from './types';\r\nimport { ClassificationCondition } from './ClassificationCondition';\r\nimport { pathsToParameter } from './parameter';\r\nimport { isParameterByAttribute } from './parameterValue';\r\n\r\nimport {\r\n isStyle,\r\n isTwoDimensionalSymbol,\r\n ParameterByAttributeValue,\r\n ParameterValue,\r\n ParameterValueWithSymbol,\r\n Style,\r\n StyleSymbolType,\r\n} from '../style/types';\r\n\r\nimport { isObject } from '../../utils/isObject';\r\n\r\nconst toClassificationClass = (\r\n parameterValue: ParameterValueWithSymbol,\r\n title: string,\r\n condition: ClassificationCondition\r\n): ClassificationClass => ({\r\n parameterValue,\r\n title,\r\n ...(condition.isUnique()\r\n ? {\r\n uniqueValue: condition.uniqueValue,\r\n }\r\n : {\r\n from: condition.range[0],\r\n to: condition.range[1],\r\n }),\r\n});\r\n\r\nconst DEFAULT_EXTRAS: ClassificationExtras = {\r\n defaultTitle: '',\r\n // @ts-ignore\r\n defaultValue: null,\r\n};\r\n\r\nexport const toClassification = (\r\n values: (ParameterByAttributeValue<ParameterValue> | Style)[],\r\n parameter: ClassificationParameterExtended,\r\n extras: ClassificationExtras = DEFAULT_EXTRAS\r\n): ExtendedClassification =>\r\n // @ts-ignore\r\n values.reduce(\r\n // @ts-ignore\r\n (classification: ExtendedClassification, value) => {\r\n const classificationCondition = new ClassificationCondition(\r\n value.condition || ''\r\n );\r\n const classificationValue = toClassificationClass(\r\n isStyle(value) ? value.symbol : value.value,\r\n // @ts-ignore\r\n value.title,\r\n classificationCondition\r\n );\r\n\r\n classification.values.push(classificationValue);\r\n\r\n return {\r\n ...classification,\r\n type: classification.type || classificationCondition.type,\r\n attribute:\r\n classification.attribute || classificationCondition.attributeName,\r\n };\r\n },\r\n {\r\n ...extras,\r\n attribute: null,\r\n parameter,\r\n type: null,\r\n values: [],\r\n }\r\n );\r\n\r\nexport const getClassifications = (\r\n symbol: StyleSymbolType,\r\n pathContext: ClassificationParameterExtended[] = []\r\n): ExtendedClassification[] =>\r\n Object.entries(symbol).reduce(\r\n (classifications, [parameter, parameterValue]) => {\r\n const skipHeight =\r\n isTwoDimensionalSymbol(symbol) && parameter === 'height';\r\n const skip = !isObject(parameterValue) || skipHeight;\r\n\r\n if (skip) {\r\n return classifications;\r\n }\r\n\r\n if (!isParameterByAttribute(parameterValue)) {\r\n return [\r\n ...classifications,\r\n // @ts-ignore\r\n ...getClassifications(symbol[parameter], [\r\n ...pathContext,\r\n parameter as ClassificationParameterExtended,\r\n ]),\r\n ];\r\n }\r\n\r\n const classification = toClassification(\r\n parameterValue.values,\r\n pathsToParameter([\r\n ...pathContext,\r\n parameter as ClassificationParameterExtended,\r\n ]),\r\n {\r\n // @ts-ignore\r\n defaultTitle: parameterValue.title,\r\n defaultValue: parameterValue.defaultValue,\r\n }\r\n );\r\n\r\n return [...classifications, classification];\r\n },\r\n [] as ExtendedClassification[]\r\n );\r\n","import { getClassifications, toClassification } from './getClassifications';\r\nimport { ExtendedClassification } from './types';\r\n\r\nimport { Style } from '../style/types';\r\n\r\nexport class ClassificationManager {\r\n private classifications: ExtendedClassification[] = [];\r\n\r\n constructor(private style: Style) {\r\n this.collectClassifications();\r\n }\r\n\r\n public get values() {\r\n return this.classifications;\r\n }\r\n\r\n public find(predicate: (classification: ExtendedClassification) => boolean) {\r\n for (const classification of this.classifications) {\r\n if (predicate(classification)) {\r\n return classification;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public filter(callback: (classification: ExtendedClassification) => boolean) {\r\n return this.classifications.filter(callback);\r\n }\r\n\r\n public map<T extends ValueOf<ExtendedClassification>>(\r\n callback: (classification: ExtendedClassification) => T\r\n ) {\r\n return this.classifications.map(callback);\r\n }\r\n\r\n public reduce<T>(\r\n callback: (classifications: T, classification: ExtendedClassification) => T,\r\n initial: T\r\n ) {\r\n return this.classifications.reduce(callback, initial);\r\n }\r\n\r\n public hasClassifications() {\r\n return this.classifications.length > 0;\r\n }\r\n\r\n private collectClassifications() {\r\n if (this.style.children && this.style.children.length) {\r\n this.classifications.push(\r\n toClassification(this.style.children, 'symbol')\r\n );\r\n }\r\n\r\n if (this.style.symbol) {\r\n this.classifications.push(...getClassifications(this.style.symbol));\r\n }\r\n }\r\n}\r\n","import { getParameterValue } from './parameterValue';\r\n\r\nimport { StyleSymbolType, Unclassify } from '../style';\r\n\r\nimport { isObject } from '../../utils/isObject';\r\n\r\nexport const unClassify = <V extends StyleSymbolType>(\r\n symbol: V\r\n): Unclassify<V> =>\r\n Object.entries(symbol).reduce((flatSymbol, [parameter, parameterValue]) => {\r\n let result = Array.isArray(parameterValue)\r\n ? parameterValue.map(getParameterValue)\r\n : getParameterValue(parameterValue);\r\n\r\n if (isObject(result)) {\r\n return {\r\n ...flatSymbol,\r\n [parameter]: unClassify(parameterValue),\r\n };\r\n }\r\n\r\n return {\r\n ...flatSymbol,\r\n [parameter]: result,\r\n };\r\n }, {} as Unclassify<V>);\r\n","import { RangeClass } from './types';\r\n\r\nexport const printRangeClass = (value: RangeClass, index: number): string => {\r\n const isDouble = Boolean(value.attribute?.type === 'Double');\r\n const isDate = Boolean(value.attribute?.type === 'DateTime');\r\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\r\n\r\n if (from === null) {\r\n return `${to} ${isDate ? 'и до' : 'и менее'}`;\r\n }\r\n\r\n if (to === null) {\r\n return `${isDate ? 'после' : 'более'} ${from}`;\r\n }\r\n\r\n return from === to ? `${from}` : `${from} - ${to}`;\r\n};\r\n\r\nfunction getRangeValues(\r\n { from, to }: Pick<RangeClass, 'from' | 'to'>,\r\n isDouble: boolean,\r\n isDate: boolean,\r\n index: number\r\n): Pick<RangeClass, 'from' | 'to'> {\r\n return {\r\n from: from !== null && index !== 0 ?\r\n (isDate ? from : (isDouble ? +from : +from + 1)) : from,\r\n to,\r\n };\r\n}\r\n","import {\r\n Crs,\r\n ellipticalMercator,\r\n geo,\r\n webMercator,\r\n wgs84,\r\n} from '@evergis/sgis/es/Crs';\r\n\r\n/** Spatial Reference WKID using for @evergis/sgis */\r\nexport enum SrId {\r\n /** 3857 */\r\n WebMercator = 3857,\r\n /** 4326 */\r\n Geo = 4326,\r\n /** 84 */\r\n Wgs84 = 84,\r\n /** 3395 */\r\n EllipticalMercator = 3395,\r\n}\r\n\r\nexport const CRS_MAP: Record<SrId, Crs> = {\r\n [SrId.WebMercator]: webMercator,\r\n [SrId.Geo]: geo,\r\n [SrId.Wgs84]: wgs84,\r\n [SrId.EllipticalMercator]: ellipticalMercator,\r\n};\r\n\r\nexport const DEFAULT_SRID = SrId.WebMercator;\r\n\r\nexport const DEFAULT_CRS = CRS_MAP[DEFAULT_SRID];\r\n\r\nexport const getCrs = (srId: number): Crs => CRS_MAP[srId as SrId];\r\n","import { AttributeType, LayerDefinitionDc } from '@evergis/api';\r\n\r\nimport {\r\n Attribute,\r\n ClassificationAttribute,\r\n FeatureAttribute,\r\n FeatureAttributeValue,\r\n LayerAttribute,\r\n} from './types';\r\n\r\nimport { LayerAttributes } from '../layer';\r\n\r\nexport const getFeatureAttributeType = (\r\n attributeValue?: FeatureAttributeValue\r\n): AttributeType => {\r\n if (attributeValue instanceof Date) {\r\n return AttributeType.DateTime;\r\n }\r\n\r\n if (typeof attributeValue === 'string') {\r\n return AttributeType.String;\r\n }\r\n\r\n if (typeof attributeValue === 'number') {\r\n return AttributeType.Int64;\r\n }\r\n\r\n return AttributeType.Unknown;\r\n};\r\n\r\nexport const getLayerAttributes = (\r\n layerDefinition?: LayerDefinitionDc\r\n): LayerAttribute[] => {\r\n const attributes = (layerDefinition && layerDefinition.attributes) || {};\r\n\r\n return Object.entries(attributes).map(([name, definition]) => ({\r\n name,\r\n ...definition,\r\n })) as LayerAttribute[];\r\n};\r\n\r\nexport const getFeatureAttributes = (\r\n attributes?: Record<string, FeatureAttributeValue>\r\n): FeatureAttribute[] => {\r\n return attributes\r\n ? Object.entries(attributes).map(([name, value]) => ({\r\n name,\r\n value,\r\n type: getFeatureAttributeType(value),\r\n }))\r\n : [];\r\n};\r\n\r\nexport const getClassificationAttribute = (\r\n attributeName: string,\r\n attributes: LayerAttributes\r\n): ClassificationAttribute => {\r\n const attribute = attributes[attributeName];\r\n const attrNamePart = {\r\n name: attributeName,\r\n type: attribute?.type || AttributeType.Unknown,\r\n };\r\n\r\n return attribute ? { ...attrNamePart, ...attribute } : attrNamePart;\r\n};\r\n\r\nexport const mergeAttributes = (\r\n attributes1: Attribute[],\r\n attributes2: Attribute[]\r\n) => {\r\n return attributes1.map(attribute => ({\r\n ...attribute,\r\n ...(attributes2.find(({ name }) => attribute.name === name) || {}),\r\n }));\r\n};\r\n","import { StyleDc } from '@evergis/api';\r\n\r\nimport {\r\n CompositeSymbolType,\r\n isCompositeSymbol,\r\n isLabelSymbol,\r\n isRasterSymbol,\r\n isSimpleSymbol,\r\n Style,\r\n StyleSymbolType,\r\n UnknownSymbol,\r\n} from './types';\r\n\r\nexport const createCompositeSymbol = (\r\n childSymbols: StyleSymbolType[]\r\n): CompositeSymbolType => ({\r\n type: 'compositeSymbol',\r\n childSymbols,\r\n});\r\n\r\nexport const getChildSymbols = (symbol?: UnknownSymbol): StyleSymbolType[] => {\r\n if (!symbol || !isCompositeSymbol(symbol)) return [];\r\n\r\n return symbol.childSymbols || [];\r\n};\r\n\r\nexport const extractSymbol = (\r\n symbol?: UnknownSymbol\r\n): Pick<Style, 'symbol' | 'label' | 'raster'> => {\r\n const childSymbols = getChildSymbols(symbol);\r\n\r\n return {\r\n // @ts-ignore\r\n symbol: childSymbols.find(isSimpleSymbol),\r\n label: childSymbols.find(isLabelSymbol) || null,\r\n raster: childSymbols.find(isRasterSymbol) || null,\r\n };\r\n};\r\n\r\nexport const extractStyle = (style: StyleDc): Style => {\r\n // @ts-ignore\r\n if (isCompositeSymbol(style.symbol)) {\r\n return {\r\n ...style,\r\n ...extractSymbol(style.symbol),\r\n // @ts-ignore\r\n children: style.children && style.children.map(extractStyle),\r\n };\r\n }\r\n\r\n // NOTE: for cases when style is exist style object should have same reference for all extractStyle calls\r\n return (style || {}) as Style;\r\n};\r\n\r\nexport const packStyle = (style: Style): StyleDc => {\r\n const { ignoreLabel, label, symbol, raster, children, ...styleDc } = style;\r\n const childSymbols = [!ignoreLabel && label, raster].filter(Boolean);\r\n\r\n return {\r\n ...styleDc,\r\n symbol: childSymbols.length\r\n ? // @ts-ignore\r\n createCompositeSymbol([symbol, ...childSymbols])\r\n : symbol,\r\n // @ts-ignore\r\n children: children\r\n ? // @ts-ignore\r\n children.map(childStyle =>\r\n packStyle({ ...childStyle, ignoreLabel, label })\r\n )\r\n : children,\r\n };\r\n};\r\n","import { StyleDc } from '@evergis/api';\r\n\r\nimport { extractStyle, packStyle } from './compositeSymbol';\r\nimport { Style } from './types';\r\n\r\nimport { ClassificationManager } from '../classification';\r\n\r\nexport class EvergisStyle {\r\n public classificationManager: ClassificationManager;\r\n private readonly style: Style;\r\n\r\n constructor(style: StyleDc) {\r\n this.style = extractStyle(style);\r\n this.classificationManager = new ClassificationManager(this.style);\r\n }\r\n\r\n public serialize() {\r\n return packStyle(this.style);\r\n }\r\n\r\n public hasRasters() {\r\n return !!(\r\n this.style.raster ||\r\n (this.style.children || []).some(style => style.raster)\r\n );\r\n }\r\n\r\n get symbol() {\r\n return this.style.symbol;\r\n }\r\n\r\n get raster() {\r\n return this.style.raster;\r\n }\r\n get label() {\r\n return this.style.label;\r\n }\r\n\r\n get children() {\r\n return this.style.children;\r\n }\r\n\r\n get title() {\r\n return this.style.title;\r\n }\r\n\r\n get condition() {\r\n return this.style.condition;\r\n }\r\n\r\n get ignoreLabel() {\r\n return this.style.ignoreLabel;\r\n }\r\n\r\n get resolution(): Nullable<[number, number]> {\r\n const { minResolution, maxResolution } = this.style;\r\n\r\n return minResolution === void 0 || maxResolution === void 0\r\n ? null\r\n : [minResolution, maxResolution];\r\n }\r\n}\r\n","import { Color } from '@evergis/color';\r\n\r\nexport const getHexColor = (colorString: string): string | undefined =>\r\n colorString ? new Color(colorString).toString('hex') : undefined;\r\n","// TODO reduce\r\nexport const PREVIEW_LIMITS = {\r\n STROKE_WIDTH_MIN: 0.25,\r\n STROKE_WIDTH_MAX: 6.5,\r\n};\r\n","export function clamp(num: number, min: number, max: number): number {\r\n return Math.min(Math.max(num, min), max);\r\n}\r\n","/* eslint-disable @typescript-eslint/no-magic-numbers */\r\nimport { unique } from '@evergis/api';\r\n\r\nimport { PREVIEW_LIMITS } from './previewLimits';\r\n\r\nimport { getParameterValue } from '../core/classification';\r\n\r\nimport { ClassifyAble, StrokeBrushType } from '../core/style';\r\n\r\nimport { clamp } from '../utils/math';\r\n\r\n// TODO refactoring\r\nexport const enum StrokeStyle {\r\n Solid,\r\n Dash,\r\n Dot,\r\n DashDot,\r\n DashDotDot,\r\n Custom,\r\n}\r\n\r\ninterface StrokeStylePreset {\r\n style: StrokeStyle;\r\n type: StrokeBrushType['type'];\r\n intervals: number[];\r\n}\r\nexport const SOLID_INTERVALS: number[] = [];\r\n\r\nexport const solidStrokeStylePreset: StrokeStylePreset = {\r\n style: StrokeStyle.Solid,\r\n type: 'solid',\r\n intervals: SOLID_INTERVALS,\r\n};\r\nexport const strokeStylePresets: StrokeStylePreset[] = [\r\n solidStrokeStylePreset,\r\n {\r\n style: StrokeStyle.Dot,\r\n type: 'dashed',\r\n intervals: [2, 2],\r\n },\r\n {\r\n style: StrokeStyle.Dash,\r\n type: 'dashed',\r\n intervals: [3, 3, 3, 3],\r\n },\r\n {\r\n style: StrokeStyle.DashDot,\r\n type: 'dashed',\r\n intervals: [5, 2, 1, 2],\r\n },\r\n {\r\n style: StrokeStyle.DashDotDot,\r\n type: 'dashed',\r\n intervals: [5, 2, 1, 1, 1, 2],\r\n },\r\n {\r\n style: StrokeStyle.Custom,\r\n type: 'dashed',\r\n intervals: [5, 4],\r\n },\r\n];\r\n\r\nconst walkByNumbersGroup = (\r\n numbers: number[],\r\n offset: number,\r\n walker: (group: [number, number], offset: number) => [number, number]\r\n): number[] => {\r\n if (!numbers || !numbers.length) return [];\r\n\r\n const newNumbers = [];\r\n\r\n for (let i = 0; i < numbers.length; i++) {\r\n if (i % 2) {\r\n newNumbers.push(...walker([numbers[i - 1], numbers[i]], offset));\r\n }\r\n }\r\n\r\n return newNumbers;\r\n};\r\n\r\nexport const toIntervals = (numbers: number[], width: ClassifyAble<number>) =>\r\n walkByNumbersGroup(\r\n numbers,\r\n clamp(\r\n getParameterValue(width),\r\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\r\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\r\n ),\r\n ([length, gap], offset) => [length * offset, gap * offset]\r\n );\r\n\r\nexport const toLineDash = (numbers: number[], width: ClassifyAble<number>) =>\r\n walkByNumbersGroup(\r\n numbers,\r\n clamp(\r\n getParameterValue(width),\r\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\r\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\r\n ),\r\n ([length, gap], offset) => [\r\n Math.round(length / Math.max(1, Math.min(offset, 16) / 4)),\r\n Math.round(gap + 1 + Math.max(1, Math.min(offset, 16) / 2)),\r\n ]\r\n );\r\n\r\nexport const getLineDash = (brush: StrokeBrushType): number[] => {\r\n if (!brush || brush.type === 'solid') return [];\r\n\r\n // @ts-ignore\r\n return toLineDash(brush.intervals, brush.width);\r\n};\r\n\r\nexport const defineStrokeStylePreset = (intervals: number[]) => {\r\n if (!intervals.length) return solidStrokeStylePreset;\r\n\r\n return strokeStylePresets.find(preset => {\r\n if (preset.intervals.length !== intervals.length) return false;\r\n\r\n const uniqueStrokeWidths = preset.intervals\r\n .map((presetInterval, i) => intervals[i] / presetInterval)\r\n .filter(unique);\r\n\r\n return uniqueStrokeWidths.length === 1;\r\n });\r\n};\r\n\r\nexport const getDashStylePreset = (\r\n dashStyle: StrokeStyle\r\n): StrokeStylePreset | undefined =>\r\n strokeStylePresets.find(preset => preset.style === dashStyle);\r\n","import { BrushFill as sBrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\r\nimport { Color } from '@evergis/color';\r\n\r\nimport { getParameterValue } from '../../core/classification';\r\n\r\nimport {\r\n FillBrushType,\r\n HatchBrush,\r\n isHatchBrush,\r\n PolygonSymbol,\r\n} from '../../core/style';\r\n\r\nimport { getHexColor } from '../../utils/color';\r\nimport { getLineDash } from '../strokeStyle';\r\n\r\nconst ALPHA_NORMALIZER = 65025;\r\n\r\nconst sum = (numbers: number[]) =>\r\n numbers.reduce((result, num) => result + num, 0);\r\n\r\nconst shouldFillMatrixCell = (\r\n matrixSize: number,\r\n hatchAngle: number,\r\n x: number,\r\n y: number\r\n) => {\r\n const center = Math.round(matrixSize / 2);\r\n\r\n if ((hatchAngle === 0 || hatchAngle === Math.PI) && x === center) {\r\n return true;\r\n }\r\n if (hatchAngle === Math.PI / 4 && y === x) {\r\n return true;\r\n }\r\n if (hatchAngle === Math.PI / 2 && y === center) {\r\n return true;\r\n }\r\n\r\n return hatchAngle === (3 * Math.PI) / 4 && matrixSize - 1 - y === x;\r\n};\r\n\r\nconst createEmptyMatrix = (size: number): number[][] =>\r\n Array(size)\r\n .fill(null)\r\n .map(() => Array(size));\r\n\r\nconst fillMatrix = (\r\n matrix: number[][],\r\n filler: (x: number, y: number, size: number) => number\r\n) => {\r\n const matrixSize = matrix.length;\r\n\r\n for (let x = 0; x < matrixSize; x++) {\r\n for (let y = 0; y < matrixSize; y++) {\r\n matrix[x][y] = filler(x, y, matrixSize);\r\n }\r\n }\r\n};\r\n\r\nconst createFillBrushMatrix = (\r\n hatchAngle: number,\r\n hatchWidth: number,\r\n scalingFactor: number[]\r\n) => {\r\n const matrixSize = Math.max(\r\n Math.round(sum([Math.max(...scalingFactor), hatchWidth])),\r\n hatchWidth\r\n );\r\n const matrix = createEmptyMatrix(matrixSize);\r\n\r\n fillMatrix(matrix, (x, y, size) =>\r\n shouldFillMatrixCell(size, hatchAngle, x, y) ? 255 : 0\r\n );\r\n\r\n return matrix;\r\n};\r\n\r\nconst createSymbolFillBrush = (\r\n fillBrush: FillBrushType\r\n): number[][] | undefined => {\r\n if (fillBrush.type !== 'hatch') return undefined;\r\n\r\n return createFillBrushMatrix(\r\n // @ts-ignore\r\n getParameterValue(fillBrush.hatchAngle),\r\n // @ts-ignore\r\n Math.round(fillBrush.hatchWidth),\r\n fillBrush.scalingFactor\r\n );\r\n};\r\n\r\nexport class SGisBrushFill extends sBrushFill {\r\n constructor(public originalSymbol: PolygonSymbol<HatchBrush>) {\r\n super({\r\n // @ts-ignore\r\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\r\n // @ts-ignore\r\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\r\n lineDash: getLineDash(originalSymbol.stroke),\r\n fillBackground: getHexColor(\r\n // @ts-ignore\r\n getParameterValue(originalSymbol.fill?.color)\r\n ),\r\n fillForeground: isHatchBrush(originalSymbol.fill)\r\n ? // @ts-ignore\r\n getHexColor(getParameterValue(originalSymbol.fill?.hatchColor))\r\n : void 0,\r\n fillBrush: createSymbolFillBrush(originalSymbol.fill),\r\n lineCap: 'square',\r\n });\r\n }\r\n\r\n _updateBrush() {\r\n // @ts-ignore\r\n if (!this._initialized) return;\r\n\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n\r\n if (!ctx) {\r\n return;\r\n }\r\n\r\n const brush = this.fillBrush;\r\n const brushSize = brush.length;\r\n const foreground = new Color(this.fillForeground);\r\n const background = new Color(this.fillBackground);\r\n\r\n canvas.height = brushSize;\r\n canvas.width = brushSize;\r\n for (let i = 0; i < brushSize; i++) {\r\n // eslint-disable-next-line id-length\r\n for (let j = 0; j < brush[i].length; j++) {\r\n const srcA = (brush[i][j] * foreground.a) / ALPHA_NORMALIZER;\r\n const dstA = (background.a / 255) * (1 - srcA);\r\n const alpha = +Math.min(1, srcA + dstA).toFixed(2);\r\n const red = Math.round(\r\n Math.min(255, background.r * dstA + foreground.r * srcA)\r\n );\r\n const green = Math.round(\r\n Math.min(255, background.g * dstA + foreground.g * srcA)\r\n );\r\n const blue = Math.round(\r\n Math.min(255, background.b * dstA + foreground.b * srcA)\r\n );\r\n\r\n ctx.fillStyle = `rgba(${red},${green},${blue},${alpha})`;\r\n ctx.fillRect(j, i, 1, 1);\r\n }\r\n }\r\n this._brush = new Image();\r\n this._brush.src = canvas.toDataURL();\r\n }\r\n\r\n clone() {\r\n return new SGisBrushFill(this.originalSymbol);\r\n }\r\n}\r\n","import { ImageFill as sImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\r\n\r\nimport { getParameterValue } from '../../core/classification';\r\n\r\nimport { isDashedBrush, PatternBrush, PolygonSymbol } from '../../core/style';\r\n\r\nimport { getHexColor } from '../../utils/color';\r\nimport { getLineDash } from '../strokeStyle';\r\n\r\nexport class SGisImageFill extends sImageFill {\r\n constructor(public originalSymbol: PolygonSymbol<PatternBrush>) {\r\n super({\r\n // @ts-ignore\r\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\r\n // @ts-ignore\r\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\r\n lineDash: getLineDash(originalSymbol.stroke),\r\n src: `data:image/png;base64,${originalSymbol.fill.pattern}`,\r\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\r\n });\r\n }\r\n\r\n clone() {\r\n return new SGisImageFill(this.originalSymbol);\r\n }\r\n}\r\n","import { PolygonSymbol as sPolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\r\n\r\nimport { getParameterValue } from '../../core/classification';\r\n\r\nimport { isDashedBrush, PolygonSymbol } from '../../core/style/types';\r\n\r\nimport { getHexColor } from '../../utils/color';\r\nimport { getLineDash } from '../strokeStyle';\r\n\r\nexport class SGisPolygonSymbol extends sPolygonSymbol {\r\n constructor(public originalSymbol: PolygonSymbol) {\r\n super({\r\n // @ts-ignore\r\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\r\n // @ts-ignore\r\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\r\n lineDash: getLineDash(originalSymbol.stroke),\r\n // @ts-ignore\r\n fillColor: getHexColor(getParameterValue(originalSymbol.fill?.color)),\r\n // TODO?: may be it should be defined by user\r\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\r\n });\r\n }\r\n\r\n clone() {\r\n return new SGisPolygonSymbol(this.originalSymbol);\r\n }\r\n}\r\n","import { Crs } from '@evergis/sgis/es/Crs';\r\nimport { projectRings } from '@evergis/sgis/es/geotools';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\r\n\r\nimport { LineMiterKind, LineMiterSize } from '../../core/style/types';\r\n\r\nexport type MiterPosition = 'left' | 'right';\r\n\r\nexport interface LineMiterRenderBaseInfo {\r\n position: MiterPosition;\r\n color: string;\r\n strokeWidth: number;\r\n kind: LineMiterKind;\r\n size: LineMiterSize;\r\n}\r\n\r\nconst adaptMiterRings = (\r\n rings: Coordinates[][],\r\n resolution: number,\r\n fromCrs: Crs,\r\n toCrs: Crs\r\n) => {\r\n const projected = projectRings(rings, fromCrs, toCrs);\r\n\r\n return simplifyCoordinates(\r\n projected.map(ring =>\r\n // @ts-ignore\r\n ring.map(([x, y]) => [x / resolution, y / -resolution])\r\n ),\r\n 1\r\n );\r\n};\r\n\r\nconst miterSizeCalcs: Record<LineMiterSize, (strokeWidth: number) => number> = {\r\n [LineMiterSize.Small]: strokeWidth => (strokeWidth + 1) * 3 + 1,\r\n [LineMiterSize.Large]: strokeWidth => (strokeWidth + 1) * 5 - 1,\r\n};\r\n\r\nexport abstract class LineMiterRender implements LineMiterRenderBaseInfo {\r\n // @ts-ignore\r\n position: MiterPosition;\r\n // @ts-ignore\r\n color: string;\r\n // @ts-ignore\r\n strokeWidth: number;\r\n // @ts-ignore\r\n kind: LineMiterKind;\r\n // @ts-ignore\r\n size: LineMiterSize;\r\n\r\n constructor(baseInfo: LineMiterRenderBaseInfo) {\r\n Object.assign(this, baseInfo);\r\n }\r\n\r\n getAnchor = (rings: Coordinates[][]): Coordinates => {\r\n if (this.position === 'right') {\r\n const lastRing = rings[rings.length - 1];\r\n\r\n return (lastRing && lastRing[lastRing.length - 1]) || null;\r\n }\r\n\r\n const firstRing = rings[0];\r\n\r\n return (firstRing && firstRing[0]) || null;\r\n };\r\n\r\n getRender(\r\n anchorRings: Coordinates[][],\r\n anchorCrs: Crs,\r\n resolution: number,\r\n currentCrs: Crs\r\n ): Render {\r\n const xMultiplier = this.position === 'right' ? 1 : -1;\r\n const miterAnchor = this.getAnchor(anchorRings);\r\n const miterRings = this.createRings(miterAnchor, xMultiplier);\r\n const projectedMiterRings = adaptMiterRings(\r\n miterRings,\r\n resolution,\r\n anchorCrs,\r\n currentCrs\r\n );\r\n\r\n return this.createRender(projectedMiterRings);\r\n }\r\n\r\n get miterSize() {\r\n const calcMiterSize = miterSizeCalcs[this.size];\r\n\r\n return calcMiterSize ? calcMiterSize(this.strokeWidth) : 1;\r\n }\r\n abstract get usageSize(): number;\r\n abstract createRings(\r\n anchor: Coordinates,\r\n xMultiplier: number\r\n ): Coordinates[][];\r\n abstract createRender(rings: Coordinates[][]): Render;\r\n}\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { LineMiterRender } from './LineMiterRender';\r\n\r\nimport { LineMiterKind } from '../../core/style/types';\r\n\r\nexport class ArrowLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth;\r\n }\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [\r\n [\r\n [x, y + this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y],\r\n [x, y - this.miterSize / 2],\r\n ],\r\n ];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineMiterKind.FilledArrow;\r\n\r\n return new PolyRender(miterRings, {\r\n enclosed: isFilled,\r\n fillColor: isFilled ? this.color : void 0,\r\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\r\n lineCap: 'square',\r\n lineJoin: 'miter',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n }\r\n}\r\n","import { formatLength, formatPolygonMeasure } from '../core';\r\n\r\nexport interface MeasureToolFormatters {\r\n polygon: typeof formatPolygonMeasure;\r\n length: typeof formatLength;\r\n}\r\n\r\nexport const DEFAULT_FORMATTERS: MeasureToolFormatters = {\r\n polygon: formatPolygonMeasure,\r\n length: formatLength,\r\n};\r\n","import { PolylineControl } from '@evergis/sgis/es/controls/PolylineControl';\r\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { Map as SMap } from '@evergis/sgis/es/Map';\r\nimport { PolyControlParams } from '@evergis/sgis/es/controls/PolyControl';\r\nimport { sGisMouseMoveEvent } from '@evergis/sgis/es/commonEvents';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport {\r\n area as calcArea,\r\n length as calcLength,\r\n} from '@evergis/sgis/es/geotools';\r\nimport { geo } from '@evergis/sgis/es/Crs';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport {\r\n ChangeEvent,\r\n DrawingFinishEvent,\r\n} from '@evergis/sgis/es/controls/Control';\r\n\r\nimport { renderLabelSymbolType } from '../components';\r\n\r\nimport { isPolylineLikePolygon } from '../core';\r\n\r\nimport {\r\n createLabelSymbol,\r\n measureAreaSymbol,\r\n ShadowedPolySymbol,\r\n} from '../symbols';\r\nimport {\r\n DEFAULT_FORMATTERS,\r\n MeasureToolFormatters,\r\n} from './MeasureToolFormatters';\r\n\r\ninterface BaseMeasureToolCreatorParams extends PolyControlParams {\r\n renderLabelSymbol: renderLabelSymbolType;\r\n formatters?: MeasureToolFormatters;\r\n areaSymbol?: ShadowedPolySymbol;\r\n}\r\n\r\nconst COORD_FRACTION = 6;\r\nconst DEFAULT_LABEL_POSITION: [number, number] = [Infinity, Infinity];\r\n\r\nexport class BaseMeasureToolCreator extends PolylineControl {\r\n private tempLabel?: LabelFeature;\r\n private coordLabel?: LabelFeature;\r\n private measureResultLabel?: LabelFeature;\r\n private tempPolygon?: Poly;\r\n formatters: MeasureToolFormatters;\r\n painter: DomPainter;\r\n renderLabelSymbol: renderLabelSymbolType;\r\n areaSymbol?: ShadowedPolySymbol;\r\n\r\n constructor(\r\n map: SMap,\r\n painter: DomPainter,\r\n params: BaseMeasureToolCreatorParams\r\n ) {\r\n super(map, params);\r\n this.painter = painter;\r\n this.renderLabelSymbol = params.renderLabelSymbol;\r\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\r\n this.areaSymbol = params.areaSymbol;\r\n this.on('pointAdd', this.handlePointAdd);\r\n // @ts-ignore\r\n this.on('change', this.updateDistance);\r\n }\r\n\r\n protected _handleMousemove(event: sGisMouseMoveEvent): void {\r\n super._handleMousemove(event);\r\n this.drawPointOnMouseMove(event);\r\n }\r\n\r\n protected _activate(): void {\r\n super._activate();\r\n this.addTempLabel();\r\n this.setCursor('pointer');\r\n }\r\n\r\n protected _deactivate(): void {\r\n super._deactivate();\r\n this.removeCoordLabel();\r\n this.removeTempLabel();\r\n this.removeMeasureLabel();\r\n this.removeTempPolygon();\r\n this.setCursor('default');\r\n }\r\n\r\n private handlePointAdd() {\r\n const feature = this.activeFeature;\r\n\r\n if (!feature) return;\r\n const { rings, crs }: Polyline = feature;\r\n\r\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\r\n this.finishDrawing();\r\n this.fire(new DrawingFinishEvent(feature, new MouseEvent('mouseup')));\r\n\r\n return;\r\n }\r\n\r\n if (rings[0].length === 2) {\r\n const projection = crs.projectionTo(geo);\r\n const point = rings[0][0];\r\n if (!projection) return;\r\n const [lat, long] = projection(point);\r\n\r\n this.removeTempLabel();\r\n this.addMeasureResultLabel();\r\n this.addCoordLabel(\r\n `${lat.toFixed(COORD_FRACTION)}, ${long.toFixed(COORD_FRACTION)}`,\r\n point\r\n );\r\n } else {\r\n this.removeCoordLabel();\r\n }\r\n }\r\n\r\n private polygonPreview() {\r\n if (this.tempPolygon) {\r\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\r\n }\r\n\r\n const feature = this.activeFeature;\r\n\r\n if (!feature) return;\r\n const { rings, crs } = feature;\r\n const polygonRings = [...rings[0]];\r\n\r\n polygonRings.shift();\r\n this.tempPolygon = new Polygon(polygonRings, { crs });\r\n this.tempPolygon.symbol = this.areaSymbol || measureAreaSymbol;\r\n\r\n this.activeFeature && this.activeFeature.hide();\r\n this._tempLayer && this._tempLayer.add(this.tempPolygon);\r\n }\r\n\r\n private removeTempPolygon() {\r\n if (this.tempPolygon) {\r\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\r\n delete this.tempPolygon;\r\n }\r\n }\r\n\r\n private updateDistance(event: ChangeEvent) {\r\n const feature = this.activeFeature;\r\n const { ringIndex, pointIndex } = event;\r\n\r\n if (!feature || ringIndex === null || pointIndex === null) return;\r\n\r\n const { rings, crs } = feature;\r\n\r\n const position = rings[ringIndex][pointIndex];\r\n const length = calcLength(rings, crs);\r\n let content = this.formatters.length(length);\r\n\r\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\r\n this.polygonPreview();\r\n\r\n const area = calcArea(rings, crs);\r\n\r\n content = this.formatters.polygon(area, length);\r\n } else if (this.tempPolygon) {\r\n feature.show();\r\n this.removeTempPolygon();\r\n }\r\n\r\n if (this.measureResultLabel) {\r\n this.measureResultLabel.position = position;\r\n this.measureResultLabel.content = content;\r\n }\r\n }\r\n\r\n private addTempLabel() {\r\n this.tempLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\r\n content: 'Нажмите на карту, чтобы начать измерение',\r\n crs: this.map.crs,\r\n symbol: createLabelSymbol({\r\n renderLabel: this.renderLabelSymbol,\r\n }),\r\n });\r\n this._tempLayer && this._tempLayer.add(this.tempLabel);\r\n }\r\n\r\n private addCoordLabel(content: string, position: Coordinates) {\r\n this.coordLabel = new LabelFeature(position, {\r\n content,\r\n crs: this.map.crs,\r\n symbol: createLabelSymbol({\r\n renderLabel: this.renderLabelSymbol,\r\n onClose: this.cancel,\r\n }),\r\n });\r\n this._tempLayer && this.coordLabel && this._tempLayer.add(this.coordLabel);\r\n }\r\n\r\n private addMeasureResultLabel() {\r\n this.measureResultLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\r\n crs: this.map.crs,\r\n symbol: createLabelSymbol({\r\n renderLabel: this.renderLabelSymbol,\r\n }),\r\n });\r\n this._tempLayer &&\r\n this.measureResultLabel &&\r\n this._tempLayer.add(this.measureResultLabel);\r\n }\r\n\r\n private removeTempLabel() {\r\n if (this.tempLabel) {\r\n this._tempLayer && this._tempLayer.remove(this.tempLabel);\r\n delete this.tempLabel;\r\n }\r\n }\r\n\r\n private removeCoordLabel() {\r\n if (this.coordLabel) {\r\n this._tempLayer && this._tempLayer.remove(this.coordLabel);\r\n delete this.coordLabel;\r\n }\r\n }\r\n\r\n private removeMeasureLabel() {\r\n if (this.measureResultLabel) {\r\n this._tempLayer && this._tempLayer.remove(this.measureResultLabel);\r\n delete this.measureResultLabel;\r\n }\r\n }\r\n\r\n private drawPointOnMouseMove(event: sGisMouseMoveEvent) {\r\n if (this.tempLabel) {\r\n this.tempLabel.position = event.point.position;\r\n }\r\n }\r\n\r\n private setCursor(cursor: 'pointer' | 'default') {\r\n const { wrapper } = this.painter;\r\n\r\n if (wrapper && typeof wrapper !== 'string') {\r\n wrapper.style.cursor = cursor;\r\n }\r\n }\r\n\r\n private cancel = () => {\r\n this.fire('cancel');\r\n };\r\n}\r\n","import { PolyEditor } from '@evergis/sgis/es/controls/PolyEditor';\r\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { Map as SMap } from '@evergis/sgis/es/Map';\r\nimport { ControlWithSymbolParams } from '@evergis/sgis/es/controls/Control';\r\nimport {\r\n area as calcArea,\r\n length as calcLength,\r\n} from '@evergis/sgis/es/geotools';\r\n\r\nimport { renderLabelSymbolType } from '../components';\r\n\r\nimport { createLabelSymbol } from '../symbols';\r\nimport {\r\n DEFAULT_FORMATTERS,\r\n MeasureToolFormatters,\r\n} from './MeasureToolFormatters';\r\n\r\ninterface BaseMeasureToolEditorParams extends ControlWithSymbolParams {\r\n renderLabelSymbol: renderLabelSymbolType;\r\n formatters?: MeasureToolFormatters;\r\n}\r\n\r\nexport class BaseMeasureToolEditor extends PolyEditor {\r\n private measureResultLabel?: LabelFeature;\r\n formatters: MeasureToolFormatters;\r\n painter: DomPainter;\r\n renderLabelSymbol: renderLabelSymbolType;\r\n\r\n constructor(\r\n map: SMap,\r\n painter: DomPainter,\r\n params: BaseMeasureToolEditorParams\r\n ) {\r\n super(map, params);\r\n this.painter = painter;\r\n this.renderLabelSymbol = params.renderLabelSymbol;\r\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\r\n this.on('change', this.updateMeasureResult);\r\n this.on('edit', this.updateMeasureResult);\r\n }\r\n\r\n protected _activate(): void {\r\n super._activate();\r\n this.addMeasureResultLabel();\r\n }\r\n\r\n private measureResult = () => {\r\n const feature = this.activeFeature;\r\n\r\n if (!feature) return null;\r\n\r\n const { rings, isEnclosed, crs } = feature;\r\n const pointsCount = rings[0].length;\r\n const position = rings[0][pointsCount - 1];\r\n\r\n const area = calcArea(rings, crs);\r\n const length = calcLength(rings, crs, isEnclosed);\r\n const content = isEnclosed\r\n ? this.formatters.polygon(area, length)\r\n : this.formatters.length(length);\r\n\r\n return {\r\n content,\r\n position,\r\n };\r\n };\r\n\r\n private addMeasureResultLabel() {\r\n const measureResult = this.measureResult();\r\n if (measureResult === null) return;\r\n\r\n const { content, position } = measureResult;\r\n\r\n this.measureResultLabel = new LabelFeature(position, {\r\n content,\r\n crs: this.map.crs,\r\n symbol: createLabelSymbol({\r\n onClose: this.removeFeature,\r\n renderLabel: this.renderLabelSymbol,\r\n }),\r\n });\r\n this._tempLayer && this._tempLayer.add(this.measureResultLabel);\r\n }\r\n\r\n updateMeasureResult() {\r\n if (this.measureResultLabel) {\r\n const measureResult = this.measureResult();\r\n\r\n if (measureResult === null) return;\r\n\r\n const { content, position } = measureResult;\r\n\r\n this.measureResultLabel.content = content;\r\n this.measureResultLabel.position = position;\r\n }\r\n }\r\n\r\n private removeFeature = () => {\r\n this.fire('remove');\r\n };\r\n}\r\n","import { Crs, geo } from '@evergis/sgis/es/Crs';\r\nimport { distance } from '@evergis/sgis/es/geotools';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\n\r\ntype ConvertionContext = {\r\n painter: DomPainter;\r\n crs?: Crs;\r\n};\r\n\r\nexport const metersToPixels = (\r\n meters: number,\r\n { painter, crs = geo }: ConvertionContext\r\n): number => {\r\n const { width } = painter;\r\n const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);\r\n const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);\r\n const widthDistance: number = distance(zeroPoint, maxWidthPoint);\r\n const pxK = width / (widthDistance || 1);\r\n\r\n return Math.round(meters * pxK);\r\n};\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nexport const polygonCircleFromPoint = (\r\n center: Coordinates,\r\n diameter: number\r\n): Coordinates[][] => {\r\n const coordinates: Coordinates[] = [];\r\n const radius = diameter / 2;\r\n const endAngle = Math.PI * 2;\r\n const step = Math.max(Math.PI / 2 / radius, endAngle / 128);\r\n let start = 0;\r\n let end = endAngle;\r\n\r\n for (let ang = start; ang < end; ang += step) {\r\n coordinates.push([\r\n Math.cos(ang) * radius + center[0],\r\n Math.sin(ang) * radius + center[1],\r\n ]);\r\n }\r\n\r\n return [coordinates];\r\n};\r\n","export const isNumeric = (number: string | number): boolean =>\r\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\r\n","import { ClassificationParameterExtended } from \"../core\";\r\n\r\ntype IsParameterType = \"size\" | \"strokeWidth\" | \"stroke.width\" | \"strokeColor\" | \"stroke.color\";\r\n\r\nexport const isParameterType = (\r\n types: IsParameterType | Array<IsParameterType>,\r\n parameter?: ClassificationParameterExtended,\r\n): boolean => (typeof types === \"string\"\r\n ? parameter?.toLowerCase()?.includes(types.toLowerCase())\r\n : types.some(type => parameter?.toLowerCase()?.includes(type.toLowerCase()))) || false;\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { polygonCircleFromPoint } from '../../';\r\nimport { LineMiterRender } from './LineMiterRender';\r\nimport { LineMiterKind } from '../../core';\r\n\r\nexport class CircleLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth * 3;\r\n }\r\n\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [[[x + (this.miterSize / 2 + this.strokeWidth) * xMultiplier, y]]];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineMiterKind.FilledCircle;\r\n\r\n return new PolyRender(\r\n polygonCircleFromPoint(miterRings[0][0], this.miterSize),\r\n {\r\n fillColor: isFilled ? this.color : 'transparent',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n enclosed: true,\r\n }\r\n );\r\n }\r\n}\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { LineMiterRender } from './LineMiterRender';\r\n\r\nimport { LineMiterKind } from '../../core/style/types';\r\n\r\nexport class SquareLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth;\r\n }\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [\r\n [\r\n [x, y + this.miterSize / 2],\r\n [x, y - this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y - this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y + this.miterSize / 2],\r\n ],\r\n ];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineMiterKind.FilledSquare;\r\n\r\n return new PolyRender(miterRings, {\r\n enclosed: true,\r\n fillColor: isFilled ? this.color : void 0,\r\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\r\n lineCap: 'square',\r\n lineJoin: 'miter',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n }\r\n}\r\n","import { ArrowLineMiterRender } from './ArrowLineMiterRender';\r\nimport { CircleLineMiterRender } from './CircleLineMiterRender';\r\nimport { LineMiterRenderBaseInfo, LineMiterRender } from './LineMiterRender';\r\nimport { SquareLineMiterRender } from './SquareLineMiterRender';\r\n\r\nimport { LineMiterKind } from '../../core/style/types';\r\n\r\nexport const getLineMiterRender = (\r\n options: LineMiterRenderBaseInfo\r\n): LineMiterRender | null => {\r\n switch (options.kind) {\r\n case LineMiterKind.Arrow:\r\n case LineMiterKind.FilledArrow:\r\n return new ArrowLineMiterRender(options);\r\n case LineMiterKind.Square:\r\n case LineMiterKind.FilledSquare:\r\n return new SquareLineMiterRender(options);\r\n case LineMiterKind.Circle:\r\n case LineMiterKind.FilledCircle:\r\n return new CircleLineMiterRender(options);\r\n default:\r\n return null;\r\n }\r\n};\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { MiterPosition } from './LineMiterRender';\r\n\r\nconst updateRingForRightMiter = (\r\n ring: Coordinates[],\r\n miterSize: number,\r\n isLastRing: boolean\r\n): Coordinates[] => {\r\n const reversedRing = ring.slice().reverse();\r\n\r\n for (let i = 0; i < reversedRing.length; i++) {\r\n const coordinates = reversedRing[i];\r\n\r\n if (isLastRing && i === 0) {\r\n reversedRing[i] = [coordinates[0] - miterSize, coordinates[1]];\r\n }\r\n\r\n const nextCoordinates = reversedRing[i - 1];\r\n\r\n if (nextCoordinates && nextCoordinates[0] < coordinates[0]) {\r\n reversedRing[i] = [\r\n nextCoordinates[0] - Math.abs(nextCoordinates[0] - coordinates[0]),\r\n coordinates[1],\r\n ];\r\n }\r\n }\r\n\r\n return reversedRing.reverse();\r\n};\r\n\r\nconst updateRingForLeftMiter = (\r\n ring: Coordinates[],\r\n miterSize: number,\r\n isFirstRing: boolean\r\n): Coordinates[] => {\r\n const newRing = ring.slice();\r\n\r\n for (let i = 0; i < newRing.length; i++) {\r\n const coordinates = newRing[i];\r\n\r\n if (i === 0 && isFirstRing) {\r\n newRing[i] = [coordinates[0] + miterSize, coordinates[1]];\r\n }\r\n\r\n const prevCoordinates = newRing[i - 1];\r\n\r\n if (prevCoordinates && prevCoordinates[0] > coordinates[0]) {\r\n newRing[i] = [\r\n prevCoordinates[0] + Math.abs(coordinates[0] - prevCoordinates[0]),\r\n coordinates[1],\r\n ];\r\n }\r\n }\r\n\r\n return newRing;\r\n};\r\n\r\nexport const updateRingsForMiter = (\r\n rings: Coordinates[][],\r\n position: MiterPosition,\r\n miterSize: number\r\n): Coordinates[][] => {\r\n return rings.map((ring, ringIndex) => {\r\n switch (position) {\r\n case 'right':\r\n return updateRingForRightMiter(\r\n ring,\r\n miterSize,\r\n ringIndex === rings.length - 1\r\n );\r\n default:\r\n return updateRingForLeftMiter(ring, miterSize, ringIndex === 0);\r\n }\r\n });\r\n};\r\n","import { PolylineSymbol as sPolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { getLineMiterRender } from '../LineMiters/getLineMiterRender';\r\nimport { updateRingsForMiter } from '../LineMiters/updateRingsForMiter';\r\n\r\nimport { getParameterValue } from '../../core/classification';\r\n\r\nimport {\r\n isDashedBrush,\r\n isSimplePolylineSymbol,\r\n PolylineSymbols,\r\n} from '../../core/style';\r\n\r\nimport { getHexColor } from '../../utils/color';\r\nimport { clamp } from '../../utils/math';\r\nimport { PREVIEW_LIMITS } from '../previewLimits';\r\nimport { getLineDash } from '../strokeStyle';\r\n\r\nexport const copyRings = (rings: Coordinates[][]): Coordinates[][] =>\r\n rings.map(ring =>\r\n ring.map(coordinates => coordinates.slice() as Coordinates)\r\n );\r\n\r\nexport class SGisPolylineSymbol extends sPolylineSymbol {\r\n constructor(public originalSymbol: PolylineSymbols) {\r\n super({\r\n // @ts-ignore\r\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\r\n strokeWidth: clamp(\r\n // @ts-ignore\r\n getParameterValue(originalSymbol.stroke?.width),\r\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\r\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\r\n ),\r\n // @ts-ignore\r\n lineDash: getLineDash(originalSymbol.stroke),\r\n // @ts-ignore\r\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\r\n });\r\n }\r\n\r\n renderFunction(feature: Polyline, resolution: number, crs: Crs): Render[] {\r\n if (!isSimplePolylineSymbol(this.originalSymbol))\r\n return super.renderFunction(feature, resolution, crs);\r\n\r\n const {\r\n ending,\r\n beginningSize,\r\n beginning,\r\n endingSize,\r\n } = this.originalSymbol;\r\n const renders: Render[] = [];\r\n\r\n const featureCopy = feature.clone();\r\n\r\n const beginningMiterRender = getLineMiterRender({\r\n color: this.strokeColor,\r\n // @ts-ignore\r\n kind: beginning,\r\n position: 'left',\r\n // @ts-ignore\r\n size: beginningSize,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n const endingMiterRender = getLineMiterRender({\r\n color: this.strokeColor,\r\n // @ts-ignore\r\n kind: ending,\r\n position: 'right',\r\n // @ts-ignore\r\n size: endingSize,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n\r\n if (beginningMiterRender) {\r\n const updatedRings = updateRingsForMiter(\r\n featureCopy.rings,\r\n 'left',\r\n beginningMiterRender.usageSize\r\n );\r\n const render = beginningMiterRender.getRender(\r\n updatedRings,\r\n feature.crs,\r\n resolution,\r\n crs\r\n );\r\n\r\n featureCopy.rings = updatedRings;\r\n renders.push(render);\r\n }\r\n\r\n if (endingMiterRender) {\r\n const updatedRings = updateRingsForMiter(\r\n featureCopy.rings,\r\n 'right',\r\n endingMiterRender.usageSize\r\n );\r\n const render = endingMiterRender.getRender(\r\n updatedRings,\r\n feature.crs,\r\n resolution,\r\n crs\r\n );\r\n\r\n featureCopy.rings = updatedRings;\r\n renders.push(render);\r\n }\r\n\r\n // NOTE: линия должна быть в начале чтобы быть под митерами\r\n renders.unshift(...super.renderFunction(featureCopy, resolution, crs));\r\n\r\n return renders;\r\n }\r\n\r\n clone() {\r\n return new SGisPolylineSymbol(this.originalSymbol);\r\n }\r\n}\r\n","import React, { ComponentType } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { DynamicPointSymbol } from '@evergis/sgis/es/symbols/Symbol';\r\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\r\nimport { Offset } from '@evergis/sgis/es/baseTypes';\r\n\r\nexport type LabelSymbolComponent =\r\n | ComponentType<{ content: string }>\r\n | ComponentType;\r\n\r\ntype LabelSymbolParams = {\r\n offset?: Offset;\r\n component?: LabelSymbolComponent;\r\n};\r\n\r\nexport class LabelSymbol extends DynamicPointSymbol {\r\n public component?: LabelSymbolComponent;\r\n\r\n constructor({ component, offset }: LabelSymbolParams = {}) {\r\n super({ offset });\r\n this.component = component;\r\n }\r\n\r\n protected _getFeatureNode(feature: LabelFeature): HTMLElement {\r\n const node = document.createElement('div');\r\n\r\n this.renderDom(feature.content, node);\r\n\r\n return node;\r\n }\r\n\r\n protected _updateFeatureNode(feature: LabelFeature): void {\r\n this.renderDom(feature.content, this.getNode(feature));\r\n }\r\n\r\n private renderDom(content: string, node: HTMLElement): void {\r\n if (!node) {\r\n return;\r\n }\r\n\r\n const Component = this.component;\r\n\r\n if (Component) {\r\n ReactDOM.render(<Component content={content} />, node);\r\n } else {\r\n node.innerText = content;\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Offset } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { renderLabelSymbolType } from '../../components';\r\nimport { LabelSymbol } from './LabelSymbol';\r\n\r\nexport const defaultOffset: Offset = [8, -16];\r\n\r\ntype createLabelSymbolParams = {\r\n offset?: Offset;\r\n onClose?: VoidFunction;\r\n renderLabel: renderLabelSymbolType;\r\n};\r\n\r\nexport const createLabelSymbol = (props: createLabelSymbolParams) => {\r\n const {\r\n offset = defaultOffset,\r\n renderLabel = ({ content }: { content: string }) => <div>{content}</div>,\r\n onClose = undefined,\r\n } = props || {};\r\n\r\n return new LabelSymbol({\r\n offset,\r\n component: ({ content }: { content: string }) =>\r\n renderLabel({ content, onClose }),\r\n });\r\n};\r\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { polygonCircleFromPoint } from '../../';\r\nimport { EditorPointSymbolParams } from './ShadowedPointSymbol';\r\n\r\nexport function createShadowRender(\r\n position: Coordinates,\r\n {\r\n strokeWidth = 2,\r\n shadowColor,\r\n shadowSize,\r\n size = 6,\r\n }: EditorPointSymbolParams\r\n) {\r\n const shadowDiameter = size + strokeWidth + shadowSize;\r\n\r\n return new PolyRender(polygonCircleFromPoint(position, shadowDiameter), {\r\n fillColor: 'transparent',\r\n strokeColor: shadowColor,\r\n strokeWidth: shadowSize,\r\n enclosed: true,\r\n });\r\n}\r\n\r\nexport function getEditorPointRenderer(\r\n position: Coordinates,\r\n {\r\n strokeColor,\r\n strokeWidth,\r\n shadowColor,\r\n fillColor,\r\n shadowSize,\r\n size = 0,\r\n }: EditorPointSymbolParams\r\n) {\r\n return [\r\n createShadowRender(position, {\r\n strokeWidth,\r\n strokeColor,\r\n shadowSize,\r\n shadowColor,\r\n size,\r\n }),\r\n new PolyRender(polygonCircleFromPoint(position, size), {\r\n fillColor,\r\n strokeColor,\r\n strokeWidth,\r\n enclosed: true,\r\n }),\r\n ];\r\n}\r\n","import {\r\n PointSymbol,\r\n PointSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/point/Point';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { polygonCircleFromPoint } from '../..';\r\n\r\nexport type EditorPointSymbolParams = {\r\n shadowColor: string;\r\n shadowSize: number;\r\n} & PointSymbolConstructorParams;\r\n\r\nexport class ShadowedPointSymbol extends PointSymbol {\r\n shadowColor!: string;\r\n shadowSize!: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(options: EditorPointSymbolParams) {\r\n super(options);\r\n }\r\n\r\n static getShadowArc(\r\n position: Coordinates,\r\n {\r\n strokeWidth = 2,\r\n shadowColor,\r\n shadowSize,\r\n size = 6,\r\n }: EditorPointSymbolParams\r\n ): PolyRender {\r\n return new PolyRender(\r\n polygonCircleFromPoint(position, size + strokeWidth + shadowSize),\r\n {\r\n fillColor: 'transparent',\r\n strokeColor: shadowColor,\r\n strokeWidth: shadowSize,\r\n enclosed: true,\r\n }\r\n );\r\n }\r\n\r\n static getPointArc(\r\n position: Coordinates,\r\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams\r\n ): PolyRender {\r\n return new PolyRender(polygonCircleFromPoint(position, size), {\r\n fillColor,\r\n strokeColor,\r\n strokeWidth,\r\n enclosed: true,\r\n });\r\n }\r\n\r\n static getArcs(\r\n position: Coordinates,\r\n params: EditorPointSymbolParams\r\n ): PolyRender[] {\r\n const shadowRender = ShadowedPointSymbol.getShadowArc(position, params);\r\n const pointRender = ShadowedPointSymbol.getPointArc(position, params);\r\n\r\n return shadowRender ? [shadowRender, pointRender] : [pointRender];\r\n }\r\n\r\n public renderFunction(\r\n feature: PointFeature,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n if (!(feature instanceof PointFeature)) return [];\r\n const { position } = feature.projectTo(crs);\r\n\r\n const pxPosition: Coordinates = [\r\n position[0] / resolution + (this.offset[0] || 0),\r\n -position[1] / resolution + (this.offset[1] || 0),\r\n ];\r\n\r\n const shadowRender = this.getShadow(pxPosition, feature);\r\n const pointArc = this.getPoint(pxPosition, feature);\r\n\r\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\r\n }\r\n\r\n protected getShadow(\r\n position: Coordinates,\r\n _feature?: Feature\r\n ): PolyRender | void {\r\n return ShadowedPointSymbol.getShadowArc(position, this);\r\n }\r\n\r\n protected getPoint(position: Coordinates, _feature?: Feature): PolyRender {\r\n return ShadowedPointSymbol.getPointArc(position, this);\r\n }\r\n}\r\n","import {\r\n PolylineSymbol,\r\n PolylineSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { getEditorPointRenderer } from './getEditorPointRenderer';\r\nimport { ShadowedPointSymbol } from './ShadowedPointSymbol';\r\n\r\nexport type EditorPolySymbolParams = {\r\n shadowColor: string;\r\n shadowSize: number;\r\n fillColor?: string;\r\n enclose?: boolean;\r\n showVertex?: boolean;\r\n vertexShadowSize?: number;\r\n} & PolylineSymbolConstructorParams;\r\n\r\nexport class ShadowedPolySymbol extends PolylineSymbol {\r\n shadowColor!: string;\r\n shadowSize!: number;\r\n fillColor?: string;\r\n enclose?: boolean;\r\n showVertex?: boolean;\r\n vertexShadowSize?: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(options: EditorPolySymbolParams) {\r\n super(options);\r\n }\r\n\r\n public renderFunction(\r\n feature: Polygon,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n if (!(feature instanceof Poly)) return [];\r\n\r\n const coordinates = super.getRenderedCoordinates(\r\n feature,\r\n resolution,\r\n crs\r\n );\r\n const polyRender = this.getPolyRender(coordinates, feature);\r\n const shadowRender = this.getShadow(coordinates, feature);\r\n const vertexRenders = this.getVertexRenders(coordinates);\r\n let renders: Render[] = [polyRender];\r\n\r\n if (shadowRender) {\r\n renders = [shadowRender, polyRender];\r\n }\r\n\r\n if (vertexRenders) {\r\n renders = renders.concat(vertexRenders);\r\n }\r\n\r\n return renders;\r\n }\r\n\r\n protected getShadow(\r\n coordinates: Coordinates[][],\r\n _feature?: Feature\r\n ): PolyRender | void {\r\n return new PolyRender(coordinates, {\r\n fillStyle: FillStyle.None,\r\n enclosed: this.enclose,\r\n strokeColor: this.shadowColor,\r\n strokeWidth: this.shadowSize,\r\n lineDash: this.lineDash,\r\n });\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n _feature?: Feature\r\n ): PolyRender {\r\n return new PolyRender(coordinates, {\r\n fillStyle: this.enclose ? FillStyle.Color : FillStyle.None,\r\n enclosed: this.enclose,\r\n fillColor: this.fillColor,\r\n strokeColor: this.strokeColor,\r\n strokeWidth: this.strokeWidth,\r\n lineDash: this.lineDash,\r\n });\r\n }\r\n\r\n protected getVertexRenders(\r\n coordinates: Coordinates[][]\r\n ): PolyRender[] | void {\r\n if (!this.showVertex) return;\r\n\r\n const vertexCoordinates = coordinates.reduce((acc, curr) => {\r\n return acc.concat(curr);\r\n }, []);\r\n\r\n return vertexCoordinates\r\n .map(coord =>\r\n getEditorPointRenderer(coord, {\r\n size: 6,\r\n strokeWidth: 2,\r\n shadowColor: this.shadowColor,\r\n strokeColor: this.strokeColor,\r\n shadowSize:\r\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\r\n fillColor: '#ffffff',\r\n })\r\n )\r\n .reduce((acc, curr) => acc.concat(curr), []);\r\n }\r\n}\r\n\r\nconst polySymbolParams = {\r\n strokeWidth: 2,\r\n strokeColor: '#e33600',\r\n shadowSize: 8,\r\n shadowColor: 'rgba(227, 54, 0, 0.3)',\r\n};\r\n\r\nconst measureSymbolParams = {\r\n strokeColor: '#ff6933',\r\n shadowSize: 0,\r\n vertexShadowSize: 0,\r\n};\r\n\r\nexport const measureLengthSymbol = new ShadowedPolySymbol({\r\n ...polySymbolParams,\r\n ...measureSymbolParams,\r\n enclose: false,\r\n showVertex: true,\r\n});\r\n\r\nexport const measureAreaSymbol = new ShadowedPolySymbol({\r\n ...polySymbolParams,\r\n ...measureSymbolParams,\r\n fillColor: 'rgba(255, 105, 51, 0.25)',\r\n enclose: true,\r\n showVertex: true,\r\n});\r\n\r\nconst snapSymbolParams = {\r\n size: 10,\r\n strokeWidth: 2,\r\n strokeColor: '#e33600',\r\n fillColor: '#ffffff',\r\n shadowColor: 'rgba(227, 54, 0, 0.3)',\r\n shadowSize: 3,\r\n};\r\n\r\nexport const measurePolygonSnapSymbol = new ShadowedPointSymbol({\r\n ...snapSymbolParams,\r\n strokeColor: '#ff6933',\r\n shadowSize: 0,\r\n});\r\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\n\r\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\r\n\r\ntype SelectedFeature = PointFeature & {\r\n isSelected: boolean;\r\n};\r\n\r\nexport type SelectedPointSymbolParams = {\r\n selectedStrokeColor: string;\r\n selectedFillColor: string;\r\n} & EditorPointSymbolParams;\r\n\r\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\r\n selectedStrokeColor!: string;\r\n selectedFillColor!: string;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(props: SelectedPointSymbolParams) {\r\n super(props);\r\n }\r\n\r\n protected getShadow(\r\n position: [number, number],\r\n feature: SelectedFeature\r\n ): PolyRender | void {\r\n if (feature.isSelected) {\r\n return super.getShadow(position, feature);\r\n }\r\n }\r\n\r\n protected getPoint(\r\n position: [number, number],\r\n feature: SelectedFeature\r\n ): PolyRender {\r\n const pointRender = super.getPoint(position, feature);\r\n\r\n if (feature.isSelected) {\r\n pointRender.strokeColor = this.selectedStrokeColor;\r\n pointRender.fillColor = this.selectedFillColor;\r\n }\r\n\r\n return pointRender;\r\n }\r\n}\r\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\n\r\nimport {\r\n EditorPolySymbolParams,\r\n ShadowedPolySymbol,\r\n} from '../Shadowed/ShadowedPolySymbol';\r\n\r\ntype SelectedFeature = Polygon & {\r\n isSelected: boolean;\r\n};\r\n\r\nexport type SelectedPolySymbolParams = {\r\n selectedFillColor?: string;\r\n selectedStrokeColor: string;\r\n selectedStrokeWidth?: number;\r\n} & EditorPolySymbolParams;\r\n\r\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\r\n selectedFillColor!: string;\r\n selectedStrokeColor!: string;\r\n selectedStrokeWidth!: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(props: SelectedPolySymbolParams) {\r\n super(props);\r\n }\r\n\r\n protected getShadow(\r\n coordinates: Coordinates[][],\r\n feature: SelectedFeature\r\n ): PolyRender | void {\r\n if (feature.isSelected) {\r\n return super.getShadow(coordinates, feature);\r\n }\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n feature: SelectedFeature\r\n ): PolyRender {\r\n const polyRender = super.getPolyRender(coordinates, feature);\r\n if (feature.isSelected) {\r\n polyRender.fillColor = this.selectedFillColor;\r\n polyRender.strokeColor = this.selectedStrokeColor;\r\n if (this.selectedStrokeWidth !== void 0) {\r\n polyRender.strokeWidth = this.selectedStrokeWidth;\r\n }\r\n }\r\n\r\n return polyRender;\r\n }\r\n}\r\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\r\nimport { SelectedPointSymbol } from './SelectedPointSymbol';\r\n\r\nexport const selectedPoint = new SelectedPointSymbol({\r\n size: 8,\r\n strokeWidth: 2,\r\n strokeColor: 'rgba(255, 87, 34, 0.3)',\r\n fillColor: 'rgba(255, 255, 255, 0.65)',\r\n shadowColor: 'rgba(255, 87, 34, 0.3)',\r\n shadowSize: 3,\r\n\r\n selectedStrokeColor: '#ff5722',\r\n selectedFillColor: 'rgba(255, 255, 255, 0.65)',\r\n});\r\n\r\nexport const selectedPolyline = new SelectedPolySymbol({\r\n strokeWidth: 6,\r\n strokeColor: 'rgba(255, 87, 34, 0.2)',\r\n shadowSize: 8,\r\n shadowColor: 'rgba(255, 87, 34, 0.3)',\r\n selectedStrokeColor: '#ff5722',\r\n selectedStrokeWidth: 2,\r\n});\r\n\r\nexport const selectedPolygon = new SelectedPolySymbol({\r\n strokeWidth: 2,\r\n strokeColor: 'rgba(255, 87, 34, 0.3)',\r\n shadowSize: 8,\r\n shadowColor: 'rgba(255, 87, 34, 0.3)',\r\n fillColor: 'rgba(255, 255, 255, 0.36)',\r\n enclose: true,\r\n selectedFillColor: 'rgba(255, 255, 255, 0.56)',\r\n selectedStrokeColor: '#ff5722',\r\n});\r\n","import { Symbol } from '@evergis/sgis/es/symbols/Symbol';\r\nimport { Render, DynamicRender } from '@evergis/sgis/es/renders/Render';\r\nimport { SvgRender } from '@evergis/sgis/es/painters/DomPainter/SvgRender';\r\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { Bbox } from '@evergis/sgis/es/Bbox';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { FillStyle } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { listenDomEvent } from '@evergis/sgis/es/utils/domEvent';\r\nimport {\r\n MouseEventFlags,\r\n mouseEvents,\r\n Handler,\r\n} from '@evergis/sgis/es/EventHandler';\r\n\r\nimport { metersToPixels } from '../../utils/metersToPixels';\r\n\r\nimport { SVGPolyProps, SVGFeaturePoly, SvgPolyPathStyles } from './types';\r\n\r\nconst defaultPathStyles: SvgPolyPathStyles = {\r\n strokeWidth: 2,\r\n strokeColor: 'rgb(0, 163, 245)',\r\n fillStyle: FillStyle.None,\r\n};\r\n\r\nexport class SVGPoly extends Symbol<SVGFeaturePoly> {\r\n container: HTMLDivElement = document.createElement('div');\r\n redrawFeatureNode: SVGPolyProps['redrawFeatureNode'];\r\n pathStyles?: SvgPolyPathStyles;\r\n circle?: SVGPolyProps['circle'];\r\n className?: string;\r\n appendToSvg?: SVGPolyProps['appendToSvg'];\r\n\r\n constructor({\r\n redrawFeatureNode,\r\n pathStyles,\r\n circle,\r\n className,\r\n appendToSvg,\r\n }: SVGPolyProps = {}) {\r\n super();\r\n this.container.style.position = 'absolute';\r\n this.redrawFeatureNode = redrawFeatureNode;\r\n this.pathStyles = { center: [0, 0], fillColor: 'none', ...pathStyles };\r\n this.circle = circle;\r\n this.className = className;\r\n this.appendToSvg = appendToSvg;\r\n }\r\n\r\n renderFunction(\r\n feature: SVGFeaturePoly,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n const coordinates =\r\n feature instanceof Poly\r\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\r\n : feature.centroid;\r\n\r\n this.setCirclePxRaius(crs);\r\n this.container.innerHTML = '';\r\n const svg = this.setSvg(coordinates);\r\n svg && this.container.append(svg);\r\n\r\n feature.__dynamicSymbolRender = new DynamicRender({\r\n node: this.container,\r\n update: (bbox, resolution) =>\r\n this.update({ bbox, resolution, feature, crs }),\r\n redraw: () => {\r\n this.redrawFeatureNode && this.redrawFeatureNode(feature);\r\n },\r\n });\r\n\r\n this._setEventListeners(feature);\r\n\r\n return [feature.__dynamicSymbolRender];\r\n }\r\n\r\n setCirclePxRaius(crs: Crs) {\r\n if (this.circle && this.pathStyles) {\r\n this.pathStyles.radius =\r\n metersToPixels(this.circle.radius, {\r\n painter: this.circle.painter,\r\n crs,\r\n }) + (this.circle?.pxOffset || 0);\r\n }\r\n }\r\n\r\n update({\r\n bbox,\r\n resolution,\r\n feature,\r\n crs,\r\n }: {\r\n bbox?: Bbox;\r\n resolution?: number;\r\n feature: SVGFeaturePoly;\r\n crs: Crs;\r\n }) {\r\n if (!feature) return;\r\n\r\n if (!bbox) bbox = feature.__lastBbox;\r\n if (!resolution) resolution = feature.__lastResolution;\r\n\r\n if (!bbox || !resolution || !feature.crs.canProjectTo(bbox.crs)) return;\r\n\r\n if (feature.__lastResolution && resolution !== feature.__lastResolution) {\r\n const newCoordinates =\r\n feature instanceof Poly\r\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\r\n : feature.centroid;\r\n\r\n this.setCirclePxRaius(crs);\r\n this.container.innerHTML = '';\r\n const svg = this.setSvg(newCoordinates);\r\n svg && this.container.append(svg);\r\n }\r\n\r\n const polygon = feature.projectTo(bbox.crs);\r\n const radiusOffset = this.pathStyles?.radius\r\n ? this.pathStyles?.radius +\r\n (this.pathStyles?.strokeWidth ? this.pathStyles?.strokeWidth / 2 : 0)\r\n : 0;\r\n const dx =\r\n Math.round((polygon.bbox.xMin - bbox.xMin) / resolution) - radiusOffset;\r\n const dy =\r\n Math.round((bbox.yMax - polygon.bbox.yMax) / resolution) - radiusOffset;\r\n\r\n this.container.style.left = `${dx.toString()}px`;\r\n this.container.style.top = `${dy.toString()}px`;\r\n\r\n feature.__lastBbox = bbox;\r\n feature.__lastResolution = resolution;\r\n }\r\n\r\n setSvg(\r\n coordinates: [number, number][][] | Coordinates\r\n ): SVGElement | undefined {\r\n const { lineCap, lineJoin, miterLimit, lineDash, dashOffset } =\r\n this.pathStyles || {};\r\n const svgRender = new SvgRender({\r\n coordinates,\r\n ...defaultPathStyles,\r\n appendToSvg: this.appendToSvg,\r\n ...this.pathStyles,\r\n });\r\n\r\n if (this.circle) {\r\n svgRender._setArcNode();\r\n } else {\r\n svgRender._setPolyNode();\r\n }\r\n\r\n let svgElement;\r\n svgRender.getNode((_: null, svg: SVGElement) => {\r\n svgElement = svg;\r\n this.className && svgElement.classList.add(this.className);\r\n const path =\r\n svgElement && svgElement.querySelector(this.circle ? 'circle' : 'path');\r\n\r\n if (path) {\r\n path.setAttribute('stroke-linecap', lineCap || 'round');\r\n path.setAttribute('stroke-linejoin', lineJoin || 'round');\r\n path.setAttribute('stroke-miterlimit', (miterLimit || 10).toString());\r\n path.setAttribute('stroke-dashoffset', (dashOffset || 0).toString());\r\n\r\n if (this.circle) {\r\n path.setAttribute(\r\n 'stroke-dasharray',\r\n lineDash && lineDash.length > 0 ? lineDash.join(',') : ''\r\n );\r\n }\r\n }\r\n });\r\n\r\n return svgElement;\r\n }\r\n\r\n private _setEventListeners(dynamicFeature: SVGFeaturePoly): void {\r\n if (dynamicFeature.eventFlags === MouseEventFlags.None) return;\r\n\r\n const svgNode = dynamicFeature?.__dynamicSymbolRender?.node.querySelector(\r\n this.circle ? 'circle' : 'path'\r\n );\r\n\r\n Object.keys(mouseEvents).forEach(eventName => {\r\n if (dynamicFeature.eventFlags & mouseEvents[eventName].flag) {\r\n listenDomEvent(\r\n svgNode,\r\n mouseEvents[eventName].type,\r\n (event: Handler) => {\r\n dynamicFeature.fire(mouseEvents[eventName].type, {\r\n node: svgNode,\r\n browserEvent: event,\r\n });\r\n }\r\n );\r\n }\r\n });\r\n }\r\n}\r\n","import { BrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\r\nimport { ImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\r\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { SquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\r\nimport { PolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\r\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\r\nimport { PointSymbol } from '@evergis/sgis/es/symbols/point/Point';\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { ClusterSymbol } from \"@evergis/sgis/es/symbols/ClusterSymbol\";\r\nimport { ClusterSymbolDc } from \"@evergis/api\";\r\n\r\nimport {\r\n SGisImageSymbolType,\r\n SGisPointSymbolType,\r\n SGisPolygonSymbolType,\r\n SGisPolylineSymbolType,\r\n SGisSymbolType,\r\n} from './types';\r\n\r\nexport function isSGisPointSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPointSymbolType {\r\n return (\r\n symbol instanceof PointSymbol ||\r\n symbol instanceof StaticImageSymbol ||\r\n symbol instanceof SquareSymbol ||\r\n symbol instanceof MaskedImage\r\n );\r\n}\r\n\r\nexport function isSGisImageSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisImageSymbolType {\r\n return symbol instanceof StaticImageSymbol || symbol instanceof MaskedImage;\r\n}\r\n\r\nexport function isSGisPolygonSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPolygonSymbolType {\r\n return (\r\n symbol instanceof PolygonSymbol ||\r\n symbol instanceof BrushFill ||\r\n symbol instanceof ImageFill\r\n );\r\n}\r\n\r\nexport function isSGisPolylineSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPolylineSymbolType {\r\n return symbol instanceof PolylineSymbol;\r\n}\r\n\r\nexport function isSGisH3Symbol(\r\n symbol: SGisSymbolType\r\n): symbol is H3Symbol {\r\n return symbol instanceof H3Symbol;\r\n}\r\n\r\nexport function isSGisClusterSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is ClusterSymbol {\r\n return !!(symbol as ClusterSymbolDc).singleObjectSymbol;\r\n}\r\n","import { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { H3Feature } from \"@evergis/sgis/es/features/H3Feature\";\r\nimport { plain } from '@evergis/sgis/es/Crs';\r\n\r\n/**\r\n * Моки фич для отображения превью символа\r\n * http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217\r\n */\r\n\r\nexport const viewBoxSize = 100;\r\n\r\nexport const pointFeature = new PointFeature([50, -50], { crs: plain });\r\n\r\nexport const lineFeature = new Polyline(\r\n [\r\n [0, -57],\r\n [26, -57],\r\n [40, -35],\r\n [60, -65],\r\n [74, -43],\r\n [100, -43],\r\n ],\r\n {\r\n crs: plain,\r\n }\r\n);\r\nexport const polygonFeature = new Polygon(\r\n [\r\n [20, -20],\r\n [80, -20],\r\n [80, -80],\r\n [20, -80],\r\n ],\r\n { crs: plain }\r\n);\r\nexport const h3gridFeature = new H3Feature(\r\n [\r\n [50, -15],\r\n [80, -33],\r\n [80, -67],\r\n [50, -85],\r\n [20, -67],\r\n [20, -33],\r\n [50, -15],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const lineLegendFeature = new Polyline(\r\n [\r\n [0, -50],\r\n [100, -50],\r\n ],\r\n {\r\n crs: plain,\r\n }\r\n);\r\n\r\nexport const polygonLegendFeature = new Polygon(\r\n [\r\n [20, -20],\r\n [80, -20],\r\n [80, -80],\r\n [20, -80],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const polygonMapLegendFeature = new Polygon(\r\n [\r\n [50, 0],\r\n [100, -25],\r\n [100, -75],\r\n [50, -100],\r\n [0, -75],\r\n [0, -25],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const MAP_LEGEND_FEATURES = {\r\n polygon: polygonMapLegendFeature,\r\n};\r\n\r\nexport const LEGEND_FEATURES = {\r\n point: pointFeature,\r\n polyline: lineLegendFeature,\r\n polygon: polygonLegendFeature,\r\n h3grid: h3gridFeature,\r\n};\r\n\r\nexport const MOCK_FEATURES = {\r\n point: pointFeature,\r\n polyline: lineFeature,\r\n polygon: polygonFeature,\r\n h3grid: h3gridFeature,\r\n} as const;\r\n","import { plain } from '@evergis/sgis/es/Crs';\r\n\r\nimport { isSGisH3Symbol, isSGisPolygonSymbol, isSGisPolylineSymbol } from './guards';\r\nimport {\r\n LEGEND_FEATURES,\r\n MAP_LEGEND_FEATURES,\r\n MOCK_FEATURES,\r\n viewBoxSize,\r\n} from './mockFeatures';\r\nimport { SGisSymbolType } from './types';\r\n\r\nexport function getSymbolRenders(\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize,\r\n features: Partial<typeof MOCK_FEATURES> = {}\r\n) {\r\n const resolution = viewBoxSize / size;\r\n const featuresToRender = { ...MOCK_FEATURES, ...features };\r\n\r\n if (isSGisPolygonSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.polygon,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n if (isSGisPolylineSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.polyline,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n if (isSGisH3Symbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.h3grid,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n return symbol.renderFunctionAsync(featuresToRender.point, resolution, plain);\r\n}\r\n\r\nexport const getMapLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => getSymbolRenders(symbol, size, MAP_LEGEND_FEATURES);\r\n\r\nexport const getLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => getSymbolRenders(symbol, size, LEGEND_FEATURES);\r\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { RenderForCanvas } from \"@evergis/sgis/es/painters/DomPainter/types\";\r\n\r\nexport function renderSymbolToCanvas(renders: Render[], canvas: Canvas) {\r\n renders.forEach(render => {\r\n canvas.draw(<RenderForCanvas>render);\r\n });\r\n}\r\n","import { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\r\nimport { PointSymbol as SPointSymbol, PointSymbolConstructorParams } from '@evergis/sgis/es/symbols/point/Point';\r\nimport { SquareSymbol as SSquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\r\nimport { Color } from '@evergis/color';\r\nimport { StaticImageSymbol as SStaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { ClusterSymbolDc, SvgParameterDc } from \"@evergis/api\";\r\n\r\nimport { getParameterValue } from '../core/classification';\r\n\r\nimport {\r\n ClassifyAble,\r\n H3GridSymbol,\r\n isPolygonHasHatchBrush,\r\n isPolygonHasPatternBrush,\r\n MaskedImageSymbol,\r\n Offset,\r\n ParameterValue,\r\n PointSymbol,\r\n PolygonSymbol,\r\n PolylineSymbols,\r\n SimpleOffset,\r\n SquareSymbol,\r\n StaticImageSymbol,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n} from '../core/style';\r\n\r\nimport {\r\n SGisBrushFill,\r\n SGisImageFill,\r\n SGisPolygonSymbol,\r\n SGisPolylineSymbol,\r\n} from './Evergis';\r\n\r\nimport { SGisSymbolType } from './types';\r\n\r\n// TODO create classes from unClassified symbols only\r\nexport function deserializeSymbol(\r\n symbol: StyleSymbolType\r\n): SGisSymbolType | null {\r\n switch (symbol.type) {\r\n case \"h3grid\":\r\n return deserializeH3Symbol(symbol as H3Symbol);\r\n case \"svgPointSymbol\":\r\n return deserializeSvgPointSymbol(symbol as SvgPointSymbol);\r\n case 'circlePointSymbol':\r\n return deserializePointSymbol(symbol as PointSymbol);\r\n case 'squarePointSymbol':\r\n return deserializeSquareSymbol(symbol as SquareSymbol);\r\n case 'maskedImagePointSymbol':\r\n return deserializeMaskedImageSymbol(symbol as MaskedImageSymbol);\r\n case 'imagePointSymbol':\r\n return deserializeImagePointSymbol(symbol as StaticImageSymbol);\r\n case 'polygonSymbol':\r\n return deserializePolygonSymbol(symbol as PolygonSymbol);\r\n case 'simplePolylineSymbol':\r\n case 'polylineSymbol':\r\n return deserializePolylineSymbol(symbol as PolylineSymbols);\r\n case \"clusterSymbol\":\r\n return deserializeSymbol((symbol as ClusterSymbolDc).singleObjectSymbol as StyleSymbolType);\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nfunction deserializeH3Symbol(symbol: H3GridSymbol) {\r\n return new H3Symbol({\r\n ...symbol,\r\n cellSize: getParameterValue(symbol.cellSize as number),\r\n strokeWidth: getParameterValue(symbol?.stroke?.width as number),\r\n strokeColor: getParameterValue(symbol?.stroke?.color as string),\r\n fillColor: getParameterValue(symbol?.fill?.color as string),\r\n });\r\n}\r\n\r\nfunction deserializePointSymbol(symbol: PointSymbol) {\r\n // @ts-ignore\r\n return new SPointSymbol(deserializePointSymbolParams(symbol));\r\n}\r\n\r\nexport const getOffsetParameterValue = (offset: Offset): SimpleOffset => [\r\n getParameterValue(offset?.[0]),\r\n getParameterValue(offset?.[1]),\r\n];\r\n\r\nfunction deserializeSvgPointSymbolParams({ type, data, size, offset, angle, background, figure }: SvgPointSymbol) {\r\n return {\r\n type: getParameterValue(type as ParameterValue),\r\n data: getParameterValue(data as ParameterValue),\r\n size: getParameterValue(size as ParameterValue),\r\n offset: getOffsetParameterValue(offset as Offset),\r\n angle: getParameterValue(angle as ParameterValue),\r\n ...(background\r\n ? {\r\n background: {\r\n ...(background as SvgParameterDc),\r\n fillColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.fillColor as string)),\r\n strokeColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.strokeColor as string)),\r\n strokeWidth: getParameterValue((background as SvgParameterDc)?.strokeWidth as ParameterValue),\r\n },\r\n }\r\n : {}),\r\n ...(figure\r\n ? {\r\n figure: {\r\n ...(figure as SvgParameterDc),\r\n fillColor: deserializeColor(\r\n getParameterValue((figure as SvgParameterDc)?.fillColor as ParameterValue) as string,\r\n ),\r\n },\r\n }\r\n : {}),\r\n };\r\n}\r\n\r\nfunction deserializeSvgPointSymbol(symbol: SvgPointSymbol) {\r\n return new SPointSymbol(deserializeSvgPointSymbolParams(symbol) as PointSymbolConstructorParams);\r\n}\r\n\r\nfunction deserializeSquareSymbol(symbol: SquareSymbol) {\r\n return new SSquareSymbol({\r\n ...deserializePointSymbolParams(symbol),\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n });\r\n}\r\n\r\nfunction deserializeMaskedImageSymbol(symbol: MaskedImageSymbol) {\r\n return new MaskedImage({\r\n ...symbol,\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n // @ts-ignore\r\n width: getParameterValue(symbol.width),\r\n // @ts-ignore\r\n height: getParameterValue(symbol.height),\r\n // @ts-ignore\r\n anchorPoint: deserializeAnchor(symbol.offset),\r\n // @ts-ignore\r\n imageSource: deserializeBase64(symbol.image),\r\n // @ts-ignore\r\n maskSource: deserializeBase64(symbol.imageMask),\r\n // @ts-ignore\r\n maskColor: deserializeColor(getParameterValue(symbol.maskedColor)),\r\n });\r\n}\r\n\r\nfunction deserializeImagePointSymbol(symbol: StaticImageSymbol) {\r\n return new SStaticImageSymbol({\r\n ...symbol,\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n // @ts-ignore\r\n width: getParameterValue(symbol.width),\r\n // @ts-ignore\r\n height: getParameterValue(symbol.height),\r\n // @ts-ignore\r\n anchorPoint: deserializeAnchor(symbol.offset),\r\n // @ts-ignore\r\n source: deserializeBase64(symbol.image),\r\n });\r\n}\r\n\r\nfunction deserializePolygonSymbol(symbol: PolygonSymbol) {\r\n if (isPolygonHasPatternBrush(symbol)) {\r\n return new SGisImageFill(symbol);\r\n }\r\n\r\n if (isPolygonHasHatchBrush(symbol)) {\r\n return new SGisBrushFill(symbol);\r\n }\r\n\r\n return new SGisPolygonSymbol(symbol);\r\n}\r\n\r\nfunction deserializePolylineSymbol(symbol: PolylineSymbols) {\r\n return new SGisPolylineSymbol(symbol);\r\n}\r\n\r\nfunction deserializePointSymbolParams({\r\n size,\r\n offset,\r\n strokeColor,\r\n strokeWidth,\r\n fillColor,\r\n}: PointSymbol | SquareSymbol) {\r\n return {\r\n size: getParameterValue(size as ClassifyAble<number>),\r\n offset: deserializeAnchor(offset as Offset),\r\n strokeWidth: getParameterValue(strokeWidth as ClassifyAble<number>),\r\n strokeColor: deserializeColor(\r\n getParameterValue(strokeColor as ClassifyAble<string>)\r\n ),\r\n fillColor: deserializeColor(\r\n getParameterValue(fillColor as ClassifyAble<string>)\r\n ),\r\n };\r\n}\r\n\r\nfunction deserializeBase64(base: string) {\r\n return `data:image/png;base64,${base}`;\r\n}\r\n\r\nexport function deserializeAnchor(offset: Offset) {\r\n // @ts-ignore\r\n return offset.map(getParameterValue);\r\n}\r\n\r\nfunction deserializeColor(color: string): string | null {\r\n return color ? new Color(color).toString() : null;\r\n}\r\n","import { SGisSymbolType } from './types';\r\nimport { isSGisImageSymbol, isSGisPointSymbol } from './guards';\r\n\r\nimport { clamp } from '../utils/math';\r\n\r\nexport const clampSymbol = (\r\n symbol: SGisSymbolType,\r\n min: number,\r\n max: number\r\n): SGisSymbolType => {\r\n if (isSGisImageSymbol(symbol)) {\r\n symbol.width = clamp(symbol.width, min, max);\r\n symbol.height = clamp(symbol.height, min, max);\r\n } else if (isSGisPointSymbol(symbol)) {\r\n symbol.size = clamp(symbol.size, min, max);\r\n }\r\n\r\n return symbol;\r\n};\r\n\r\nexport function centerAlignSymbol(symbol: SGisSymbolType) {\r\n if (isSGisImageSymbol(symbol)) {\r\n symbol.anchorPoint = [symbol.width / 2, symbol.height / 2];\r\n } else if (isSGisPointSymbol(symbol)) {\r\n symbol.offset = [0, 0];\r\n }\r\n\r\n return symbol;\r\n}\r\n\r\nexport const adjustSymbol = (\r\n symbol: SGisSymbolType,\r\n { size }: { size: number }\r\n) => centerAlignSymbol(clampSymbol(symbol, 0, size));\r\n","import { FeatureDc, GeometryDc, GeometryType } from '@evergis/api';\r\nimport { MultiPoint } from '@evergis/sgis/es/features/MultiPoint';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\n\r\nimport { CRS_MAP, SrId } from '../crs';\r\n\r\nimport { FeatureAttribute } from '../attributes';\r\nimport { getFeatureAttributes } from '../attributes/utils';\r\n\r\nimport { StyleSymbolType } from '../style';\r\n\r\nimport {\r\n selectedPoint,\r\n selectedPolygon,\r\n selectedPolyline,\r\n} from '../../symbols';\r\n\r\nexport type FeatureDCExtened = FeatureDc & {\r\n layer?: string;\r\n};\r\n\r\nexport class EvergisFeature {\r\n public id?: string | null = null;\r\n public displayName?: string | null = null;\r\n public geometry?: GeometryDc | null = null;\r\n\r\n public layerName?: string | null = null;\r\n public layerAlias?: string | null = null;\r\n public attributes?: FeatureAttribute[] | null = null;\r\n public symbol?: StyleSymbolType | null = null;\r\n\r\n constructor(feature: FeatureDCExtened) {\r\n this.id = feature.id;\r\n this.displayName = feature.id;\r\n this.geometry = feature.geometry;\r\n\r\n this.layerName = feature.layer;\r\n this.layerAlias = feature.layer;\r\n this.attributes = getFeatureAttributes(feature.attributes);\r\n }\r\n\r\n public sGisFeature() {\r\n if (!this.geometry || !this.symbol) {\r\n return null;\r\n }\r\n\r\n // @ts-ignore\r\n const { type, coordinates, sr } = this.geometry;\r\n const crs = CRS_MAP[sr as SrId];\r\n\r\n if (!crs) {\r\n return null;\r\n }\r\n\r\n switch (type) {\r\n case GeometryType.Point:\r\n return new PointFeature(coordinates, {\r\n symbol: selectedPoint,\r\n crs,\r\n });\r\n case GeometryType.Multipoint:\r\n return new MultiPoint(coordinates, {\r\n symbol: selectedPoint,\r\n crs,\r\n });\r\n case GeometryType.Polyline:\r\n return new Polyline(coordinates, {\r\n symbol: selectedPolyline,\r\n crs,\r\n });\r\n case GeometryType.Polygon:\r\n return new Polygon(coordinates, {\r\n symbol: selectedPolygon,\r\n crs,\r\n });\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n public extent() {\r\n const feature = this.sGisFeature();\r\n\r\n return feature && feature.bbox;\r\n }\r\n}\r\n","import { ConditionAttributes, ConditionEvaluator } from '@evergis/condition';\r\n\r\nexport function evaluateCondition(\r\n condition: string,\r\n attributes: ConditionAttributes\r\n) {\r\n try {\r\n const evaluator = new ConditionEvaluator(attributes);\r\n const result = evaluator.evaluate(condition);\r\n\r\n if (result instanceof Error) {\r\n return null;\r\n }\r\n\r\n return result;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n","import { evaluateCondition } from './evaluateCondition';\r\n\r\nimport { FeatureAttribute, FeatureAttributeValue } from '../attributes';\r\n\r\nimport {\r\n ClassificationCondition,\r\n isParameterByAttribute,\r\n} from '../classification';\r\n\r\nimport {\r\n ClassifiedParameterValue,\r\n EvergisStyle,\r\n ParameterByAttributeValue,\r\n ParameterByAttributeValues,\r\n ParameterValueWithSymbol,\r\n Style,\r\n StyleSymbolType,\r\n} from '../style';\r\n\r\nimport { isObject } from '../../utils/isObject';\r\n\r\nfunction getAttributeValue(\r\n attributes: FeatureAttribute[],\r\n attributeName: string\r\n) {\r\n const attributeMeta = attributes.find(({ name }) => name === attributeName);\r\n\r\n return attributeMeta ? attributeMeta.value : null;\r\n}\r\n\r\nexport const getAttributeNameFromCondition = (\r\n condition: string\r\n): string | null => new ClassificationCondition(condition).attributeName;\r\n\r\nexport const getAttributeNameFromClassified = (\r\n values: ParameterByAttributeValue<ParameterValueWithSymbol>[]\r\n): string | null =>\r\n values.length > 0 ? getAttributeNameFromCondition(values[0].condition) : null;\r\n\r\nfunction findFeatureValue(\r\n parameterValues: ParameterByAttributeValues,\r\n [name, value]: [string, FeatureAttributeValue | undefined]\r\n) {\r\n return value !== null\r\n ? parameterValues.find(\r\n ({ condition }) =>\r\n value !== undefined && evaluateCondition(condition, { [name]: value })\r\n )\r\n : null;\r\n}\r\n\r\nfunction extractValuesAttribute(\r\n parameterValues: ParameterByAttributeValues,\r\n attributes: FeatureAttribute[]\r\n): [string, FeatureAttributeValue | undefined] {\r\n const name = getAttributeNameFromClassified(parameterValues) || '';\r\n const value = name && getAttributeValue(attributes, name);\r\n\r\n return [name, value];\r\n}\r\n\r\nfunction evaluateFeatureSymbol(attributes: FeatureAttribute[]) {\r\n // @ts-ignore\r\n function calc(\r\n result: StyleSymbolType,\r\n [parameterName, parameterValue]: [string, ClassifiedParameterValue]\r\n ) {\r\n let newParameterValue;\r\n\r\n if (isParameterByAttribute(parameterValue)) {\r\n const [attributeName, attributeValue] = extractValuesAttribute(\r\n parameterValue.values,\r\n attributes\r\n );\r\n const featureValue = findFeatureValue(parameterValue.values, [\r\n attributeName,\r\n attributeValue,\r\n ]);\r\n\r\n newParameterValue = featureValue\r\n ? featureValue.value\r\n : parameterValue.defaultValue;\r\n } else if (isObject(parameterValue)) {\r\n // @ts-ignore\r\n newParameterValue = Object.entries(parameterValue).reduce(\r\n calc,\r\n parameterValue\r\n );\r\n }\r\n\r\n return newParameterValue !== undefined\r\n ? {\r\n ...result,\r\n [parameterName]: newParameterValue,\r\n }\r\n : result;\r\n }\r\n\r\n return calc;\r\n}\r\n\r\nexport function findChildFeatureStyle(\r\n childStyles: Style[],\r\n attributes: FeatureAttribute[]\r\n) {\r\n return (\r\n (childStyles || []).find(({ condition }) => {\r\n const attributeName =\r\n condition && getAttributeNameFromCondition(condition);\r\n const attributeValue =\r\n attributeName && getAttributeValue(attributes, attributeName);\r\n\r\n if (condition && attributeName && attributeValue !== undefined) {\r\n return evaluateCondition(condition, {\r\n [attributeName]: attributeValue,\r\n });\r\n }\r\n\r\n return false;\r\n }) || null\r\n );\r\n}\r\n\r\nexport function findChildFeatureSymbol(\r\n childStyles: Style[],\r\n attributes: FeatureAttribute[]\r\n) {\r\n const featureStyle = findChildFeatureStyle(childStyles, attributes);\r\n\r\n return featureStyle ? featureStyle.symbol : null;\r\n}\r\n\r\nexport function getFeatureSymbol(\r\n style: EvergisStyle,\r\n attributes: FeatureAttribute[]\r\n): StyleSymbolType | null {\r\n if (!style || !style.symbol) {\r\n return null;\r\n }\r\n\r\n if (style.children !== null) {\r\n return findChildFeatureSymbol(style.children, attributes) || style.symbol;\r\n }\r\n\r\n return Object.entries(style.symbol).reduce(\r\n evaluateFeatureSymbol(attributes),\r\n style.symbol\r\n );\r\n}\r\n","import { FeatureLayerServiceInfoDc, ServiceInfoDc } from '@evergis/api';\r\n\r\nimport { LayerAttribute, formatAttributeValue } from '../attributes';\r\nimport { getLayerAttributes, mergeAttributes } from '../attributes/utils';\r\n\r\nimport { EvergisFeature, getFeatureSymbol } from '../feature';\r\n\r\nimport { EvergisStyle } from '../style';\r\n\r\nexport class EvergisLayer {\r\n public readonly name: string | null = null;\r\n private readonly titleAttribute: string | null = null;\r\n private readonly alias: string | null = null;\r\n private readonly attributes: LayerAttribute[] | null = null;\r\n private readonly style: EvergisStyle | null = null;\r\n\r\n constructor(service: ServiceInfoDc) {\r\n const evergisService = service as FeatureLayerServiceInfoDc;\r\n const { name, alias, style, layerDefinition } = evergisService;\r\n\r\n this.name = name;\r\n this.alias = alias || name;\r\n this.attributes = getLayerAttributes(layerDefinition);\r\n this.style = (style && new EvergisStyle(style)) || null;\r\n this.titleAttribute =\r\n (layerDefinition && layerDefinition.titleAttribute) || null;\r\n }\r\n\r\n public evaluateFeature(feature: EvergisFeature): EvergisFeature {\r\n feature.attributes = mergeAttributes(\r\n feature.attributes || [],\r\n this.attributes || []\r\n );\r\n\r\n feature.symbol =\r\n this.style && getFeatureSymbol(this.style, feature.attributes);\r\n\r\n feature.layerAlias = this.alias;\r\n\r\n const titleAttribute = (feature.attributes || []).find(\r\n ({ name }) => name === this.titleAttribute\r\n );\r\n\r\n const displayName =\r\n (titleAttribute && formatAttributeValue(titleAttribute)[0].value) ||\r\n feature.id;\r\n\r\n feature.displayName = displayName ? `${displayName}` : feature.id;\r\n\r\n return feature;\r\n }\r\n}\r\n\r\nconst findFeatureLayer = (feature: EvergisFeature) => (layer: EvergisLayer) =>\r\n layer.name === feature.layerName;\r\n\r\nexport const evaluateFeature = (layers: EvergisLayer[]) => (\r\n feature: EvergisFeature\r\n) => {\r\n const featureLayer = layers.find(findFeatureLayer(feature));\r\n\r\n return featureLayer ? featureLayer.evaluateFeature(feature) : feature;\r\n};\r\n","import { getClassificationAttribute } from '../attributes/utils';\r\n\r\nimport { ExtendedClassification } from '../classification';\r\nimport { LegendConfig, LegendItem, LegendValueType } from './types';\r\n\r\nconst OTHERS_TITLE = 'Другое';\r\n\r\nexport const createLegendItem = ({\r\n attributes,\r\n renderTitle,\r\n skipDefaultValue,\r\n reverse,\r\n}: LegendConfig) => (classification: ExtendedClassification): LegendItem => {\r\n const {\r\n defaultTitle,\r\n defaultValue,\r\n values,\r\n attribute: attributeName,\r\n parameter,\r\n } = classification;\r\n\r\n const attribute =\r\n attributeName && attributes\r\n ? getClassificationAttribute(attributeName, attributes)\r\n : undefined;\r\n\r\n const defaultLegendValue: LegendValueType = {\r\n title: defaultTitle || OTHERS_TITLE,\r\n parameterValue: defaultValue,\r\n };\r\n\r\n const legendValues = values.map((value, index) => ({\r\n title: renderTitle && renderTitle({ ...value, attribute }, index),\r\n parameterValue: value.parameterValue,\r\n }));\r\n\r\n const withDefault = skipDefaultValue\r\n ? legendValues\r\n : [...legendValues, defaultLegendValue];\r\n\r\n const reversedValues = reverse ? [...withDefault].reverse() : withDefault;\r\n\r\n return {\r\n title: (attribute && attribute.alias) || attributeName,\r\n attribute,\r\n parameter,\r\n values: reversedValues,\r\n } as LegendItem;\r\n};\r\n","import { ClassificationParameterExtended } from \"../classification\";\r\n\r\nexport function isValidParameter(parameter: ClassificationParameterExtended) {\r\n return !parameter?.includes(\"labelSymbol\") && !parameter?.includes(\"singleObjectSymbol\");\r\n}\r\n","import { ClusterSymbolDc } from \"@evergis/api\";\r\n\r\nimport { createLegendItem } from './createLegendItem';\r\nimport { isValidParameter } from \"./isValidParameter\";\r\nimport { ClassificationParameterExtended, unClassify } from '../classification';\r\nimport { EvergisStyle, StyleSymbolType } from '../style';\r\nimport { LayerLegend, LegendConfig } from './types';\r\n\r\nexport function createStyleLegend(\r\n style: EvergisStyle,\r\n config: LegendConfig\r\n): LayerLegend | null {\r\n const { classificationManager, symbol } = style;\r\n\r\n const items = classificationManager.filter(({ parameter }) => {\r\n return config.parameters && parameter\r\n ? config.parameters.includes(parameter)\r\n : isValidParameter(parameter as ClassificationParameterExtended)\r\n });\r\n\r\n if (!items.length) {\r\n return null;\r\n }\r\n\r\n return {\r\n symbol: unClassify((symbol as ClusterSymbolDc).singleObjectSymbol || symbol) as StyleSymbolType,\r\n items: items.map(createLegendItem(config)),\r\n };\r\n}\r\n","import {\r\n ClassificationClass,\r\n isRangeClass,\r\n isUniqueClass,\r\n printRangeClass,\r\n} from '../classification';\r\n\r\nexport function createValueTitle(\r\n value: ClassificationClass,\r\n index: number\r\n): string {\r\n if (value.title) return value.title;\r\n\r\n if (isRangeClass(value)) return printRangeClass(value, index);\r\n if (isUniqueClass(value)) return value.uniqueValue;\r\n\r\n return '';\r\n}\r\n","import { softEquals } from '@evergis/sgis/es/utils/math';\r\n\r\nimport { numberWithSpaces } from '../utils/format';\r\n\r\nexport function formatArea(num: number): string {\r\n let result = num;\r\n let measure = 'м²';\r\n\r\n if (num >= 10000000) {\r\n result = num / 1000000;\r\n measure = 'км²';\r\n } else if (num >= 10000) {\r\n result = num / 10000;\r\n measure = 'га';\r\n }\r\n\r\n return `${numberWithSpaces(result)} ${measure}`;\r\n}\r\n\r\nexport function formatLength(num: number): string {\r\n let result = num;\r\n let measure = 'м';\r\n\r\n if (num > 10000) {\r\n result = num / 1000;\r\n measure = 'км';\r\n }\r\n\r\n return `${numberWithSpaces(result)} ${measure}`;\r\n}\r\nexport function formatPolygonMeasure(area: number, perimiter: number): string {\r\n return `S : ${formatArea(area)} P : ${formatLength(perimiter)}`;\r\n}\r\n\r\nexport function isPolylineLikePolygon(\r\n rings: [number, number][][],\r\n resolution: number\r\n): boolean {\r\n if (rings[0].length <= 3) {\r\n return false;\r\n }\r\n\r\n const coords = rings[0];\r\n const firstPoint = coords[0];\r\n const lastPoint = coords[coords.length - 1];\r\n const distance = resolution * 2;\r\n\r\n return (\r\n softEquals(firstPoint[0], lastPoint[0], distance) &&\r\n softEquals(firstPoint[1], lastPoint[1], distance)\r\n );\r\n}\r\n","export function getScale(scale: number): number {\r\n const scales = [1, 2, 5];\r\n\r\n for (let x = 0; x < 21; x++) {\r\n for (let y = 0; y < scales.length; y++) {\r\n const result = Math.pow(10, x) * scales[y];\r\n\r\n if (result > scale) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n return 1;\r\n}\r\n","import { useMemo } from 'react';\r\n\r\nimport {\r\n createStyleLegend,\r\n EvergisStyle,\r\n LayerLegend,\r\n LegendConfig,\r\n} from '../../core';\r\n\r\nexport const useLegend = (\r\n style?: EvergisStyle,\r\n config?: LegendConfig\r\n): LayerLegend | null =>\r\n useMemo(() => {\r\n if (!style || !(config && config.attributes)) return null;\r\n\r\n return createStyleLegend(style, config);\r\n }, [style, config]);\r\n","import { FeatureLayerServiceInfoDc } from '@evergis/api';\r\n\r\nimport { useLegend } from './useLegend';\r\n\r\nimport {\r\n createValueTitle,\r\n EvergisStyle,\r\n LayerAttributes,\r\n LayerLegend,\r\n LegendConfig,\r\n} from '../../core';\r\n\r\nconst DEFAULT_LEGEND_CONFIG: LegendConfig = {\r\n renderTitle: createValueTitle,\r\n};\r\n\r\nexport const useLayerLegend = (\r\n layer?: FeatureLayerServiceInfoDc,\r\n config?: LegendConfig\r\n): LayerLegend | null => {\r\n const { style, layerDefinition } = layer || {};\r\n const { attributes } = layerDefinition || {};\r\n\r\n const styleProxy = style && new EvergisStyle(style);\r\n\r\n return useLegend(styleProxy, {\r\n attributes: attributes as LayerAttributes,\r\n ...DEFAULT_LEGEND_CONFIG,\r\n ...config,\r\n });\r\n};\r\n","import { FeatureLayerServiceInfoDc } from '@evergis/api';\r\n\r\nimport { useLayerLegend } from './useLayerLegend';\r\n\r\nimport { LegendConfig } from '../../core';\r\n\r\nexport const useMapLegend = (\r\n layer?: FeatureLayerServiceInfoDc,\r\n config?: LegendConfig\r\n) => {\r\n const legend = useLayerLegend(layer, config);\r\n\r\n if (!legend) {\r\n return null;\r\n }\r\n\r\n return {\r\n symbol: legend.symbol,\r\n items: legend.items,\r\n };\r\n};\r\n","import { useLegendContext } from '../../contexts';\r\n\r\nimport {\r\n applyParameterValue,\r\n ClassificationParameterExtended,\r\n ParameterValueWithSymbol,\r\n} from '../../core';\r\n\r\nimport { adjustSymbol, deserializeSymbol, SGisSymbolType } from '../../symbols';\r\n\r\nexport type LegendSymbolPart = {\r\n parameter: ClassificationParameterExtended;\r\n parameterValue: ParameterValueWithSymbol;\r\n};\r\n\r\nconst LEGEND_SYMBOL_MAX_SIZE = 32;\r\n\r\nexport const useLegendValueSymbol = ({\r\n parameter,\r\n parameterValue,\r\n}: LegendSymbolPart) => {\r\n const symbol = useLegendContext();\r\n const valueSymbol =\r\n // @ts-ignore\r\n symbol && applyParameterValue(symbol, parameter, parameterValue);\r\n let sGisSymbol: SGisSymbolType | null = null;\r\n\r\n try {\r\n sGisSymbol = valueSymbol && deserializeSymbol(valueSymbol);\r\n } catch (e) {}\r\n\r\n return (\r\n sGisSymbol && adjustSymbol(sGisSymbol, { size: LEGEND_SYMBOL_MAX_SIZE - 1 })\r\n );\r\n};\r\n","import { MutableRefObject, useEffect } from 'react';\r\nimport { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\n\r\nimport {\r\n getSymbolRenders,\r\n renderSymbolToCanvas,\r\n SGisSymbolType,\r\n} from '../symbols';\r\n\r\nexport interface UseSymbolParams {\r\n symbol: SGisSymbolType;\r\n render?: (symbol: SGisSymbolType, size: number) => Promise<Render[]>;\r\n size?: number;\r\n maxWidth?: number;\r\n}\r\n\r\nexport const DEFAULT_SYMBOL_SIZE = 26;\r\n\r\nexport function useSymbol(\r\n {\r\n symbol,\r\n size = DEFAULT_SYMBOL_SIZE,\r\n render = getSymbolRenders,\r\n maxWidth,\r\n }: UseSymbolParams,\r\n canvasRef: MutableRefObject<Canvas | null>\r\n) {\r\n useEffect(() => {\r\n if (canvasRef.current !== null && symbol !== undefined) {\r\n const canvas = canvasRef.current;\r\n setCanvasSize(canvas, size, maxWidth);\r\n\r\n render(symbol, size).then(renders => {\r\n renderSymbolToCanvas(renders, canvas);\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [symbol, size, maxWidth]);\r\n}\r\n\r\nfunction setCanvasSize(canvas: Canvas, size: number, maxWidth?: number) {\r\n canvas.node.height = size;\r\n canvas.node.width = maxWidth ? Math.min(size, maxWidth) : size;\r\n}\r\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\r\nimport { useCallback, useRef } from 'react';\r\n\r\nexport function useCanvas() {\r\n const canvas = useRef<Canvas | null>(null);\r\n const ref = useCallback((node: HTMLCanvasElement | null) => {\r\n if (node !== null) {\r\n canvas.current = new Canvas(node);\r\n } else {\r\n canvas.current = null;\r\n }\r\n }, []);\r\n\r\n return { canvas, ref };\r\n}\r\n","import { useEffect } from 'react';\r\n\r\nexport function useMount({ onMount, onUnmount }: UseMountOptions) {\r\n useEffect(() => {\r\n onMount && onMount();\r\n return onUnmount;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n}\r\n\r\ntype UseMountOptions = {\r\n onMount?: () => void;\r\n onUnmount?: () => void;\r\n};\r\n","import { useMemo, useRef } from 'react';\r\n\r\nimport { useMount } from './useMount';\r\n\r\nexport function useProperty<T, D extends unknown[] | []>(\r\n { factory, destructor, update }: UsePropertyOptions<T, D>,\r\n deps: D = [] as D\r\n): T {\r\n const propRef = useRef<T>();\r\n\r\n useMount({\r\n onUnmount() {\r\n if (propRef.current && destructor) {\r\n destructor(propRef.current);\r\n }\r\n },\r\n });\r\n\r\n return useMemo(() => {\r\n if (propRef.current) {\r\n if (update) {\r\n const newProp = update(propRef.current, deps, { factory, destructor });\r\n if (newProp) propRef.current = newProp;\r\n } else if (destructor) {\r\n destructor(propRef.current);\r\n }\r\n } else {\r\n if (!update || !propRef.current) {\r\n propRef.current = factory(deps);\r\n }\r\n }\r\n\r\n return propRef.current;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n}\r\n\r\ntype UsePropertyOptions<T, D> = {\r\n factory: (deps: D) => T;\r\n destructor?: (prop: T) => void;\r\n\r\n /**\r\n * Allows to update useProperty return value.\r\n * If that property is not exist then each update of deps call factory\r\n */\r\n update?: (\r\n prop: T,\r\n deps: D,\r\n propertyOptions: Omit<UsePropertyOptions<T, D>, 'update'>\r\n ) => void | T;\r\n};\r\n","import { useEffect } from 'react';\r\n\r\nexport function useUpdate<Deps extends Array<unknown>>({\r\n onUpdate,\r\n shouldUpdate,\r\n deps,\r\n}: UseUpdateOptions<Deps>) {\r\n useEffect(() => {\r\n if (!shouldUpdate || shouldUpdate()) {\r\n onUpdate();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n}\r\n\r\ntype UseUpdateOptions<Deps> = {\r\n onUpdate: () => void;\r\n shouldUpdate?: () => boolean;\r\n deps?: Deps;\r\n};\r\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\r\n\r\nimport { useUpdate } from './useUpdate';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useLayerOrder(layer: Layer, zIndex: number) {\r\n const { map } = useMapContext();\r\n\r\n useUpdate({\r\n onUpdate: () => map.insertLayer(layer, zIndex),\r\n deps: [zIndex, layer],\r\n });\r\n}\r\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\r\n\r\nimport { useUpdate } from './useUpdate';\r\n\r\nexport function useLayerVisibility(layer: Layer, isDisplayed: boolean = true) {\r\n useUpdate({\r\n shouldUpdate: () => layer.isDisplayed !== isDisplayed,\r\n onUpdate: () => (layer.isDisplayed = isDisplayed),\r\n deps: [isDisplayed, layer],\r\n });\r\n}\r\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\r\n\r\nimport { useUpdate } from './useUpdate';\r\n\r\nexport function useLayerOpacity(layer: Layer, opacity: number = 1) {\r\n useUpdate({\r\n shouldUpdate: () => layer.opacity !== opacity,\r\n onUpdate: () => (layer.opacity = opacity),\r\n deps: [opacity, layer],\r\n });\r\n}\r\n","import { EvergisDynamicLayer, EvergisDynamicLayerParams } from '@evergis/api';\r\nimport { Layer } from \"@evergis/sgis/es/layers/Layer\";\r\n\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { LayerProps } from './LayerProps';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\n\r\nimport { useEvergisContext, useMapContext } from '../contexts';\r\nimport { useLayerOpacity } from './useLayerOpacity';\r\n\r\nexport function useEvergisDynamicLayer({\r\n name,\r\n zIndex,\r\n style,\r\n condition,\r\n isDisplayed,\r\n opacity,\r\n dataFilterId,\r\n onLoadStart,\r\n onLoadEnd,\r\n}: EvergisDynamicLayerProps) {\r\n const api = useEvergisContext();\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new EvergisDynamicLayer({ name, condition, style, dataFilterId, onLoadStart, onLoadEnd }, api),\r\n destructor: layer => map.indexOf(layer as unknown as Layer) !== -1 && map.removeLayer(layer as unknown as Layer),\r\n update: (layer, [name, style, condition, dataFilterId]) => {\r\n layer.name = name;\r\n layer.style = style;\r\n layer.condition = condition;\r\n layer.dataFilterId = dataFilterId;\r\n },\r\n },\r\n [name, style, condition, dataFilterId, onLoadStart, onLoadEnd]\r\n );\r\n\r\n useLayerOrder(layer as unknown as Layer, zIndex);\r\n useLayerVisibility(layer as unknown as Layer, isDisplayed);\r\n useLayerOpacity(layer as unknown as Layer, opacity);\r\n\r\n return layer;\r\n}\r\n\r\nexport type EvergisDynamicLayerProps = EvergisDynamicLayerParams & LayerProps;\r\n","import { EvergisTileLayer, EvergisTileLayerParams } from '@evergis/api';\r\nimport { Layer } from '@evergis/sgis/es/layers/Layer';\r\n\r\nimport { LayerProps } from './LayerProps';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\n\r\nimport { useEvergisContext, useMapContext } from '../contexts';\r\nimport { useEffect, useMemo } from 'react';\r\n\r\nexport type EvergisTileLayerProps = EvergisTileLayerParams & LayerProps & {\r\n sourceUrl?: string;\r\n};\r\n\r\nexport function useEvergisTileLayer({\r\n name,\r\n sourceUrl,\r\n subDomains,\r\n zIndex,\r\n isDisplayed,\r\n crs,\r\n opacity,\r\n}: EvergisTileLayerProps) {\r\n const api = useEvergisContext();\r\n const { map } = useMapContext();\r\n const layer = useMemo(\r\n () => new EvergisTileLayer({ name, sourceUrl, subDomains, crs, opacity }, api),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [name, sourceUrl, subDomains, crs, opacity]\r\n );\r\n\r\n useEffect(\r\n () => () => {\r\n map.indexOf((layer as unknown) as Layer) !== -1 &&\r\n map.removeLayer((layer as unknown) as Layer);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [layer]\r\n );\r\n\r\n useLayerOrder((layer as unknown) as Layer, zIndex);\r\n useLayerVisibility((layer as unknown) as Layer, isDisplayed);\r\n\r\n return layer;\r\n}\r\n","import { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\r\n\r\nimport { useMapContext } from '../contexts';\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\nimport { useLayerOpacity } from \"./useLayerOpacity\";\r\n\r\nimport { LayerProps } from './LayerProps';\r\n\r\nexport function useFeatureLayer({\r\n zIndex,\r\n isDisplayed = true,\r\n features,\r\n opacity,\r\n}: FeatureLayerProps) {\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new FeatureLayer({ features, opacity }),\r\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\r\n update: (layer, [features]) => {\r\n layer.features = features;\r\n },\r\n },\r\n [features]\r\n );\r\n\r\n useLayerOrder(layer, zIndex);\r\n useLayerVisibility(layer, isDisplayed);\r\n useLayerOpacity(layer, opacity);\r\n\r\n return layer;\r\n}\r\n\r\nexport type FeatureLayerProps = {\r\n features: Feature[];\r\n} & LayerProps;\r\n","import { useCallback, useEffect } from 'react';\r\nimport { BboxChangeEndEvent, BboxChangeEvent, Map } from '@evergis/sgis/es/Map';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapBboxChange(\r\n onBboxChange?: (mapState: MapState) => void,\r\n force?: boolean\r\n) {\r\n const { map } = useMapContext();\r\n\r\n const event = force ? BboxChangeEvent : BboxChangeEndEvent;\r\n\r\n const handleBboxChange = useCallback(() => {\r\n onBboxChange && onBboxChange(getMapState(map));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [onBboxChange, map, event]);\r\n\r\n useEffect(() => {\r\n map.on(event.type, handleBboxChange);\r\n\r\n return () => {\r\n map.off(event.type, handleBboxChange);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [handleBboxChange, event]);\r\n}\r\n\r\nexport type MapState = {\r\n position: Coordinates;\r\n resolution: number;\r\n};\r\n\r\nexport function getMapState(map: Map): MapState {\r\n return {\r\n position: map.position.slice(0) as Coordinates,\r\n resolution: map.resolution,\r\n };\r\n}\r\n","import { MapResize } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { useCallback, useEffect } from 'react';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapResize(onResize?: (size: number[]) => void) {\r\n const { painter } = useMapContext();\r\n\r\n const handleMapResize = useCallback(() => {\r\n onResize && onResize([painter.width, painter.height]);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [onResize, painter]);\r\n\r\n useEffect(() => {\r\n painter.on(MapResize.type, handleMapResize);\r\n\r\n return () => {\r\n painter.off(MapResize.type, handleMapResize);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [handleMapResize]);\r\n}\r\n","import { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\r\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\r\nimport {\r\n EvergisDynamicLayer,\r\n EvergisLayer,\r\n isEvergisDynamicLayer,\r\n} from '@evergis/api';\r\nimport { useCallback, useMemo, useState } from 'react';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMount } from './useMount';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\ntype BboxCoordinates = [number, number, number, number];\r\n\r\nexport type Envelopes = {\r\n [layerName: string]: BboxCoordinates;\r\n};\r\n\r\nexport type MapPickResult = {\r\n clickPoint: Coordinates;\r\n envelopes: Envelopes;\r\n imageRectangle: [number, number, number, number];\r\n extentSr: number;\r\n};\r\n\r\nexport const useMapPick = (): MapPickResult | undefined => {\r\n const { map, painter } = useMapContext();\r\n const [geometryParams, setGeometryParams] = useState<MapPickResult>();\r\n\r\n const evergisLayers = useMemo(() => map.layers as unknown as EvergisLayer[], [\r\n map.layers,\r\n ]);\r\n\r\n const pick = useCallback(\r\n (event: sGisEvent) => {\r\n if (!(event instanceof sGisClickEvent)) {\r\n return;\r\n }\r\n\r\n const imageRectangle = [0, 0, painter.width, painter.height];\r\n const [x, y] = painter.getPxPosition(event.point.position);\r\n\r\n setGeometryParams({\r\n clickPoint: [Math.round(x), Math.round(y)],\r\n envelopes: collectLayerEnvelopes(evergisLayers),\r\n imageRectangle,\r\n extentSr: map.crs.wkid,\r\n } as MapPickResult);\r\n },\r\n\r\n [painter, evergisLayers, map.crs.wkid]\r\n );\r\n\r\n useMount({\r\n onMount: () => map.on('click', pick),\r\n onUnmount: () => map.off('click', pick),\r\n });\r\n\r\n return geometryParams;\r\n};\r\n\r\nfunction getLayerBboxCoors(layer: EvergisDynamicLayer): BboxCoordinates {\r\n return (\r\n // @ts-ignore TODO _currentRender prop on DynamicLayer private\r\n layer._currentRender &&\r\n // @ts-ignore\r\n layer._currentRender.bbox &&\r\n // @ts-ignore\r\n layer._currentRender.bbox.coordinates\r\n );\r\n}\r\n\r\nfunction collectLayerEnvelopes(layers: EvergisLayer[]) {\r\n let envelopes: Envelopes = {};\r\n\r\n for (const layer of layers) {\r\n if (!isEvergisDynamicLayer(layer)) {\r\n continue;\r\n }\r\n\r\n envelopes[layer.name] = getLayerBboxCoors(layer);\r\n }\r\n\r\n return envelopes;\r\n}\r\n","import { useCallback, useReducer } from 'react';\r\n\r\nimport { getMapState, MapState, useMapBboxChange } from './useMapBboxChange';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapState(force?: boolean) {\r\n const { map } = useMapContext();\r\n\r\n const [, dispatch] = useReducer(mapStateReducer, undefined, () =>\r\n getMapState(map)\r\n );\r\n\r\n const handleBboxChange = useCallback(dispatch, [dispatch]);\r\n\r\n useMapBboxChange(handleBboxChange, force);\r\n\r\n return getMapState(map);\r\n}\r\n\r\nfunction mapStateReducer(_: MapState, mapState: MapState): MapState {\r\n return mapState;\r\n}\r\n","import { useMemo } from 'react';\r\nimport { Bbox } from '@evergis/sgis/es/Bbox';\r\n\r\nimport { useMapState } from './useMapState';\r\nimport { MapState } from './useMapBboxChange';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapView(): MapView {\r\n const { map, painter } = useMapContext();\r\n const { position, resolution } = useMapState();\r\n\r\n const level = useMemo(() => {\r\n const index = map.tileScheme.getLevel(resolution);\r\n\r\n if (index === void 0 && index === null) return;\r\n\r\n return map.tileScheme.levels[index].zIndex;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [resolution]);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const bbox = useMemo(() => painter.bbox, [position, resolution]);\r\n\r\n return {\r\n position,\r\n resolution,\r\n level,\r\n bbox,\r\n };\r\n}\r\n\r\nexport function useMapLevel() {\r\n const { map } = useMapContext();\r\n const { resolution } = useMapState(true);\r\n\r\n return useMemo(() => {\r\n const index = map.tileScheme.getLevel(resolution);\r\n\r\n if (index === void 0 && index === null) return;\r\n\r\n return map.tileScheme.levels[index].zIndex;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [resolution]);\r\n}\r\n\r\ntype MapView = MapState & {\r\n level?: number;\r\n bbox: Bbox;\r\n};\r\n","import { useRef } from 'react';\r\n\r\nimport { useMount } from './useMount';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapWrapper() {\r\n const { painter } = useMapContext();\r\n const wrapperRef = useRef<HTMLDivElement | null>(null);\r\n\r\n useMount({\r\n onMount: () => (painter.wrapper = wrapperRef.current),\r\n onUnmount: () => (painter.wrapper = null),\r\n });\r\n\r\n return wrapperRef;\r\n}\r\n","import { LevelDefinition } from '@evergis/sgis/es/TileScheme';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { useEffect } from 'react';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nconst byScale = (scale: number) => ({ zIndex }: LevelDefinition) =>\r\n zIndex === scale;\r\n\r\nexport const useMaxMinScale = (\r\n minScale?: number,\r\n maxScale?: number,\r\n currentPosition?: [number, number],\r\n currentResolution?: number\r\n) => {\r\n const { map } = useMapContext();\r\n\r\n useEffect(() => {\r\n const levels = map.tileScheme.levels;\r\n\r\n if (maxScale !== undefined) {\r\n const { resolution } = levels.find(byScale(maxScale)) || {\r\n resolution: -1,\r\n };\r\n map.minResolution = resolution;\r\n }\r\n if (minScale !== undefined) {\r\n const { resolution } = levels.find(byScale(minScale)) || {\r\n resolution: -1,\r\n };\r\n map.maxResolution = resolution;\r\n }\r\n\r\n if (minScale !== undefined || maxScale !== undefined) {\r\n updateMapResolution(map, currentPosition, currentResolution);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [map, minScale, maxScale]);\r\n};\r\n\r\nexport const updateMapResolution = (\r\n map: Map,\r\n currentPosition?: [number, number],\r\n currentResolution?: number\r\n) => {\r\n if (currentPosition && currentResolution) {\r\n const newResolution = Math.min(\r\n Math.max(currentResolution, map.minResolution || 0),\r\n map.maxResolution || Number.MAX_VALUE\r\n );\r\n\r\n map.animateTo(currentPosition, newResolution);\r\n }\r\n};\r\n","import { useMemo } from 'react';\r\nimport { distance } from '@evergis/sgis/es/geotools';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nfunction getScale(scale: number): number {\r\n const pow10 = Math.pow(10, (Math.floor(scale) + '').length - 1);\r\n const d = scale / pow10;\r\n\r\n return pow10 * (d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1);\r\n}\r\n\r\nfunction useCorrectedResolution(resolution: number): number {\r\n const { painter } = useMapContext();\r\n const {\r\n height,\r\n width,\r\n bbox: { xMin, xMax, yMin, yMax, crs },\r\n } = painter;\r\n\r\n return useMemo(() => {\r\n if (width === 0) {\r\n return resolution;\r\n }\r\n const segmentLength = width / 10;\r\n const a = painter.getPointFromPxPosition(0, height / 2);\r\n const b = painter.getPointFromPxPosition(segmentLength, height / 2);\r\n\r\n return distance(a, b) / segmentLength;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [height, width, xMin, xMax, yMin, yMax, crs.wkid, resolution, painter]);\r\n}\r\n\r\nexport function useScale({\r\n resolution,\r\n minLength = 50,\r\n}: {\r\n resolution: number;\r\n minLength?: number;\r\n}) {\r\n const correctedResolution = useCorrectedResolution(resolution);\r\n\r\n return useMemo(() => {\r\n const minScale = minLength * correctedResolution;\r\n const currentScale = getScale(minScale);\r\n const width = getScale(minScale) / correctedResolution;\r\n\r\n return {\r\n currentScale,\r\n width,\r\n };\r\n }, [correctedResolution, minLength]);\r\n}\r\n","import { softEquals } from '@evergis/sgis/es/utils/math';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { useEffect } from 'react';\r\n\r\nimport { MapState } from './useMapBboxChange';\r\nimport { useMapViewActions } from './useMapViewActions';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useUpdateMapView(\r\n { position, resolution }: Partial<MapState>,\r\n force?: boolean\r\n) {\r\n const { map } = useMapContext();\r\n const { animateTo } = useMapViewActions();\r\n\r\n useEffect(() => {\r\n if (shouldUpdateMapState(map, { position, resolution })) {\r\n animateTo({\r\n position,\r\n resolution,\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [position, resolution, force]);\r\n}\r\n\r\nfunction shouldUpdatePosition(map: Map, position?: Coordinates) {\r\n return (\r\n position &&\r\n (!softEquals(map.position[0], position[0]) ||\r\n !softEquals(map.position[1], position[1]))\r\n );\r\n}\r\n\r\nfunction shouldUpdateResolution(map: Map, resolution?: number) {\r\n return resolution && !softEquals(map.resolution, resolution);\r\n}\r\n\r\nexport function shouldUpdateMapState(\r\n map: Map,\r\n { position, resolution }: Partial<MapState>\r\n) {\r\n return (\r\n shouldUpdatePosition(map, position) ||\r\n shouldUpdateResolution(map, resolution)\r\n );\r\n}\r\n","import {\r\n MutableRefObject,\r\n ReactNode,\r\n useCallback,\r\n useEffect,\r\n useRef,\r\n} from 'react';\r\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\r\nimport {\r\n sGisClickEvent,\r\n sGisMouseEvent,\r\n sGisMouseMoveEvent,\r\n sGisMouseOverEvent,\r\n} from '@evergis/sgis/es/commonEvents';\r\nimport { Handler } from '@evergis/sgis/es/EventHandler';\r\nimport { IPoint } from '@evergis/sgis/es/Point';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useEventPoint } from './useEventPoint';\r\n\r\nimport { useMapContext, useTooltipContext } from '../contexts';\r\n\r\nimport { LabelSymbol, LabelSymbolComponent } from '../symbols';\r\n\r\nexport type TooltipParams = {\r\n position?: Coordinates;\r\n component?: ReactNode;\r\n feature?: Feature | Map;\r\n clickMode?: boolean;\r\n};\r\n\r\ntype TargetEvent = (event: sGisMouseEvent) => void;\r\n\r\nexport type FeatureEvents = {\r\n [key: string]: TargetEvent | null;\r\n};\r\n\r\n// TODO HOW to read that?\r\nexport const useTooltip = (zIndex = 1) => {\r\n const { layer, popupLayer } = useTooltipContext();\r\n const { map } = useMapContext();\r\n const getEventPoint = useEventPoint();\r\n\r\n const targetFeatures: MutableRefObject<Feature[] | Map[]> = useRef([]);\r\n const labelFeature: MutableRefObject<LabelFeature | null> = useRef(null);\r\n const events: MutableRefObject<FeatureEvents[]> = useRef([]);\r\n\r\n const onClickMap = useCallback(() => popupLayer.remove(popupLayer.features), [\r\n popupLayer,\r\n ]);\r\n\r\n const reset = useCallback(() => {\r\n targetFeatures.current.forEach((feature: Feature | Map, index: number) => {\r\n const currentFeatureEvents = events.current[index];\r\n\r\n if (currentFeatureEvents) {\r\n const {\r\n onMouseOver,\r\n onMouseMove,\r\n onMouseOut,\r\n onClick,\r\n } = currentFeatureEvents;\r\n\r\n if (feature.hasListener('mouseover', onMouseOver as Handler)) {\r\n feature.off('mouseover', onMouseOver as Handler);\r\n }\r\n\r\n if (feature.hasListener('mousemove', onMouseMove as Handler)) {\r\n feature.off('mousemove', onMouseMove as Handler);\r\n }\r\n\r\n if (feature.hasListener('mouseout', onMouseOut as Handler)) {\r\n feature.off('mouseout', onMouseOut as Handler);\r\n }\r\n\r\n if (feature.hasListener('click', onClick as Handler)) {\r\n feature.off('click', onClick as Handler);\r\n }\r\n }\r\n });\r\n\r\n map.off('click', onClickMap as Handler);\r\n targetFeatures.current = [];\r\n labelFeature.current = null;\r\n layer.remove(layer.features);\r\n events.current = [];\r\n\r\n if (map.indexOf(popupLayer) !== -1) {\r\n map.removeLayer(popupLayer);\r\n }\r\n }, [onClickMap, popupLayer, layer, map]);\r\n\r\n useEffect(() => {\r\n if (map.indexOf(layer) === -1) {\r\n map.insertLayer(layer, zIndex);\r\n }\r\n return reset;\r\n }, [reset, map, layer, zIndex]);\r\n\r\n const onSetLabelFeature = useCallback(\r\n ({\r\n point,\r\n position,\r\n component,\r\n clickMode,\r\n }: {\r\n point: IPoint;\r\n } & TooltipParams) => {\r\n const feature = new LabelFeature(position || point.position, {\r\n symbol: new LabelSymbol({\r\n component: component as LabelSymbolComponent,\r\n }),\r\n crs: map.crs,\r\n });\r\n\r\n if (clickMode) {\r\n if (map.indexOf(popupLayer) === -1) {\r\n map.insertLayer(popupLayer, zIndex);\r\n }\r\n\r\n popupLayer.remove(popupLayer.features);\r\n popupLayer.add(feature);\r\n } else {\r\n labelFeature.current = feature;\r\n layer.add(feature);\r\n }\r\n },\r\n [popupLayer, layer, map, zIndex]\r\n );\r\n\r\n const onRemoveLabelFeature = useCallback(\r\n event => {\r\n if (event.node) {\r\n event.node.doNotBubbleToMap = true;\r\n }\r\n event.stopPropagation();\r\n labelFeature.current &&\r\n layer.has(labelFeature.current) &&\r\n layer.remove(labelFeature.current);\r\n labelFeature.current = null;\r\n layer.remove(layer.features);\r\n },\r\n [layer]\r\n );\r\n\r\n return useCallback(\r\n (tooltipParams: TooltipParams) => {\r\n const { feature, position, component, clickMode } = tooltipParams;\r\n const target = feature || map;\r\n targetFeatures.current.push(target as Feature & Map);\r\n const isMap = target instanceof Map;\r\n\r\n const featureEvents: FeatureEvents = {};\r\n\r\n featureEvents.onMouseOver = (event: sGisMouseOverEvent) => {\r\n event.stopPropagation();\r\n onRemoveLabelFeature(event);\r\n\r\n onSetLabelFeature({ point: getEventPoint(event), position, component });\r\n };\r\n\r\n featureEvents.onMouseMove = (\r\n event: sGisMouseMoveEvent & {\r\n node?: HTMLImageElement & { doNotBubbleToMap?: boolean };\r\n }\r\n ) => {\r\n if (!isMap) {\r\n event.stopPropagation();\r\n }\r\n\r\n if (event.node) {\r\n event.node.doNotBubbleToMap = true;\r\n }\r\n\r\n const point = getEventPoint(event);\r\n\r\n if (labelFeature.current) {\r\n isMap &&\r\n !layer.has(labelFeature.current) &&\r\n layer.add(labelFeature.current);\r\n\r\n labelFeature.current.position = position || point.position;\r\n } else {\r\n onSetLabelFeature({ point: point, position, component });\r\n }\r\n };\r\n\r\n if (clickMode) {\r\n featureEvents.onClick = (event: sGisClickEvent) => {\r\n event.stopPropagation();\r\n\r\n onSetLabelFeature({\r\n point: getEventPoint(event),\r\n position,\r\n component,\r\n clickMode,\r\n });\r\n };\r\n }\r\n\r\n featureEvents.onMouseOut = onRemoveLabelFeature;\r\n\r\n events.current.push(featureEvents);\r\n\r\n const { onMouseOver, onMouseMove, onMouseOut, onClick } = featureEvents;\r\n\r\n if (clickMode && !isMap) {\r\n target.on('mouseover', onMouseOut as Handler);\r\n target.on('mousemove', onMouseOut as Handler);\r\n target.on('click', onClick as Handler);\r\n\r\n if (!map.hasListener('click', onClickMap as Handler)) {\r\n map.on('click', onClickMap as Handler);\r\n }\r\n } else {\r\n if (!isMap) {\r\n target.on('mouseover', onMouseOver as Handler);\r\n }\r\n target.on('mousemove', onMouseMove as Handler);\r\n target.on('mouseout', onMouseOut as Handler);\r\n }\r\n },\r\n [\r\n onRemoveLabelFeature,\r\n onClickMap,\r\n map,\r\n onSetLabelFeature,\r\n getEventPoint,\r\n layer,\r\n ]\r\n );\r\n};\r\n","import { useRef } from 'react';\r\nimport { ClusterLayer } from '@evergis/sgis/es/layers/ClusterLayer';\r\nimport { GridClusterProvider } from '@evergis/sgis/es/layers/clusterProviders/GridClusterProvider';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { Symbol } from '@evergis/sgis/es/symbols/Symbol';\r\n\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\nimport { useProperty } from './useProperty';\r\nimport { LayerProps } from './LayerProps';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport type ClusterLayerProps = {\r\n features: Feature[];\r\n zIndex?: number;\r\n size?: number;\r\n distance?: number;\r\n onChangeGrid?: (fetures: Feature[], layer: ClusterLayer) => void;\r\n clusterSymbol?: Symbol<Feature>;\r\n} & LayerProps;\r\n\r\nexport function useClusterLayer({\r\n zIndex,\r\n isDisplayed = true,\r\n features,\r\n onChangeGrid,\r\n size,\r\n distance,\r\n clusterSymbol,\r\n}: ClusterLayerProps) {\r\n const { map } = useMapContext();\r\n const currentFeatures = useRef(features);\r\n\r\n const layer: ClusterLayer = useProperty(\r\n {\r\n factory: () => {\r\n const gridClusterProvider = new GridClusterProvider({\r\n size,\r\n distance,\r\n onChangeGrid: onChangeGrid\r\n ? features => onChangeGrid(features, layer)\r\n : void 0,\r\n });\r\n\r\n const clusterLayer = new ClusterLayer({\r\n gridClusterProvider,\r\n clusterSymbol,\r\n });\r\n currentFeatures.current = features;\r\n\r\n clusterLayer.add(features);\r\n\r\n return clusterLayer;\r\n },\r\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\r\n update: (clusterLayer, [features]) => {\r\n clusterLayer.remove(currentFeatures.current);\r\n clusterLayer.add(features);\r\n\r\n currentFeatures.current = features;\r\n },\r\n },\r\n [features]\r\n );\r\n\r\n useLayerOrder(layer, zIndex);\r\n useLayerVisibility(layer, isDisplayed);\r\n\r\n return layer;\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\r\n\r\nimport { useMapPick } from './useMapPick';\r\n\r\nimport { useEvergisSelectContext } from '../contexts';\r\n\r\nimport { evaluateFeature, EvergisFeature } from '../core';\r\n\r\nimport { EvergisSelectProps } from '../components/EvergisSelect/types';\r\n\r\nconst INIT_FEATURES: EvergisFeature[] = [];\r\n\r\ntype SelectionResult = [EvergisFeature[], () => void];\r\n\r\nexport const useEvergisSelect = ({\r\n onPick,\r\n onFeatures,\r\n}: Pick<EvergisSelectProps, 'onPick' | 'onFeatures'>): SelectionResult => {\r\n const mapPickResult = useMapPick();\r\n const layers = useEvergisSelectContext();\r\n const [features, setFeatures] = useState<EvergisFeature[]>(INIT_FEATURES);\r\n\r\n const resetSelection = useCallback(() => setFeatures(INIT_FEATURES), [\r\n setFeatures,\r\n ]);\r\n\r\n useEffect(() => {\r\n if (!mapPickResult) {\r\n return;\r\n }\r\n\r\n onPick(mapPickResult).then(features => {\r\n setFeatures(features.map(evaluateFeature(layers)));\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [mapPickResult]);\r\n\r\n return [\r\n typeof onFeatures === 'function' ? onFeatures(features) : features,\r\n resetSelection,\r\n ];\r\n};\r\n","import { useMemo } from 'react';\r\nimport { CRS_MAP, DEFAULT_CRS, DEFAULT_SRID, SrId } from '../core';\r\n\r\nexport const useCrs = (srId?: SrId) => {\r\n return useMemo(() => {\r\n return CRS_MAP[srId || DEFAULT_SRID] || DEFAULT_CRS;\r\n }, [srId]);\r\n};\r\n","import { useRef, useEffect, useCallback } from 'react';\r\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\r\nimport { PointEditor } from '@evergis/sgis/es/controls/PointEditor';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\r\nimport { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\n\r\nimport { useMount } from './useMount';\r\nimport { useMapContext } from '../contexts';\r\n\r\nimport { DraggableMarkerProps } from '../components';\r\n\r\nconst setCursor = (painter: DomPainter, cursor: string) =>\r\n painter.wrapper &&\r\n typeof painter.wrapper !== 'string' &&\r\n (painter.wrapper.style.cursor = cursor);\r\n\r\nfunction none() {\r\n return;\r\n}\r\n\r\nexport const useDraggableMarker = ({\r\n position,\r\n onChange,\r\n symbol,\r\n}: DraggableMarkerProps) => {\r\n const feature = useRef<Feature | null>(null);\r\n const { map, painter } = useMapContext();\r\n const layer = useRef(new FeatureLayer());\r\n const pointEditor = useRef(\r\n new PointEditor(map, {\r\n isActive: false,\r\n activeLayer: layer.current,\r\n })\r\n );\r\n\r\n const onMapClick = useCallback(\r\n (event: sGisEvent) => {\r\n event.stopPropagation();\r\n if (!(event instanceof sGisClickEvent)) {\r\n return;\r\n }\r\n\r\n map.off('click', onMapClick);\r\n setCursor(painter, 'default');\r\n onChange(event.point.position);\r\n },\r\n [painter, map, onChange]\r\n );\r\n\r\n useMount({\r\n onMount: () => {\r\n map.addLayer(layer.current);\r\n pointEditor.current.on('edit', () =>\r\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\r\n );\r\n\r\n if (!position) {\r\n setCursor(painter, 'pointer');\r\n map.on('click', onMapClick);\r\n }\r\n },\r\n onUnmount: () => {\r\n map.removeLayer(layer.current);\r\n map.off('click', onMapClick);\r\n pointEditor.current.off('edit', () =>\r\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\r\n );\r\n setCursor(painter, 'default');\r\n },\r\n });\r\n\r\n useEffect(() => {\r\n if (position) {\r\n if (!feature.current) {\r\n const hasMapClick = map.hasListener('click', onMapClick);\r\n\r\n const pointFeature = new PointFeature(position, {\r\n crs: map.crs,\r\n symbol: symbol || new StaticImageSymbol(),\r\n });\r\n\r\n pointFeature.on('mousemove', none);\r\n pointFeature.on('mouseover', () => setCursor(painter, 'pointer'));\r\n pointFeature.on('mouseout', () => setCursor(painter, 'default'));\r\n\r\n layer.current.add(pointFeature);\r\n pointEditor.current.activeFeature = pointFeature;\r\n pointEditor.current.isActive = true;\r\n feature.current = pointFeature;\r\n if (hasMapClick) {\r\n map.off('click', onMapClick);\r\n setCursor(painter, 'default');\r\n }\r\n } else if (feature.current && pointEditor.current.activeFeature) {\r\n pointEditor.current.activeFeature.position = position;\r\n layer.current.redraw();\r\n }\r\n } else if (feature.current) {\r\n layer.current.remove(feature.current as Feature);\r\n feature.current = null;\r\n setCursor(painter, 'pointer');\r\n map.on('click', onMapClick);\r\n }\r\n }, [onMapClick, painter, map, position, symbol]);\r\n};\r\n","import { useMemo, useCallback } from 'react';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\n\r\nimport { useMapContext } from '../contexts';\r\nimport { useMapState } from '../hooks';\r\nimport { metersToPixels } from '../utils/metersToPixels';\r\n\r\nexport const useMetersToPixels = (meters: number, crs?: Crs): number => {\r\n const { painter, map } = useMapContext();\r\n const { resolution } = useMapState();\r\n\r\n return useMemo(\r\n () =>\r\n metersToPixels(meters, {\r\n painter: painter,\r\n crs: crs || map.crs,\r\n }),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [painter, meters, crs, map.crs, resolution]\r\n );\r\n};\r\n\r\nexport const useMetersToPixelsCb = () => {\r\n const { painter, map } = useMapContext();\r\n\r\n return useCallback(\r\n (meters: number, crs?: Crs) =>\r\n metersToPixels(meters, {\r\n painter: painter,\r\n crs: crs || map.crs,\r\n }),\r\n [painter, map.crs]\r\n );\r\n};\r\n","import { useMemo } from 'react';\r\nimport { debounce } from '@evergis/sgis/es/utils/utils';\r\n\r\nexport const useDebouncedCallback = <CallbackFn extends () => void>(\r\n interval: number\r\n): ((cb: CallbackFn) => void) => {\r\n return useMemo(\r\n () =>\r\n debounce((cb: CallbackFn) => {\r\n cb();\r\n }, interval),\r\n [interval]\r\n );\r\n};\r\n","import { useCallback, useState } from \"react\";\r\n\r\nexport const useToggle = (initial?: boolean): [boolean, VoidFunction, (value: boolean) => void] => {\r\n const [state, setState] = useState(initial !== undefined ? initial : false);\r\n const toggle = useCallback(() => setState(!state), [state]);\r\n\r\n return [state, toggle, setState];\r\n};\r\n","import React from 'react';\r\n\r\nimport { useCanvas, useSymbol, UseSymbolParams } from '../../hooks';\r\n\r\ninterface Props extends UseSymbolParams {}\r\n\r\nexport const Symbol: React.FC<Props> = ({ symbol, size, render }) => {\r\n const { canvas, ref } = useCanvas();\r\n useSymbol({ symbol, size, render }, canvas);\r\n\r\n return <canvas ref={ref} />;\r\n};\r\n","import { GeometryType } from '@evergis/api';\r\nimport styled from 'styled-components';\r\n\r\nexport type CompoundIconProps = {\r\n geometryType: GeometryType;\r\n icons: Record<GeometryType, string>;\r\n};\r\n\r\nexport const CompoundIcon = styled.div<CompoundIconProps>`\r\n background: ${({ geometryType, icons }) =>\r\n `url(${icons[geometryType]}) center center / ${\r\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\r\n } no-repeat`};\r\n height: 32px;\r\n width: 32px;\r\n`;\r\n\r\nexport const ClusterSymbol = styled.div<{ color?: string }>`\r\n position: relative;\r\n width: 32px;\r\n height: 32px;\r\n\r\n :before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: inherit;\r\n height: inherit;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n opacity: 0.28;\r\n }\r\n \r\n :after {\r\n content: \"99\";\r\n position: absolute;\r\n top: 4px;\r\n left: 4px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 24px;\r\n height: 24px;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n color: white;\r\n font-size: 0.75rem;\r\n line-height: 1;\r\n }\r\n`;\r\n","import React, { PropsWithChildren } from 'react';\r\nimport { SvgPointSymbolDc } from \"@evergis/api\";\r\n\r\nimport { Symbol } from './Symbol';\r\nimport { ClusterSymbol } from \"./styled\";\r\nimport { getParameterValue, StyleSymbolType } from '../../core';\r\nimport { deserializeSymbol, adjustSymbol, isSGisClusterSymbol, SGisSymbolType } from '../../symbols';\r\n\r\ntype StyleSymbolProps = PropsWithChildren<{\r\n symbol: StyleSymbolType;\r\n size?: number;\r\n}>;\r\n\r\nconst MAX_SIZE = 32;\r\n\r\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\r\n symbol,\r\n size = MAX_SIZE,\r\n children,\r\n}) => {\r\n if (children) {\r\n return <>{children}</>;\r\n }\r\n\r\n let sGisSymbol = null;\r\n\r\n try {\r\n sGisSymbol = deserializeSymbol(symbol);\r\n } catch (e) {\r\n // TODO generate Error symbol\r\n }\r\n\r\n if (!sGisSymbol) {\r\n return null;\r\n }\r\n\r\n if (isSGisClusterSymbol(symbol as SGisSymbolType)) {\r\n const color = getParameterValue((sGisSymbol as SvgPointSymbolDc).background?.fillColor as string) ||\r\n getParameterValue((sGisSymbol as SvgPointSymbolDc).figure?.fillColor as string) || \"rgb(0, 170, 255)\";\r\n\r\n return <ClusterSymbol color={color} />\r\n }\r\n\r\n return (\r\n <Symbol\r\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\r\n size={size}\r\n />\r\n );\r\n};\r\n","import { Icon } from '@evergis/icons';\r\nimport styled from 'styled-components';\r\n\r\nexport const EvergisCardContainer = styled.div`\r\n position: absolute;\r\n top: 2.25rem;\r\n right: 0.5rem;\r\n width: 22.5rem;\r\n margin-bottom: 1rem;\r\n max-height: 90%;\r\n min-height: 1rem;\r\n background: #fff;\r\n border-radius: 4px;\r\n z-index: 1;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n flex-grow: 1;\r\n overflow: initial;\r\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\r\n\r\n ${Icon} {\r\n color: rgba(0, 0, 0, 0.65);\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &:hover {\r\n color: #1fb3aa;\r\n }\r\n }\r\n`;\r\n\r\nexport const StickyHeader = styled.div`\r\n display: flex;\r\n position: sticky;\r\n top: 0;\r\n flex-direction: column;\r\n background: #fff;\r\n`;\r\n\r\nexport const CardHeader = styled.div`\r\n display: flex;\r\n padding: 1.5rem 1.5rem 1rem;\r\n align-items: center;\r\n`;\r\n\r\nexport const CardTitle = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin: 0 0.5rem;\r\n flex-grow: 1;\r\n`;\r\n\r\nexport const CardControls = styled.div`\r\n display: flex;\r\n\r\n ${Icon} {\r\n margin: 0 0.5rem;\r\n }\r\n`;\r\n\r\nexport const FeatureName = styled.div`\r\n font-size: 1.25rem;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const LayerName = styled.div`\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const CardPagination = styled.div`\r\n display: flex;\r\n height: 2.5rem;\r\n padding: 0 1.5rem;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n justify-content: space-between;\r\n background: linear-gradient(\r\n 0deg,\r\n rgba(161, 186, 208, 0.12),\r\n rgba(161, 186, 208, 0.12)\r\n );\r\n`;\r\n\r\nexport const PaginationDescription = styled.div`\r\n display: flex;\r\n`;\r\n\r\nexport const CurrentFeatureIndex = styled.div`\r\n cursor: pointer;\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n`;\r\n\r\nexport const CardAttributes = styled.div`\r\n padding: 1rem 1.5rem;\r\n overflow-y: scroll;\r\n`;\r\n\r\nexport const AttributeContainer = styled.div`\r\n padding-bottom: 0.5rem;\r\n`;\r\n\r\nexport const AttributeTitle = styled.div`\r\n margin: 0.25rem 0;\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const AttributeValueContainer = styled.div`\r\n flex-wrap: wrap;\r\n display: flex;\r\n`;\r\n\r\nexport const SimpleAttribute = styled.div``;\r\n\r\nexport const ValueLink = styled.a`\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n text-decoration: none;\r\n`;\r\n","import React from 'react';\r\n\r\nimport { ValueLink } from './styled';\r\nimport { mailHref } from '../../utils/url';\r\n\r\ntype MailValueProps = {\r\n mail: string;\r\n};\r\n\r\nexport const MailValue = ({ mail }: MailValueProps) => (\r\n <ValueLink target={'_blank'} rel={'noreferrer'} href={mailHref(mail)}>\r\n {mail}\r\n </ValueLink>\r\n);\r\n","import React from 'react';\r\n\r\nimport { ValueLink } from './styled';\r\nimport { phoneHref } from '../../utils/url';\r\n\r\ntype PhoneValueProps = {\r\n phone: string;\r\n};\r\n\r\nexport const PhoneValue = ({ phone }: PhoneValueProps) => (\r\n <ValueLink target={'_blank'} rel={'noreferrer'} href={phoneHref(phone)}>\r\n {phone}\r\n </ValueLink>\r\n);\r\n","import React from 'react';\r\n\r\nimport { ValueLink } from './styled';\r\nimport { urlHref } from '../../utils/url';\r\n\r\ntype UrlValueProps = {\r\n url: string;\r\n};\r\n\r\nexport const UrlValue = ({ url }: UrlValueProps) => (\r\n <ValueLink target={'_blank'} rel={'noreferrer'} href={urlHref(url)}>\r\n {url}\r\n </ValueLink>\r\n);\r\n","import React from 'react';\r\nimport { AttributeValueContainer, SimpleAttribute } from './styled';\r\nimport { MailValue } from './MailValue';\r\nimport { PhoneValue } from './PhoneValue';\r\nimport { UrlValue } from './UrlValue';\r\nimport { EvergisCardAttributeProps } from './EvergisCardAttribute';\r\n\r\nimport punycode from 'punycode';\r\n\r\nimport {\r\n AttributeValueType,\r\n formatAttributeValue,\r\n} from '../../core/attributes';\r\n\r\nexport const AttributeValue: React.FC<EvergisCardAttributeProps> = ({\r\n attribute,\r\n}) => {\r\n const attributeValues = formatAttributeValue(attribute);\r\n\r\n return (\r\n <AttributeValueContainer>\r\n {attributeValues.map((attributeValue, index) => {\r\n const { value } = attributeValue;\r\n const key = `${value}-${index}`;\r\n\r\n if (attributeValue.type === AttributeValueType.Url) {\r\n return <UrlValue key={key} url={punycodeDecode(value)} />;\r\n }\r\n\r\n if (attributeValue.type === AttributeValueType.Mail) {\r\n return <MailValue key={key} mail={value} />;\r\n }\r\n\r\n if (attributeValue.type === AttributeValueType.Phone) {\r\n return <PhoneValue key={key} phone={value} />;\r\n }\r\n\r\n return <SimpleAttribute key={value}>{value}</SimpleAttribute>;\r\n })}\r\n </AttributeValueContainer>\r\n );\r\n};\r\n\r\nfunction punycodeDecode(domains: string) {\r\n try {\r\n return domains\r\n .split('/')\r\n .map(punycode.toUnicode)\r\n .join('/');\r\n } catch (error) {\r\n return domains;\r\n }\r\n}\r\n","import React from 'react';\r\n\r\nimport { AttributeContainer, AttributeTitle } from './styled';\r\n\r\nimport { FeatureAttribute } from '../../core';\r\nimport { AttributeValue } from './AttributeValue';\r\n\r\nexport type EvergisCardAttributeProps = {\r\n attribute: FeatureAttribute;\r\n className?: string;\r\n};\r\n\r\nexport const EvergisCardAttribute: React.FC<EvergisCardAttributeProps> = ({\r\n attribute,\r\n className,\r\n}) => (\r\n <AttributeContainer className={className}>\r\n <AttributeTitle>{attribute.alias || attribute.name}</AttributeTitle>\r\n <AttributeValue attribute={attribute} />\r\n </AttributeContainer>\r\n);\r\n","import React, { FC, useEffect } from 'react';\r\nimport {\r\n IconButton,\r\n EverCloudCloseIcon,\r\n EverCloudStatisticsIcon,\r\n EverCloudZoomtoIcon,\r\n EverCloudPlayPrevIcon,\r\n EverCloudPlayNextIcon,\r\n} from \"@evergis/icons\";\r\n\r\nimport { StyleSymbol } from '../Symbol';\r\nimport { EvergisCardAttribute } from './EvergisCardAttribute';\r\n\r\nimport {\r\n CardAttributes,\r\n CardControls,\r\n CardHeader,\r\n CardPagination,\r\n CardTitle,\r\n CurrentFeatureIndex,\r\n EvergisCardContainer,\r\n FeatureName,\r\n LayerName,\r\n PaginationDescription,\r\n StickyHeader,\r\n} from './styled';\r\n\r\nimport { EvergisCardProps } from './EvergisCard';\r\nimport { UseEvergisCard } from '../../hooks/useEvergisCard';\r\nimport { FeatureAttribute } from '../../';\r\n\r\nexport const StyledCard: FC<EvergisCardProps & UseEvergisCard> = ({\r\n features = [],\r\n className,\r\n reset,\r\n feature,\r\n zoom,\r\n prev,\r\n current,\r\n next,\r\n onAttributes,\r\n onStatistics,\r\n onFeatureChange,\r\n headerExtra,\r\n hideZoom,\r\n}) => {\r\n useEffect(() => {\r\n onFeatureChange && onFeatureChange(current);\r\n }, [current, onFeatureChange]);\r\n\r\n return (\r\n <EvergisCardContainer className={className}>\r\n <StickyHeader>\r\n <CardHeader>\r\n <StyleSymbol symbol={feature.symbol || {}} />\r\n <CardTitle>\r\n <FeatureName title={feature.displayName || ''}>\r\n {feature.displayName}\r\n </FeatureName>\r\n <LayerName>{feature.layerAlias}</LayerName>\r\n </CardTitle>\r\n <CardControls>\r\n {onStatistics && <IconButton onClick={() => onStatistics(feature)}><EverCloudStatisticsIcon /></IconButton>}\r\n {!hideZoom && <IconButton onClick={zoom}><EverCloudZoomtoIcon /></IconButton>}\r\n <IconButton onClick={reset}><EverCloudCloseIcon /></IconButton>\r\n </CardControls>\r\n </CardHeader>\r\n {features.length > 1 ? (\r\n <CardPagination>\r\n <IconButton onClick={prev}><EverCloudPlayPrevIcon /></IconButton>\r\n <PaginationDescription>\r\n <CurrentFeatureIndex onClick={zoom}>\r\n {current + 1}\r\n </CurrentFeatureIndex>\r\n объект из {features.length}\r\n </PaginationDescription>\r\n <IconButton onClick={next}><EverCloudPlayNextIcon /></IconButton>\r\n </CardPagination>\r\n ) : null}\r\n {headerExtra}\r\n </StickyHeader>\r\n <CardAttributes>\r\n {feature.attributes &&\r\n (typeof onAttributes === 'function'\r\n ? onAttributes(feature.attributes)\r\n : feature.attributes\r\n ).map((attribute: FeatureAttribute) => {\r\n return (\r\n attribute.render || (\r\n <EvergisCardAttribute\r\n key={attribute.name}\r\n attribute={attribute}\r\n />\r\n )\r\n );\r\n })}\r\n </CardAttributes>\r\n </EvergisCardContainer>\r\n );\r\n};\r\n","import React, { ReactElement, ReactNode } from 'react';\r\n\r\nimport { useEvergisCard, UseEvergisCard } from '../../hooks/useEvergisCard';\r\n\r\nimport { StyledCard } from './StyledCard';\r\nimport { EvergisFeature, FeatureAttribute } from '../../core';\r\n\r\nexport type EvergisCardProps = {\r\n features?: EvergisFeature[];\r\n reset?: VoidFunction;\r\n children?: (current: number) => React.ReactNode;\r\n className?: string;\r\n renderCard?: (\r\n cardProps: Omit<EvergisCardProps, 'className' | 'renderCard' | 'children'> &\r\n UseEvergisCard\r\n ) => ReactElement;\r\n onAttributes?: (attributes: FeatureAttribute[]) => FeatureAttribute[];\r\n onStatistics?: (feature: EvergisFeature) => void;\r\n onFeatureChange?: (current: number) => void;\r\n headerExtra?: ReactNode;\r\n hideZoom?: boolean;\r\n};\r\n\r\nexport const EvergisCard: React.FC<EvergisCardProps> = ({\r\n renderCard,\r\n className,\r\n children,\r\n ...props\r\n}) => {\r\n const { features = [] } = props;\r\n const hookProps = useEvergisCard(features);\r\n const { feature, current } = hookProps;\r\n const cardProps = { ...props, ...hookProps };\r\n\r\n return feature ? (\r\n <>\r\n {typeof renderCard === 'function' ? (\r\n renderCard(cardProps)\r\n ) : (\r\n <StyledCard className={className} {...cardProps} />\r\n )}\r\n {children && children(current)}\r\n </>\r\n ) : null;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { ClusterLayerProps, useClusterLayer } from '../../hooks';\r\n\r\nexport const ClusterLayer: React.FC<ClusterLayerProps> = props => {\r\n useClusterLayer(props);\r\n\r\n return null;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { EvergisDynamicLayerProps, useEvergisDynamicLayer } from '../../hooks';\r\n\r\nexport const EvergisDynamicLayer: React.FC<EvergisDynamicLayerProps> = props => {\r\n useEvergisDynamicLayer(props);\r\n\r\n return null;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { FeatureLayerProps, useFeatureLayer } from '../../hooks';\r\n\r\nexport const FeatureLayer: React.FC<FeatureLayerProps> = props => {\r\n useFeatureLayer(props);\r\n\r\n return null;\r\n};\r\n","import { useMemo } from 'react';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { EvergisFeature } from '../../core';\r\n\r\nconst truthly = <Value>(value: Value | null | undefined): value is Value =>\r\n Boolean(value);\r\n\r\nconst setSelected = (current: number) => (feature: Feature, index: number) => {\r\n // @ts-ignore\r\n feature['isSelected'] = index === current;\r\n\r\n return feature;\r\n};\r\n\r\nconst toSgis = (feature: EvergisFeature) => feature.sGisFeature();\r\n\r\n// TODO inner hooks???\r\nexport const useSGisFeatures = (\r\n features: EvergisFeature[],\r\n currentIndex: number\r\n) =>\r\n useMemo(\r\n () =>\r\n features\r\n .map(toSgis)\r\n .filter(truthly)\r\n .map(setSelected(currentIndex)),\r\n [features, currentIndex]\r\n );\r\n","import React from 'react';\r\n\r\nimport { FeatureLayer } from './FeatureLayer';\r\nimport { useSGisFeatures } from './useSGisFeatures';\r\n\r\nimport { EvergisFeature } from '../../core';\r\n\r\ntype EvergisSelectLayerProps = {\r\n features: EvergisFeature[];\r\n current: number;\r\n zIndex: number;\r\n};\r\n\r\nexport const EvergisSelectLayer: React.FC<EvergisSelectLayerProps> = ({\r\n features,\r\n zIndex,\r\n current,\r\n}) => {\r\n const sGisFeatures = useSGisFeatures(features, current);\r\n\r\n return <FeatureLayer features={sGisFeatures} zIndex={zIndex} />;\r\n};\r\n","import React from 'react';\r\n\r\nimport { EvergisTileLayerProps, useEvergisTileLayer } from '../../hooks';\r\n\r\nexport const EvergisTileLayer: React.FC<EvergisTileLayerProps> = props => {\r\n useEvergisTileLayer(props);\r\n\r\n return null;\r\n};\r\n","import {\r\n GetTileUrl,\r\n TileLayer,\r\n TileLayerConstructorParams,\r\n} from '@evergis/sgis/es/layers/TileLayer';\r\n\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { LayerProps } from './LayerProps';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useTileLayer({\r\n maskUrl,\r\n zIndex,\r\n isDisplayed,\r\n ...tileLayerParams\r\n}: TileLayerProps) {\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new TileLayer(maskUrl, tileLayerParams),\r\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\r\n },\r\n [maskUrl]\r\n );\r\n\r\n useLayerOrder(layer, zIndex);\r\n useLayerVisibility(layer, isDisplayed);\r\n\r\n return layer;\r\n}\r\n\r\nexport type TileLayerProps = {\r\n maskUrl: string | GetTileUrl;\r\n} & LayerProps &\r\n TileLayerConstructorParams;\r\n","import * as React from 'react';\r\n\r\nimport { useTileLayer, TileLayerProps } from '../../hooks/useTileLayer';\r\n\r\nexport const TileLayer: React.FC<TileLayerProps> = props => {\r\n useTileLayer(props);\r\n\r\n return null;\r\n};\r\n","import React from 'react';\r\n\r\nimport { EvergisCard } from '../EvergisCard';\r\nimport { EvergisSelectLayer } from '../Layers';\r\n\r\nimport { useEvergisSelect } from '../../hooks';\r\n\r\nimport { EvergisSelectProps } from './types';\r\n\r\nconst defaultZIndex = 200;\r\n\r\nexport const EvergisSelect: React.FC<EvergisSelectProps> = ({\r\n onPick,\r\n className,\r\n renderCard,\r\n zIndex,\r\n onFeatures,\r\n onAttributes,\r\n onStatistics,\r\n}) => {\r\n const [features, resetSelection] = useEvergisSelect({ onPick, onFeatures });\r\n\r\n return (\r\n <EvergisCard\r\n className={className}\r\n features={features}\r\n reset={resetSelection}\r\n renderCard={renderCard}\r\n onAttributes={onAttributes}\r\n onStatistics={onStatistics}\r\n >\r\n {current => (\r\n <EvergisSelectLayer\r\n features={features}\r\n current={current}\r\n zIndex={zIndex || defaultZIndex}\r\n />\r\n )}\r\n </EvergisCard>\r\n );\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const LegendContainer = styled.div`\r\n background-color: white;\r\n`;\r\n\r\nexport const LegendSectionContainer = styled.div``;\r\n\r\nexport const LegendSymbolTitle = styled.p`\r\n margin: 0;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n`;\r\n\r\nexport const LegendValueContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n\r\n ${LegendSymbolTitle} {\r\n padding-left: 0.5rem;\r\n }\r\n`;\r\n\r\nexport const LegendSectionHeader = styled.div`\r\n font-size: 0.75rem;\r\n font-weight: 600;\r\n line-height: 1rem;\r\n`;\r\n","import React from 'react';\r\n\r\nimport { LegendSectionContainer, LegendSectionHeader } from './styled';\r\nimport { LegendItem, LegendValueType } from '../../core';\r\n\r\ntype LegendSectionProps = {\r\n item: LegendItem;\r\n children: (value: LegendValueType) => React.ReactNode;\r\n hideTitle?: boolean;\r\n renderLegendTitle?: (item: React.ReactNode | LegendItem) => React.ReactNode;\r\n};\r\n\r\nexport const LegendSection: React.FC<LegendSectionProps> = ({\r\n item,\r\n renderLegendTitle,\r\n hideTitle,\r\n children,\r\n}) => (\r\n <LegendSectionContainer>\r\n {!hideTitle && (\r\n <LegendSectionHeader>\r\n {renderLegendTitle ? renderLegendTitle(item) : item.title}\r\n </LegendSectionHeader>\r\n )}\r\n {item.values.map(children)}\r\n </LegendSectionContainer>\r\n);\r\n","import styled from 'styled-components';\r\n\r\nexport const InputContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n border-radius: 0.125rem;\r\n box-sizing: border-box;\r\n border: 0.0625rem solid rgba(48, 69, 79, 0.12);\r\n margin-bottom: 0.5rem;\r\n \r\n i {\r\n color: rgba(48, 69, 79, 0.54);\r\n padding: 0.25rem;\r\n\r\n &:hover {\r\n cursor: pointer;\r\n color: rgba(48, 69, 79, 0.87);\r\n }\r\n }\r\n`;\r\n\r\nexport const InputField = styled.input`\r\n width: 100%;\r\n border: none;\r\n outline: none;\r\n font-size: 1rem;\r\n line-height: 1.1875rem;\r\n padding: 0 0.5rem;\r\n background-color: transparent;\r\n color: rgba(48, 69, 79, 0.87);\r\n`;\r\n","import React from 'react';\r\nimport { EverCloudSearchIcon } from \"@evergis/icons\";\r\n\r\nimport { InputContainer, InputField } from './styled';\r\n\r\ntype SearchInputProps = {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n};\r\n\r\nexport const SearchInput: React.FC<SearchInputProps> = ({ onChange }) => (\r\n <InputContainer>\r\n <EverCloudSearchIcon />\r\n <InputField onChange={onChange} />\r\n </InputContainer>\r\n);\r\n","import React from 'react';\r\n\r\nimport { LegendSymbolPart, useLegendValueSymbol } from '../../hooks';\r\n\r\nimport { SGisSymbolType } from '../../symbols';\r\n\r\ntype LegendSymbolProps = {\r\n children: (symbol: SGisSymbolType) => React.ReactNode;\r\n} & LegendSymbolPart;\r\n\r\nexport const LegendSymbol: React.FC<LegendSymbolProps> = ({\r\n parameter,\r\n parameterValue,\r\n children,\r\n}) => {\r\n const symbol = useLegendValueSymbol({ parameterValue, parameter });\r\n\r\n if (!symbol) {\r\n return null;\r\n }\r\n\r\n return <>{children(symbol)}</>;\r\n};\r\n","import React from 'react';\r\n\r\nimport { LegendSymbolTitle, LegendValueContainer } from './styled';\r\nimport { LegendSymbol } from './LegendSymbol';\r\nimport { Symbol } from '../Symbol';\r\n\r\nimport { ClassificationParameterExtended, LegendValueType } from '../../core';\r\n\r\nimport { getLegendSymbolRenders } from '../../symbols';\r\n\r\nimport { LegendProps } from './types';\r\n\r\nexport type LegendValueProps = {\r\n value: LegendValueType;\r\n parameter: ClassificationParameterExtended;\r\n} & Pick<LegendProps, 'maxSize'>;\r\n\r\nexport const LegendValue: React.FC<LegendValueProps> = ({\r\n value,\r\n parameter,\r\n maxSize,\r\n}) => (\r\n <LegendValueContainer>\r\n <LegendSymbol parameter={parameter} parameterValue={value.parameterValue}>\r\n {symbol => (\r\n <Symbol\r\n render={getLegendSymbolRenders}\r\n symbol={symbol}\r\n size={maxSize}\r\n />\r\n )}\r\n </LegendSymbol>\r\n <LegendSymbolTitle>{value.title}</LegendSymbolTitle>\r\n </LegendValueContainer>\r\n);\r\n","import { LegendProps } from './types';\r\nimport { LegendValueType } from '../../core';\r\n\r\nconst MAX_SIZE = 26;\r\n\r\nconst getNumberParam = (parameterValue: any, param: string): number | null => {\r\n return typeof parameterValue === 'object' &&\r\n param in parameterValue &&\r\n typeof parameterValue[param] === 'number'\r\n ? parameterValue[param]\r\n : null;\r\n};\r\n\r\nexport const getSymbolSize = ({\r\n parameterValue,\r\n maxSize,\r\n}: Pick<LegendProps, 'maxSize'> &\r\n Pick<LegendValueType, 'parameterValue'>): number => {\r\n const size = getNumberParam(parameterValue, 'size');\r\n const strokeWidth = getNumberParam(parameterValue, 'strokeWidth');\r\n const width = getNumberParam(parameterValue, 'width');\r\n const height = getNumberParam(parameterValue, 'height');\r\n\r\n if (width && height) {\r\n return Math.max(width, height);\r\n } else if (width) {\r\n return width;\r\n } else if (height) {\r\n return height;\r\n } else if (size) {\r\n return size + (strokeWidth || 0);\r\n } else if (typeof maxSize === 'number') {\r\n return maxSize;\r\n } else {\r\n return MAX_SIZE;\r\n }\r\n};\r\n","import React from 'react';\r\n\r\nimport { LegendContainer } from './styled';\r\nimport { LegendSection } from './LegendSection';\r\nimport { SearchInput } from '../SearchInput/SearchInput';\r\nimport { LegendValue } from './LegendValue';\r\nimport { LegendProps } from './types';\r\n\r\nimport { LegendProvider } from '../../contexts';\r\nimport { getSymbolSize } from './getSymbolSize';\r\n\r\nimport { useLayerLegend } from '../../hooks';\r\n\r\nexport const Legend: React.FC<LegendProps> = ({\r\n layer,\r\n children,\r\n className,\r\n config,\r\n maxSize,\r\n}) => {\r\n const legend = useLayerLegend(layer, config);\r\n const { renderCustomLegend, searchLayer, searchable } = config || {};\r\n const { symbol } = legend || {};\r\n\r\n if (!legend && !renderCustomLegend) {\r\n return null;\r\n }\r\n\r\n return (\r\n <LegendProvider symbol={symbol}>\r\n <LegendContainer className={className}>\r\n {searchable && searchLayer && <SearchInput onChange={searchLayer} />}\r\n {renderCustomLegend && layer\r\n ? renderCustomLegend(layer)\r\n : children\r\n ? legend && children(legend)\r\n : legend &&\r\n legend.items.map((legendItem, index) => (\r\n <LegendSection\r\n key={`${legendItem.attribute}-${legendItem.parameter}`}\r\n item={legendItem}\r\n hideTitle={layer?.alias === legendItem.title}\r\n renderLegendTitle={config && config.renderLegendTitle}\r\n >\r\n {legendValue => (\r\n <LegendValue\r\n key={`${legendValue.title}-${index}`}\r\n value={legendValue}\r\n parameter={legendItem.parameter}\r\n maxSize={getSymbolSize({\r\n parameterValue: legendValue.parameterValue,\r\n maxSize,\r\n })}\r\n />\r\n )}\r\n </LegendSection>\r\n ))}\r\n </LegendContainer>\r\n </LegendProvider>\r\n );\r\n};\r\n","import React, { CSSProperties, PropsWithChildren, useCallback } from 'react';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMapContext } from '../../contexts';\r\n\r\nimport {\r\n MapState,\r\n shouldUpdateMapState,\r\n useMapBboxChange,\r\n useMapWrapper,\r\n useMaxMinScale,\r\n useUpdateMapView,\r\n} from '../../hooks';\r\n\r\nexport type MapProps = PropsWithChildren<{\r\n className?: string;\r\n position?: Coordinates;\r\n resolution?: number;\r\n minScale?: number;\r\n maxScale?: number;\r\n style?: CSSProperties;\r\n onBboxChange?: (mapState: MapState) => void;\r\n}>;\r\n\r\nexport const Map: React.FC<MapProps> = ({\r\n className,\r\n position,\r\n resolution,\r\n minScale,\r\n maxScale,\r\n children,\r\n onBboxChange,\r\n style,\r\n}) => {\r\n const wrapperRef = useMapWrapper();\r\n const { map } = useMapContext();\r\n\r\n const handleBboxChange = useCallback(\r\n (state: MapState) => {\r\n if (onBboxChange && shouldUpdateMapState(map, { position, resolution })) {\r\n onBboxChange(state);\r\n }\r\n },\r\n [map, onBboxChange, position, resolution]\r\n );\r\n\r\n useUpdateMapView({ position, resolution });\r\n useMaxMinScale(minScale, maxScale, position, resolution);\r\n\r\n useMapBboxChange(handleBboxChange);\r\n\r\n return (\r\n <div className={className} ref={wrapperRef} style={style}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n","import { css } from 'styled-components';\r\n\r\nexport const CONTROL_PLACEMENTS: Placement[] = [\r\n 'top-left',\r\n 'top-right',\r\n 'bottom-left',\r\n 'bottom-right',\r\n];\r\n\r\nconst topLeft = (distance: string) => css`\r\n top: ${distance};\r\n left: ${distance};\r\n`;\r\n\r\nconst topRight = (distance: string) => css`\r\n top: ${distance};\r\n right: ${distance};\r\n`;\r\n\r\nconst bottomLeft = (distance: string) => css`\r\n bottom: ${distance};\r\n left: ${distance};\r\n`;\r\n\r\nconst bottomRight = (distance: string) => css`\r\n bottom: ${distance};\r\n right: ${distance};\r\n`;\r\n\r\nexport type Placement =\r\n | 'top-left'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-right';\r\n\r\nexport const placementMixin = (\r\n placement: Placement = 'bottom-left',\r\n distance: string = '1rem'\r\n) => css`\r\n ${placement === 'top-left' && topLeft(distance)}\r\n ${placement === 'top-right' && topRight(distance)}\r\n ${placement === 'bottom-left' && bottomLeft(distance)}\r\n ${placement === 'bottom-right' && bottomRight(distance)}\r\n`;\r\n","import styled, { css } from 'styled-components';\r\nimport { Icon } from \"@evergis/icons\";\r\n\r\nimport { Placement, placementMixin } from '../../ui/mixins/placementMixin';\r\n\r\nexport type MapControlsProps = {\r\n placement?: Placement;\r\n vertical?: boolean;\r\n};\r\n\r\nconst mapControlBtnMixin = css`\r\n width: 2rem;\r\n height: 2rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n color: #fff;\r\n`;\r\n\r\ntype MapControlBtnProps = {\r\n onClick?: () => void;\r\n};\r\n\r\nexport const ZoomInBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// ZoomInBtn.defaultProps = { kind: \"plus\" };\r\n\r\nexport const ZoomOutBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// ZoomOutBtn.defaultProps = { kind: \"minus\" };\r\n\r\nexport const SearchBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// SearchBtn.defaultProps = { kind: \"search\" };\r\n\r\n// TODO not exists in fonts\r\nexport const FullscreenBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// FullscreenBtn.defaultProps = { kind: \"maximize\" };\r\n\r\nexport const MeasureBtn = styled(Icon)<\r\n MapControlBtnProps\r\n>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// MeasureBtn.defaultProps = { kind: \"measure_length\" };\r\n\r\nexport const MapControl = styled.div`\r\n border-radius: 0.15rem;\r\n background: rgba(28, 33, 48, 0.8);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: #fff;\r\n font-size: 1.5rem;\r\n cursor: pointer;\r\n height: auto;\r\n width: auto;\r\n padding: 0.25rem;\r\n`;\r\n\r\nexport const MapControls = styled.div<MapControlsProps>`\r\n position: absolute;\r\n display: flex;\r\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\r\n\r\n ${({ placement }) => placementMixin(placement)}\r\n\r\n ${MapControl} {\r\n margin-bottom: ${({ vertical }) => (vertical ? '0.5rem' : '0')};\r\n margin-right: ${({ vertical }) => (vertical ? '0' : '0.5rem')};\r\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\r\n }\r\n`;\r\n","import React from 'react';\r\nimport { MapControl, MeasureBtn } from './styled';\r\n\r\n// TODO\r\nexport const Measure = () => {\r\n return (\r\n <MapControl>\r\n <MeasureBtn onClick={() => {}} />\r\n </MapControl>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { MapControl, SearchBtn } from './styled';\r\n\r\n// TODO\r\nexport const Search = () => {\r\n return (\r\n <MapControl>\r\n <SearchBtn onClick={() => {}} />\r\n </MapControl>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { FullscreenBtn, MapControl } from './styled';\r\n\r\n// TODO\r\nexport const Fullscreen = () => {\r\n return (\r\n <MapControl>\r\n <FullscreenBtn onClick={() => {}} />\r\n </MapControl>\r\n );\r\n};\r\n","import styled, { css } from 'styled-components';\r\n\r\nimport { LegendSectionHeader } from '../Legend/styled';\r\nimport { MapControl } from '../MapControls';\r\nimport { isParameterType } from \"../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended } from \"../../core\";\r\nimport { MapLegendItemProps } from \"./types\";\r\n\r\nexport const MapLegendControl = styled(MapControl)`\r\n cursor: default;\r\n`;\r\n\r\nexport const MapLegendContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n width: 100%;\r\n padding-bottom: 1rem;\r\n box-sizing: border-box;\r\n\r\n canvas {\r\n height: 1.625rem;\r\n width: 1.625rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendHeader = styled(LegendSectionHeader)`\r\n max-width: 15rem;\r\n margin-bottom: 0.25rem;\r\n font-weight: 500;\r\n`;\r\n\r\nexport const MapLegendDescriptionContainer = styled.div`\r\n margin-bottom: 0.5rem;\r\n font-weight: 400;\r\n font-size: 0.625rem;\r\n color: rgba(255, 255, 255, 0.65);\r\n`;\r\n\r\nexport const MinimizedLegendContainer = styled.div`\r\n width: calc(100% - 1.5rem);\r\n padding-right: 1.5rem;\r\n \r\n :not(:first-child) {\r\n margin-top: 1rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendValueDescr = styled.div`\r\n min-height: 1rem;\r\n margin-bottom: 0.25rem;\r\n font-size: 0.75rem;\r\n font-weight: 600;\r\n line-height: 1rem;\r\n`;\r\n\r\nconst SizeLegendItemMixin = (value = 0) => css`\r\n position: absolute;\r\n top: 0;\r\n left: 50%;\r\n flex: none;\r\n height: inherit;\r\n width: inherit;\r\n margin: 0 auto;\r\n background: none;\r\n border: none;\r\n\r\n :after {\r\n content: \"\";\r\n display: flex;\r\n border: 1px rgba(48, 69, 79, 0.28) solid;\r\n border-radius: 50%;\r\n margin: 0 0 0 -${value / 2}px;\r\n width: ${value}px;\r\n height: ${value}px;\r\n }\r\n`;\r\n\r\nconst StrokeWidthLegendItemMixin = (value = 0) => css`\r\n position: relative;\r\n background: none;\r\n border: none;\r\n display: flex;\r\n align-items: center;\r\n flex: none;\r\n width: calc(100% - 2rem);\r\n height: ${value}px;\r\n margin: 0 0 0.25rem 0;\r\n padding-left: 2rem;\r\n font-size: 0.75rem;\r\n \r\n :first-child, :last-child {\r\n height: auto;\r\n }\r\n \r\n :after {\r\n content: \"\";\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 1.5rem;\r\n height: ${value}px;\r\n margin-top: -${Math.round(value / 2)}px;\r\n background: rgb(224, 224, 224);\r\n }\r\n`;\r\n\r\nconst StrokeColorLegendItemMixin = css`\r\n margin-right: 0.5rem;\r\n width: 1.5rem;\r\n`;\r\n\r\nexport const MapLegendItem = styled.div<MapLegendItemProps>`\r\n flex: 1;\r\n height: ${({ parameter }) =>\r\n isParameterType([\"strokeColor\", \"stroke.color\"], parameter as ClassificationParameterExtended) ? 0.25 : 1}rem;\r\n background: ${({ value }) => typeof value === \"number\" ? \"none\" : value};\r\n border: 1px rgba(48, 69, 79, 0.1) solid;\r\n margin-right: -1px;\r\n opacity: ${({ isHidden }) => isHidden ? 0.28 : 1};\r\n\r\n ${({ value, parameter }) => isParameterType(\"size\", parameter as ClassificationParameterExtended)\r\n && SizeLegendItemMixin(value as number)}\r\n\r\n ${({ value, parameter }) => isParameterType(\r\n [\"strokeWidth\", \"stroke.width\"],\r\n parameter as ClassificationParameterExtended,\r\n ) && StrokeWidthLegendItemMixin(value as number)}\r\n`;\r\n\r\nexport const MapLegendOther = styled(MapLegendItem)`\r\n display: flex;\r\n align-items: center;\r\n flex: none;\r\n position: relative;\r\n width: 1rem;\r\n margin-left: 0.25rem;\r\n border-radius: 0.125rem;\r\n`;\r\n\r\nconst SizeLegendItemsMixin = css`\r\n position: relative;\r\n width: 2rem;\r\n height: 2rem;\r\n margin: 0 auto;\r\n\r\n ${MapLegendOther} {\r\n width: auto;\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nconst StrokeWidthLegendItemsMixin = css`\r\n position: relative;\r\n flex-direction: column;\r\n width: auto;\r\n\r\n ${MapLegendOther} {\r\n width: calc(100% - 2rem);\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nexport const SizeMinimizedLegend = styled.div`\r\n display: flex;\r\n flex-wrap: nowrap;\r\n align-items: center;\r\n margin-top: 0.5rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendSymbol = styled.div`\r\n width: 4rem;\r\n margin-right: 0.75rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendLabel = styled.div`\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendDown = styled.div`\r\n color: white;\r\n opacity: 0.65;\r\n`;\r\n\r\nexport const SizeMinimizedLegendUp = styled(SizeMinimizedLegendDown)``;\r\n\r\nconst SingleSizeLegendItemsMixin = css`\r\n width: 4rem;\r\n margin-right: 0.75rem;\r\n\r\n ${MapLegendItem}:after {\r\n margin: 0 auto;\r\n }\r\n`;\r\n\r\nconst SingleLegendItemsMixin = css<{\r\n parameter: ClassificationParameterExtended;\r\n isSize?: boolean;\r\n}>`\r\n justify-content: center;\r\n width: 2rem;\r\n height: auto;\r\n margin: 0;\r\n ${({ isSize }) => isSize && SingleSizeLegendItemsMixin}\r\n \r\n ${MapLegendItem} {\r\n position: relative;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n align-content: center;\r\n justify-content: center;\r\n margin: 0;\r\n height: auto;\r\n width: auto;\r\n\r\n ${({ parameter }) => isParameterType(\r\n [\"strokeColor\", \"stroke.color\"],\r\n parameter as ClassificationParameterExtended,\r\n ) && StrokeColorLegendItemMixin}\r\n }\r\n`;\r\n\r\nexport const MapLegendItems = styled.div<{\r\n parameter: ClassificationParameterExtended;\r\n isSize?: boolean;\r\n isStrokeWidth?: boolean;\r\n isStrokeColor?: boolean;\r\n isSingle?: boolean;\r\n}>`\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n border-radius: 0.125rem;\r\n\r\n ${({ isSize }) => isSize && SizeLegendItemsMixin};\r\n ${({ isStrokeWidth }) => isStrokeWidth && StrokeWidthLegendItemsMixin};\r\n ${({ isSingle }) => isSingle && SingleLegendItemsMixin};\r\n`;\r\n\r\nexport const MapLegendItemsContainer = styled.div`\r\n display: flex;\r\n width: 100%;\r\n \r\n ${MapLegendItem} {\r\n :first-child {\r\n border-top-left-radius: 0.125rem;\r\n border-bottom-left-radius: 0.125rem;\r\n }\r\n\r\n :last-child {\r\n border-top-right-radius: 0.125rem;\r\n border-bottom-right-radius: 0.125rem;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendValues = styled.div`\r\n display: flex;\r\n width: 100%;\r\n font-size: 0.75rem;\r\n color: rgba(48, 69, 79, 0.65);\r\n`;\r\n\r\nexport const MapLegendValuesRange = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n width: calc(100% - 1.25rem);\r\n \r\n div {\r\n flex: 1;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n\r\n :first-child {\r\n margin-right: 0.5rem;\r\n }\r\n\r\n :last-child {\r\n margin-left: 0.5rem;\r\n text-align: right;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendValuesOther = styled(MapLegendOther)`\r\n justify-content: center;\r\n border: 0;\r\n overflow: visible;\r\n`;\r\n\r\nexport const MapLegendExpandButton = styled.div`\r\n cursor: pointer;\r\n margin: 0.1rem 0 0.5rem;\r\n font-size: 0.625rem;\r\n color: #1FB3AA;\r\n`;\r\n","import React from 'react';\r\n\r\nimport {\r\n MapLegendContainer,\r\n MapLegendControl,\r\n MapLegendHeader,\r\n} from './styled';\r\nimport { Legend } from \"../Legend\";\r\nimport { LegendProvider } from '../../contexts';\r\nimport { useMapLegend } from '../../hooks';\r\nimport { MapLegendProps } from \"./types\";\r\n\r\nexport const MapLegend: React.FC<MapLegendProps> = ({\r\n layer,\r\n config,\r\n className,\r\n hideTitle,\r\n}) => {\r\n const legend = useMapLegend(layer, config);\r\n\r\n if (!legend) {\r\n return null;\r\n }\r\n\r\n const { symbol, items } = legend;\r\n\r\n return (\r\n <LegendProvider symbol={symbol}>\r\n <MapLegendControl className={className}>\r\n {!hideTitle && <MapLegendHeader>{layer?.alias}</MapLegendHeader>}\r\n {!!items.length && (\r\n <MapLegendContainer>\r\n <Legend layer={layer} config={config} />\r\n </MapLegendContainer>\r\n )}\r\n </MapLegendControl>\r\n </LegendProvider>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nimport { LegendSymbol } from '../Legend';\r\nimport { Symbol } from '../Symbol';\r\n\r\nimport { ClassificationParameterExtended, LegendValueType } from '../../core';\r\n\r\nimport { getMapLegendSymbolRenders } from '../../symbols';\r\n\r\nconst MAX_SIZE = 100;\r\n\r\nexport type MapLegendSymbolProps = {\r\n value: LegendValueType;\r\n parameter: ClassificationParameterExtended;\r\n};\r\n\r\nexport const MapLegendSymbol: React.FC<MapLegendSymbolProps> = ({\r\n value,\r\n parameter,\r\n}) => (\r\n <LegendSymbol\r\n key={value.title}\r\n parameter={parameter}\r\n parameterValue={value.parameterValue}\r\n >\r\n {symbol => (\r\n <Symbol\r\n render={getMapLegendSymbolRenders}\r\n symbol={symbol}\r\n size={MAX_SIZE}\r\n />\r\n )}\r\n </LegendSymbol>\r\n);\r\n","import React, { FC } from 'react';\r\n\r\nimport { MapLegendDescriptionContainer } from './styled';\r\nimport { isParameterType } from \"../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended } from \"../../core\";\r\n\r\nexport const MapLegendDescription: FC<{ parameter: ClassificationParameterExtended }> = ({ parameter }) => {\r\n const isSize = isParameterType(\"size\", parameter);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\r\n const isStrokeColor = isParameterType([\"strokeColor\", \"stroke.color\"], parameter);\r\n\r\n return (\r\n <MapLegendDescriptionContainer>\r\n {isStrokeWidth || isStrokeColor\r\n ? (isStrokeWidth ? \"Толщина обводки\" : \"Цвет обводки\")\r\n : isSize ? \"Размер знака\" : \"Цвет символа\"}\r\n </MapLegendDescriptionContainer>\r\n );\r\n};\r\n","import React, { FC, useCallback } from \"react\";\r\n\r\nimport {\r\n MapLegendItem,\r\n MapLegendItems,\r\n MapLegendItemsContainer,\r\n MapLegendOther,\r\n MapLegendValueDescr,\r\n MapLegendValues,\r\n MapLegendValuesOther,\r\n MapLegendValuesRange,\r\n MinimizedLegendContainer,\r\n SizeMinimizedLegend,\r\n SizeMinimizedLegendDown,\r\n SizeMinimizedLegendLabel,\r\n SizeMinimizedLegendSymbol,\r\n SizeMinimizedLegendUp,\r\n} from \"./styled\";\r\nimport { isNumeric } from \"../../utils/isNumeric\";\r\nimport { isParameterType } from \"../../utils/isParameterType\";\r\nimport { MinimizedLegendProps } from \"./types\";\r\n\r\nconst getValueFromLegendTitle = (title: string, minOrMax: \"min\" | \"max\"): string => {\r\n if (title.includes(\" - \")) {\r\n const result = title?.split(\" - \");\r\n\r\n return minOrMax === \"min\" ? result?.[0] : result?.[1];\r\n }\r\n\r\n if (title.includes(\",\")) {\r\n const result = title?.split(\",\");\r\n\r\n return result.join(\", \");\r\n }\r\n\r\n return title.split(\" \").find(isNumeric) || title || \"\";\r\n};\r\n\r\nexport const MinimizedLegend: FC<MinimizedLegendProps> = ({\r\n values,\r\n title,\r\n parameter,\r\n hiddenLegends,\r\n}) => {\r\n const currentValues = [...values];\r\n const other = currentValues.pop();\r\n const isSize = isParameterType(\"size\", parameter);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\r\n const titleMax = getValueFromLegendTitle(currentValues[0]?.title, \"max\");\r\n const titleMin = getValueFromLegendTitle(currentValues[currentValues.length - 1]?.title, \"min\");\r\n\r\n const checkIsHidden = useCallback((hiddenCondition?: string) => hiddenCondition\r\n ? hiddenLegends?.some(condition => hiddenCondition.includes(condition))\r\n : false, [hiddenLegends]);\r\n\r\n return (\r\n <MinimizedLegendContainer>\r\n {!!title && <MapLegendValueDescr>{title}</MapLegendValueDescr>}\r\n {isSize ? (\r\n <>\r\n <SizeMinimizedLegend>\r\n <SizeMinimizedLegendSymbol>\r\n <MapLegendItems parameter={parameter} isSize>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n />\r\n ))}\r\n </MapLegendItems>\r\n </SizeMinimizedLegendSymbol>\r\n <SizeMinimizedLegendLabel>\r\n <SizeMinimizedLegendDown>{currentValues[0]?.title}</SizeMinimizedLegendDown>\r\n <SizeMinimizedLegendUp>{currentValues[currentValues.length - 1]?.title}</SizeMinimizedLegendUp>\r\n </SizeMinimizedLegendLabel>\r\n </SizeMinimizedLegend>\r\n <SizeMinimizedLegend>\r\n <SizeMinimizedLegendSymbol>\r\n <MapLegendItems parameter={parameter} isSize>\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n </SizeMinimizedLegendSymbol>\r\n <SizeMinimizedLegendLabel>\r\n <SizeMinimizedLegendUp>Другое</SizeMinimizedLegendUp>\r\n </SizeMinimizedLegendLabel>\r\n </SizeMinimizedLegend>\r\n </>\r\n ) : isStrokeWidth ? (\r\n <MapLegendItems parameter={parameter} isStrokeWidth>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n >\r\n {(!index || index === currentValues.length - 1) && value.title}\r\n </MapLegendItem>\r\n ))}\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n >\r\n Другое\r\n </MapLegendOther>\r\n </MapLegendItems>\r\n ) : (\r\n <MapLegendItems parameter={parameter}>\r\n <MapLegendItemsContainer>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n />\r\n ))}\r\n </MapLegendItemsContainer>\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n )}\r\n {typeof other?.parameterValue === \"string\" && (titleMax || titleMin) && (\r\n <MapLegendValues>\r\n <MapLegendValuesRange>\r\n <div>{titleMax}</div>\r\n <div>{titleMin}</div>\r\n </MapLegendValuesRange>\r\n <MapLegendValuesOther>-</MapLegendValuesOther>\r\n </MapLegendValues>\r\n )}\r\n </MinimizedLegendContainer>\r\n )\r\n}\r\n","import React from 'react';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Map as SMap } from '@evergis/sgis/es/Map';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\r\nimport { DrawingFinishEvent } from '@evergis/sgis/es/controls/Control';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\n\r\nimport { renderLabelSymbolType, MeasureProps } from './Measurer';\r\n\r\nimport { BaseMeasureToolCreator, BaseMeasureToolEditor } from '../../controls';\r\n\r\nimport { isPolylineLikePolygon } from '../../core';\r\n\r\nimport {\r\n measureAreaSymbol,\r\n measureLengthSymbol,\r\n measurePolygonSnapSymbol,\r\n} from '../../symbols';\r\n\r\ninterface MeasureToolProps extends Omit<MeasureProps, 'isActive'> {\r\n map: SMap;\r\n painter: DomPainter;\r\n}\r\n\r\nexport class MeasureTool extends React.Component<MeasureToolProps> {\r\n layer?: FeatureLayer;\r\n createControl?: BaseMeasureToolCreator;\r\n editorControl?: BaseMeasureToolEditor;\r\n\r\n componentDidMount(): void {\r\n const { map, painter, renderLabelSymbol } = this.props;\r\n\r\n this.layer = new FeatureLayer();\r\n this.initCreateMode(map, painter, renderLabelSymbol);\r\n this.initEditMode(map, painter, renderLabelSymbol);\r\n\r\n this.props.map.addLayer(this.layer);\r\n this.switchMode(true, false);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.layer && this.props.map.removeLayer(this.layer);\r\n this.switchMode(false, false);\r\n this.offEvents();\r\n this.clearProperties();\r\n }\r\n\r\n initCreateMode(\r\n map: SMap,\r\n painter: DomPainter,\r\n renderLabelSymbol: renderLabelSymbolType\r\n ): void {\r\n const { lengthSymbol, formatters, areaSymbol } = this.props;\r\n\r\n this.createControl = new BaseMeasureToolCreator(map, painter, {\r\n isActive: false,\r\n useTempLayer: true,\r\n symbol: lengthSymbol || measureLengthSymbol,\r\n areaSymbol,\r\n dblClickMinTime: 300,\r\n renderLabelSymbol,\r\n formatters: formatters,\r\n });\r\n // @ts-ignore\r\n this.createControl.on('drawingFinish', this.createFeature);\r\n this.createControl.on('cancel', this.cancelFeatureCreation);\r\n }\r\n\r\n initEditMode(\r\n map: SMap,\r\n painter: DomPainter,\r\n renderLabelSymbol: renderLabelSymbolType\r\n ): void {\r\n const { lengthSymbol, snapSymbol, formatters } = this.props;\r\n\r\n this.editorControl = new BaseMeasureToolEditor(map, painter, {\r\n isActive: false,\r\n activeLayer: this.layer,\r\n snappingSymbol: snapSymbol || measurePolygonSnapSymbol,\r\n symbol: lengthSymbol || measureLengthSymbol,\r\n renderLabelSymbol,\r\n formatters,\r\n });\r\n this.editorControl.featureDragAllowed = false;\r\n this.editorControl.on('remove', this.removeFeature);\r\n }\r\n\r\n componentDidUpdate({ formatters }: MeasureToolProps) {\r\n const { formatters: currentFormatters } = this.props;\r\n\r\n if (currentFormatters !== formatters && currentFormatters)\r\n if (this.editorControl) {\r\n this.editorControl.formatters = currentFormatters;\r\n this.editorControl.updateMeasureResult();\r\n }\r\n }\r\n\r\n offEvents(): void {\r\n if (this.createControl) {\r\n // @ts-ignore\r\n this.createControl.off('drawingFinish', this.createFeature);\r\n }\r\n\r\n this.editorControl && this.editorControl.off('remove', this.removeFeature);\r\n this.createControl &&\r\n this.createControl.off('cancel', this.cancelFeatureCreation);\r\n }\r\n\r\n clearProperties(): void {\r\n delete this.createControl;\r\n delete this.editorControl;\r\n delete this.layer;\r\n }\r\n\r\n switchMode(create: boolean, edit: boolean): void {\r\n if (this.createControl) {\r\n this.createControl.isActive = create;\r\n }\r\n\r\n if (this.editorControl) {\r\n this.editorControl.isActive = edit;\r\n }\r\n }\r\n\r\n getFeature(rings: [number, number][][]): Feature | Feature[] {\r\n const { lengthSymbol, areaSymbol, map } = this.props;\r\n let feature;\r\n\r\n if (isPolylineLikePolygon(rings, map.resolution)) {\r\n rings[0].shift();\r\n feature = new Polygon(rings, { crs: map.crs });\r\n feature.symbol = areaSymbol || measureAreaSymbol;\r\n } else {\r\n feature = new Polyline(rings, { crs: map.crs });\r\n feature.symbol = lengthSymbol || measureLengthSymbol;\r\n }\r\n\r\n return feature;\r\n }\r\n\r\n createFeature = (event: DrawingFinishEvent<Polyline>): void => {\r\n const feature = this.getFeature([...event.feature.rings]);\r\n\r\n this.layer && this.layer.add(feature);\r\n if (this.editorControl) {\r\n this.editorControl.activeFeature = feature as Poly;\r\n }\r\n this.switchMode(false, true);\r\n };\r\n\r\n removeFeature = (): void => {\r\n if (this.editorControl && this.editorControl.activeFeature) {\r\n this.layer && this.layer.remove(this.editorControl.activeFeature);\r\n }\r\n\r\n this.switchMode(true, false);\r\n };\r\n\r\n cancelFeatureCreation = (): void => {\r\n setTimeout(() => {\r\n this.switchMode(false, false);\r\n this.switchMode(true, false);\r\n }, 10);\r\n };\r\n\r\n render(): React.ReactElement {\r\n return <div style={{ display: 'none' }} />;\r\n }\r\n}\r\n","import React, { ReactElement } from 'react';\r\n\r\nimport { useMapContext } from '../../contexts';\r\nimport { MeasureToolFormatters } from '../../controls/MeasureToolFormatters';\r\nimport { MeasureTool } from './MeasureTool';\r\nimport { ShadowedPolySymbol, ShadowedPointSymbol } from '../../symbols';\r\n\r\nexport type renderLabelSymbolType = (props: {\r\n content: string;\r\n onClose?: VoidFunction;\r\n}) => ReactElement;\r\n\r\nexport type MeasureProps = {\r\n isActive: boolean;\r\n renderLabelSymbol: renderLabelSymbolType;\r\n formatters?: MeasureToolFormatters;\r\n snapSymbol?: ShadowedPointSymbol;\r\n lengthSymbol?: ShadowedPolySymbol;\r\n areaSymbol?: ShadowedPolySymbol;\r\n};\r\n\r\nexport const Measurer: React.FC<MeasureProps> = ({ isActive, ...props }) => {\r\n const { map, painter } = useMapContext();\r\n\r\n return isActive ? (\r\n <MeasureTool map={map} painter={painter} {...props} />\r\n ) : null;\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const ScaleRulerContainer = styled.div`\r\n height: 2rem;\r\n cursor: default;\r\n display: flex;\r\n align-items: flex-end;\r\n padding: 0 0.5rem 0.5rem;\r\n box-sizing: border-box;\r\n`;\r\n\r\ntype ScaleRulerBlockProps = {\r\n width: number;\r\n};\r\n\r\nexport const ScaleRulerBlock = styled.div<ScaleRulerBlockProps>`\r\n display: flex;\r\n align-items: flex-end;\r\n justify-content: center;\r\n width: ${({ width }) => `${width}px`};\r\n height: 0.25rem;\r\n border: 0.0625rem solid white;\r\n border-top: 0;\r\n`;\r\n\r\ntype TextContainerProps = {\r\n margin?: string;\r\n width?: string;\r\n buttonText?: boolean;\r\n alignEnd?: boolean;\r\n};\r\n\r\nexport const TextContainer = styled.div<TextContainerProps>`\r\n height: 2rem;\r\n display: flex;\r\n justify-content: center;\r\n align-items: ${({ alignEnd }) => (alignEnd ? 'flex-end' : 'center')};\r\n width: ${({ width }) => width || 'auto'};\r\n color: #fff;\r\n font-size: 1rem;\r\n cursor: default;\r\n padding: 0 0.5rem;\r\n`;\r\n","import React from 'react';\r\nimport { ScaleRulerBlock, ScaleRulerContainer, TextContainer } from './styled';\r\nimport { useMapView, useScale } from '../../hooks';\r\n\r\nexport const ScaleRuler: React.FC = () => {\r\n const { resolution } = useMapView();\r\n const { currentScale, width } = useScale({ resolution: resolution || 0 });\r\n\r\n return (\r\n <ScaleRulerContainer>\r\n <ScaleRulerBlock width={width}>\r\n <TextContainer alignEnd margin={'0'}>\r\n {currentScale >= 1000\r\n ? `${currentScale / 1000}km`\r\n : `${currentScale}m`}\r\n </TextContainer>\r\n </ScaleRulerBlock>\r\n </ScaleRulerContainer>\r\n );\r\n};\r\n","import React, { PropsWithChildren } from 'react';\r\n\r\nimport { MapControl, ZoomInBtn, ZoomOutBtn } from '../MapControls/styled';\r\n\r\nimport { useMapViewActions } from '../../hooks';\r\n\r\ntype ZoomProps = PropsWithChildren<{}>;\r\n\r\nexport const Zoom: React.FC<ZoomProps> = ({ children }) => {\r\n const { zoomIn, zoomOut } = useMapViewActions();\r\n\r\n return (\r\n <MapControl>\r\n <ZoomInBtn onClick={zoomIn} />\r\n <ZoomOutBtn onClick={zoomOut} />\r\n {children}\r\n </MapControl>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nimport { TextContainer } from './styled';\r\n\r\nimport { useMapLevel } from '../../hooks';\r\n\r\nexport const ZoomLevel: React.FC = () => {\r\n const level = useMapLevel();\r\n\r\n return (\r\n <TextContainer buttonText={true} width={'2rem'}>\r\n {level || 0}\r\n </TextContainer>\r\n );\r\n};\r\n","import styled, { css } from 'styled-components';\r\n\r\nimport { TooltipComponentProps, Placement } from './types';\r\n\r\nexport const TOOLTIP_PLACEMENTS: Placement[] = [\r\n 'top',\r\n 'right',\r\n 'left',\r\n 'bottom',\r\n];\r\n\r\nconst cornerBottom = (cornerSize: string) => css`\r\n &:before {\r\n left: 50%;\r\n transform: translate(-50%, 100%);\r\n bottom: 0;\r\n border-left: ${cornerSize} solid transparent;\r\n border-right: ${cornerSize} solid transparent;\r\n border-top: ${cornerSize} solid rgba(28, 33, 48, 0.8);\r\n }\r\n`;\r\n\r\nconst cornerLeft = (cornerSize: string) => css`\r\n &:before {\r\n transform: translate(-100%, -50%);\r\n left: 0;\r\n top: 50%;\r\n border-top: ${cornerSize} solid transparent;\r\n border-right: ${cornerSize} solid rgba(28, 33, 48, 0.8);\r\n border-bottom: ${cornerSize} solid transparent;\r\n }\r\n`;\r\n\r\nconst cornerRight = (cornerSize: string) => css`\r\n &:before {\r\n transform: translate(100%, -50%);\r\n right: 0;\r\n top: 50%;\r\n border-top: ${cornerSize} solid transparent;\r\n border-left: ${cornerSize} solid rgba(28, 33, 48, 0.8);\r\n border-bottom: ${cornerSize} solid transparent;\r\n }\r\n`;\r\n\r\nconst cornerTop = (cornerSize: string) => css`\r\n &:before {\r\n transform: translate(-50%, -100%);\r\n left: 50%;\r\n top: 0;\r\n border-left: ${cornerSize} solid transparent;\r\n border-right: ${cornerSize} solid transparent;\r\n border-bottom: ${cornerSize} solid rgba(28, 33, 48, 0.8);\r\n }\r\n`;\r\n\r\nconst top = (distance: string, cornerSize: string | null) => css`\r\n transform: translate(-50%, 0);\r\n left: -50%;\r\n bottom: ${distance};\r\n ${cornerSize && cornerBottom(cornerSize)}\r\n`;\r\n\r\nconst right = (distance: string, cornerSize: string | null) => css`\r\n transform: translate(0, -50%);\r\n top: -50%;\r\n left: ${distance};\r\n ${cornerSize && cornerLeft(cornerSize)}\r\n`;\r\n\r\nconst left = (distance: string, cornerSize: string | null) => css`\r\n transform: translate(0, -50%);\r\n top: -50%;\r\n right: ${distance};\r\n ${cornerSize && cornerRight(cornerSize)}\r\n`;\r\n\r\nconst bottom = (distance: string, cornerSize: string | null) => css`\r\n transform: translate(-50%, 0);\r\n left: -50%;\r\n top: ${distance};\r\n ${cornerSize && cornerTop(cornerSize)}\r\n`;\r\n\r\nexport const placementMixin = (\r\n placement: Placement = 'top',\r\n distance: string,\r\n cornerSize: string | null\r\n) => css`\r\n ${placement === 'top' && top(distance, cornerSize)}\r\n ${placement === 'right' && right(distance, cornerSize)}\r\n ${placement === 'left' && left(distance, cornerSize)}\r\n ${placement === 'bottom' && bottom(distance, cornerSize)}\r\n`;\r\n\r\nconst corner = css`\r\n &:before {\r\n content: '';\r\n width: 0;\r\n height: 0;\r\n position: absolute;\r\n }\r\n`;\r\n\r\nexport const TooltipComponent = styled.div<TooltipComponentProps>`\r\n position: absolute;\r\n z-index: 999;\r\n display: flex;\r\n font-size: 0.625rem;\r\n color: #fff;\r\n background-color: rgba(28, 33, 48, 0.8);\r\n padding: 0.4em 0.6em;\r\n border-radius: 2px;\r\n user-select: none;\r\n box-sizing: border-box;\r\n white-space: pre;\r\n ${({ placement, distance = '0.5rem', withArrow, cornerSize = '0.25rem' }) =>\r\n placementMixin(placement, distance, withArrow ? cornerSize : null)}\r\n ${({ withArrow }) => withArrow && corner}\r\n`;\r\n","import React, { createContext, useEffect } from 'react';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\n\r\nimport { TooltipComponent } from './styled';\r\nimport { ITooltip } from './types';\r\n\r\nimport { useTooltip } from '../../hooks';\r\n\r\n// TODO why???\r\nconst { Provider, Consumer } = createContext<Feature[]>([]);\r\n\r\n// TODO I just cant read that\r\nexport const Tooltip: React.FC<ITooltip> = ({\r\n features = [],\r\n map,\r\n center,\r\n component,\r\n zIndex,\r\n children,\r\n content,\r\n onEachFeature,\r\n clickMode,\r\n ...props\r\n}: ITooltip) => {\r\n const onTooltip = useTooltip(zIndex);\r\n\r\n useEffect(() => {\r\n (map ? [map] : features).forEach((feature: Feature | Map) => {\r\n const position =\r\n center && !(feature instanceof Map) && feature.bbox.center\r\n ? feature.bbox.center\r\n : undefined;\r\n\r\n onTooltip({\r\n feature,\r\n component:\r\n typeof onEachFeature === 'function'\r\n ? () => onEachFeature(feature)\r\n : () => <TooltipComponent {...props}>{content}</TooltipComponent>,\r\n position,\r\n clickMode,\r\n });\r\n });\r\n }, [\r\n content,\r\n clickMode,\r\n onEachFeature,\r\n onTooltip,\r\n map,\r\n center,\r\n features,\r\n component,\r\n props,\r\n ]);\r\n\r\n return (\r\n <Provider value={features}>\r\n {map ? children : children ? <Consumer>{children}</Consumer> : null}\r\n </Provider>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\n/** No operation element */\r\nexport const Noop = () => <div style={{ display: 'none' }}></div>;\r\n","import React, { FC, ReactElement, Fragment } from 'react';\r\n\r\nimport { useDraggableMarker } from '../../hooks';\r\n\r\nimport { DraggableMarkerProps } from './types';\r\n\r\nexport const DraggableMarker: FC<DraggableMarkerProps> = ({\r\n position,\r\n onChange,\r\n symbol,\r\n}): ReactElement => {\r\n useDraggableMarker({ position, onChange, symbol });\r\n\r\n return <Fragment />;\r\n};\r\n"],"names":["usePagination","length","current","setCurrent","useState","next","useCallback","value","prev","reset","BASE_URL","defaultApi","Api","url","evergisContext","createContext","EvergisProvider","api","children","useMemo","React","Provider","useEvergisContext","useContext","defaultMap","Map","defaultPainter","DomPainter","mapContext","map","painter","MapProvider","useMapContext","defaultLayer","FeatureLayer","defaultPopupLayer","tooltipContext","layer","popupLayer","TooltipProvider","useTooltipContext","LegendContext","LegendProvider","symbol","useLegendContext","evergisSelectContext","EvergisSelectProvider","layers","useEvergisSelectContext","useEventPoint","event","point","browserEvent","wrapper","x","y","getMouseOffset","pageX","touches","pageY","originalPoint","getPointFromPxPosition","useMapViewActions","getEventPoint","zoomTo","k","zoom","position","zoomIn","zoomOut","animateTo","resolution","extent","nextPosition","slice","xMax","xMin","yMax","yMin","bbox","Bbox","crs","show","zoomAround","changeZoomLevel","level","tileScheme","tileLevel","levels","find","zIndex","animateSetResolution","useZoomToFeature","feature","useEvergisCard","features","zoomToFeature","useEffect","numberWithSpaces","fractionDigits","delim","num","frac","toFixed","split","numWithSpaces","replace","join","matchPhone","phoneRegexp","isStringAsInn","match","innRegexp","test","isStringAsKpp","kppRegexp","isStringAsOgrn","ogrnRegexp","toString","isStringContainsDate","dateRegexp","isRequisiteNumbers","isStringAsPhone","isStringAsMail","isStringAsUrl","includes","isValidUrl","urlRegexp","urlKind","URL","_","mailHref","mail","phoneHref","urlHref","NO_CONTENT_VALUE","stringAttribute","type","urlAttribute","mailAttribute","phoneAttribute","convertStringAttribute","formatStringAttribute","phones","attributeValues","every","isNaN","formatDateTimeAttribute","formatIntAttribute","DOUBLE_FRACTIONS","formatDoubleAttribute","isNullOrUndefined","undefined","NO_CONTENT_ATTRIBUTE","formatAttributeValue","attribute","isRangeClass","Boolean","isUniqueClass","NULL_EXPRESSION","operation","ClassificationCondition","condition","conditionResult","ConditionInterpreter","expressions","Error","leftExpression","isUnique","console","warn","isRange","from","to","rightExpression","isFrom","TokenType","ArGr","ArEq","ArGre","ArLs","ArLse","PARAMETER_SEPARATOR","parameterToPaths","parameter","pathsToParameter","paths","isObject","Array","isArray","isParameterByAttribute","isCalculatedParameter","getParameterValue","defaultValue","symbolParameterWalker","valueModifier","firstKey","restKeys","symbolPart","goDeeper","setDefaultParameterValue","setParameterValue","path","applyParameterValue","symbolTypeGuard","isPointLabelSymbol","isPolygonLabelSymbol","isPolylineLabelSymbol","isLabelSymbol","isPointSymbol","isSquareSymbol","isMaskedImageSymbol","isStaticImageSymbol","isPolygonSymbol","isPolylineSymbol","isSimplePolylineSymbol","isPolylineSymbols","isCompositeSymbol","isRasterSymbol","isImageSymbol","isTwoDimensionalSymbol","isSizableSymbol","isStrokeStyledSymbol","isScalablePolylineSymbol","beginning","ending","stroke","isSimpleSymbol","isHatchBrush","isPatternBrush","isDashedBrush","isSolidBrush","isPolygonHasPatternBrush","fill","isPolygonHasHatchBrush","LineMiterKind","isMiterExist","miter","None","isFilledLineMitter","FilledCircle","FilledArrow","FilledSquare","isArrowLineMiter","Arrow","isSquareLineMiter","Square","isCircleLineMiter","Circle","isSimpleOffset","offset","isSymbolWithOffset","isStringParameterValue","parameterValue","isParameterValueSimple","isParameterValueSymbol","isStyle","toClassificationClass","title","uniqueValue","range","DEFAULT_EXTRAS","defaultTitle","toClassification","values","extras","reduce","classification","classificationCondition","classificationValue","push","attributeName","getClassifications","pathContext","Object","entries","classifications","skipHeight","skip","ClassificationManager","style","collectClassifications","predicate","callback","filter","initial","unClassify","flatSymbol","result","printRangeClass","index","isDouble","isDate","getRangeValues","SrId","CRS_MAP","WebMercator","webMercator","Geo","geo","Wgs84","wgs84","EllipticalMercator","ellipticalMercator","DEFAULT_SRID","DEFAULT_CRS","getCrs","srId","getFeatureAttributeType","attributeValue","Date","AttributeType","DateTime","String","Int64","Unknown","getLayerAttributes","layerDefinition","attributes","name","definition","getFeatureAttributes","getClassificationAttribute","attrNamePart","mergeAttributes","attributes1","attributes2","createCompositeSymbol","childSymbols","getChildSymbols","extractSymbol","label","raster","extractStyle","packStyle","ignoreLabel","styleDc","childStyle","EvergisStyle","classificationManager","some","minResolution","maxResolution","getHexColor","colorString","Color","PREVIEW_LIMITS","STROKE_WIDTH_MIN","STROKE_WIDTH_MAX","clamp","min","max","Math","SOLID_INTERVALS","solidStrokeStylePreset","intervals","strokeStylePresets","walkByNumbersGroup","numbers","walker","newNumbers","i","toIntervals","width","gap","toLineDash","round","getLineDash","brush","defineStrokeStylePreset","preset","uniqueStrokeWidths","presetInterval","unique","getDashStylePreset","dashStyle","ALPHA_NORMALIZER","sum","shouldFillMatrixCell","matrixSize","hatchAngle","center","PI","createEmptyMatrix","size","fillMatrix","matrix","filler","createFillBrushMatrix","hatchWidth","scalingFactor","createSymbolFillBrush","fillBrush","SGisBrushFill","originalSymbol","strokeColor","color","strokeWidth","lineDash","fillBackground","fillForeground","hatchColor","lineCap","_initialized","canvas","document","createElement","ctx","getContext","brushSize","foreground","background","height","j","srcA","a","dstA","alpha","red","r","green","g","blue","b","fillStyle","fillRect","_brush","Image","src","toDataURL","sBrushFill","SGisImageFill","pattern","sImageFill","SGisPolygonSymbol","fillColor","sPolygonSymbol","adaptMiterRings","rings","fromCrs","toCrs","projected","projectRings","simplifyCoordinates","ring","miterSizeCalcs","LineMiterRender","baseInfo","lastRing","firstRing","assign","anchorRings","anchorCrs","currentCrs","xMultiplier","miterAnchor","getAnchor","miterRings","createRings","projectedMiterRings","createRender","calcMiterSize","ArrowLineMiterRender","miterSize","isFilled","kind","PolyRender","enclosed","FillStyle","lineJoin","DEFAULT_FORMATTERS","polygon","formatPolygonMeasure","formatLength","COORD_FRACTION","DEFAULT_LABEL_POSITION","Infinity","BaseMeasureToolCreator","params","fire","renderLabelSymbol","formatters","areaSymbol","on","handlePointAdd","updateDistance","drawPointOnMouseMove","addTempLabel","setCursor","removeCoordLabel","removeTempLabel","removeMeasureLabel","removeTempPolygon","activeFeature","isPolylineLikePolygon","finishDrawing","DrawingFinishEvent","MouseEvent","projection","projectionTo","lat","long","addMeasureResultLabel","addCoordLabel","tempPolygon","_tempLayer","remove","polygonRings","shift","Polygon","measureAreaSymbol","hide","add","ringIndex","pointIndex","calcLength","content","polygonPreview","area","calcArea","measureResultLabel","tempLabel","LabelFeature","createLabelSymbol","renderLabel","coordLabel","onClose","cancel","cursor","PolylineControl","BaseMeasureToolEditor","isEnclosed","pointsCount","updateMeasureResult","measureResult","removeFeature","PolyEditor","metersToPixels","meters","zeroPoint","projectTo","maxWidthPoint","widthDistance","distance","pxK","polygonCircleFromPoint","diameter","coordinates","radius","endAngle","step","start","end","ang","cos","sin","isNumeric","number","parseFloat","isFinite","isParameterType","types","toLowerCase","CircleLineMiterRender","SquareLineMiterRender","getLineMiterRender","options","updateRingForRightMiter","isLastRing","reversedRing","reverse","nextCoordinates","abs","updateRingForLeftMiter","isFirstRing","newRing","prevCoordinates","updateRingsForMiter","copyRings","SGisPolylineSymbol","beginningSize","endingSize","renders","featureCopy","clone","beginningMiterRender","endingMiterRender","updatedRings","usageSize","render","getRender","unshift","sPolylineSymbol","LabelSymbol","component","node","renderDom","getNode","Component","ReactDOM","innerText","DynamicPointSymbol","defaultOffset","props","createShadowRender","shadowColor","shadowSize","shadowDiameter","getEditorPointRenderer","ShadowedPointSymbol","PointFeature","pxPosition","shadowRender","getShadow","pointArc","getPoint","_feature","getShadowArc","getPointArc","pointRender","PointSymbol","ShadowedPolySymbol","Poly","polyRender","getPolyRender","vertexRenders","getVertexRenders","concat","enclose","showVertex","vertexCoordinates","acc","curr","coord","vertexShadowSize","PolylineSymbol","polySymbolParams","measureSymbolParams","measureLengthSymbol","snapSymbolParams","measurePolygonSnapSymbol","SelectedPointSymbol","isSelected","selectedStrokeColor","selectedFillColor","SelectedPolySymbol","selectedStrokeWidth","selectedPoint","selectedPolyline","selectedPolygon","defaultPathStyles","SVGPoly","redrawFeatureNode","pathStyles","circle","className","appendToSvg","container","getRenderedCoordinates","centroid","setCirclePxRaius","innerHTML","svg","setSvg","append","__dynamicSymbolRender","DynamicRender","update","redraw","_setEventListeners","pxOffset","__lastBbox","__lastResolution","canProjectTo","newCoordinates","radiusOffset","dx","dy","left","top","miterLimit","dashOffset","svgRender","SvgRender","_setArcNode","_setPolyNode","svgElement","classList","querySelector","setAttribute","dynamicFeature","eventFlags","MouseEventFlags","svgNode","keys","mouseEvents","forEach","eventName","flag","listenDomEvent","Symbol","isSGisPointSymbol","StaticImageSymbol","SquareSymbol","MaskedImage","isSGisImageSymbol","isSGisPolygonSymbol","PolygonSymbol","BrushFill","ImageFill","isSGisPolylineSymbol","isSGisH3Symbol","H3Symbol","isSGisClusterSymbol","singleObjectSymbol","viewBoxSize","pointFeature","plain","lineFeature","Polyline","polygonFeature","h3gridFeature","H3Feature","lineLegendFeature","polygonLegendFeature","polygonMapLegendFeature","MAP_LEGEND_FEATURES","LEGEND_FEATURES","polyline","h3grid","MOCK_FEATURES","getSymbolRenders","featuresToRender","renderFunctionAsync","getMapLegendSymbolRenders","getLegendSymbolRenders","renderSymbolToCanvas","draw","deserializeSymbol","deserializeH3Symbol","deserializeSvgPointSymbol","deserializePointSymbol","deserializeSquareSymbol","deserializeMaskedImageSymbol","deserializeImagePointSymbol","deserializePolygonSymbol","deserializePolylineSymbol","cellSize","SPointSymbol","deserializePointSymbolParams","getOffsetParameterValue","deserializeSvgPointSymbolParams","data","angle","figure","deserializeColor","SSquareSymbol","anchorPoint","deserializeAnchor","imageSource","deserializeBase64","image","maskSource","imageMask","maskColor","maskedColor","SStaticImageSymbol","source","base","clampSymbol","centerAlignSymbol","adjustSymbol","EvergisFeature","id","displayName","geometry","layerName","layerAlias","sr","GeometryType","Point","Multipoint","MultiPoint","sGisFeature","evaluateCondition","evaluator","ConditionEvaluator","evaluate","getAttributeValue","attributeMeta","getAttributeNameFromCondition","getAttributeNameFromClassified","findFeatureValue","parameterValues","extractValuesAttribute","evaluateFeatureSymbol","calc","parameterName","newParameterValue","featureValue","findChildFeatureStyle","childStyles","findChildFeatureSymbol","featureStyle","getFeatureSymbol","EvergisLayer","service","evergisService","alias","titleAttribute","findFeatureLayer","evaluateFeature","featureLayer","OTHERS_TITLE","createLegendItem","renderTitle","skipDefaultValue","defaultLegendValue","legendValues","withDefault","reversedValues","isValidParameter","createStyleLegend","config","items","parameters","createValueTitle","formatArea","measure","perimiter","coords","firstPoint","lastPoint","softEquals","getScale","scale","scales","pow","useLegend","DEFAULT_LEGEND_CONFIG","useLayerLegend","styleProxy","useMapLegend","legend","LEGEND_SYMBOL_MAX_SIZE","useLegendValueSymbol","valueSymbol","sGisSymbol","e","DEFAULT_SYMBOL_SIZE","useSymbol","canvasRef","maxWidth","setCanvasSize","then","useCanvas","useRef","ref","Canvas","useMount","onMount","onUnmount","useProperty","deps","factory","destructor","propRef","newProp","useUpdate","onUpdate","shouldUpdate","useLayerOrder","insertLayer","useLayerVisibility","isDisplayed","useLayerOpacity","opacity","useEvergisDynamicLayer","dataFilterId","onLoadStart","onLoadEnd","EvergisDynamicLayer","indexOf","removeLayer","useEvergisTileLayer","sourceUrl","subDomains","EvergisTileLayer","useFeatureLayer","useMapBboxChange","onBboxChange","force","BboxChangeEvent","BboxChangeEndEvent","handleBboxChange","getMapState","off","useMapResize","onResize","handleMapResize","MapResize","useMapPick","geometryParams","setGeometryParams","evergisLayers","pick","sGisClickEvent","imageRectangle","getPxPosition","clickPoint","envelopes","collectLayerEnvelopes","extentSr","wkid","getLayerBboxCoors","_currentRender","isEvergisDynamicLayer","useMapState","dispatch","useReducer","mapStateReducer","mapState","useMapView","getLevel","useMapLevel","useMapWrapper","wrapperRef","byScale","useMaxMinScale","minScale","maxScale","currentPosition","currentResolution","updateMapResolution","newResolution","Number","MAX_VALUE","pow10","floor","d","useCorrectedResolution","segmentLength","useScale","minLength","correctedResolution","currentScale","useUpdateMapView","shouldUpdateMapState","shouldUpdatePosition","shouldUpdateResolution","useTooltip","targetFeatures","labelFeature","events","onClickMap","currentFeatureEvents","onMouseOver","onMouseMove","onMouseOut","onClick","hasListener","onSetLabelFeature","clickMode","onRemoveLabelFeature","doNotBubbleToMap","stopPropagation","has","tooltipParams","target","isMap","featureEvents","useClusterLayer","onChangeGrid","clusterSymbol","currentFeatures","gridClusterProvider","GridClusterProvider","clusterLayer","ClusterLayer","INIT_FEATURES","useEvergisSelect","onPick","onFeatures","mapPickResult","setFeatures","resetSelection","useCrs","none","useDraggableMarker","onChange","pointEditor","PointEditor","isActive","activeLayer","onMapClick","addLayer","hasMapClick","useMetersToPixels","useMetersToPixelsCb","useDebouncedCallback","interval","debounce","cb","useToggle","state","setState","toggle","CompoundIcon","styled","div","geometryType","icons","ClusterSymbol","MAX_SIZE","StyleSymbol","EvergisCardContainer","Icon","StickyHeader","CardHeader","CardTitle","CardControls","FeatureName","LayerName","CardPagination","PaginationDescription","CurrentFeatureIndex","CardAttributes","AttributeContainer","AttributeTitle","AttributeValueContainer","SimpleAttribute","ValueLink","MailValue","rel","href","PhoneValue","phone","UrlValue","AttributeValue","key","punycodeDecode","domains","punycode","toUnicode","error","EvergisCardAttribute","StyledCard","onAttributes","onStatistics","onFeatureChange","headerExtra","hideZoom","IconButton","EverCloudStatisticsIcon","EverCloudZoomtoIcon","EverCloudCloseIcon","EverCloudPlayPrevIcon","EverCloudPlayNextIcon","EvergisCard","renderCard","hookProps","cardProps","truthly","setSelected","toSgis","useSGisFeatures","currentIndex","EvergisSelectLayer","sGisFeatures","useTileLayer","maskUrl","tileLayerParams","TileLayer","defaultZIndex","EvergisSelect","LegendContainer","LegendSectionContainer","LegendSymbolTitle","p","LegendValueContainer","LegendSectionHeader","LegendSection","item","renderLegendTitle","hideTitle","InputContainer","InputField","input","SearchInput","EverCloudSearchIcon","LegendSymbol","LegendValue","maxSize","getNumberParam","param","getSymbolSize","Legend","renderCustomLegend","searchLayer","searchable","legendItem","legendValue","topLeft","css","topRight","bottomLeft","bottomRight","placementMixin","placement","mapControlBtnMixin","ZoomInBtn","ZoomOutBtn","SearchBtn","FullscreenBtn","MeasureBtn","MapControl","MapControls","vertical","Measure","Search","Fullscreen","MapLegendControl","MapLegendContainer","MapLegendHeader","MapLegendDescriptionContainer","MinimizedLegendContainer","MapLegendValueDescr","SizeLegendItemMixin","StrokeWidthLegendItemMixin","StrokeColorLegendItemMixin","MapLegendItem","isHidden","MapLegendOther","SizeLegendItemsMixin","StrokeWidthLegendItemsMixin","SizeMinimizedLegend","SizeMinimizedLegendSymbol","SizeMinimizedLegendLabel","SizeMinimizedLegendDown","SizeMinimizedLegendUp","SingleSizeLegendItemsMixin","SingleLegendItemsMixin","isSize","MapLegendItems","isStrokeWidth","isSingle","MapLegendItemsContainer","MapLegendValues","MapLegendValuesRange","MapLegendValuesOther","MapLegendExpandButton","MapLegend","MapLegendSymbol","MapLegendDescription","isStrokeColor","getValueFromLegendTitle","minOrMax","MinimizedLegend","hiddenLegends","currentValues","other","pop","titleMax","titleMin","checkIsHidden","hiddenCondition","MeasureTool","getFeature","editorControl","switchMode","setTimeout","initCreateMode","initEditMode","offEvents","clearProperties","lengthSymbol","createControl","useTempLayer","dblClickMinTime","createFeature","cancelFeatureCreation","snapSymbol","snappingSymbol","featureDragAllowed","currentFormatters","create","edit","display","Measurer","ScaleRulerContainer","ScaleRulerBlock","TextContainer","alignEnd","ScaleRuler","margin","Zoom","ZoomLevel","buttonText","cornerBottom","cornerSize","cornerLeft","cornerRight","cornerTop","right","bottom","corner","TooltipComponent","withArrow","Consumer","Tooltip","onEachFeature","onTooltip","Noop","DraggableMarker","Fragment"],"mappings":"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"}
|