@evergis/react 2.0.131 → 2.0.133
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/LICENSE +20 -20
- package/README.md +31 -31
- package/dist/core/attributes/utils.d.ts +4 -0
- package/dist/hooks/useLegend/useLegendValueSymbol.d.ts +1 -1
- package/dist/react.cjs.development.js +2964 -2956
- package/dist/react.cjs.development.js.map +1 -1
- package/dist/react.cjs.production.min.js +1 -1
- package/dist/react.cjs.production.min.js.map +1 -1
- package/dist/react.esm.js +2965 -2957
- package/dist/react.esm.js.map +1 -1
- package/package.json +4 -4
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/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/utils/metersToPixels.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/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/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/MapLegendSymbol.tsx","../src/components/MapLegend/MapLegend.tsx","../src/controls/MeasureToolFormatters.ts","../src/controls/BaseMeasureToolCreator.ts","../src/controls/BaseMeasureToolEditor.ts","../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","../src/utils/polygonCircleFromPoint.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\ntype Pagination = [\n number,\n { prev: () => void; next: () => void; reset: () => void }\n];\n\nexport const usePagination = (length: number): Pagination => {\n const [current, setCurrent] = useState(0);\n\n const next = useCallback(\n () => setCurrent(value => (value < length - 1 ? value + 1 : value)),\n [length, setCurrent]\n );\n\n const prev = useCallback(\n () => setCurrent(value => (value === 0 ? value : value - 1)),\n [setCurrent]\n );\n\n const reset = useCallback(() => setCurrent(0), [setCurrent]);\n\n return [current, { prev, next, reset }];\n};\n","import React, { createContext, useContext, useMemo } from 'react';\nimport { Api } from '@evergis/api';\n\nconst BASE_URL = '/';\n\nconst defaultApi = new Api({\n url: BASE_URL,\n});\n\nconst evergisContext = createContext<Api>(defaultApi);\n\ntype EvergisProviderProps = {\n api?: Api;\n};\n\nexport const EvergisProvider: React.FC<EvergisProviderProps> = ({\n api,\n children,\n}) => {\n const value = useMemo(() => api || defaultApi, [api]);\n return (\n <evergisContext.Provider value={value}>{children}</evergisContext.Provider>\n );\n};\n\nexport const useEvergisContext = () => useContext(evergisContext);\n","import React, { createContext, useContext, useMemo } from 'react';\nimport { Map } from '@evergis/sgis/es/Map';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype MapContext = {\n map: Map;\n painter: DomPainter;\n};\n\nconst defaultMap = new Map();\nconst defaultPainter = new DomPainter(defaultMap);\n\nconst mapContext = createContext<MapContext>({\n map: defaultMap,\n painter: defaultPainter,\n});\n\ntype MapProviderProps = {\n map?: Map;\n painter?: DomPainter;\n};\n\nexport const MapProvider: React.FC<MapProviderProps> = ({\n map,\n painter,\n children,\n}) => {\n const value = useMemo(\n () => ({\n map: map || defaultMap,\n painter: painter || (map ? new DomPainter(map) : defaultPainter),\n }),\n [map, painter]\n );\n return <mapContext.Provider value={value}>{children}</mapContext.Provider>;\n};\n\nexport const useMapContext = () => useContext(mapContext);\n","import React, { createContext, useContext, useMemo } from 'react';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\n\ntype TooltipContext = {\n layer: FeatureLayer;\n popupLayer: FeatureLayer;\n};\n\nconst defaultLayer = new FeatureLayer();\n\nconst defaultPopupLayer = new FeatureLayer();\n\nconst tooltipContext = createContext<TooltipContext>({\n layer: defaultLayer,\n popupLayer: defaultPopupLayer,\n});\n\ntype TooltipProviderProps = {\n layer?: FeatureLayer;\n popupLayer?: FeatureLayer;\n zIndex?: number;\n};\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\n layer,\n popupLayer,\n children,\n}) => {\n const value = useMemo(\n () => ({\n layer: layer || defaultLayer,\n popupLayer: popupLayer || defaultPopupLayer,\n }),\n [layer, popupLayer]\n );\n\n return (\n <tooltipContext.Provider value={value}>{children}</tooltipContext.Provider>\n );\n};\n\nexport const useTooltipContext = () => useContext(tooltipContext);\n","import React, { createContext, useContext } from 'react';\nimport { StyleSymbolType } from '../core/style/types/symbol';\n\nconst LegendContext = createContext<StyleSymbolType | null>(null);\n\ntype LegendProviderProps = {\n symbol?: StyleSymbolType;\n};\n\nexport const LegendProvider: React.FC<LegendProviderProps> = ({\n symbol,\n children,\n}) => {\n return (\n <LegendContext.Provider value={symbol || null}>\n {children}\n </LegendContext.Provider>\n );\n};\n\nexport const useLegendContext = () => useContext(LegendContext);\n","import React, { createContext, useContext } from 'react';\nimport { EvergisLayer } from '../core/layer/EvergisLayer';\n\nconst evergisSelectContext = createContext<EvergisLayer[]>([]);\n\ntype EvergisSelectProviderProps = {\n layers: EvergisLayer[];\n};\n\nexport const EvergisSelectProvider: React.FC<EvergisSelectProviderProps> = ({\n layers,\n children,\n}) => (\n <evergisSelectContext.Provider value={layers}>\n {children}\n </evergisSelectContext.Provider>\n);\nexport const useEvergisSelectContext = () => useContext(evergisSelectContext);\n","import { useCallback } from 'react';\nimport { getMouseOffset } from '@evergis/sgis/es/utils/domEvent';\nimport { sGisMouseEvent } from '@evergis/sgis/es/commonEvents';\nimport { IPoint } from '@evergis/sgis/es/Point';\n\nimport { useMapContext } from '../contexts';\n\nexport const useEventPoint = () => {\n const { painter } = useMapContext();\n\n return useCallback(\n (event: sGisMouseEvent | TouchEvent | MouseEvent): IPoint => {\n if ('point' in event) {\n return event.point;\n }\n\n const browserEvent =\n 'browserEvent' in event ? event['browserEvent'] : event;\n\n const wrapper = painter.wrapper;\n const { x, y } = getMouseOffset(\n wrapper,\n 'touches' in browserEvent\n ? {\n pageX: browserEvent.touches[0].pageX,\n pageY: browserEvent.touches[0].pageY,\n }\n : browserEvent\n );\n const originalPoint = painter.getPointFromPxPosition(x, y);\n\n return originalPoint;\n },\n [painter]\n );\n};\n","import { useCallback } from 'react';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Bbox } from '@evergis/sgis/es/Bbox';\nimport { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\n\nimport { useEventPoint } from '../hooks/useEventPoint';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapViewActions() {\n const { map, painter } = useMapContext();\n const getEventPoint = useEventPoint();\n\n const zoomTo = useCallback(\n (k: number) => {\n map.zoom(k, map.position);\n },\n [map]\n );\n\n const zoomIn = useCallback(() => zoomTo(1), [zoomTo]);\n const zoomOut = useCallback(() => zoomTo(-1), [zoomTo]);\n\n const animateTo = useCallback(\n ({ position, resolution, extent }: AnimateToParams) => {\n if (position || resolution) {\n const nextPosition = position\n ? (position.slice(0) as Coordinates)\n : map.position;\n map.animateTo(nextPosition, resolution || map.resolution);\n }\n\n if (extent) {\n const { xMax, xMin, yMax, yMin } = extent;\n const bbox = new Bbox([xMin, yMax], [xMax, yMin], map.crs);\n painter && painter.show(bbox, true);\n }\n },\n [map, painter]\n );\n\n const zoomAround = useCallback(\n (event: sGisClickEvent) => {\n map.zoom(1, getEventPoint(event));\n },\n [getEventPoint, map]\n );\n\n const changeZoomLevel = useCallback(\n (level: number) => {\n const { tileScheme } = map;\n let tileLevel = tileScheme.levels.find(({ zIndex }) => zIndex === level);\n const resolution = tileLevel ? tileLevel.resolution : map.resolution;\n\n map.animateSetResolution(resolution, map.position);\n },\n [map]\n );\n\n return {\n zoomTo,\n zoomIn,\n zoomOut,\n zoomAround,\n animateTo,\n changeZoomLevel,\n };\n}\n\ntype AnimateToParams = {\n position?: Coordinates;\n resolution?: number;\n extent?: { xMax: number; yMax: number; xMin: number; yMin: number };\n};\n","import { useCallback } from 'react';\n\nimport { useMapViewActions } from './useMapViewActions';\n\nimport { EvergisFeature } from '../core';\n\nexport const useZoomToFeature = () => {\n const { animateTo } = useMapViewActions();\n\n return useCallback(\n (feature: EvergisFeature) => {\n const extent = feature.extent();\n\n if (extent) {\n animateTo({ extent });\n }\n },\n [animateTo]\n );\n};\n","import { useCallback, useEffect } from 'react';\n\nimport { usePagination } from './usePagination';\nimport { useZoomToFeature } from './useZoomToFeature';\n\nimport { EvergisFeature } from '../core';\n\nexport type UseEvergisCard = {\n feature: EvergisFeature;\n current: number;\n prev: () => void;\n next: () => void;\n zoom: () => void;\n};\n\nexport const useEvergisCard = (features: EvergisFeature[]): UseEvergisCard => {\n const [current, { prev, next, reset }] = usePagination(features.length);\n\n const feature = features[current];\n\n const zoomToFeature = useZoomToFeature();\n\n const zoom = useCallback(() => zoomToFeature(feature), [\n zoomToFeature,\n feature,\n ]);\n\n useEffect(() => {\n reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [features.length]);\n\n return { feature, current, prev, next, zoom };\n};\n","export function numberWithSpaces(\n x: number,\n fractionDigits = 2,\n delim: ',' | '.' | '' = ','\n): string {\n const [num, frac] = x.toFixed(fractionDigits).split('.');\n const numWithSpaces = num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n return [numWithSpaces, frac].join(delim);\n}\n","export function matchPhone(value: string) {\n const phoneRegexp = /((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/g;\n\n return !isStringAsInn(value) && value.match(phoneRegexp);\n}\n\nexport function isStringAsInn(value: string) {\n const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;\n\n return innRegexp.test(value);\n}\n\nexport function isStringAsKpp(value: string) {\n const kppRegexp = /^(([0-9]{9}))$/;\n\n return kppRegexp.test(value);\n}\n\nexport function isStringAsOgrn(value: string) {\n const ogrnRegexp = /^([0-9]{13})?$/;\n\n return ogrnRegexp.test((+value).toString());\n}\n\nexport function isStringContainsDate(value: string) {\n const dateRegexp = /\\d{4}(-|\\/)\\d{2}(-|\\/)\\d{2}/g;\n return dateRegexp.test(value);\n}\n\nexport function isRequisiteNumbers(value: string) {\n return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);\n}\n\nexport function isStringAsPhone(value: string) {\n const phoneRegexp = /^((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/;\n\n return (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phoneRegexp.test(value)\n );\n}\n\nexport function isStringAsMail(value: string) {\n return isStringAsUrl(value) && value.includes('@');\n}\n\nexport function isStringAsUrl(value: string) {\n if (isValidUrl(value)) {\n return true;\n }\n\n const urlRegexp = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;\n\n const urlKind = value.match(urlRegexp);\n\n return urlKind !== null;\n}\n\nexport function isValidUrl(value: string) {\n try {\n new URL(value);\n } catch (_) {\n return false;\n }\n\n return true;\n}\n\nexport const mailHref = (mail: string) => `mailto:${mail}`;\n\nexport const phoneHref = (mail: string) => `tel:${mail}`;\n\nexport const urlHref = (url: string) => (isValidUrl(url) ? url : `//${url}`);\n","import { AttributeValue, AttributeValueType, FeatureAttribute } from './types';\n\nimport { numberWithSpaces } from '../../utils/format';\nimport {\n isStringAsMail,\n isStringAsPhone,\n isStringAsUrl,\n matchPhone,\n isRequisiteNumbers,\n isStringAsOgrn,\n isStringContainsDate,\n} from '../../utils/url';\n\nexport const NO_CONTENT_VALUE = '—';\n\nconst stringAttribute = (value: string) => ({\n type: AttributeValueType.String,\n value,\n});\n\nconst urlAttribute = (value: string) => ({\n type: AttributeValueType.Url,\n value,\n});\n\nconst mailAttribute = (value: string) => ({\n type: AttributeValueType.Mail,\n value,\n});\n\nconst phoneAttribute = (value: string) => ({\n type: AttributeValueType.Phone,\n value,\n});\n\nconst convertStringAttribute = (value: string) => {\n if (isStringAsMail(value)) {\n return mailAttribute(value);\n }\n\n if (isStringAsUrl(value)) {\n return urlAttribute(value);\n }\n\n if (isStringAsPhone(value)) {\n return phoneAttribute(value);\n }\n\n return stringAttribute(value);\n};\n\nconst formatStringAttribute = (value: string): AttributeValue[] => {\n const phones = matchPhone(value);\n\n if (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phones &&\n phones.length\n ) {\n return phones.map(phoneAttribute);\n }\n\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\n\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\n return [\n stringAttribute(\n attributeValues\n .map(({ value }) =>\n isNaN(+value) || isRequisiteNumbers(value)\n ? isStringAsOgrn(value)\n ? +value\n : value\n : numberWithSpaces(+value, 0, '')\n )\n .join(' ')\n ),\n ];\n }\n\n return attributeValues;\n};\n\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\n stringAttribute(value.toString());\n\nconst formatIntAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, 0, ''));\n\nconst DOUBLE_FRACTIONS = 2;\n\nconst formatDoubleAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\n\nconst isNullOrUndefined = <Value>(\n value: Value | null | undefined\n): value is null | undefined => value === null || value === undefined;\n\nconst NO_CONTENT_ATTRIBUTE = {\n type: AttributeValueType.String,\n value: NO_CONTENT_VALUE,\n};\n\nexport const formatAttributeValue = (\n attribute: FeatureAttribute\n): AttributeValue[] => {\n if (isNullOrUndefined(attribute.value)) {\n return [NO_CONTENT_ATTRIBUTE];\n }\n\n switch (attribute.type) {\n case 'String':\n return formatStringAttribute(attribute.value as string);\n case 'DateTime':\n return [formatDateTimeAttribute(attribute.value as Date)];\n case 'Int32':\n case 'Int64':\n return [formatIntAttribute(attribute.value as number)];\n case 'Double':\n return [formatDoubleAttribute(attribute.value as number)];\n default:\n return [NO_CONTENT_ATTRIBUTE];\n }\n};\n","import { ParameterValue, ParameterValueWithSymbol } from '../style';\n\nimport { ClassificationAttribute } from '../attributes';\n\nexport type NestedClassificationParameters =\n | 'fill.color'\n | 'fill.hatchColor'\n | 'stroke.width'\n | 'stroke.color';\n\nexport type SimpleClassificationParameters =\n | 'fillColor'\n | 'strokeColor'\n | 'strokeWidth'\n | 'size'\n | 'symbol'\n | 'angle'\n | 'maskedColor';\n\nexport type ClassificationParameter =\n | NestedClassificationParameters\n | SimpleClassificationParameters;\n\nexport type ClassificationParameterExtended =\n | ClassificationParameter\n | 'width'\n | 'height';\n\nexport interface ClassBase {\n title: string | null;\n parameterValue: ParameterValueWithSymbol;\n attribute?: ClassificationAttribute;\n}\n\nexport type UniqueClass = ClassBase & {\n uniqueValue: string;\n};\n\nexport type RangeClass = ClassBase & {\n from: number | string | null;\n to: number | string | null;\n};\n\nexport type ClassificationClass = UniqueClass | RangeClass;\nexport type ClassificationValues = ClassificationClass[];\n\nexport const enum ClassificationType {\n Range,\n Unique,\n}\n\nexport interface Classification<\n Type extends ClassificationType = ClassificationType,\n Value extends ClassificationClass = ClassificationClass\n> {\n parameter?: ClassificationParameterExtended;\n attribute?: string;\n type: Type;\n values: Value[];\n}\n\nexport type RangeClassification = Classification<\n ClassificationType.Range,\n RangeClass\n>;\n\nexport type UniqueClassification = Classification<\n ClassificationType.Unique,\n UniqueClass\n>;\n\nexport interface ClassificationExtras {\n defaultTitle: string;\n defaultValue: ParameterValue;\n}\n\nexport type ExtendedClassification<\n Type extends ClassificationType = ClassificationType,\n Value extends ClassificationClass = ClassificationClass\n> = Classification<Type, Value> & ClassificationExtras;\n\nexport function isRangeClass(value: ClassificationClass): value is RangeClass {\n return Boolean(value && 'from' in value);\n}\n\nexport function isUniqueClass(\n value: ClassificationClass\n): value is UniqueClass {\n return Boolean(value && 'uniqueValue' in value);\n}\n","import {\n ConditionInterpreter,\n Expression,\n TokenType,\n} from '@evergis/condition';\n\nimport { ClassificationType } from './types';\n\nconst NULL_EXPRESSION: Expression = {\n // @ts-ignore TODO\n attribute: null,\n // @ts-ignore TODO\n operation: null,\n value: null,\n};\n\nexport class ClassificationCondition {\n private readonly condition: string;\n private readonly expressions: Expression[] = [];\n\n constructor(condition: string) {\n this.condition = condition;\n const conditionResult = new ConditionInterpreter(condition).value;\n\n this.expressions =\n conditionResult instanceof Error ? [] : conditionResult.expressions;\n }\n\n public get attributeName() {\n return this.leftExpression.attribute;\n }\n\n public get uniqueValue() {\n if (this.isUnique()) {\n const { value } = this.leftExpression;\n\n return typeof value === 'string' ? value : '';\n }\n\n console.warn(`Trying to get unique from range condition ${this.condition}`);\n\n return '';\n }\n\n public get range(): [number, number] {\n if (!this.isRange()) {\n console.warn(\n `Trying to get range from unique condition ${this.condition}`\n );\n\n return [0, 0];\n }\n\n if (this.expressions.length === 2) {\n const { value: from } = this.leftExpression;\n const { value: to } = this.rightExpression;\n\n return [from, to] as [number, number];\n }\n\n if (this.expressions.length === 1) {\n const { operation, value } = this.leftExpression;\n const isFrom = operation === TokenType.ArGr;\n\n return [isFrom ? value : null, isFrom ? null : value] as [number, number];\n }\n\n return [0, 0];\n }\n\n public get type(): ClassificationType {\n return this.isUnique()\n ? ClassificationType.Unique\n : ClassificationType.Range;\n }\n\n public isUnique() {\n return this.leftExpression.operation === TokenType.ArEq;\n }\n\n public isRange() {\n return [\n TokenType.ArGr,\n TokenType.ArGre,\n TokenType.ArLs,\n TokenType.ArLse,\n ].includes(this.leftExpression.operation);\n }\n\n public toString() {\n return this.condition;\n }\n\n private get leftExpression(): Expression {\n return this.expressions.length > 0 ? this.expressions[0] : NULL_EXPRESSION;\n }\n\n private get rightExpression(): Expression {\n return this.expressions.length > 1 ? this.expressions[1] : NULL_EXPRESSION;\n }\n}\n","import { ClassificationParameterExtended } from './types';\n\nexport const PARAMETER_SEPARATOR = '.';\n\nexport const parameterToPaths = (\n parameter: ClassificationParameterExtended\n): ClassificationParameterExtended[] =>\n parameter.split(PARAMETER_SEPARATOR) as ClassificationParameterExtended[];\n\nexport const pathsToParameter = (\n paths: ClassificationParameterExtended[]\n): ClassificationParameterExtended =>\n paths.join(PARAMETER_SEPARATOR) as ClassificationParameterExtended;\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { parameterToPaths } from './parameter';\nimport { ClassificationParameterExtended } from './types';\n\nimport {\n CalculatedAble,\n CalculatedParameter,\n ClassifyAble,\n ParameterByAttribute,\n ParameterValue,\n StyleSymbolType,\n UnidentifiedParameterValue,\n} from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\ntype ParameterValueModifier = (\n parameterValue: ClassifyAble<ParameterValue>\n) => ClassifyAble<ParameterValue> | void;\n\nexport const isParameterByAttribute = (\n value: UnidentifiedParameterValue\n): value is ParameterByAttribute<ParameterValue> =>\n Boolean(isObject(value) && value.type && value.type === 'byAttribute');\n\nexport const isCalculatedParameter = (\n value: UnidentifiedParameterValue\n): value is CalculatedParameter<ParameterValue> =>\n Boolean(isObject(value) && value.type && value.type === 'calculated');\n\nexport const getParameterValue = <Value extends ParameterValue>(\n value: ClassifyAble<Value> | CalculatedAble<Value>\n): Value => {\n if (isParameterByAttribute(value) || isCalculatedParameter(value)) {\n return value.defaultValue;\n }\n\n return value;\n};\n\nexport const symbolParameterWalker = (\n valueModifier: ParameterValueModifier\n) => <S extends StyleSymbolType>(\n symbol: S,\n parameter: ClassificationParameterExtended | ClassificationParameterExtended[]\n): S => {\n const paths = Array.isArray(parameter)\n ? parameter\n : parameterToPaths(parameter);\n const [firstKey, ...restKeys] = paths;\n\n // @ts-ignore\n const symbolPart = symbol[firstKey];\n\n if (restKeys.length) {\n const goDeeper = symbolParameterWalker(valueModifier);\n\n return {\n ...symbol,\n [firstKey]: goDeeper(symbolPart, restKeys) || symbolPart,\n };\n }\n\n return {\n ...symbol,\n [firstKey]: valueModifier(symbolPart) || symbolPart,\n };\n};\n\nexport const setDefaultParameterValue = symbolParameterWalker(\n getParameterValue\n);\n\nexport const setParameterValue = <S extends StyleSymbolType>(\n symbol: S,\n path: ClassificationParameterExtended,\n value: ClassifyAble<ParameterValue>\n): S => symbolParameterWalker(() => value)(symbol, path);\n\nexport function applyParameterValue(\n symbol: StyleSymbolType,\n path: ClassificationParameterExtended,\n value: ClassifyAble<ParameterValue>\n) {\n if (path === 'symbol') {\n return value as StyleSymbolType;\n }\n\n return setParameterValue(symbol, path, value);\n}\n","import { ParameterDcColor, ParameterDcDouble } from '@evergis/api';\n\nimport { CalculatedAble, ClassifyAble } from './parameterValue';\nimport { Offset } from './offset';\nimport { LineMiterKind, LineMiterSize } from './miters';\nimport { StyleSymbolType } from './symbol';\nimport { FillBrushType, StrokeBrushType, TextBackgroundType } from './brush';\n\ntype ToClientSymbolField<\n F,\n IsClassifyable extends boolean\n> = F extends ParameterDcDouble\n ? IsClassifyable extends true\n ? ClassifyAble<number>\n : number\n : F extends ParameterDcColor\n ? IsClassifyable extends true\n ? ClassifyAble<string>\n : string\n : F;\n\ntype ExtraClientSymbolFields = {\n offset: Offset;\n /* TODO: DC has other type */\n fontWeight: number;\n childSymbols: StyleSymbolType[];\n stroke: StrokeBrushType;\n fill: FillBrushType;\n textBackground: TextBackgroundType;\n beginning: null | LineMiterKind;\n beginningSize: LineMiterSize;\n ending: null | LineMiterKind;\n endingSize: LineMiterSize;\n angle: CalculatedAble<number>;\n};\n\nexport type ClientSymbol<\n SymbolType,\n SymbolDcType,\n NonClassifiedFields extends keyof SymbolDcType = never\n> = {\n [K in keyof SymbolDcType]: K extends 'type'\n ? SymbolType\n : K extends keyof ExtraClientSymbolFields\n ? ExtraClientSymbolFields[K]\n : ToClientSymbolField<\n SymbolDcType[K],\n K extends NonClassifiedFields ? false : true\n >;\n};\n\nexport const symbolTypeGuard = <ClientSymbol extends { type?: string }>(\n type: ClientSymbol['type']\n) => (symbol: { type?: string }): symbol is ClientSymbol =>\n symbol && symbol.type === type;\n\nexport type Unclassify<T> = {\n [K in keyof T]: T[K] extends ClassifyAble<infer V>\n ? V\n : T[K] extends CalculatedAble<infer V2>\n ? V2\n : T[K];\n};\n","import {\n PointLabelSymbolDc,\n PolygonLabelSymbolDc,\n PolylineLabelSymbolDc,\n} from '@evergis/api';\n\nimport { UnknownSymbol } from './symbol';\nimport { ClientSymbol, symbolTypeGuard } from './utils';\n\ntype NonClassifyableLabelFields = 'fontColor' | 'fontSize' | 'haloColor';\n\nexport type PointLabelSymbol = ClientSymbol<\n 'labelPointSymbol',\n PointLabelSymbolDc,\n NonClassifyableLabelFields\n>;\nexport type PolygonLabelSymbol = ClientSymbol<\n 'polygonLabelSymbol',\n PolygonLabelSymbolDc,\n NonClassifyableLabelFields\n>;\nexport type PolylineLabelSymbol = ClientSymbol<\n 'polylineLabelSymbol',\n PolylineLabelSymbolDc,\n NonClassifyableLabelFields\n>;\n\nexport const isPointLabelSymbol = symbolTypeGuard<PointLabelSymbol>(\n 'labelPointSymbol'\n);\nexport const isPolygonLabelSymbol = symbolTypeGuard<PolygonLabelSymbol>(\n 'polygonLabelSymbol'\n);\nexport const isPolylineLabelSymbol = symbolTypeGuard<PolylineLabelSymbol>(\n 'polylineLabelSymbol'\n);\n\nexport const isLabelSymbol = (symbol: UnknownSymbol): symbol is LabelType =>\n Boolean(\n symbol &&\n (isPointLabelSymbol(symbol) ||\n isPolygonLabelSymbol(symbol) ||\n isPolylineLabelSymbol(symbol))\n );\n\nexport type LabelType =\n | PolylineLabelSymbol\n | PolygonLabelSymbol\n | PointLabelSymbol;\n","import {\n CirclePointSymbolDc,\n CompositeSymbolDc,\n ImagePointSymbolDc,\n MaskedImagePointSymbolDc,\n PolygonSymbolDc,\n PolylineSymbolDc,\n RasterSymbolDc,\n SimplePolylineSymbolDc,\n SquarePointSymbolDc,\n StyleDc,\n} from '@evergis/api';\n\nimport { isLabelSymbol, LabelType } from './label';\nimport { CalculatedAble } from './parameterValue';\nimport { ClientSymbol, symbolTypeGuard } from './utils';\nimport { FillBrushType, StrokeBrushType } from './brush';\n\nexport type PointSymbol = ClientSymbol<\n 'circlePointSymbol',\n CirclePointSymbolDc\n>;\n\nexport type SquareSymbol = ClientSymbol<\n 'squarePointSymbol',\n SquarePointSymbolDc\n> & {\n angle?: CalculatedAble<number>;\n};\n\nexport type MaskedImageSymbol = ClientSymbol<\n 'maskedImagePointSymbol',\n MaskedImagePointSymbolDc\n>;\n\nexport type StaticImageSymbol = ClientSymbol<\n 'imagePointSymbol',\n ImagePointSymbolDc\n>;\n\nexport type PolygonSymbol<\n Fill = FillBrushType,\n Stroke = StrokeBrushType\n> = ClientSymbol<'polygonSymbol', PolygonSymbolDc> & {\n fill: Fill;\n stroke: Stroke;\n};\n\nexport type SimplePolylineSymbol = ClientSymbol<\n 'simplePolylineSymbol',\n SimplePolylineSymbolDc\n>;\n\nexport type PolylineSymbol = ClientSymbol<'polylineSymbol', PolylineSymbolDc>;\n\nexport type RasterSymbol = ClientSymbol<'rasterSymbol', RasterSymbolDc>;\n\nexport type CompositeSymbolType = ClientSymbol<\n 'compositeSymbol',\n CompositeSymbolDc\n>;\n\nexport type SimpleShapeSymbol = PointSymbol | SquareSymbol;\n\nexport type ImageSymbol = MaskedImageSymbol | StaticImageSymbol;\n\nexport type PointSymbolType = SimpleShapeSymbol | ImageSymbol;\n\nexport type PolylineSymbols = PolylineSymbol | SimplePolylineSymbol;\n\nexport type StyleSymbolType =\n | PointSymbolType\n | PolygonSymbol\n | PolylineSymbols\n | LabelType\n | RasterSymbol\n | CompositeSymbolType;\n\nexport type StyleSymbolTypes = StyleSymbolType['type'];\n\nexport type UnknownSymbol = StyleDc['symbol'] | StyleSymbolType;\n\nexport type LayerSymbol = PointSymbol | PolylineSymbols | PolygonSymbol;\n\nexport type FillStyledSymbols = PolygonSymbol;\n\nexport type StrokeStyledSymbols = PolygonSymbol | PolylineSymbols;\n\nexport const isPointSymbol = symbolTypeGuard<PointSymbol>('circlePointSymbol');\n\nexport const isSquareSymbol = symbolTypeGuard<SquareSymbol>(\n 'squarePointSymbol'\n);\n\nexport const isMaskedImageSymbol = symbolTypeGuard<MaskedImageSymbol>(\n 'maskedImagePointSymbol'\n);\n\nexport const isStaticImageSymbol = symbolTypeGuard<StaticImageSymbol>(\n 'imagePointSymbol'\n);\n\nexport const isPolygonSymbol = symbolTypeGuard<PolygonSymbol>('polygonSymbol');\n\nexport const isPolylineSymbol = symbolTypeGuard<PolylineSymbol>(\n 'polylineSymbol'\n);\n\nexport const isSimplePolylineSymbol = symbolTypeGuard<SimplePolylineSymbol>(\n 'simplePolylineSymbol'\n);\n\nexport const isPolylineSymbols = (\n symbol: UnknownSymbol\n): symbol is PolylineSymbols =>\n Boolean(\n symbol && (isPolylineSymbol(symbol) || isSimplePolylineSymbol(symbol))\n );\n\nexport const isCompositeSymbol = symbolTypeGuard<CompositeSymbolType>(\n 'compositeSymbol'\n);\nexport const isRasterSymbol = symbolTypeGuard<RasterSymbol>('rasterSymbol');\n\nexport const isImageSymbol = (symbol: UnknownSymbol): symbol is ImageSymbol =>\n Boolean(\n symbol && (isMaskedImageSymbol(symbol) || isStaticImageSymbol(symbol))\n );\n\nexport const isTwoDimensionalSymbol = (\n symbol: UnknownSymbol\n): symbol is ImageSymbol => Boolean(symbol && 'width' in symbol);\n\nexport const isSizableSymbol = (\n symbol: UnknownSymbol\n): symbol is SimpleShapeSymbol => Boolean(symbol && 'size' in symbol);\n\nexport const isStrokeStyledSymbol = (\n symbol: UnknownSymbol\n): symbol is StrokeStyledSymbols =>\n Boolean(symbol && (isPolygonSymbol(symbol) || isPolylineSymbols(symbol)));\n\nexport const isScalablePolylineSymbol = (\n symbol: PolylineSymbol | SimplePolylineSymbol\n) =>\n (symbol.beginning !== null && symbol.ending !== null) ||\n (symbol.stroke && symbol.stroke.type !== 'solid');\n\nexport const isSimpleSymbol = (\n symbol: UnknownSymbol\n): symbol is Exclude<StyleSymbolType, LabelType | CompositeSymbolType> =>\n Boolean(\n symbol &&\n !isLabelSymbol(symbol) &&\n !isCompositeSymbol(symbol) &&\n !isRasterSymbol(symbol)\n );\n","import {\n DashedBrushDc,\n HatchBrushDc,\n PatternBrushDc,\n SolidStrokeBrushDc,\n TextBackgroundDc,\n} from '@evergis/api';\n\nimport { ClientSymbol, symbolTypeGuard, Unclassify } from './utils';\nimport { isPolygonSymbol, PolygonSymbol, UnknownSymbol } from './symbol';\n\nexport type SolidBrush = ClientSymbol<'solid', SolidStrokeBrushDc>;\nexport type DashedBrush = ClientSymbol<'dashed', DashedBrushDc>;\nexport type HatchBrush = ClientSymbol<'hatch', HatchBrushDc>;\nexport type PatternBrush = ClientSymbol<'pattern', PatternBrushDc>;\nexport type StrokeBrushType = SolidBrush | DashedBrush;\nexport type FillBrushType = SolidBrush | HatchBrush | PatternBrush;\n\nexport const isHatchBrush = symbolTypeGuard<HatchBrush>('hatch');\nexport const isPatternBrush = symbolTypeGuard<PatternBrush>('pattern');\nexport const isDashedBrush = symbolTypeGuard<DashedBrush>('dashed');\nexport const isSolidBrush = symbolTypeGuard<SolidBrush>('solid');\n\nexport const isPolygonHasPatternBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<PatternBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isPatternBrush(symbol.fill));\n\nexport const isPolygonHasHatchBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<HatchBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isHatchBrush(symbol.fill));\n\nexport type TextBackgroundType = Omit<TextBackgroundDc, 'fill' | 'stroke'> & {\n fill: Unclassify<FillBrushType>;\n stroke: Unclassify<StrokeBrushType>;\n};\n","import { ClassifyAble } from './parameterValue';\n\nexport const enum LineMiterSize {\n Small = 'small',\n Large = 'large',\n}\n\nexport enum LineMiterKind {\n None = 'none',\n Arrow = 'arrow',\n FilledArrow = 'filledArrow',\n Square = 'square',\n FilledSquare = 'filledSquare',\n Circle = 'circle',\n FilledCircle = 'filledCircle',\n}\n\nexport type NoLineMiterType = {\n type: LineMiterKind.None;\n};\n\ntype LineMiterBase<T extends LineMiterKind> = {\n type: T;\n color?: ClassifyAble<string>;\n};\n\nexport type ArrowLineType = LineMiterBase<LineMiterKind.Arrow> & {\n strokeWidth?: number;\n arrowLength?: number;\n arrowWidth?: number;\n};\nexport type FilledArrowLineMiterType = LineMiterBase<\n LineMiterKind.FilledArrow\n> & {\n arrowLength?: number;\n arrowWidth?: number;\n};\nexport type SquareLineMiterType = LineMiterBase<LineMiterKind.Square> & {\n size?: number;\n strokeWidth?: number;\n};\nexport type FilledSquareLineMiterType = LineMiterBase<\n LineMiterKind.FilledSquare\n> & {\n size?: number;\n};\nexport type CircleLineMiterType = LineMiterBase<LineMiterKind.Circle> & {\n size?: number;\n strokeWidth?: number;\n};\nexport type FilledCircleLineMiterType = LineMiterBase<\n LineMiterKind.FilledCircle\n> & {\n size?: number;\n};\n\nexport type FilledLineMitters =\n | FilledArrowLineMiterType\n | FilledSquareLineMiterType\n | FilledCircleLineMiterType;\nexport type ArrowLineMiters = ArrowLineType | FilledArrowLineMiterType;\nexport type SquareLineMiters = SquareLineMiterType | FilledSquareLineMiterType;\nexport type CircleLineMiters = CircleLineMiterType | FilledCircleLineMiterType;\nexport type LineMiterType =\n | NoLineMiterType\n | ArrowLineMiters\n | SquareLineMiters\n | CircleLineMiters;\n\nexport const isMiterExist = (\n miter?: undefined | LineMiterType\n): miter is Exclude<LineMiterType, NoLineMiterType> =>\n Boolean(miter && miter.type !== LineMiterKind.None);\n\nexport const isFilledLineMitter = (\n miter: LineMiterType\n): miter is FilledLineMitters =>\n miter.type === LineMiterKind.FilledCircle ||\n miter.type === LineMiterKind.FilledArrow ||\n miter.type === LineMiterKind.FilledSquare;\n\nexport const isArrowLineMiter = (\n miter: LineMiterType\n): miter is ArrowLineMiters =>\n miter.type === LineMiterKind.Arrow ||\n miter.type === LineMiterKind.FilledArrow;\n\nexport const isSquareLineMiter = (\n miter: LineMiterType\n): miter is SquareLineMiters =>\n miter.type === LineMiterKind.Square ||\n miter.type === LineMiterKind.FilledSquare;\n\nexport const isCircleLineMiter = (\n miter: LineMiterType\n): miter is CircleLineMiters =>\n miter.type === LineMiterKind.Circle ||\n miter.type === LineMiterKind.FilledCircle;\n","import { PointSymbolType, UnknownSymbol } from './symbol';\nimport { ParameterByAttribute } from './parameterValue';\n\nimport { isParameterByAttribute } from '../../classification/parameterValue';\n\nexport type SimpleOffset = [number, number];\n\nexport type ClassifiedOffset = [\n ParameterByAttribute<number>,\n ParameterByAttribute<number>\n];\n\nexport type Offset = SimpleOffset | ClassifiedOffset;\n\nexport const isSimpleOffset = (offset: Offset): offset is SimpleOffset =>\n offset &&\n !isParameterByAttribute(offset[0]) &&\n !isParameterByAttribute(offset[1]);\n\nexport const isSymbolWithOffset = (\n symbol: UnknownSymbol\n): symbol is PointSymbolType => Boolean(symbol && 'offset' in symbol);\n","import { StyleSymbolType } from './symbol';\n\nexport type ParameterByAttributeValue<Value> = {\n condition: string;\n value: Value;\n title: string | null;\n};\n\nexport type ParameterByAttribute<Value> = {\n type: 'byAttribute';\n defaultValue: Value;\n title: string | null;\n values: ParameterByAttributeValue<Value>[];\n};\n\nexport type CalculatedParameter<Value> = {\n type: 'calculated';\n expression: string;\n defaultValue: Value;\n title?: string | null;\n};\n\nexport type ClassifyAble<Value> = Value | ParameterByAttribute<Value>;\n\nexport type CalculatedAble<Value> = Value | CalculatedParameter<Value>;\n\nexport type ParameterValue = string | number;\n\nexport type ParameterByAttributeValues = ParameterByAttributeValue<\n ParameterValue\n>[];\n\nexport type ParameterValueWithSymbol = ParameterValue | StyleSymbolType;\n\nexport type ClassifiedParameterValue = ClassifyAble<ParameterValueWithSymbol>;\n\nexport type UnidentifiedParameterValue =\n | ParameterValueWithSymbol\n | Partial<ClassifyAble<ParameterValueWithSymbol>>\n | Partial<CalculatedAble<ParameterValue>>;\n\nexport type CalculatedParameterValue = CalculatedAble<ParameterValue>;\n\nexport const isStringParameterValue = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is string => typeof parameterValue === 'string';\n\nexport const isParameterValueSimple = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is ParameterValue =>\n typeof parameterValue === 'number' || typeof parameterValue === 'string';\n\nexport const isParameterValueSymbol = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is StyleSymbolType => !isParameterValueSimple(parameterValue);\n","import { StyleDc } from '@evergis/api';\n\nimport { LabelType } from './label';\nimport { CompositeSymbolType, RasterSymbol, StyleSymbolType } from './symbol';\n\nexport type Style = Omit<StyleDc, 'symbol' | 'children'> & {\n symbol: Exclude<StyleSymbolType, CompositeSymbolType>;\n ignoreLabel?: boolean;\n label: LabelType | null;\n raster: RasterSymbol | null;\n children: Style[] | null;\n};\n\nexport const isStyle = (value: object): value is Style => 'symbol' in value;\n","import {\n ClassificationClass,\n ClassificationExtras,\n ClassificationParameterExtended,\n ExtendedClassification,\n} from './types';\nimport { ClassificationCondition } from './ClassificationCondition';\nimport { pathsToParameter } from './parameter';\nimport { isParameterByAttribute } from './parameterValue';\n\nimport {\n isStyle,\n isTwoDimensionalSymbol,\n ParameterByAttributeValue,\n ParameterValue,\n ParameterValueWithSymbol,\n Style,\n StyleSymbolType,\n} from '../style/types';\n\nimport { isObject } from '../../utils/isObject';\n\nconst toClassificationClass = (\n parameterValue: ParameterValueWithSymbol,\n title: string,\n condition: ClassificationCondition\n): ClassificationClass => ({\n parameterValue,\n title,\n ...(condition.isUnique()\n ? {\n uniqueValue: condition.uniqueValue,\n }\n : {\n from: condition.range[0],\n to: condition.range[1],\n }),\n});\n\nconst DEFAULT_EXTRAS: ClassificationExtras = {\n defaultTitle: '',\n // @ts-ignore\n defaultValue: null,\n};\n\nexport const toClassification = (\n values: (ParameterByAttributeValue<ParameterValue> | Style)[],\n parameter: ClassificationParameterExtended,\n extras: ClassificationExtras = DEFAULT_EXTRAS\n): ExtendedClassification =>\n // @ts-ignore\n values.reduce(\n // @ts-ignore\n (classification: ExtendedClassification, value) => {\n const classificationCondition = new ClassificationCondition(\n value.condition || ''\n );\n const classificationValue = toClassificationClass(\n isStyle(value) ? value.symbol : value.value,\n // @ts-ignore\n value.title,\n classificationCondition\n );\n\n classification.values.push(classificationValue);\n\n return {\n ...classification,\n type: classification.type || classificationCondition.type,\n attribute:\n classification.attribute || classificationCondition.attributeName,\n };\n },\n {\n ...extras,\n attribute: null,\n parameter,\n type: null,\n values: [],\n }\n );\n\nexport const getClassifications = (\n symbol: StyleSymbolType,\n pathContext: ClassificationParameterExtended[] = []\n): ExtendedClassification[] =>\n Object.entries(symbol).reduce(\n (classifications, [parameter, parameterValue]) => {\n const skipHeight =\n isTwoDimensionalSymbol(symbol) && parameter === 'height';\n const skip = !isObject(parameterValue) || skipHeight;\n\n if (skip) {\n return classifications;\n }\n\n if (!isParameterByAttribute(parameterValue)) {\n return [\n ...classifications,\n // @ts-ignore\n ...getClassifications(symbol[parameter], [\n ...pathContext,\n parameter as ClassificationParameterExtended,\n ]),\n ];\n }\n\n const classification = toClassification(\n parameterValue.values,\n pathsToParameter([\n ...pathContext,\n parameter as ClassificationParameterExtended,\n ]),\n {\n // @ts-ignore\n defaultTitle: parameterValue.title,\n defaultValue: parameterValue.defaultValue,\n }\n );\n\n return [...classifications, classification];\n },\n [] as ExtendedClassification[]\n );\n","import { getClassifications, toClassification } from './getClassifications';\nimport { ExtendedClassification } from './types';\n\nimport { Style } from '../style/types';\n\nexport class ClassificationManager {\n private classifications: ExtendedClassification[] = [];\n\n constructor(private style: Style) {\n this.collectClassifications();\n }\n\n public get values() {\n return this.classifications;\n }\n\n public find(predicate: (classification: ExtendedClassification) => boolean) {\n for (const classification of this.classifications) {\n if (predicate(classification)) {\n return classification;\n }\n }\n\n return null;\n }\n\n public filter(callback: (classification: ExtendedClassification) => boolean) {\n return this.classifications.filter(callback);\n }\n\n public map<T extends ValueOf<ExtendedClassification>>(\n callback: (classification: ExtendedClassification) => T\n ) {\n return this.classifications.map(callback);\n }\n\n public reduce<T>(\n callback: (classifications: T, classification: ExtendedClassification) => T,\n initial: T\n ) {\n return this.classifications.reduce(callback, initial);\n }\n\n public hasClassifications() {\n return this.classifications.length > 0;\n }\n\n private collectClassifications() {\n if (this.style.children && this.style.children.length) {\n this.classifications.push(\n toClassification(this.style.children, 'symbol')\n );\n }\n\n if (this.style.symbol) {\n this.classifications.push(...getClassifications(this.style.symbol));\n }\n }\n}\n","import { getParameterValue } from './parameterValue';\n\nimport { StyleSymbolType, Unclassify } from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nexport const unClassify = <V extends StyleSymbolType>(\n symbol: V\n): Unclassify<V> =>\n Object.entries(symbol).reduce((flatSymbol, [parameter, parameterValue]) => {\n let result = Array.isArray(parameterValue)\n ? parameterValue.map(getParameterValue)\n : getParameterValue(parameterValue);\n\n if (isObject(result)) {\n return {\n ...flatSymbol,\n [parameter]: unClassify(parameterValue),\n };\n }\n\n return {\n ...flatSymbol,\n [parameter]: result,\n };\n }, {} as Unclassify<V>);\n","import { RangeClass } from './types';\n\nexport const printRangeClass = (value: RangeClass, index: number): string => {\n const isDouble = Boolean(value.attribute?.type === 'Double');\n const isDate = Boolean(value.attribute?.type === 'DateTime');\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\n\n if (from === null) {\n return `${to} ${isDate ? 'и до' : 'и менее'}`;\n }\n\n if (to === null) {\n return `${isDate ? 'после' : 'более'} ${from}`;\n }\n\n return from === to ? `${from}` : `${from} - ${to}`;\n};\n\nfunction getRangeValues(\n { from, to }: Pick<RangeClass, 'from' | 'to'>,\n isDouble: boolean,\n isDate: boolean,\n index: number\n): Pick<RangeClass, 'from' | 'to'> {\n return {\n from: from !== null && index !== 0 ?\n (isDate ? from : (isDouble ? +from : +from + 1)) : from,\n to,\n };\n}\n","import {\n Crs,\n ellipticalMercator,\n geo,\n webMercator,\n wgs84,\n} from '@evergis/sgis/es/Crs';\n\n/** Spatial Reference WKID using for @evergis/sgis */\nexport enum SrId {\n /** 3857 */\n WebMercator = 3857,\n /** 4326 */\n Geo = 4326,\n /** 84 */\n Wgs84 = 84,\n /** 3395 */\n EllipticalMercator = 3395,\n}\n\nexport const CRS_MAP: Record<SrId, Crs> = {\n [SrId.WebMercator]: webMercator,\n [SrId.Geo]: geo,\n [SrId.Wgs84]: wgs84,\n [SrId.EllipticalMercator]: ellipticalMercator,\n};\n\nexport const DEFAULT_SRID = SrId.WebMercator;\n\nexport const DEFAULT_CRS = CRS_MAP[DEFAULT_SRID];\n\nexport const getCrs = (srId: number): Crs => CRS_MAP[srId as SrId];\n","import { AttributeType, LayerDefinitionDc } from '@evergis/api';\n\nimport {\n Attribute,\n ClassificationAttribute,\n FeatureAttribute,\n FeatureAttributeValue,\n LayerAttribute,\n} from './types';\n\nimport { LayerAttributes } from '../layer';\n\nexport const getFeatureAttributeType = (\n attributeValue?: FeatureAttributeValue\n): AttributeType => {\n if (attributeValue instanceof Date) {\n return AttributeType.DateTime;\n }\n\n if (typeof attributeValue === 'string') {\n return AttributeType.String;\n }\n\n if (typeof attributeValue === 'number') {\n return AttributeType.Int64;\n }\n\n return AttributeType.Unknown;\n};\n\nexport const getLayerAttributes = (\n layerDefinition?: LayerDefinitionDc\n): LayerAttribute[] => {\n const attributes = (layerDefinition && layerDefinition.attributes) || {};\n\n return Object.entries(attributes).map(([name, definition]) => ({\n name,\n ...definition,\n })) as LayerAttribute[];\n};\n\nexport const getFeatureAttributes = (\n attributes?: Record<string, FeatureAttributeValue>\n): FeatureAttribute[] => {\n return attributes\n ? Object.entries(attributes).map(([name, value]) => ({\n name,\n value,\n type: getFeatureAttributeType(value),\n }))\n : [];\n};\n\nexport const getClassificationAttribute = (\n attributeName: string,\n attributes: LayerAttributes\n): ClassificationAttribute => {\n const attribute = attributes[attributeName];\n const attrNamePart = {\n name: attributeName,\n type: attribute?.type || AttributeType.Unknown,\n };\n\n return attribute ? { ...attrNamePart, ...attribute } : attrNamePart;\n};\n\nexport const mergeAttributes = (\n attributes1: Attribute[],\n attributes2: Attribute[]\n) => {\n return attributes1.map(attribute => ({\n ...attribute,\n ...(attributes2.find(({ name }) => attribute.name === name) || {}),\n }));\n};\n","import { StyleDc } from '@evergis/api';\n\nimport {\n CompositeSymbolType,\n isCompositeSymbol,\n isLabelSymbol,\n isRasterSymbol,\n isSimpleSymbol,\n Style,\n StyleSymbolType,\n UnknownSymbol,\n} from './types';\n\nexport const createCompositeSymbol = (\n childSymbols: StyleSymbolType[]\n): CompositeSymbolType => ({\n type: 'compositeSymbol',\n childSymbols,\n});\n\nexport const getChildSymbols = (symbol?: UnknownSymbol): StyleSymbolType[] => {\n if (!symbol || !isCompositeSymbol(symbol)) return [];\n\n return symbol.childSymbols || [];\n};\n\nexport const extractSymbol = (\n symbol?: UnknownSymbol\n): Pick<Style, 'symbol' | 'label' | 'raster'> => {\n const childSymbols = getChildSymbols(symbol);\n\n return {\n // @ts-ignore\n symbol: childSymbols.find(isSimpleSymbol),\n label: childSymbols.find(isLabelSymbol) || null,\n raster: childSymbols.find(isRasterSymbol) || null,\n };\n};\n\nexport const extractStyle = (style: StyleDc): Style => {\n // @ts-ignore\n if (isCompositeSymbol(style.symbol)) {\n return {\n ...style,\n ...extractSymbol(style.symbol),\n // @ts-ignore\n children: style.children && style.children.map(extractStyle),\n };\n }\n\n // NOTE: for cases when style is exist style object should have same reference for all extractStyle calls\n return (style || {}) as Style;\n};\n\nexport const packStyle = (style: Style): StyleDc => {\n const { ignoreLabel, label, symbol, raster, children, ...styleDc } = style;\n const childSymbols = [!ignoreLabel && label, raster].filter(Boolean);\n\n return {\n ...styleDc,\n symbol: childSymbols.length\n ? // @ts-ignore\n createCompositeSymbol([symbol, ...childSymbols])\n : symbol,\n // @ts-ignore\n children: children\n ? // @ts-ignore\n children.map(childStyle =>\n packStyle({ ...childStyle, ignoreLabel, label })\n )\n : children,\n };\n};\n","import { StyleDc } from '@evergis/api';\n\nimport { extractStyle, packStyle } from './compositeSymbol';\nimport { Style } from './types';\n\nimport { ClassificationManager } from '../classification';\n\nexport class EvergisStyle {\n public classificationManager: ClassificationManager;\n private readonly style: Style;\n\n constructor(style: StyleDc) {\n this.style = extractStyle(style);\n this.classificationManager = new ClassificationManager(this.style);\n }\n\n public serialize() {\n return packStyle(this.style);\n }\n\n public hasRasters() {\n return !!(\n this.style.raster ||\n (this.style.children || []).some(style => style.raster)\n );\n }\n\n get symbol() {\n return this.style.symbol;\n }\n\n get raster() {\n return this.style.raster;\n }\n get label() {\n return this.style.label;\n }\n\n get children() {\n return this.style.children;\n }\n\n get title() {\n return this.style.title;\n }\n\n get condition() {\n return this.style.condition;\n }\n\n get ignoreLabel() {\n return this.style.ignoreLabel;\n }\n\n get resolution(): Nullable<[number, number]> {\n const { minResolution, maxResolution } = this.style;\n\n return minResolution === void 0 || maxResolution === void 0\n ? null\n : [minResolution, maxResolution];\n }\n}\n","import { Color } from '@evergis/color';\n\nexport const getHexColor = (colorString: string): string | undefined =>\n colorString ? new Color(colorString).toString('hex') : undefined;\n","// TODO reduce\nexport const PREVIEW_LIMITS = {\n STROKE_WIDTH_MIN: 0.25,\n STROKE_WIDTH_MAX: 6.5,\n};\n","export function clamp(num: number, min: number, max: number): number {\n return Math.min(Math.max(num, min), max);\n}\n","/* eslint-disable @typescript-eslint/no-magic-numbers */\nimport { unique } from '@evergis/api';\n\nimport { PREVIEW_LIMITS } from './previewLimits';\n\nimport { getParameterValue } from '../core/classification';\n\nimport { ClassifyAble, StrokeBrushType } from '../core/style';\n\nimport { clamp } from '../utils/math';\n\n// TODO refactoring\nexport const enum StrokeStyle {\n Solid,\n Dash,\n Dot,\n DashDot,\n DashDotDot,\n Custom,\n}\n\ninterface StrokeStylePreset {\n style: StrokeStyle;\n type: StrokeBrushType['type'];\n intervals: number[];\n}\nexport const SOLID_INTERVALS: number[] = [];\n\nexport const solidStrokeStylePreset: StrokeStylePreset = {\n style: StrokeStyle.Solid,\n type: 'solid',\n intervals: SOLID_INTERVALS,\n};\nexport const strokeStylePresets: StrokeStylePreset[] = [\n solidStrokeStylePreset,\n {\n style: StrokeStyle.Dot,\n type: 'dashed',\n intervals: [2, 2],\n },\n {\n style: StrokeStyle.Dash,\n type: 'dashed',\n intervals: [3, 3, 3, 3],\n },\n {\n style: StrokeStyle.DashDot,\n type: 'dashed',\n intervals: [5, 2, 1, 2],\n },\n {\n style: StrokeStyle.DashDotDot,\n type: 'dashed',\n intervals: [5, 2, 1, 1, 1, 2],\n },\n {\n style: StrokeStyle.Custom,\n type: 'dashed',\n intervals: [5, 4],\n },\n];\n\nconst walkByNumbersGroup = (\n numbers: number[],\n offset: number,\n walker: (group: [number, number], offset: number) => [number, number]\n): number[] => {\n if (!numbers || !numbers.length) return [];\n\n const newNumbers = [];\n\n for (let i = 0; i < numbers.length; i++) {\n if (i % 2) {\n newNumbers.push(...walker([numbers[i - 1], numbers[i]], offset));\n }\n }\n\n return newNumbers;\n};\n\nexport const toIntervals = (numbers: number[], width: ClassifyAble<number>) =>\n walkByNumbersGroup(\n numbers,\n clamp(\n getParameterValue(width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n ([length, gap], offset) => [length * offset, gap * offset]\n );\n\nexport const toLineDash = (numbers: number[], width: ClassifyAble<number>) =>\n walkByNumbersGroup(\n numbers,\n clamp(\n getParameterValue(width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n ([length, gap], offset) => [\n Math.round(length / Math.max(1, Math.min(offset, 16) / 4)),\n Math.round(gap + 1 + Math.max(1, Math.min(offset, 16) / 2)),\n ]\n );\n\nexport const getLineDash = (brush: StrokeBrushType): number[] => {\n if (!brush || brush.type === 'solid') return [];\n\n // @ts-ignore\n return toLineDash(brush.intervals, brush.width);\n};\n\nexport const defineStrokeStylePreset = (intervals: number[]) => {\n if (!intervals.length) return solidStrokeStylePreset;\n\n return strokeStylePresets.find(preset => {\n if (preset.intervals.length !== intervals.length) return false;\n\n const uniqueStrokeWidths = preset.intervals\n .map((presetInterval, i) => intervals[i] / presetInterval)\n .filter(unique);\n\n return uniqueStrokeWidths.length === 1;\n });\n};\n\nexport const getDashStylePreset = (\n dashStyle: StrokeStyle\n): StrokeStylePreset | undefined =>\n strokeStylePresets.find(preset => preset.style === dashStyle);\n","import { BrushFill as sBrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\nimport { Color } from '@evergis/color';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport {\n FillBrushType,\n HatchBrush,\n isHatchBrush,\n PolygonSymbol,\n} from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nconst ALPHA_NORMALIZER = 65025;\n\nconst sum = (numbers: number[]) =>\n numbers.reduce((result, num) => result + num, 0);\n\nconst shouldFillMatrixCell = (\n matrixSize: number,\n hatchAngle: number,\n x: number,\n y: number\n) => {\n const center = Math.round(matrixSize / 2);\n\n if ((hatchAngle === 0 || hatchAngle === Math.PI) && x === center) {\n return true;\n }\n if (hatchAngle === Math.PI / 4 && y === x) {\n return true;\n }\n if (hatchAngle === Math.PI / 2 && y === center) {\n return true;\n }\n\n return hatchAngle === (3 * Math.PI) / 4 && matrixSize - 1 - y === x;\n};\n\nconst createEmptyMatrix = (size: number): number[][] =>\n Array(size)\n .fill(null)\n .map(() => Array(size));\n\nconst fillMatrix = (\n matrix: number[][],\n filler: (x: number, y: number, size: number) => number\n) => {\n const matrixSize = matrix.length;\n\n for (let x = 0; x < matrixSize; x++) {\n for (let y = 0; y < matrixSize; y++) {\n matrix[x][y] = filler(x, y, matrixSize);\n }\n }\n};\n\nconst createFillBrushMatrix = (\n hatchAngle: number,\n hatchWidth: number,\n scalingFactor: number[]\n) => {\n const matrixSize = Math.max(\n Math.round(sum([Math.max(...scalingFactor), hatchWidth])),\n hatchWidth\n );\n const matrix = createEmptyMatrix(matrixSize);\n\n fillMatrix(matrix, (x, y, size) =>\n shouldFillMatrixCell(size, hatchAngle, x, y) ? 255 : 0\n );\n\n return matrix;\n};\n\nconst createSymbolFillBrush = (\n fillBrush: FillBrushType\n): number[][] | undefined => {\n if (fillBrush.type !== 'hatch') return undefined;\n\n return createFillBrushMatrix(\n // @ts-ignore\n getParameterValue(fillBrush.hatchAngle),\n // @ts-ignore\n Math.round(fillBrush.hatchWidth),\n fillBrush.scalingFactor\n );\n};\n\nexport class SGisBrushFill extends sBrushFill {\n constructor(public originalSymbol: PolygonSymbol<HatchBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n fillBackground: getHexColor(\n // @ts-ignore\n getParameterValue(originalSymbol.fill?.color)\n ),\n fillForeground: isHatchBrush(originalSymbol.fill)\n ? // @ts-ignore\n getHexColor(getParameterValue(originalSymbol.fill?.hatchColor))\n : void 0,\n fillBrush: createSymbolFillBrush(originalSymbol.fill),\n lineCap: 'square',\n });\n }\n\n _updateBrush() {\n // @ts-ignore\n if (!this._initialized) return;\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return;\n }\n\n const brush = this.fillBrush;\n const brushSize = brush.length;\n const foreground = new Color(this.fillForeground);\n const background = new Color(this.fillBackground);\n\n canvas.height = brushSize;\n canvas.width = brushSize;\n for (let i = 0; i < brushSize; i++) {\n // eslint-disable-next-line id-length\n for (let j = 0; j < brush[i].length; j++) {\n const srcA = (brush[i][j] * foreground.a) / ALPHA_NORMALIZER;\n const dstA = (background.a / 255) * (1 - srcA);\n const alpha = +Math.min(1, srcA + dstA).toFixed(2);\n const red = Math.round(\n Math.min(255, background.r * dstA + foreground.r * srcA)\n );\n const green = Math.round(\n Math.min(255, background.g * dstA + foreground.g * srcA)\n );\n const blue = Math.round(\n Math.min(255, background.b * dstA + foreground.b * srcA)\n );\n\n ctx.fillStyle = `rgba(${red},${green},${blue},${alpha})`;\n ctx.fillRect(j, i, 1, 1);\n }\n }\n this._brush = new Image();\n this._brush.src = canvas.toDataURL();\n }\n\n clone() {\n return new SGisBrushFill(this.originalSymbol);\n }\n}\n","import { ImageFill as sImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PatternBrush, PolygonSymbol } from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisImageFill extends sImageFill {\n constructor(public originalSymbol: PolygonSymbol<PatternBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n src: `data:image/png;base64,${originalSymbol.fill.pattern}`,\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisImageFill(this.originalSymbol);\n }\n}\n","import { PolygonSymbol as sPolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PolygonSymbol } from '../../core/style/types';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisPolygonSymbol extends sPolygonSymbol {\n constructor(public originalSymbol: PolygonSymbol) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n // @ts-ignore\n fillColor: getHexColor(getParameterValue(originalSymbol.fill?.color)),\n // TODO?: may be it should be defined by user\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisPolygonSymbol(this.originalSymbol);\n }\n}\n","import { Crs } from '@evergis/sgis/es/Crs';\nimport { projectRings } from '@evergis/sgis/es/geotools';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\n\nimport { LineMiterKind, LineMiterSize } from '../../core/style/types';\n\nexport type MiterPosition = 'left' | 'right';\n\nexport interface LineMiterRenderBaseInfo {\n position: MiterPosition;\n color: string;\n strokeWidth: number;\n kind: LineMiterKind;\n size: LineMiterSize;\n}\n\nconst adaptMiterRings = (\n rings: Coordinates[][],\n resolution: number,\n fromCrs: Crs,\n toCrs: Crs\n) => {\n const projected = projectRings(rings, fromCrs, toCrs);\n\n return simplifyCoordinates(\n projected.map(ring =>\n // @ts-ignore\n ring.map(([x, y]) => [x / resolution, y / -resolution])\n ),\n 1\n );\n};\n\nconst miterSizeCalcs: Record<LineMiterSize, (strokeWidth: number) => number> = {\n [LineMiterSize.Small]: strokeWidth => (strokeWidth + 1) * 3 + 1,\n [LineMiterSize.Large]: strokeWidth => (strokeWidth + 1) * 5 - 1,\n};\n\nexport abstract class LineMiterRender implements LineMiterRenderBaseInfo {\n // @ts-ignore\n position: MiterPosition;\n // @ts-ignore\n color: string;\n // @ts-ignore\n strokeWidth: number;\n // @ts-ignore\n kind: LineMiterKind;\n // @ts-ignore\n size: LineMiterSize;\n\n constructor(baseInfo: LineMiterRenderBaseInfo) {\n Object.assign(this, baseInfo);\n }\n\n getAnchor = (rings: Coordinates[][]): Coordinates => {\n if (this.position === 'right') {\n const lastRing = rings[rings.length - 1];\n\n return (lastRing && lastRing[lastRing.length - 1]) || null;\n }\n\n const firstRing = rings[0];\n\n return (firstRing && firstRing[0]) || null;\n };\n\n getRender(\n anchorRings: Coordinates[][],\n anchorCrs: Crs,\n resolution: number,\n currentCrs: Crs\n ): Render {\n const xMultiplier = this.position === 'right' ? 1 : -1;\n const miterAnchor = this.getAnchor(anchorRings);\n const miterRings = this.createRings(miterAnchor, xMultiplier);\n const projectedMiterRings = adaptMiterRings(\n miterRings,\n resolution,\n anchorCrs,\n currentCrs\n );\n\n return this.createRender(projectedMiterRings);\n }\n\n get miterSize() {\n const calcMiterSize = miterSizeCalcs[this.size];\n\n return calcMiterSize ? calcMiterSize(this.strokeWidth) : 1;\n }\n abstract get usageSize(): number;\n abstract createRings(\n anchor: Coordinates,\n xMultiplier: number\n ): Coordinates[][];\n abstract createRender(rings: Coordinates[][]): Render;\n}\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\n\nimport { LineMiterKind } from '../../core/style/types';\n\nexport class ArrowLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth;\n }\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [\n [\n [x, y + this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y],\n [x, y - this.miterSize / 2],\n ],\n ];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineMiterKind.FilledArrow;\n\n return new PolyRender(miterRings, {\n enclosed: isFilled,\n fillColor: isFilled ? this.color : void 0,\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\n lineCap: 'square',\n lineJoin: 'miter',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n });\n }\n}\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\nimport { LineMiterKind } from '../../core';\nimport { polygonCircleFromPoint } from '../../';\n\nexport class CircleLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth * 3;\n }\n\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [[[x + (this.miterSize / 2 + this.strokeWidth) * xMultiplier, y]]];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineMiterKind.FilledCircle;\n\n return new PolyRender(\n polygonCircleFromPoint(miterRings[0][0], this.miterSize),\n {\n fillColor: isFilled ? this.color : 'transparent',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n enclosed: true,\n }\n );\n }\n}\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\n\nimport { LineMiterKind } from '../../core/style/types';\n\nexport class SquareLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth;\n }\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [\n [\n [x, y + this.miterSize / 2],\n [x, y - this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y - this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y + this.miterSize / 2],\n ],\n ];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineMiterKind.FilledSquare;\n\n return new PolyRender(miterRings, {\n enclosed: true,\n fillColor: isFilled ? this.color : void 0,\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\n lineCap: 'square',\n lineJoin: 'miter',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n });\n }\n}\n","import { ArrowLineMiterRender } from './ArrowLineMiterRender';\nimport { CircleLineMiterRender } from './CircleLineMiterRender';\nimport { LineMiterRenderBaseInfo, LineMiterRender } from './LineMiterRender';\nimport { SquareLineMiterRender } from './SquareLineMiterRender';\n\nimport { LineMiterKind } from '../../core/style/types';\n\nexport const getLineMiterRender = (\n options: LineMiterRenderBaseInfo\n): LineMiterRender | null => {\n switch (options.kind) {\n case LineMiterKind.Arrow:\n case LineMiterKind.FilledArrow:\n return new ArrowLineMiterRender(options);\n case LineMiterKind.Square:\n case LineMiterKind.FilledSquare:\n return new SquareLineMiterRender(options);\n case LineMiterKind.Circle:\n case LineMiterKind.FilledCircle:\n return new CircleLineMiterRender(options);\n default:\n return null;\n }\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { MiterPosition } from './LineMiterRender';\n\nconst updateRingForRightMiter = (\n ring: Coordinates[],\n miterSize: number,\n isLastRing: boolean\n): Coordinates[] => {\n const reversedRing = ring.slice().reverse();\n\n for (let i = 0; i < reversedRing.length; i++) {\n const coordinates = reversedRing[i];\n\n if (isLastRing && i === 0) {\n reversedRing[i] = [coordinates[0] - miterSize, coordinates[1]];\n }\n\n const nextCoordinates = reversedRing[i - 1];\n\n if (nextCoordinates && nextCoordinates[0] < coordinates[0]) {\n reversedRing[i] = [\n nextCoordinates[0] - Math.abs(nextCoordinates[0] - coordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return reversedRing.reverse();\n};\n\nconst updateRingForLeftMiter = (\n ring: Coordinates[],\n miterSize: number,\n isFirstRing: boolean\n): Coordinates[] => {\n const newRing = ring.slice();\n\n for (let i = 0; i < newRing.length; i++) {\n const coordinates = newRing[i];\n\n if (i === 0 && isFirstRing) {\n newRing[i] = [coordinates[0] + miterSize, coordinates[1]];\n }\n\n const prevCoordinates = newRing[i - 1];\n\n if (prevCoordinates && prevCoordinates[0] > coordinates[0]) {\n newRing[i] = [\n prevCoordinates[0] + Math.abs(coordinates[0] - prevCoordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return newRing;\n};\n\nexport const updateRingsForMiter = (\n rings: Coordinates[][],\n position: MiterPosition,\n miterSize: number\n): Coordinates[][] => {\n return rings.map((ring, ringIndex) => {\n switch (position) {\n case 'right':\n return updateRingForRightMiter(\n ring,\n miterSize,\n ringIndex === rings.length - 1\n );\n default:\n return updateRingForLeftMiter(ring, miterSize, ringIndex === 0);\n }\n });\n};\n","import { PolylineSymbol as sPolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { getLineMiterRender } from '../LineMiters/getLineMiterRender';\nimport { updateRingsForMiter } from '../LineMiters/updateRingsForMiter';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport {\n isDashedBrush,\n isSimplePolylineSymbol,\n PolylineSymbols,\n} from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { clamp } from '../../utils/math';\nimport { PREVIEW_LIMITS } from '../previewLimits';\nimport { getLineDash } from '../strokeStyle';\n\nexport const copyRings = (rings: Coordinates[][]): Coordinates[][] =>\n rings.map(ring =>\n ring.map(coordinates => coordinates.slice() as Coordinates)\n );\n\nexport class SGisPolylineSymbol extends sPolylineSymbol {\n constructor(public originalSymbol: PolylineSymbols) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n strokeWidth: clamp(\n // @ts-ignore\n getParameterValue(originalSymbol.stroke?.width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n // @ts-ignore\n lineDash: getLineDash(originalSymbol.stroke),\n // @ts-ignore\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n renderFunction(feature: Polyline, resolution: number, crs: Crs): Render[] {\n if (!isSimplePolylineSymbol(this.originalSymbol))\n return super.renderFunction(feature, resolution, crs);\n\n const {\n ending,\n beginningSize,\n beginning,\n endingSize,\n } = this.originalSymbol;\n const renders: Render[] = [];\n\n const featureCopy = feature.clone();\n\n const beginningMiterRender = getLineMiterRender({\n color: this.strokeColor,\n // @ts-ignore\n kind: beginning,\n position: 'left',\n // @ts-ignore\n size: beginningSize,\n strokeWidth: this.strokeWidth,\n });\n const endingMiterRender = getLineMiterRender({\n color: this.strokeColor,\n // @ts-ignore\n kind: ending,\n position: 'right',\n // @ts-ignore\n size: endingSize,\n strokeWidth: this.strokeWidth,\n });\n\n if (beginningMiterRender) {\n const updatedRings = updateRingsForMiter(\n featureCopy.rings,\n 'left',\n beginningMiterRender.usageSize\n );\n const render = beginningMiterRender.getRender(\n updatedRings,\n feature.crs,\n resolution,\n crs\n );\n\n featureCopy.rings = updatedRings;\n renders.push(render);\n }\n\n if (endingMiterRender) {\n const updatedRings = updateRingsForMiter(\n featureCopy.rings,\n 'right',\n endingMiterRender.usageSize\n );\n const render = endingMiterRender.getRender(\n updatedRings,\n feature.crs,\n resolution,\n crs\n );\n\n featureCopy.rings = updatedRings;\n renders.push(render);\n }\n\n // NOTE: линия должна быть в начале чтобы быть под митерами\n renders.unshift(...super.renderFunction(featureCopy, resolution, crs));\n\n return renders;\n }\n\n clone() {\n return new SGisPolylineSymbol(this.originalSymbol);\n }\n}\n","import React, { ComponentType } from 'react';\nimport ReactDOM from 'react-dom';\nimport { DynamicPointSymbol } from '@evergis/sgis/es/symbols/Symbol';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nexport type LabelSymbolComponent =\n | ComponentType<{ content: string }>\n | ComponentType;\n\ntype LabelSymbolParams = {\n offset?: Offset;\n component?: LabelSymbolComponent;\n};\n\nexport class LabelSymbol extends DynamicPointSymbol {\n public component?: LabelSymbolComponent;\n\n constructor({ component, offset }: LabelSymbolParams = {}) {\n super({ offset });\n this.component = component;\n }\n\n protected _getFeatureNode(feature: LabelFeature): HTMLElement {\n const node = document.createElement('div');\n\n this.renderDom(feature.content, node);\n\n return node;\n }\n\n protected _updateFeatureNode(feature: LabelFeature): void {\n this.renderDom(feature.content, this.getNode(feature));\n }\n\n private renderDom(content: string, node: HTMLElement): void {\n if (!node) {\n return;\n }\n\n const Component = this.component;\n\n if (Component) {\n ReactDOM.render(<Component content={content} />, node);\n } else {\n node.innerText = content;\n }\n }\n}\n","import React from 'react';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nimport { renderLabelSymbolType } from '../../components';\nimport { LabelSymbol } from './LabelSymbol';\n\nexport const defaultOffset: Offset = [8, -16];\n\ntype createLabelSymbolParams = {\n offset?: Offset;\n onClose?: VoidFunction;\n renderLabel: renderLabelSymbolType;\n};\n\nexport const createLabelSymbol = (props: createLabelSymbolParams) => {\n const {\n offset = defaultOffset,\n renderLabel = ({ content }: { content: string }) => <div>{content}</div>,\n onClose = undefined,\n } = props || {};\n\n return new LabelSymbol({\n offset,\n component: ({ content }: { content: string }) =>\n renderLabel({ content, onClose }),\n });\n};\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { polygonCircleFromPoint } from '../../';\nimport { EditorPointSymbolParams } from './ShadowedPointSymbol';\n\nexport function createShadowRender(\n position: Coordinates,\n {\n strokeWidth = 2,\n shadowColor,\n shadowSize,\n size = 6,\n }: EditorPointSymbolParams\n) {\n const shadowDiameter = size + strokeWidth + shadowSize;\n\n return new PolyRender(polygonCircleFromPoint(position, shadowDiameter), {\n fillColor: 'transparent',\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n enclosed: true,\n });\n}\n\nexport function getEditorPointRenderer(\n position: Coordinates,\n {\n strokeColor,\n strokeWidth,\n shadowColor,\n fillColor,\n shadowSize,\n size = 0,\n }: EditorPointSymbolParams\n) {\n return [\n createShadowRender(position, {\n strokeWidth,\n strokeColor,\n shadowSize,\n shadowColor,\n size,\n }),\n new PolyRender(polygonCircleFromPoint(position, size), {\n fillColor,\n strokeColor,\n strokeWidth,\n enclosed: true,\n }),\n ];\n}\n","import {\n PointSymbol,\n PointSymbolConstructorParams,\n} from '@evergis/sgis/es/symbols/point/Point';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Feature } from '@evergis/sgis';\n\nimport { polygonCircleFromPoint } from '../..';\n\nexport type EditorPointSymbolParams = {\n shadowColor: string;\n shadowSize: number;\n} & PointSymbolConstructorParams;\n\nexport class ShadowedPointSymbol extends PointSymbol {\n shadowColor!: string;\n shadowSize!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options: EditorPointSymbolParams) {\n super(options);\n }\n\n static getShadowArc(\n position: Coordinates,\n {\n strokeWidth = 2,\n shadowColor,\n shadowSize,\n size = 6,\n }: EditorPointSymbolParams\n ): PolyRender {\n return new PolyRender(\n polygonCircleFromPoint(position, size + strokeWidth + shadowSize),\n {\n fillColor: 'transparent',\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n enclosed: true,\n }\n );\n }\n\n static getPointArc(\n position: Coordinates,\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams\n ): PolyRender {\n return new PolyRender(polygonCircleFromPoint(position, size), {\n fillColor,\n strokeColor,\n strokeWidth,\n enclosed: true,\n });\n }\n\n static getArcs(\n position: Coordinates,\n params: EditorPointSymbolParams\n ): PolyRender[] {\n const shadowRender = ShadowedPointSymbol.getShadowArc(position, params);\n const pointRender = ShadowedPointSymbol.getPointArc(position, params);\n\n return shadowRender ? [shadowRender, pointRender] : [pointRender];\n }\n\n public renderFunction(\n feature: PointFeature,\n resolution: number,\n crs: Crs\n ): Render[] {\n if (!(feature instanceof PointFeature)) return [];\n const { position } = feature.projectTo(crs);\n\n const pxPosition: Coordinates = [\n position[0] / resolution + (this.offset[0] || 0),\n -position[1] / resolution + (this.offset[1] || 0),\n ];\n\n const shadowRender = this.getShadow(pxPosition, feature);\n const pointArc = this.getPoint(pxPosition, feature);\n\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\n }\n\n protected getShadow(\n position: Coordinates,\n _feature?: Feature\n ): PolyRender | void {\n return ShadowedPointSymbol.getShadowArc(position, this);\n }\n\n protected getPoint(position: Coordinates, _feature?: Feature): PolyRender {\n return ShadowedPointSymbol.getPointArc(position, this);\n }\n}\n","import {\n PolylineSymbol,\n PolylineSymbolConstructorParams,\n} from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Feature } from '@evergis/sgis';\n\nimport { getEditorPointRenderer } from './getEditorPointRenderer';\nimport { ShadowedPointSymbol } from './ShadowedPointSymbol';\n\nexport type EditorPolySymbolParams = {\n shadowColor: string;\n shadowSize: number;\n fillColor?: string;\n enclose?: boolean;\n showVertex?: boolean;\n vertexShadowSize?: number;\n} & PolylineSymbolConstructorParams;\n\nexport class ShadowedPolySymbol extends PolylineSymbol {\n shadowColor!: string;\n shadowSize!: number;\n fillColor?: string;\n enclose?: boolean;\n showVertex?: boolean;\n vertexShadowSize?: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options: EditorPolySymbolParams) {\n super(options);\n }\n\n public renderFunction(\n feature: Polygon,\n resolution: number,\n crs: Crs\n ): Render[] {\n if (!(feature instanceof Poly)) return [];\n\n const coordinates = super.getRenderedCoordinates(\n feature,\n resolution,\n crs\n );\n const polyRender = this.getPolyRender(coordinates, feature);\n const shadowRender = this.getShadow(coordinates, feature);\n const vertexRenders = this.getVertexRenders(coordinates);\n let renders: Render[] = [polyRender];\n\n if (shadowRender) {\n renders = [shadowRender, polyRender];\n }\n\n if (vertexRenders) {\n renders = renders.concat(vertexRenders);\n }\n\n return renders;\n }\n\n protected getShadow(\n coordinates: Coordinates[][],\n _feature?: Feature\n ): PolyRender | void {\n return new PolyRender(coordinates, {\n fillStyle: FillStyle.None,\n enclosed: this.enclose,\n strokeColor: this.shadowColor,\n strokeWidth: this.shadowSize,\n lineDash: this.lineDash,\n });\n }\n\n protected getPolyRender(\n coordinates: Coordinates[][],\n _feature?: Feature\n ): PolyRender {\n return new PolyRender(coordinates, {\n fillStyle: this.enclose ? FillStyle.Color : FillStyle.None,\n enclosed: this.enclose,\n fillColor: this.fillColor,\n strokeColor: this.strokeColor,\n strokeWidth: this.strokeWidth,\n lineDash: this.lineDash,\n });\n }\n\n protected getVertexRenders(\n coordinates: Coordinates[][]\n ): PolyRender[] | void {\n if (!this.showVertex) return;\n\n const vertexCoordinates = coordinates.reduce((acc, curr) => {\n return acc.concat(curr);\n }, []);\n\n return vertexCoordinates\n .map(coord =>\n getEditorPointRenderer(coord, {\n size: 6,\n strokeWidth: 2,\n shadowColor: this.shadowColor,\n strokeColor: this.strokeColor,\n shadowSize:\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\n fillColor: '#ffffff',\n })\n )\n .reduce((acc, curr) => acc.concat(curr), []);\n }\n}\n\nconst polySymbolParams = {\n strokeWidth: 2,\n strokeColor: '#e33600',\n shadowSize: 8,\n shadowColor: 'rgba(227, 54, 0, 0.3)',\n};\n\nconst measureSymbolParams = {\n strokeColor: '#ff6933',\n shadowSize: 0,\n vertexShadowSize: 0,\n};\n\nexport const measureLengthSymbol = new ShadowedPolySymbol({\n ...polySymbolParams,\n ...measureSymbolParams,\n enclose: false,\n showVertex: true,\n});\n\nexport const measureAreaSymbol = new ShadowedPolySymbol({\n ...polySymbolParams,\n ...measureSymbolParams,\n fillColor: 'rgba(255, 105, 51, 0.25)',\n enclose: true,\n showVertex: true,\n});\n\nconst snapSymbolParams = {\n size: 10,\n strokeWidth: 2,\n strokeColor: '#e33600',\n fillColor: '#ffffff',\n shadowColor: 'rgba(227, 54, 0, 0.3)',\n shadowSize: 3,\n};\n\nexport const measurePolygonSnapSymbol = new ShadowedPointSymbol({\n ...snapSymbolParams,\n strokeColor: '#ff6933',\n shadowSize: 0,\n});\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\n\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\n\ntype SelectedFeature = PointFeature & {\n isSelected: boolean;\n};\n\nexport type SelectedPointSymbolParams = {\n selectedStrokeColor: string;\n selectedFillColor: string;\n} & EditorPointSymbolParams;\n\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\n selectedStrokeColor!: string;\n selectedFillColor!: string;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPointSymbolParams) {\n super(props);\n }\n\n protected getShadow(\n position: [number, number],\n feature: SelectedFeature\n ): PolyRender | void {\n if (feature.isSelected) {\n return super.getShadow(position, feature);\n }\n }\n\n protected getPoint(\n position: [number, number],\n feature: SelectedFeature\n ): PolyRender {\n const pointRender = super.getPoint(position, feature);\n\n if (feature.isSelected) {\n pointRender.strokeColor = this.selectedStrokeColor;\n pointRender.fillColor = this.selectedFillColor;\n }\n\n return pointRender;\n }\n}\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\n\nimport {\n EditorPolySymbolParams,\n ShadowedPolySymbol,\n} from '../Shadowed/ShadowedPolySymbol';\n\ntype SelectedFeature = Polygon & {\n isSelected: boolean;\n};\n\nexport type SelectedPolySymbolParams = {\n selectedFillColor?: string;\n selectedStrokeColor: string;\n selectedStrokeWidth?: number;\n} & EditorPolySymbolParams;\n\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\n selectedFillColor!: string;\n selectedStrokeColor!: string;\n selectedStrokeWidth!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPolySymbolParams) {\n super(props);\n }\n\n protected getShadow(\n coordinates: Coordinates[][],\n feature: SelectedFeature\n ): PolyRender | void {\n if (feature.isSelected) {\n return super.getShadow(coordinates, feature);\n }\n }\n\n protected getPolyRender(\n coordinates: Coordinates[][],\n feature: SelectedFeature\n ): PolyRender {\n const polyRender = super.getPolyRender(coordinates, feature);\n if (feature.isSelected) {\n polyRender.fillColor = this.selectedFillColor;\n polyRender.strokeColor = this.selectedStrokeColor;\n if (this.selectedStrokeWidth !== void 0) {\n polyRender.strokeWidth = this.selectedStrokeWidth;\n }\n }\n\n return polyRender;\n }\n}\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\nimport { SelectedPointSymbol } from './SelectedPointSymbol';\n\nexport const selectedPoint = new SelectedPointSymbol({\n size: 8,\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.65)',\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 3,\n\n selectedStrokeColor: '#ff5722',\n selectedFillColor: 'rgba(255, 255, 255, 0.65)',\n});\n\nexport const selectedPolyline = new SelectedPolySymbol({\n strokeWidth: 6,\n strokeColor: 'rgba(255, 87, 34, 0.2)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n selectedStrokeColor: '#ff5722',\n selectedStrokeWidth: 2,\n});\n\nexport const selectedPolygon = new SelectedPolySymbol({\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.36)',\n enclose: true,\n selectedFillColor: 'rgba(255, 255, 255, 0.56)',\n selectedStrokeColor: '#ff5722',\n});\n","import { Crs, geo } from '@evergis/sgis/es/Crs';\nimport { distance } from '@evergis/sgis/es/geotools';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype ConvertionContext = {\n painter: DomPainter;\n crs?: Crs;\n};\n\nexport const metersToPixels = (\n meters: number,\n { painter, crs = geo }: ConvertionContext\n): number => {\n const { width } = painter;\n const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);\n const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);\n const widthDistance: number = distance(zeroPoint, maxWidthPoint);\n const pxK = width / (widthDistance || 1);\n\n return Math.round(meters * pxK);\n};\n","import { Symbol } from '@evergis/sgis/es/symbols/Symbol';\nimport { Render, DynamicRender } from '@evergis/sgis/es/renders/Render';\nimport { SvgRender } from '@evergis/sgis/es/painters/DomPainter/SvgRender';\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport { Bbox } from '@evergis/sgis/es/Bbox';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { FillStyle } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { listenDomEvent } from '@evergis/sgis/es/utils/domEvent';\nimport {\n MouseEventFlags,\n mouseEvents,\n Handler,\n} from '@evergis/sgis/es/EventHandler';\n\nimport { metersToPixels } from '../../utils/metersToPixels';\n\nimport { SVGPolyProps, SVGFeaturePoly, SvgPolyPathStyles } from './types';\n\nconst defaultPathStyles: SvgPolyPathStyles = {\n strokeWidth: 2,\n strokeColor: 'rgb(0, 163, 245)',\n fillStyle: FillStyle.None,\n};\n\nexport class SVGPoly extends Symbol<SVGFeaturePoly> {\n container: HTMLDivElement = document.createElement('div');\n redrawFeatureNode: SVGPolyProps['redrawFeatureNode'];\n pathStyles?: SvgPolyPathStyles;\n circle?: SVGPolyProps['circle'];\n className?: string;\n appendToSvg?: SVGPolyProps['appendToSvg'];\n\n constructor({\n redrawFeatureNode,\n pathStyles,\n circle,\n className,\n appendToSvg,\n }: SVGPolyProps = {}) {\n super();\n this.container.style.position = 'absolute';\n this.redrawFeatureNode = redrawFeatureNode;\n this.pathStyles = { center: [0, 0], fillColor: 'none', ...pathStyles };\n this.circle = circle;\n this.className = className;\n this.appendToSvg = appendToSvg;\n }\n\n renderFunction(\n feature: SVGFeaturePoly,\n resolution: number,\n crs: Crs\n ): Render[] {\n const coordinates =\n feature instanceof Poly\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\n : feature.centroid;\n\n this.setCirclePxRaius(crs);\n this.container.innerHTML = '';\n const svg = this.setSvg(coordinates);\n svg && this.container.append(svg);\n\n feature.__dynamicSymbolRender = new DynamicRender({\n node: this.container,\n update: (bbox, resolution) =>\n this.update({ bbox, resolution, feature, crs }),\n redraw: () => {\n this.redrawFeatureNode && this.redrawFeatureNode(feature);\n },\n });\n\n this._setEventListeners(feature);\n\n return [feature.__dynamicSymbolRender];\n }\n\n setCirclePxRaius(crs: Crs) {\n if (this.circle && this.pathStyles) {\n this.pathStyles.radius =\n metersToPixels(this.circle.radius, {\n painter: this.circle.painter,\n crs,\n }) + (this.circle?.pxOffset || 0);\n }\n }\n\n update({\n bbox,\n resolution,\n feature,\n crs,\n }: {\n bbox?: Bbox;\n resolution?: number;\n feature: SVGFeaturePoly;\n crs: Crs;\n }) {\n if (!feature) return;\n\n if (!bbox) bbox = feature.__lastBbox;\n if (!resolution) resolution = feature.__lastResolution;\n\n if (!bbox || !resolution || !feature.crs.canProjectTo(bbox.crs)) return;\n\n if (feature.__lastResolution && resolution !== feature.__lastResolution) {\n const newCoordinates =\n feature instanceof Poly\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\n : feature.centroid;\n\n this.setCirclePxRaius(crs);\n this.container.innerHTML = '';\n const svg = this.setSvg(newCoordinates);\n svg && this.container.append(svg);\n }\n\n const polygon = feature.projectTo(bbox.crs);\n const radiusOffset = this.pathStyles?.radius\n ? this.pathStyles?.radius +\n (this.pathStyles?.strokeWidth ? this.pathStyles?.strokeWidth / 2 : 0)\n : 0;\n const dx =\n Math.round((polygon.bbox.xMin - bbox.xMin) / resolution) - radiusOffset;\n const dy =\n Math.round((bbox.yMax - polygon.bbox.yMax) / resolution) - radiusOffset;\n\n this.container.style.left = `${dx.toString()}px`;\n this.container.style.top = `${dy.toString()}px`;\n\n feature.__lastBbox = bbox;\n feature.__lastResolution = resolution;\n }\n\n setSvg(\n coordinates: [number, number][][] | Coordinates\n ): SVGElement | undefined {\n const { lineCap, lineJoin, miterLimit, lineDash, dashOffset } =\n this.pathStyles || {};\n const svgRender = new SvgRender({\n coordinates,\n ...defaultPathStyles,\n appendToSvg: this.appendToSvg,\n ...this.pathStyles,\n });\n\n if (this.circle) {\n svgRender._setArcNode();\n } else {\n svgRender._setPolyNode();\n }\n\n let svgElement;\n svgRender.getNode((_: null, svg: SVGElement) => {\n svgElement = svg;\n this.className && svgElement.classList.add(this.className);\n const path =\n svgElement && svgElement.querySelector(this.circle ? 'circle' : 'path');\n\n if (path) {\n path.setAttribute('stroke-linecap', lineCap || 'round');\n path.setAttribute('stroke-linejoin', lineJoin || 'round');\n path.setAttribute('stroke-miterlimit', (miterLimit || 10).toString());\n path.setAttribute('stroke-dashoffset', (dashOffset || 0).toString());\n\n if (this.circle) {\n path.setAttribute(\n 'stroke-dasharray',\n lineDash && lineDash.length > 0 ? lineDash.join(',') : ''\n );\n }\n }\n });\n\n return svgElement;\n }\n\n private _setEventListeners(dynamicFeature: SVGFeaturePoly): void {\n if (dynamicFeature.eventFlags === MouseEventFlags.None) return;\n\n const svgNode = dynamicFeature?.__dynamicSymbolRender?.node.querySelector(\n this.circle ? 'circle' : 'path'\n );\n\n Object.keys(mouseEvents).forEach(eventName => {\n if (dynamicFeature.eventFlags & mouseEvents[eventName].flag) {\n listenDomEvent(\n svgNode,\n mouseEvents[eventName].type,\n (event: Handler) => {\n dynamicFeature.fire(mouseEvents[eventName].type, {\n node: svgNode,\n browserEvent: event,\n });\n }\n );\n }\n });\n }\n}\n","import { BrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\nimport { ImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\nimport { SquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\nimport { PolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\nimport { PointSymbol } from '@evergis/sgis/es/symbols/point/Point';\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\n\nimport {\n SGisImageSymbolType,\n SGisPointSymbolType,\n SGisPolygonSymbolType,\n SGisPolylineSymbolType,\n SGisSymbolType,\n} from './types';\n\nexport function isSGisPointSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPointSymbolType {\n return (\n symbol instanceof PointSymbol ||\n symbol instanceof StaticImageSymbol ||\n symbol instanceof SquareSymbol ||\n symbol instanceof MaskedImage\n );\n}\n\nexport function isSGisImageSymbol(\n symbol: SGisSymbolType\n): symbol is SGisImageSymbolType {\n return symbol instanceof StaticImageSymbol || symbol instanceof MaskedImage;\n}\n\nexport function isSGisPolygonSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPolygonSymbolType {\n return (\n symbol instanceof PolygonSymbol ||\n symbol instanceof BrushFill ||\n symbol instanceof ImageFill\n );\n}\n\nexport function isSGisPolylineSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPolylineSymbolType {\n return symbol instanceof PolylineSymbol;\n}\n\nexport function isSGisH3Symbol(\n symbol: SGisSymbolType\n): symbol is H3Symbol {\n return symbol instanceof H3Symbol;\n}\n","import { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { H3Feature } from \"@evergis/sgis/es/features/H3Feature\";\nimport { plain } from '@evergis/sgis/es/Crs';\n\n/**\n * Моки фич для отображения превью символа\n * http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217\n */\n\nexport const viewBoxSize = 100;\n\nexport const pointFeature = new PointFeature([50, -50], { crs: plain });\n\nexport const lineFeature = new Polyline(\n [\n [0, -57],\n [26, -57],\n [40, -35],\n [60, -65],\n [74, -43],\n [100, -43],\n ],\n {\n crs: plain,\n }\n);\nexport const polygonFeature = new Polygon(\n [\n [50, -15],\n [80, -33],\n [80, -67],\n [50, -85],\n [20, -67],\n [20, -33],\n [50, -15],\n ],\n { crs: plain }\n);\nexport const h3gridFeature = new H3Feature(\n [\n [50, -15],\n [80, -33],\n [80, -67],\n [50, -85],\n [20, -67],\n [20, -33],\n [50, -15],\n ],\n { crs: plain }\n);\n\nexport const lineLegendFeature = new Polyline(\n [\n [0, -50],\n [100, -50],\n ],\n {\n crs: plain,\n }\n);\n\nexport const polygonLegendFeature = new Polygon(\n [\n [0, 0],\n [100, 0],\n [100, -100],\n [0, -100],\n ],\n { crs: plain }\n);\n\nexport const polygonMapLegendFeature = new Polygon(\n [\n [50, 0],\n [100, -25],\n [100, -75],\n [50, -100],\n [0, -75],\n [0, -25],\n ],\n { crs: plain }\n);\n\nexport const MAP_LEGEND_FEATURES = {\n polygon: polygonMapLegendFeature,\n};\n\nexport const LEGEND_FEATURES = {\n polyline: lineLegendFeature,\n polygon: polygonLegendFeature,\n h3grid: h3gridFeature,\n};\n\nexport const MOCK_FEATURES = {\n point: pointFeature,\n polyline: lineFeature,\n polygon: polygonFeature,\n h3grid: h3gridFeature,\n} as const;\n","import { plain } from '@evergis/sgis/es/Crs';\n\nimport { isSGisH3Symbol, isSGisPolygonSymbol, isSGisPolylineSymbol } from './guards';\nimport {\n LEGEND_FEATURES,\n MAP_LEGEND_FEATURES,\n MOCK_FEATURES,\n viewBoxSize,\n} from './mockFeatures';\nimport { SGisSymbolType } from './types';\n\nexport function getSymbolRenders(\n symbol: SGisSymbolType,\n size: number = viewBoxSize,\n features: Partial<typeof MOCK_FEATURES> = {}\n) {\n const resolution = viewBoxSize / size;\n const featuresToRender = { ...MOCK_FEATURES, ...features };\n\n if (isSGisPolygonSymbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.polygon,\n resolution,\n plain\n );\n }\n\n if (isSGisPolylineSymbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.polyline,\n resolution,\n plain\n );\n }\n\n if (isSGisH3Symbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.h3grid,\n resolution,\n plain\n );\n }\n\n return symbol.renderFunctionAsync(featuresToRender.point, resolution, plain);\n}\n\nexport const getMapLegendSymbolRenders = (\n symbol: SGisSymbolType,\n size: number = viewBoxSize\n) => getSymbolRenders(symbol, size, MAP_LEGEND_FEATURES);\n\nexport const getLegendSymbolRenders = (\n symbol: SGisSymbolType,\n size: number = viewBoxSize\n) => getSymbolRenders(symbol, size, LEGEND_FEATURES);\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { RenderForCanvas } from \"@evergis/sgis/es/painters/DomPainter/types\";\n\nexport function renderSymbolToCanvas(renders: Render[], canvas: Canvas) {\n renders.forEach(render => {\n canvas.draw(<RenderForCanvas>render);\n });\n}\n","import { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\nimport { PointSymbol as SPointSymbol } from '@evergis/sgis/es/symbols/point/Point';\nimport { SquareSymbol as SSquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\nimport { Color } from '@evergis/color';\nimport { StaticImageSymbol as SStaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\n\nimport { getParameterValue } from '../core/classification';\n\nimport {\n ClassifyAble,\n isPolygonHasHatchBrush,\n isPolygonHasPatternBrush,\n MaskedImageSymbol,\n Offset,\n PointSymbol,\n PolygonSymbol,\n PolylineSymbols,\n SquareSymbol,\n StaticImageSymbol,\n StyleSymbolType,\n} from '../core/style';\n\nimport {\n SGisBrushFill,\n SGisImageFill,\n SGisPolygonSymbol,\n SGisPolylineSymbol,\n} from './Evergis';\n\nimport { SGisSymbolType } from './types';\n\n// TODO create classes from unClassified symbols only\nexport function deserializeSymbol(\n symbol: StyleSymbolType\n): SGisSymbolType | null {\n switch (symbol.type) {\n case 'circlePointSymbol':\n return deserializePointSymbol(symbol);\n case 'squarePointSymbol':\n return deserializeSquareSymbol(symbol);\n case 'maskedImagePointSymbol':\n return deserializeMaskedImageSymbol(symbol);\n case 'imagePointSymbol':\n return deserializeImagePointSymbol(symbol);\n case 'polygonSymbol':\n return deserializePolygonSymbol(symbol);\n case 'simplePolylineSymbol':\n case 'polylineSymbol':\n return deserializePolylineSymbol(symbol);\n default:\n return null;\n }\n}\n\nfunction deserializePointSymbol(symbol: PointSymbol) {\n // @ts-ignore\n return new SPointSymbol(deserializePointSymbolParams(symbol));\n}\n\nfunction deserializeSquareSymbol(symbol: SquareSymbol) {\n return new SSquareSymbol({\n ...deserializePointSymbolParams(symbol),\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n });\n}\n\nfunction deserializeMaskedImageSymbol(symbol: MaskedImageSymbol) {\n return new MaskedImage({\n ...symbol,\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n // @ts-ignore\n width: getParameterValue(symbol.width),\n // @ts-ignore\n height: getParameterValue(symbol.height),\n // @ts-ignore\n anchorPoint: deserializeAnchor(symbol.offset),\n // @ts-ignore\n imageSource: deserializeBase64(symbol.image),\n // @ts-ignore\n maskSource: deserializeBase64(symbol.imageMask),\n // @ts-ignore\n maskColor: deserializeColor(getParameterValue(symbol.maskedColor)),\n });\n}\n\nfunction deserializeImagePointSymbol(symbol: StaticImageSymbol) {\n return new SStaticImageSymbol({\n ...symbol,\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n // @ts-ignore\n width: getParameterValue(symbol.width),\n // @ts-ignore\n height: getParameterValue(symbol.height),\n // @ts-ignore\n anchorPoint: deserializeAnchor(symbol.offset),\n // @ts-ignore\n source: deserializeBase64(symbol.image),\n });\n}\n\nfunction deserializePolygonSymbol(symbol: PolygonSymbol) {\n if (isPolygonHasPatternBrush(symbol)) {\n return new SGisImageFill(symbol);\n }\n\n if (isPolygonHasHatchBrush(symbol)) {\n return new SGisBrushFill(symbol);\n }\n\n return new SGisPolygonSymbol(symbol);\n}\n\nfunction deserializePolylineSymbol(symbol: PolylineSymbols) {\n return new SGisPolylineSymbol(symbol);\n}\n\nfunction deserializePointSymbolParams({\n size,\n offset,\n strokeColor,\n strokeWidth,\n fillColor,\n}: PointSymbol | SquareSymbol) {\n return {\n size: getParameterValue(size as ClassifyAble<number>),\n offset: deserializeAnchor(offset as Offset),\n strokeWidth: getParameterValue(strokeWidth as ClassifyAble<number>),\n strokeColor: deserializeColor(\n getParameterValue(strokeColor as ClassifyAble<string>)\n ),\n fillColor: deserializeColor(\n getParameterValue(fillColor as ClassifyAble<string>)\n ),\n };\n}\n\nfunction deserializeBase64(base: string) {\n return `data:image/png;base64,${base}`;\n}\n\nexport function deserializeAnchor(offset: Offset) {\n // @ts-ignore\n return offset.map(getParameterValue);\n}\n\nfunction deserializeColor(color: string): string | null {\n return color ? new Color(color).toString() : null;\n}\n","import { SGisSymbolType } from './types';\nimport { isSGisImageSymbol, isSGisPointSymbol } from './guards';\n\nimport { clamp } from '../utils/math';\n\nexport const clampSymbol = (\n symbol: SGisSymbolType,\n min: number,\n max: number\n): SGisSymbolType => {\n if (isSGisImageSymbol(symbol)) {\n symbol.width = clamp(symbol.width, min, max);\n symbol.height = clamp(symbol.height, min, max);\n } else if (isSGisPointSymbol(symbol)) {\n symbol.size = clamp(symbol.size, min, max);\n }\n\n return symbol;\n};\n\nexport function centerAlignSymbol(symbol: SGisSymbolType) {\n if (isSGisImageSymbol(symbol)) {\n symbol.anchorPoint = [symbol.width / 2, symbol.height / 2];\n } else if (isSGisPointSymbol(symbol)) {\n symbol.offset = [0, 0];\n }\n\n return symbol;\n}\n\nexport const adjustSymbol = (\n symbol: SGisSymbolType,\n { size }: { size: number }\n) => centerAlignSymbol(clampSymbol(symbol, 0, size));\n","import { FeatureDc, GeometryDc, GeometryType } from '@evergis/api';\nimport { MultiPoint } from '@evergis/sgis/es/features/MultiPoint';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\n\nimport { CRS_MAP, SrId } from '../crs';\n\nimport { FeatureAttribute } from '../attributes';\nimport { getFeatureAttributes } from '../attributes/utils';\n\nimport { StyleSymbolType } from '../style';\n\nimport {\n selectedPoint,\n selectedPolygon,\n selectedPolyline,\n} from '../../symbols';\n\nexport type FeatureDCExtened = FeatureDc & {\n layer?: string;\n};\n\nexport class EvergisFeature {\n public id?: string | null = null;\n public displayName?: string | null = null;\n public geometry?: GeometryDc | null = null;\n\n public layerName?: string | null = null;\n public layerAlias?: string | null = null;\n public attributes?: FeatureAttribute[] | null = null;\n public symbol?: StyleSymbolType | null = null;\n\n constructor(feature: FeatureDCExtened) {\n this.id = feature.id;\n this.displayName = feature.id;\n this.geometry = feature.geometry;\n\n this.layerName = feature.layer;\n this.layerAlias = feature.layer;\n this.attributes = getFeatureAttributes(feature.attributes);\n }\n\n public sGisFeature() {\n if (!this.geometry || !this.symbol) {\n return null;\n }\n\n // @ts-ignore\n const { type, coordinates, sr } = this.geometry;\n const crs = CRS_MAP[sr as SrId];\n\n if (!crs) {\n return null;\n }\n\n switch (type) {\n case GeometryType.Point:\n return new PointFeature(coordinates, {\n symbol: selectedPoint,\n crs,\n });\n case GeometryType.Multipoint:\n return new MultiPoint(coordinates, {\n symbol: selectedPoint,\n crs,\n });\n case GeometryType.Polyline:\n return new Polyline(coordinates, {\n symbol: selectedPolyline,\n crs,\n });\n case GeometryType.Polygon:\n return new Polygon(coordinates, {\n symbol: selectedPolygon,\n crs,\n });\n default:\n return null;\n }\n }\n\n public extent() {\n const feature = this.sGisFeature();\n\n return feature && feature.bbox;\n }\n}\n","import { ConditionAttributes, ConditionEvaluator } from '@evergis/condition';\n\nexport function evaluateCondition(\n condition: string,\n attributes: ConditionAttributes\n) {\n try {\n const evaluator = new ConditionEvaluator(attributes);\n const result = evaluator.evaluate(condition);\n\n if (result instanceof Error) {\n return null;\n }\n\n return result;\n } catch {\n return null;\n }\n}\n","import { evaluateCondition } from './evaluateCondition';\n\nimport { FeatureAttribute, FeatureAttributeValue } from '../attributes';\n\nimport {\n ClassificationCondition,\n isParameterByAttribute,\n} from '../classification';\n\nimport {\n ClassifiedParameterValue,\n EvergisStyle,\n ParameterByAttributeValue,\n ParameterByAttributeValues,\n ParameterValueWithSymbol,\n Style,\n StyleSymbolType,\n} from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nfunction getAttributeValue(\n attributes: FeatureAttribute[],\n attributeName: string\n) {\n const attributeMeta = attributes.find(({ name }) => name === attributeName);\n\n return attributeMeta ? attributeMeta.value : null;\n}\n\nexport const getAttributeNameFromCondition = (\n condition: string\n): string | null => new ClassificationCondition(condition).attributeName;\n\nexport const getAttributeNameFromClassified = (\n values: ParameterByAttributeValue<ParameterValueWithSymbol>[]\n): string | null =>\n values.length > 0 ? getAttributeNameFromCondition(values[0].condition) : null;\n\nfunction findFeatureValue(\n parameterValues: ParameterByAttributeValues,\n [name, value]: [string, FeatureAttributeValue | undefined]\n) {\n return value !== null\n ? parameterValues.find(\n ({ condition }) =>\n value !== undefined && evaluateCondition(condition, { [name]: value })\n )\n : null;\n}\n\nfunction extractValuesAttribute(\n parameterValues: ParameterByAttributeValues,\n attributes: FeatureAttribute[]\n): [string, FeatureAttributeValue | undefined] {\n const name = getAttributeNameFromClassified(parameterValues) || '';\n const value = name && getAttributeValue(attributes, name);\n\n return [name, value];\n}\n\nfunction evaluateFeatureSymbol(attributes: FeatureAttribute[]) {\n // @ts-ignore\n function calc(\n result: StyleSymbolType,\n [parameterName, parameterValue]: [string, ClassifiedParameterValue]\n ) {\n let newParameterValue;\n\n if (isParameterByAttribute(parameterValue)) {\n const [attributeName, attributeValue] = extractValuesAttribute(\n parameterValue.values,\n attributes\n );\n const featureValue = findFeatureValue(parameterValue.values, [\n attributeName,\n attributeValue,\n ]);\n\n newParameterValue = featureValue\n ? featureValue.value\n : parameterValue.defaultValue;\n } else if (isObject(parameterValue)) {\n // @ts-ignore\n newParameterValue = Object.entries(parameterValue).reduce(\n calc,\n parameterValue\n );\n }\n\n return newParameterValue !== undefined\n ? {\n ...result,\n [parameterName]: newParameterValue,\n }\n : result;\n }\n\n return calc;\n}\n\nexport function findChildFeatureStyle(\n childStyles: Style[],\n attributes: FeatureAttribute[]\n) {\n return (\n (childStyles || []).find(({ condition }) => {\n const attributeName =\n condition && getAttributeNameFromCondition(condition);\n const attributeValue =\n attributeName && getAttributeValue(attributes, attributeName);\n\n if (condition && attributeName && attributeValue !== undefined) {\n return evaluateCondition(condition, {\n [attributeName]: attributeValue,\n });\n }\n\n return false;\n }) || null\n );\n}\n\nexport function findChildFeatureSymbol(\n childStyles: Style[],\n attributes: FeatureAttribute[]\n) {\n const featureStyle = findChildFeatureStyle(childStyles, attributes);\n\n return featureStyle ? featureStyle.symbol : null;\n}\n\nexport function getFeatureSymbol(\n style: EvergisStyle,\n attributes: FeatureAttribute[]\n): StyleSymbolType | null {\n if (!style || !style.symbol) {\n return null;\n }\n\n if (style.children !== null) {\n return findChildFeatureSymbol(style.children, attributes) || style.symbol;\n }\n\n return Object.entries(style.symbol).reduce(\n evaluateFeatureSymbol(attributes),\n style.symbol\n );\n}\n","import { FeatureLayerServiceInfoDc, ServiceInfoDc } from '@evergis/api';\n\nimport { LayerAttribute, formatAttributeValue } from '../attributes';\nimport { getLayerAttributes, mergeAttributes } from '../attributes/utils';\n\nimport { EvergisFeature, getFeatureSymbol } from '../feature';\n\nimport { EvergisStyle } from '../style';\n\nexport class EvergisLayer {\n public readonly name: string | null = null;\n private readonly titleAttribute: string | null = null;\n private readonly alias: string | null = null;\n private readonly attributes: LayerAttribute[] | null = null;\n private readonly style: EvergisStyle | null = null;\n\n constructor(service: ServiceInfoDc) {\n const evergisService = service as FeatureLayerServiceInfoDc;\n const { name, alias, style, layerDefinition } = evergisService;\n\n this.name = name;\n this.alias = alias || name;\n this.attributes = getLayerAttributes(layerDefinition);\n this.style = (style && new EvergisStyle(style)) || null;\n this.titleAttribute =\n (layerDefinition && layerDefinition.titleAttribute) || null;\n }\n\n public evaluateFeature(feature: EvergisFeature): EvergisFeature {\n feature.attributes = mergeAttributes(\n feature.attributes || [],\n this.attributes || []\n );\n\n feature.symbol =\n this.style && getFeatureSymbol(this.style, feature.attributes);\n\n feature.layerAlias = this.alias;\n\n const titleAttribute = (feature.attributes || []).find(\n ({ name }) => name === this.titleAttribute\n );\n\n const displayName =\n (titleAttribute && formatAttributeValue(titleAttribute)[0].value) ||\n feature.id;\n\n feature.displayName = displayName ? `${displayName}` : feature.id;\n\n return feature;\n }\n}\n\nconst findFeatureLayer = (feature: EvergisFeature) => (layer: EvergisLayer) =>\n layer.name === feature.layerName;\n\nexport const evaluateFeature = (layers: EvergisLayer[]) => (\n feature: EvergisFeature\n) => {\n const featureLayer = layers.find(findFeatureLayer(feature));\n\n return featureLayer ? featureLayer.evaluateFeature(feature) : feature;\n};\n","import { getClassificationAttribute } from '../attributes/utils';\n\nimport { ExtendedClassification } from '../classification';\nimport { LegendConfig, LegendItem, LegendValueType } from './types';\n\nconst OTHERS_TITLE = 'Другое';\n\nexport const createLegendItem = ({\n attributes,\n renderTitle,\n skipDefaultValue,\n reverse,\n}: LegendConfig) => (classification: ExtendedClassification): LegendItem => {\n const {\n defaultTitle,\n defaultValue,\n values,\n attribute: attributeName,\n parameter,\n } = classification;\n\n const attribute =\n attributeName && attributes\n ? getClassificationAttribute(attributeName, attributes)\n : undefined;\n\n const defaultLegendValue: LegendValueType = {\n title: defaultTitle || OTHERS_TITLE,\n parameterValue: defaultValue,\n };\n\n const legendValues = values.map((value, index) => ({\n title: renderTitle && renderTitle({ ...value, attribute }, index),\n parameterValue: value.parameterValue,\n }));\n\n const withDefault = skipDefaultValue\n ? legendValues\n : [...legendValues, defaultLegendValue];\n\n const reversedValues = reverse ? [...withDefault].reverse() : withDefault;\n\n return {\n title: (attribute && attribute.alias) || attributeName,\n attribute,\n parameter,\n values: reversedValues,\n } as LegendItem;\n};\n","import { createLegendItem } from './createLegendItem';\n\nimport { unClassify } from '../classification';\n\nimport { EvergisStyle } from '../style';\nimport { LayerLegend, LegendConfig } from './types';\n\nexport function createStyleLegend(\n style: EvergisStyle,\n config: LegendConfig\n): LayerLegend | null {\n const { classificationManager, symbol } = style;\n\n const items = classificationManager.filter(({ parameter }) =>\n config.parameters && parameter\n ? config.parameters.includes(parameter)\n : true\n );\n\n if (items.length === 0) {\n return null;\n }\n\n return {\n symbol: unClassify(symbol),\n items: items.map(createLegendItem(config)),\n };\n}\n","import {\n ClassificationClass,\n isRangeClass,\n isUniqueClass,\n printRangeClass,\n} from '../classification';\n\nexport function createValueTitle(\n value: ClassificationClass,\n index: number\n): string {\n if (value.title) return value.title;\n\n if (isRangeClass(value)) return printRangeClass(value, index);\n if (isUniqueClass(value)) return value.uniqueValue;\n\n return '';\n}\n","import { softEquals } from '@evergis/sgis/es/utils/math';\n\nimport { numberWithSpaces } from '../utils/format';\n\nexport function formatArea(num: number): string {\n let result = num;\n let measure = 'м²';\n\n if (num >= 10000000) {\n result = num / 1000000;\n measure = 'км²';\n } else if (num >= 10000) {\n result = num / 10000;\n measure = 'га';\n }\n\n return `${numberWithSpaces(result)} ${measure}`;\n}\n\nexport function formatLength(num: number): string {\n let result = num;\n let measure = 'м';\n\n if (num > 10000) {\n result = num / 1000;\n measure = 'км';\n }\n\n return `${numberWithSpaces(result)} ${measure}`;\n}\nexport function formatPolygonMeasure(area: number, perimiter: number): string {\n return `S : ${formatArea(area)} P : ${formatLength(perimiter)}`;\n}\n\nexport function isPolylineLikePolygon(\n rings: [number, number][][],\n resolution: number\n): boolean {\n if (rings[0].length <= 3) {\n return false;\n }\n\n const coords = rings[0];\n const firstPoint = coords[0];\n const lastPoint = coords[coords.length - 1];\n const distance = resolution * 2;\n\n return (\n softEquals(firstPoint[0], lastPoint[0], distance) &&\n softEquals(firstPoint[1], lastPoint[1], distance)\n );\n}\n","export function getScale(scale: number): number {\n const scales = [1, 2, 5];\n\n for (let x = 0; x < 21; x++) {\n for (let y = 0; y < scales.length; y++) {\n const result = Math.pow(10, x) * scales[y];\n\n if (result > scale) {\n return result;\n }\n }\n }\n\n return 1;\n}\n","import { useMemo } from 'react';\n\nimport {\n createStyleLegend,\n EvergisStyle,\n LayerLegend,\n LegendConfig,\n} from '../../core';\n\nexport const useLegend = (\n style?: EvergisStyle,\n config?: LegendConfig\n): LayerLegend | null =>\n useMemo(() => {\n if (!style || !(config && config.attributes)) return null;\n\n return createStyleLegend(style, config);\n }, [style, config]);\n","import { FeatureLayerServiceInfoDc } from '@evergis/api';\n\nimport { useLegend } from './useLegend';\n\nimport {\n createValueTitle,\n EvergisStyle,\n LayerAttributes,\n LayerLegend,\n LegendConfig,\n} from '../../core';\n\nconst DEFAULT_LEGEND_CONFIG: LegendConfig = {\n renderTitle: createValueTitle,\n};\n\nexport const useLayerLegend = (\n layer?: FeatureLayerServiceInfoDc,\n config?: LegendConfig\n): LayerLegend | null => {\n const { style, layerDefinition } = layer || {};\n const { attributes } = layerDefinition || {};\n\n const styleProxy = style && new EvergisStyle(style);\n\n return useLegend(styleProxy, {\n attributes: attributes as LayerAttributes,\n ...DEFAULT_LEGEND_CONFIG,\n ...config,\n });\n};\n","import { FeatureLayerServiceInfoDc } from '@evergis/api';\n\nimport { useLayerLegend } from './useLayerLegend';\n\nimport { LegendConfig } from '../../core';\n\nexport const useMapLegend = (\n layer?: FeatureLayerServiceInfoDc,\n config?: LegendConfig\n) => {\n const legend = useLayerLegend(layer, config);\n\n if (!legend) {\n return null;\n }\n\n const firstLegend = legend.items[0];\n\n return {\n symbol: legend.symbol,\n item: firstLegend,\n };\n};\n","import { useLegendContext } from '../../contexts';\n\nimport {\n applyParameterValue,\n ClassificationParameterExtended,\n ParameterValueWithSymbol,\n} from '../../core';\n\nimport { adjustSymbol, deserializeSymbol, SGisSymbolType } from '../../symbols';\n\nexport type LegendSymbolPart = {\n parameter: ClassificationParameterExtended;\n parameterValue: ParameterValueWithSymbol;\n};\n\nconst LEGEND_SYMBOL_MAX_SIZE = 32;\n\nexport const useLegendValueSymbol = ({\n parameter,\n parameterValue,\n}: LegendSymbolPart) => {\n const symbol = useLegendContext();\n const valueSymbol =\n // @ts-ignore\n symbol && applyParameterValue(symbol, parameter, parameterValue);\n let sGisSymbol: SGisSymbolType | null = null;\n\n try {\n sGisSymbol = valueSymbol && deserializeSymbol(valueSymbol);\n } catch (e) {}\n\n return (\n sGisSymbol && adjustSymbol(sGisSymbol, { size: LEGEND_SYMBOL_MAX_SIZE - 1 })\n );\n};\n","import { MutableRefObject, useEffect } from 'react';\nimport { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { Render } from '@evergis/sgis/es/renders/Render';\n\nimport {\n getSymbolRenders,\n renderSymbolToCanvas,\n SGisSymbolType,\n} from '../symbols';\n\nexport interface UseSymbolParams {\n symbol: SGisSymbolType;\n render?: (symbol: SGisSymbolType, size: number) => Promise<Render[]>;\n size?: number;\n maxWidth?: number;\n}\n\nexport const DEFAULT_SYMBOL_SIZE = 16;\n\nexport function useSymbol(\n {\n symbol,\n size = DEFAULT_SYMBOL_SIZE,\n render = getSymbolRenders,\n maxWidth,\n }: UseSymbolParams,\n canvasRef: MutableRefObject<Canvas | null>\n) {\n useEffect(() => {\n if (canvasRef.current !== null && symbol !== undefined) {\n const canvas = canvasRef.current;\n setCanvasSize(canvas, size, maxWidth);\n\n render(symbol, size).then(renders => {\n renderSymbolToCanvas(renders, canvas);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [symbol, size, maxWidth]);\n}\n\nfunction setCanvasSize(canvas: Canvas, size: number, maxWidth?: number) {\n canvas.node.height = size;\n canvas.node.width = maxWidth ? Math.min(size, maxWidth) : size;\n}\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { useCallback, useRef } from 'react';\n\nexport function useCanvas() {\n const canvas = useRef<Canvas | null>(null);\n const ref = useCallback((node: HTMLCanvasElement | null) => {\n if (node !== null) {\n canvas.current = new Canvas(node);\n } else {\n canvas.current = null;\n }\n }, []);\n\n return { canvas, ref };\n}\n","import { useEffect } from 'react';\n\nexport function useMount({ onMount, onUnmount }: UseMountOptions) {\n useEffect(() => {\n onMount && onMount();\n return onUnmount;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\ntype UseMountOptions = {\n onMount?: () => void;\n onUnmount?: () => void;\n};\n","import { useMemo, useRef } from 'react';\n\nimport { useMount } from './useMount';\n\nexport function useProperty<T, D extends unknown[] | []>(\n { factory, destructor, update }: UsePropertyOptions<T, D>,\n deps: D = [] as D\n): T {\n const propRef = useRef<T>();\n\n useMount({\n onUnmount() {\n if (propRef.current && destructor) {\n destructor(propRef.current);\n }\n },\n });\n\n return useMemo(() => {\n if (propRef.current) {\n if (update) {\n const newProp = update(propRef.current, deps, { factory, destructor });\n if (newProp) propRef.current = newProp;\n } else if (destructor) {\n destructor(propRef.current);\n }\n } else {\n if (!update || !propRef.current) {\n propRef.current = factory(deps);\n }\n }\n\n return propRef.current;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\ntype UsePropertyOptions<T, D> = {\n factory: (deps: D) => T;\n destructor?: (prop: T) => void;\n\n /**\n * Allows to update useProperty return value.\n * If that property is not exist then each update of deps call factory\n */\n update?: (\n prop: T,\n deps: D,\n propertyOptions: Omit<UsePropertyOptions<T, D>, 'update'>\n ) => void | T;\n};\n","import { useEffect } from 'react';\n\nexport function useUpdate<Deps extends Array<unknown>>({\n onUpdate,\n shouldUpdate,\n deps,\n}: UseUpdateOptions<Deps>) {\n useEffect(() => {\n if (!shouldUpdate || shouldUpdate()) {\n onUpdate();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\ntype UseUpdateOptions<Deps> = {\n onUpdate: () => void;\n shouldUpdate?: () => boolean;\n deps?: Deps;\n};\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nimport { useMapContext } from '../contexts';\n\nexport function useLayerOrder(layer: Layer, zIndex: number) {\n const { map } = useMapContext();\n\n useUpdate({\n onUpdate: () => map.insertLayer(layer, zIndex),\n deps: [zIndex, layer],\n });\n}\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nexport function useLayerVisibility(layer: Layer, isDisplayed: boolean = true) {\n useUpdate({\n shouldUpdate: () => layer.isDisplayed !== isDisplayed,\n onUpdate: () => (layer.isDisplayed = isDisplayed),\n deps: [isDisplayed, layer],\n });\n}\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nexport function useLayerOpacity(layer: Layer, opacity: number = 1) {\n useUpdate({\n shouldUpdate: () => layer.opacity !== opacity,\n onUpdate: () => (layer.opacity = opacity),\n deps: [opacity, layer],\n });\n}\n","import { EvergisDynamicLayer, EvergisDynamicLayerParams } from '@evergis/api';\nimport { Layer } from \"@evergis/sgis/es/layers/Layer\";\n\nimport { useProperty } from './useProperty';\nimport { useLayerOrder } from './useLayerOrder';\nimport { LayerProps } from './LayerProps';\nimport { useLayerVisibility } from './useLayerVisibility';\n\nimport { useEvergisContext, useMapContext } from '../contexts';\nimport { useLayerOpacity } from './useLayerOpacity';\n\nexport function useEvergisDynamicLayer({\n name,\n zIndex,\n style,\n condition,\n isDisplayed,\n opacity,\n dataFilterId,\n onLoadStart,\n onLoadEnd,\n}: EvergisDynamicLayerProps) {\n const api = useEvergisContext();\n const { map } = useMapContext();\n\n const layer = useProperty(\n {\n factory: () => new EvergisDynamicLayer({ name, condition, style, dataFilterId, onLoadStart, onLoadEnd }, api),\n destructor: layer => map.indexOf(layer as unknown as Layer) !== -1 && map.removeLayer(layer as unknown as Layer),\n update: (layer, [name, style, condition, dataFilterId]) => {\n layer.name = name;\n layer.style = style;\n layer.condition = condition;\n layer.dataFilterId = dataFilterId;\n },\n },\n [name, style, condition, dataFilterId, onLoadStart, onLoadEnd]\n );\n\n useLayerOrder(layer as unknown as Layer, zIndex);\n useLayerVisibility(layer as unknown as Layer, isDisplayed);\n useLayerOpacity(layer as unknown as Layer, opacity);\n\n return layer;\n}\n\nexport type EvergisDynamicLayerProps = EvergisDynamicLayerParams & LayerProps;\n","import { EvergisTileLayer, EvergisTileLayerParams } from '@evergis/api';\nimport { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { LayerProps } from './LayerProps';\nimport { useLayerOrder } from './useLayerOrder';\nimport { useLayerVisibility } from './useLayerVisibility';\n\nimport { useEvergisContext, useMapContext } from '../contexts';\nimport { useEffect, useMemo } from 'react';\n\nexport type EvergisTileLayerProps = EvergisTileLayerParams & LayerProps & {\n sourceUrl?: string;\n};\n\nexport function useEvergisTileLayer({\n name,\n sourceUrl,\n subDomains,\n zIndex,\n isDisplayed,\n crs,\n opacity,\n}: EvergisTileLayerProps) {\n const api = useEvergisContext();\n const { map } = useMapContext();\n const layer = useMemo(\n () => new EvergisTileLayer({ name, sourceUrl, subDomains, crs, opacity }, api),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [name, sourceUrl, subDomains, crs, opacity]\n );\n\n useEffect(\n () => () => {\n map.indexOf((layer as unknown) as Layer) !== -1 &&\n map.removeLayer((layer as unknown) as Layer);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [layer]\n );\n\n useLayerOrder((layer as unknown) as Layer, zIndex);\n useLayerVisibility((layer as unknown) as Layer, isDisplayed);\n\n return layer;\n}\n","import { Feature } from '@evergis/sgis/es/features/Feature';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\n\nimport { useLayerOrder } from './useLayerOrder';\nimport { LayerProps } from './LayerProps';\nimport { useLayerVisibility } from './useLayerVisibility';\nimport { useProperty } from './useProperty';\n\nimport { useMapContext } from '../contexts';\n\nexport function useFeatureLayer({\n zIndex,\n isDisplayed = true,\n features,\n}: FeatureLayerProps) {\n const { map } = useMapContext();\n\n const layer = useProperty(\n {\n factory: () => new FeatureLayer({ features }),\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\n update: (layer, [features]) => {\n layer.features = features;\n },\n },\n [features]\n );\n\n useLayerOrder(layer, zIndex);\n useLayerVisibility(layer, isDisplayed);\n\n return layer;\n}\n\nexport type FeatureLayerProps = {\n features: Feature[];\n} & LayerProps;\n","import { useCallback, useEffect } from 'react';\nimport { BboxChangeEndEvent, BboxChangeEvent, Map } from '@evergis/sgis/es/Map';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapBboxChange(\n onBboxChange?: (mapState: MapState) => void,\n force?: boolean\n) {\n const { map } = useMapContext();\n\n const event = force ? BboxChangeEvent : BboxChangeEndEvent;\n\n const handleBboxChange = useCallback(() => {\n onBboxChange && onBboxChange(getMapState(map));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onBboxChange, map, event]);\n\n useEffect(() => {\n map.on(event.type, handleBboxChange);\n\n return () => {\n map.off(event.type, handleBboxChange);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleBboxChange, event]);\n}\n\nexport type MapState = {\n position: Coordinates;\n resolution: number;\n};\n\nexport function getMapState(map: Map): MapState {\n return {\n position: map.position.slice(0) as Coordinates,\n resolution: map.resolution,\n };\n}\n","import { MapResize } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { useCallback, useEffect } from 'react';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapResize(onResize?: (size: number[]) => void) {\n const { painter } = useMapContext();\n\n const handleMapResize = useCallback(() => {\n onResize && onResize([painter.width, painter.height]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onResize, painter]);\n\n useEffect(() => {\n painter.on(MapResize.type, handleMapResize);\n\n return () => {\n painter.off(MapResize.type, handleMapResize);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleMapResize]);\n}\n","import { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\nimport {\n EvergisDynamicLayer,\n EvergisLayer,\n isEvergisDynamicLayer,\n} from '@evergis/api';\nimport { useCallback, useMemo, useState } from 'react';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { useMount } from './useMount';\n\nimport { useMapContext } from '../contexts';\n\ntype BboxCoordinates = [number, number, number, number];\n\nexport type Envelopes = {\n [layerName: string]: BboxCoordinates;\n};\n\nexport type MapPickResult = {\n clickPoint: Coordinates;\n envelopes: Envelopes;\n imageRectangle: [number, number, number, number];\n extentSr: number;\n};\n\nexport const useMapPick = (): MapPickResult | undefined => {\n const { map, painter } = useMapContext();\n const [geometryParams, setGeometryParams] = useState<MapPickResult>();\n\n const evergisLayers = useMemo(() => map.layers as unknown as EvergisLayer[], [\n map.layers,\n ]);\n\n const pick = useCallback(\n (event: sGisEvent) => {\n if (!(event instanceof sGisClickEvent)) {\n return;\n }\n\n const imageRectangle = [0, 0, painter.width, painter.height];\n const [x, y] = painter.getPxPosition(event.point.position);\n\n setGeometryParams({\n clickPoint: [Math.round(x), Math.round(y)],\n envelopes: collectLayerEnvelopes(evergisLayers),\n imageRectangle,\n extentSr: map.crs.wkid,\n } as MapPickResult);\n },\n\n [painter, evergisLayers, map.crs.wkid]\n );\n\n useMount({\n onMount: () => map.on('click', pick),\n onUnmount: () => map.off('click', pick),\n });\n\n return geometryParams;\n};\n\nfunction getLayerBboxCoors(layer: EvergisDynamicLayer): BboxCoordinates {\n return (\n // @ts-ignore TODO _currentRender prop on DynamicLayer private\n layer._currentRender &&\n // @ts-ignore\n layer._currentRender.bbox &&\n // @ts-ignore\n layer._currentRender.bbox.coordinates\n );\n}\n\nfunction collectLayerEnvelopes(layers: EvergisLayer[]) {\n let envelopes: Envelopes = {};\n\n for (const layer of layers) {\n if (!isEvergisDynamicLayer(layer)) {\n continue;\n }\n\n envelopes[layer.name] = getLayerBboxCoors(layer);\n }\n\n return envelopes;\n}\n","import { useCallback, useReducer } from 'react';\n\nimport { getMapState, MapState, useMapBboxChange } from './useMapBboxChange';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapState(force?: boolean) {\n const { map } = useMapContext();\n\n const [, dispatch] = useReducer(mapStateReducer, undefined, () =>\n getMapState(map)\n );\n\n const handleBboxChange = useCallback(dispatch, [dispatch]);\n\n useMapBboxChange(handleBboxChange, force);\n\n return getMapState(map);\n}\n\nfunction mapStateReducer(_: MapState, mapState: MapState): MapState {\n return mapState;\n}\n","import { useMemo } from 'react';\nimport { Bbox } from '@evergis/sgis/es/Bbox';\n\nimport { useMapState } from './useMapState';\nimport { MapState } from './useMapBboxChange';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapView(): MapView {\n const { map, painter } = useMapContext();\n const { position, resolution } = useMapState();\n\n const level = useMemo(() => {\n const index = map.tileScheme.getLevel(resolution);\n\n if (index === void 0 && index === null) return;\n\n return map.tileScheme.levels[index].zIndex;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolution]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const bbox = useMemo(() => painter.bbox, [position, resolution]);\n\n return {\n position,\n resolution,\n level,\n bbox,\n };\n}\n\nexport function useMapLevel() {\n const { map } = useMapContext();\n const { resolution } = useMapState(true);\n\n return useMemo(() => {\n const index = map.tileScheme.getLevel(resolution);\n\n if (index === void 0 && index === null) return;\n\n return map.tileScheme.levels[index].zIndex;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolution]);\n}\n\ntype MapView = MapState & {\n level?: number;\n bbox: Bbox;\n};\n","import { useRef } from 'react';\n\nimport { useMount } from './useMount';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapWrapper() {\n const { painter } = useMapContext();\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n useMount({\n onMount: () => (painter.wrapper = wrapperRef.current),\n onUnmount: () => (painter.wrapper = null),\n });\n\n return wrapperRef;\n}\n","import { LevelDefinition } from '@evergis/sgis/es/TileScheme';\nimport { Map } from '@evergis/sgis/es/Map';\nimport { useEffect } from 'react';\n\nimport { useMapContext } from '../contexts';\n\nconst byScale = (scale: number) => ({ zIndex }: LevelDefinition) =>\n zIndex === scale;\n\nexport const useMaxMinScale = (\n minScale?: number,\n maxScale?: number,\n currentPosition?: [number, number],\n currentResolution?: number\n) => {\n const { map } = useMapContext();\n\n useEffect(() => {\n const levels = map.tileScheme.levels;\n\n if (maxScale !== undefined) {\n const { resolution } = levels.find(byScale(maxScale)) || {\n resolution: -1,\n };\n map.minResolution = resolution;\n }\n if (minScale !== undefined) {\n const { resolution } = levels.find(byScale(minScale)) || {\n resolution: -1,\n };\n map.maxResolution = resolution;\n }\n\n if (minScale !== undefined || maxScale !== undefined) {\n updateMapResolution(map, currentPosition, currentResolution);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [map, minScale, maxScale]);\n};\n\nexport const updateMapResolution = (\n map: Map,\n currentPosition?: [number, number],\n currentResolution?: number\n) => {\n if (currentPosition && currentResolution) {\n const newResolution = Math.min(\n Math.max(currentResolution, map.minResolution || 0),\n map.maxResolution || Number.MAX_VALUE\n );\n\n map.animateTo(currentPosition, newResolution);\n }\n};\n","import { useMemo } from 'react';\nimport { distance } from '@evergis/sgis/es/geotools';\n\nimport { useMapContext } from '../contexts';\n\nfunction getScale(scale: number): number {\n const pow10 = Math.pow(10, (Math.floor(scale) + '').length - 1);\n const d = scale / pow10;\n\n return pow10 * (d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1);\n}\n\nfunction useCorrectedResolution(resolution: number): number {\n const { painter } = useMapContext();\n const {\n height,\n width,\n bbox: { xMin, xMax, yMin, yMax, crs },\n } = painter;\n\n return useMemo(() => {\n if (width === 0) {\n return resolution;\n }\n const segmentLength = width / 10;\n const a = painter.getPointFromPxPosition(0, height / 2);\n const b = painter.getPointFromPxPosition(segmentLength, height / 2);\n\n return distance(a, b) / segmentLength;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [height, width, xMin, xMax, yMin, yMax, crs.wkid, resolution, painter]);\n}\n\nexport function useScale({\n resolution,\n minLength = 50,\n}: {\n resolution: number;\n minLength?: number;\n}) {\n const correctedResolution = useCorrectedResolution(resolution);\n\n return useMemo(() => {\n const minScale = minLength * correctedResolution;\n const currentScale = getScale(minScale);\n const width = getScale(minScale) / correctedResolution;\n\n return {\n currentScale,\n width,\n };\n }, [correctedResolution, minLength]);\n}\n","import { softEquals } from '@evergis/sgis/es/utils/math';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Map } from '@evergis/sgis/es/Map';\nimport { useEffect } from 'react';\n\nimport { MapState } from './useMapBboxChange';\nimport { useMapViewActions } from './useMapViewActions';\n\nimport { useMapContext } from '../contexts';\n\nexport function useUpdateMapView(\n { position, resolution }: Partial<MapState>,\n force?: boolean\n) {\n const { map } = useMapContext();\n const { animateTo } = useMapViewActions();\n\n useEffect(() => {\n if (shouldUpdateMapState(map, { position, resolution })) {\n animateTo({\n position,\n resolution,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [position, resolution, force]);\n}\n\nfunction shouldUpdatePosition(map: Map, position?: Coordinates) {\n return (\n position &&\n (!softEquals(map.position[0], position[0]) ||\n !softEquals(map.position[1], position[1]))\n );\n}\n\nfunction shouldUpdateResolution(map: Map, resolution?: number) {\n return resolution && !softEquals(map.resolution, resolution);\n}\n\nexport function shouldUpdateMapState(\n map: Map,\n { position, resolution }: Partial<MapState>\n) {\n return (\n shouldUpdatePosition(map, position) ||\n shouldUpdateResolution(map, resolution)\n );\n}\n","import {\n MutableRefObject,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport {\n sGisClickEvent,\n sGisMouseEvent,\n sGisMouseMoveEvent,\n sGisMouseOverEvent,\n} from '@evergis/sgis/es/commonEvents';\nimport { Handler } from '@evergis/sgis/es/EventHandler';\nimport { IPoint } from '@evergis/sgis/es/Point';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { Map } from '@evergis/sgis/es/Map';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { useEventPoint } from './useEventPoint';\n\nimport { useMapContext, useTooltipContext } from '../contexts';\n\nimport { LabelSymbol, LabelSymbolComponent } from '../symbols';\n\nexport type TooltipParams = {\n position?: Coordinates;\n component?: ReactNode;\n feature?: Feature | Map;\n clickMode?: boolean;\n};\n\ntype TargetEvent = (event: sGisMouseEvent) => void;\n\nexport type FeatureEvents = {\n [key: string]: TargetEvent | null;\n};\n\n// TODO HOW to read that?\nexport const useTooltip = (zIndex = 1) => {\n const { layer, popupLayer } = useTooltipContext();\n const { map } = useMapContext();\n const getEventPoint = useEventPoint();\n\n const targetFeatures: MutableRefObject<Feature[] | Map[]> = useRef([]);\n const labelFeature: MutableRefObject<LabelFeature | null> = useRef(null);\n const events: MutableRefObject<FeatureEvents[]> = useRef([]);\n\n const onClickMap = useCallback(() => popupLayer.remove(popupLayer.features), [\n popupLayer,\n ]);\n\n const reset = useCallback(() => {\n targetFeatures.current.forEach((feature: Feature | Map, index: number) => {\n const currentFeatureEvents = events.current[index];\n\n if (currentFeatureEvents) {\n const {\n onMouseOver,\n onMouseMove,\n onMouseOut,\n onClick,\n } = currentFeatureEvents;\n\n if (feature.hasListener('mouseover', onMouseOver as Handler)) {\n feature.off('mouseover', onMouseOver as Handler);\n }\n\n if (feature.hasListener('mousemove', onMouseMove as Handler)) {\n feature.off('mousemove', onMouseMove as Handler);\n }\n\n if (feature.hasListener('mouseout', onMouseOut as Handler)) {\n feature.off('mouseout', onMouseOut as Handler);\n }\n\n if (feature.hasListener('click', onClick as Handler)) {\n feature.off('click', onClick as Handler);\n }\n }\n });\n\n map.off('click', onClickMap as Handler);\n targetFeatures.current = [];\n labelFeature.current = null;\n layer.remove(layer.features);\n events.current = [];\n\n if (map.indexOf(popupLayer) !== -1) {\n map.removeLayer(popupLayer);\n }\n }, [onClickMap, popupLayer, layer, map]);\n\n useEffect(() => {\n if (map.indexOf(layer) === -1) {\n map.insertLayer(layer, zIndex);\n }\n return reset;\n }, [reset, map, layer, zIndex]);\n\n const onSetLabelFeature = useCallback(\n ({\n point,\n position,\n component,\n clickMode,\n }: {\n point: IPoint;\n } & TooltipParams) => {\n const feature = new LabelFeature(position || point.position, {\n symbol: new LabelSymbol({\n component: component as LabelSymbolComponent,\n }),\n crs: map.crs,\n });\n\n if (clickMode) {\n if (map.indexOf(popupLayer) === -1) {\n map.insertLayer(popupLayer, zIndex);\n }\n\n popupLayer.remove(popupLayer.features);\n popupLayer.add(feature);\n } else {\n labelFeature.current = feature;\n layer.add(feature);\n }\n },\n [popupLayer, layer, map, zIndex]\n );\n\n const onRemoveLabelFeature = useCallback(\n event => {\n if (event.node) {\n event.node.doNotBubbleToMap = true;\n }\n event.stopPropagation();\n labelFeature.current &&\n layer.has(labelFeature.current) &&\n layer.remove(labelFeature.current);\n labelFeature.current = null;\n layer.remove(layer.features);\n },\n [layer]\n );\n\n return useCallback(\n (tooltipParams: TooltipParams) => {\n const { feature, position, component, clickMode } = tooltipParams;\n const target = feature || map;\n targetFeatures.current.push(target as Feature & Map);\n const isMap = target instanceof Map;\n\n const featureEvents: FeatureEvents = {};\n\n featureEvents.onMouseOver = (event: sGisMouseOverEvent) => {\n event.stopPropagation();\n onRemoveLabelFeature(event);\n\n onSetLabelFeature({ point: getEventPoint(event), position, component });\n };\n\n featureEvents.onMouseMove = (\n event: sGisMouseMoveEvent & {\n node?: HTMLImageElement & { doNotBubbleToMap?: boolean };\n }\n ) => {\n if (!isMap) {\n event.stopPropagation();\n }\n\n if (event.node) {\n event.node.doNotBubbleToMap = true;\n }\n\n const point = getEventPoint(event);\n\n if (labelFeature.current) {\n isMap &&\n !layer.has(labelFeature.current) &&\n layer.add(labelFeature.current);\n\n labelFeature.current.position = position || point.position;\n } else {\n onSetLabelFeature({ point: point, position, component });\n }\n };\n\n if (clickMode) {\n featureEvents.onClick = (event: sGisClickEvent) => {\n event.stopPropagation();\n\n onSetLabelFeature({\n point: getEventPoint(event),\n position,\n component,\n clickMode,\n });\n };\n }\n\n featureEvents.onMouseOut = onRemoveLabelFeature;\n\n events.current.push(featureEvents);\n\n const { onMouseOver, onMouseMove, onMouseOut, onClick } = featureEvents;\n\n if (clickMode && !isMap) {\n target.on('mouseover', onMouseOut as Handler);\n target.on('mousemove', onMouseOut as Handler);\n target.on('click', onClick as Handler);\n\n if (!map.hasListener('click', onClickMap as Handler)) {\n map.on('click', onClickMap as Handler);\n }\n } else {\n if (!isMap) {\n target.on('mouseover', onMouseOver as Handler);\n }\n target.on('mousemove', onMouseMove as Handler);\n target.on('mouseout', onMouseOut as Handler);\n }\n },\n [\n onRemoveLabelFeature,\n onClickMap,\n map,\n onSetLabelFeature,\n getEventPoint,\n layer,\n ]\n );\n};\n","import { useRef } from 'react';\nimport { ClusterLayer } from '@evergis/sgis/es/layers/ClusterLayer';\nimport { GridClusterProvider } from '@evergis/sgis/es/layers/clusterProviders/GridClusterProvider';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { Symbol } from '@evergis/sgis/es/symbols/Symbol';\n\nimport { useLayerOrder } from './useLayerOrder';\nimport { useLayerVisibility } from './useLayerVisibility';\nimport { useProperty } from './useProperty';\nimport { LayerProps } from './LayerProps';\n\nimport { useMapContext } from '../contexts';\n\nexport type ClusterLayerProps = {\n features: Feature[];\n zIndex?: number;\n size?: number;\n distance?: number;\n onChangeGrid?: (fetures: Feature[], layer: ClusterLayer) => void;\n clusterSymbol?: Symbol<Feature>;\n} & LayerProps;\n\nexport function useClusterLayer({\n zIndex,\n isDisplayed = true,\n features,\n onChangeGrid,\n size,\n distance,\n clusterSymbol,\n}: ClusterLayerProps) {\n const { map } = useMapContext();\n const currentFeatures = useRef(features);\n\n const layer: ClusterLayer = useProperty(\n {\n factory: () => {\n const gridClusterProvider = new GridClusterProvider({\n size,\n distance,\n onChangeGrid: onChangeGrid\n ? features => onChangeGrid(features, layer)\n : void 0,\n });\n\n const clusterLayer = new ClusterLayer({\n gridClusterProvider,\n clusterSymbol,\n });\n currentFeatures.current = features;\n\n clusterLayer.add(features);\n\n return clusterLayer;\n },\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\n update: (clusterLayer, [features]) => {\n clusterLayer.remove(currentFeatures.current);\n clusterLayer.add(features);\n\n currentFeatures.current = features;\n },\n },\n [features]\n );\n\n useLayerOrder(layer, zIndex);\n useLayerVisibility(layer, isDisplayed);\n\n return layer;\n}\n","import { useCallback, useEffect, useState } from 'react';\n\nimport { useMapPick } from './useMapPick';\n\nimport { useEvergisSelectContext } from '../contexts';\n\nimport { evaluateFeature, EvergisFeature } from '../core';\n\nimport { EvergisSelectProps } from '../components/EvergisSelect/types';\n\nconst INIT_FEATURES: EvergisFeature[] = [];\n\ntype SelectionResult = [EvergisFeature[], () => void];\n\nexport const useEvergisSelect = ({\n onPick,\n onFeatures,\n}: Pick<EvergisSelectProps, 'onPick' | 'onFeatures'>): SelectionResult => {\n const mapPickResult = useMapPick();\n const layers = useEvergisSelectContext();\n const [features, setFeatures] = useState<EvergisFeature[]>(INIT_FEATURES);\n\n const resetSelection = useCallback(() => setFeatures(INIT_FEATURES), [\n setFeatures,\n ]);\n\n useEffect(() => {\n if (!mapPickResult) {\n return;\n }\n\n onPick(mapPickResult).then(features => {\n setFeatures(features.map(evaluateFeature(layers)));\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mapPickResult]);\n\n return [\n typeof onFeatures === 'function' ? onFeatures(features) : features,\n resetSelection,\n ];\n};\n","import { useMemo } from 'react';\nimport { CRS_MAP, DEFAULT_CRS, DEFAULT_SRID, SrId } from '../core';\n\nexport const useCrs = (srId?: SrId) => {\n return useMemo(() => {\n return CRS_MAP[srId || DEFAULT_SRID] || DEFAULT_CRS;\n }, [srId]);\n};\n","import { useRef, useEffect, useCallback } from 'react';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\nimport { PointEditor } from '@evergis/sgis/es/controls/PointEditor';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\nimport { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\nimport { useMount } from './useMount';\nimport { useMapContext } from '../contexts';\n\nimport { DraggableMarkerProps } from '../components';\n\nconst setCursor = (painter: DomPainter, cursor: string) =>\n painter.wrapper &&\n typeof painter.wrapper !== 'string' &&\n (painter.wrapper.style.cursor = cursor);\n\nfunction none() {\n return;\n}\n\nexport const useDraggableMarker = ({\n position,\n onChange,\n symbol,\n}: DraggableMarkerProps) => {\n const feature = useRef<Feature | null>(null);\n const { map, painter } = useMapContext();\n const layer = useRef(new FeatureLayer());\n const pointEditor = useRef(\n new PointEditor(map, {\n isActive: false,\n activeLayer: layer.current,\n })\n );\n\n const onMapClick = useCallback(\n (event: sGisEvent) => {\n event.stopPropagation();\n if (!(event instanceof sGisClickEvent)) {\n return;\n }\n\n map.off('click', onMapClick);\n setCursor(painter, 'default');\n onChange(event.point.position);\n },\n [painter, map, onChange]\n );\n\n useMount({\n onMount: () => {\n map.addLayer(layer.current);\n pointEditor.current.on('edit', () =>\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\n );\n\n if (!position) {\n setCursor(painter, 'pointer');\n map.on('click', onMapClick);\n }\n },\n onUnmount: () => {\n map.removeLayer(layer.current);\n map.off('click', onMapClick);\n pointEditor.current.off('edit', () =>\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\n );\n setCursor(painter, 'default');\n },\n });\n\n useEffect(() => {\n if (position) {\n if (!feature.current) {\n const hasMapClick = map.hasListener('click', onMapClick);\n\n const pointFeature = new PointFeature(position, {\n crs: map.crs,\n symbol: symbol || new StaticImageSymbol(),\n });\n\n pointFeature.on('mousemove', none);\n pointFeature.on('mouseover', () => setCursor(painter, 'pointer'));\n pointFeature.on('mouseout', () => setCursor(painter, 'default'));\n\n layer.current.add(pointFeature);\n pointEditor.current.activeFeature = pointFeature;\n pointEditor.current.isActive = true;\n feature.current = pointFeature;\n if (hasMapClick) {\n map.off('click', onMapClick);\n setCursor(painter, 'default');\n }\n } else if (feature.current && pointEditor.current.activeFeature) {\n pointEditor.current.activeFeature.position = position;\n layer.current.redraw();\n }\n } else if (feature.current) {\n layer.current.remove(feature.current as Feature);\n feature.current = null;\n setCursor(painter, 'pointer');\n map.on('click', onMapClick);\n }\n }, [onMapClick, painter, map, position, symbol]);\n};\n","import { useMemo, useCallback } from 'react';\nimport { Crs } from '@evergis/sgis/es/Crs';\n\nimport { useMapContext } from '../contexts';\nimport { useMapState } from '../hooks';\nimport { metersToPixels } from '../utils/metersToPixels';\n\nexport const useMetersToPixels = (meters: number, crs?: Crs): number => {\n const { painter, map } = useMapContext();\n const { resolution } = useMapState();\n\n return useMemo(\n () =>\n metersToPixels(meters, {\n painter: painter,\n crs: crs || map.crs,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [painter, meters, crs, map.crs, resolution]\n );\n};\n\nexport const useMetersToPixelsCb = () => {\n const { painter, map } = useMapContext();\n\n return useCallback(\n (meters: number, crs?: Crs) =>\n metersToPixels(meters, {\n painter: painter,\n crs: crs || map.crs,\n }),\n [painter, map.crs]\n );\n};\n","import { useMemo } from 'react';\nimport { debounce } from '@evergis/sgis/es/utils/utils';\n\nexport const useDebouncedCallback = <CallbackFn extends () => void>(\n interval: number\n): ((cb: CallbackFn) => void) => {\n return useMemo(\n () =>\n debounce((cb: CallbackFn) => {\n cb();\n }, interval),\n [interval]\n );\n};\n","import React from 'react';\n\nimport { useCanvas, useSymbol, UseSymbolParams } from '../../hooks';\n\ninterface Props extends UseSymbolParams {}\n\nexport const Symbol: React.FC<Props> = ({ symbol, size, render }) => {\n const { canvas, ref } = useCanvas();\n useSymbol({ symbol, size, render }, canvas);\n\n return <canvas ref={ref} />;\n};\n","import { GeometryType } from '@evergis/api';\nimport styled from 'styled-components';\n\nexport type CompoundIconProps = {\n geometryType: GeometryType;\n icons: Record<GeometryType, string>;\n};\n\nexport const CompoundIcon = styled.div<CompoundIconProps>`\n background: ${({ geometryType, icons }) =>\n `url(${icons[geometryType]}) center center / ${\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\n } no-repeat`};\n height: 32px;\n width: 32px;\n`;\n","import React, { PropsWithChildren } from 'react';\n\nimport { Symbol } from './Symbol';\n\nimport { StyleSymbolType } from '../../core';\nimport { deserializeSymbol, adjustSymbol } from '../../symbols';\n\ntype StyleSymbolProps = PropsWithChildren<{\n symbol: StyleSymbolType;\n size?: number;\n}>;\n\nconst MAX_SIZE = 32;\n\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\n symbol,\n size = MAX_SIZE,\n children,\n}) => {\n let sGisSymbol = null;\n\n try {\n sGisSymbol = deserializeSymbol(symbol);\n } catch (e) {\n // TODO generate Error symbol\n }\n\n return (\n <>\n {children ||\n (sGisSymbol ? (\n <Symbol\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\n size={size}\n />\n ) : null)}\n </>\n );\n};\n","import { Icon, IIconProps } from '@evergis/ui';\nimport styled, { css } from 'styled-components';\n\nexport const EvergisCardContainer = styled.div`\n position: absolute;\n top: 2.25rem;\n right: 0.5rem;\n width: 22.5rem;\n margin-bottom: 1rem;\n max-height: 90%;\n min-height: 1rem;\n background: #fff;\n border-radius: 4px;\n z-index: 1;\n\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n overflow: initial;\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\n\n ${Icon} {\n color: rgba(0, 0, 0, 0.65);\n cursor: pointer;\n user-select: none;\n\n &:hover {\n color: #1fb3aa;\n }\n }\n`;\n\nexport const StickyHeader = styled.div`\n display: flex;\n position: sticky;\n top: 0;\n flex-direction: column;\n background: #fff;\n`;\n\nexport const CardHeader = styled.div`\n display: flex;\n padding: 1.5rem 1.5rem 1rem;\n align-items: center;\n`;\n\nexport const CardTitle = styled.div`\n display: flex;\n flex-direction: column;\n margin: 0 0.5rem;\n width: 13.5rem;\n flex-grow: 1;\n`;\n\nexport const CardControls = styled.div`\n display: flex;\n\n ${Icon} {\n margin: 0 0.5rem;\n }\n`;\n\nexport const FeatureName = styled.div`\n font-size: 1.25rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const LayerName = styled.div`\n color: #30454f;\n font-size: 0.75rem;\n`;\n\nexport const CardPagination = styled.div`\n display: flex;\n height: 2.5rem;\n padding: 0 1.5rem;\n align-items: center;\n font-size: 0.75rem;\n justify-content: space-between;\n background: linear-gradient(\n 0deg,\n rgba(161, 186, 208, 0.12),\n rgba(161, 186, 208, 0.12)\n );\n`;\n\nexport const PaginationDescription = styled.div`\n display: flex;\n`;\n\nexport const CurrentFeatureIndex = styled.div`\n cursor: pointer;\n padding: 0 0.25rem;\n color: #1fb3aa;\n`;\n\nexport const CardAttributes = styled.div`\n padding: 1rem 1.5rem;\n overflow-y: scroll;\n`;\n\nexport const AttributeContainer = styled.div`\n padding-bottom: 0.5rem;\n`;\n\nexport const AttributeTitle = styled.div`\n color: #30454f;\n font-size: 0.75rem;\n margin: 0.25rem 0;\n`;\n\nexport const AttributeValueContainer = styled.div`\n flex-wrap: wrap;\n display: flex;\n`;\n\nexport const SimpleAttribute = styled.div``;\n\nexport const ValueLink = styled.a`\n padding: 0 0.25rem;\n color: #1fb3aa;\n text-decoration: none;\n`;\n\ntype CardIconProps = {\n onClick?: () => void;\n};\n\nconst featureCardIconMixin = css`\n color: #30454f;\n`;\n\nexport const StatIcon = styled(Icon)<IIconProps & CardIconProps>`\n ${featureCardIconMixin}\n`;\n\nexport const ZoomIcon = styled(Icon)<IIconProps & CardIconProps>`\n ${featureCardIconMixin}\n`;\n\nexport const CloseIcon = styled(Icon)<IIconProps & CardIconProps>`\n ${featureCardIconMixin}\n`;\n\nexport const PrevIcon = styled(Icon)<IIconProps & CardIconProps>`\n ${featureCardIconMixin}\n`;\n\nexport const NextIcon = styled(Icon)<IIconProps & CardIconProps>`\n ${featureCardIconMixin}\n`;\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { mailHref } from '../../utils/url';\n\ntype MailValueProps = {\n mail: string;\n};\n\nexport const MailValue = ({ mail }: MailValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={mailHref(mail)}>\n {mail}\n </ValueLink>\n);\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { phoneHref } from '../../utils/url';\n\ntype PhoneValueProps = {\n phone: string;\n};\n\nexport const PhoneValue = ({ phone }: PhoneValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={phoneHref(phone)}>\n {phone}\n </ValueLink>\n);\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { urlHref } from '../../utils/url';\n\ntype UrlValueProps = {\n url: string;\n};\n\nexport const UrlValue = ({ url }: UrlValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={urlHref(url)}>\n {url}\n </ValueLink>\n);\n","import React from 'react';\nimport { AttributeValueContainer, SimpleAttribute } from './styled';\nimport { MailValue } from './MailValue';\nimport { PhoneValue } from './PhoneValue';\nimport { UrlValue } from './UrlValue';\nimport { EvergisCardAttributeProps } from './EvergisCardAttribute';\n\nimport punycode from 'punycode';\n\nimport {\n AttributeValueType,\n formatAttributeValue,\n} from '../../core/attributes';\n\nexport const AttributeValue: React.FC<EvergisCardAttributeProps> = ({\n attribute,\n}) => {\n const attributeValues = formatAttributeValue(attribute);\n\n return (\n <AttributeValueContainer>\n {attributeValues.map((attributeValue, index) => {\n const { value } = attributeValue;\n const key = `${value}-${index}`;\n\n if (attributeValue.type === AttributeValueType.Url) {\n return <UrlValue key={key} url={punycodeDecode(value)} />;\n }\n\n if (attributeValue.type === AttributeValueType.Mail) {\n return <MailValue key={key} mail={value} />;\n }\n\n if (attributeValue.type === AttributeValueType.Phone) {\n return <PhoneValue key={key} phone={value} />;\n }\n\n return <SimpleAttribute key={value}>{value}</SimpleAttribute>;\n })}\n </AttributeValueContainer>\n );\n};\n\nfunction punycodeDecode(domains: string) {\n try {\n return domains\n .split('/')\n .map(punycode.toUnicode)\n .join('/');\n } catch (error) {\n return domains;\n }\n}\n","import React from 'react';\n\nimport { AttributeContainer, AttributeTitle } from './styled';\n\nimport { FeatureAttribute } from '../../core';\nimport { AttributeValue } from './AttributeValue';\n\nexport type EvergisCardAttributeProps = {\n attribute: FeatureAttribute;\n className?: string;\n};\n\nexport const EvergisCardAttribute: React.FC<EvergisCardAttributeProps> = ({\n attribute,\n className,\n}) => (\n <AttributeContainer className={className}>\n <AttributeTitle>{attribute.alias || attribute.name}</AttributeTitle>\n <AttributeValue attribute={attribute} />\n </AttributeContainer>\n);\n","import React, { FC, useEffect } from 'react';\n\nimport { StyleSymbol } from '../Symbol';\nimport { EvergisCardAttribute } from './EvergisCardAttribute';\n\nimport {\n CardAttributes,\n CardControls,\n CardHeader,\n CardPagination,\n CardTitle,\n CloseIcon,\n CurrentFeatureIndex,\n EvergisCardContainer,\n FeatureName,\n LayerName,\n NextIcon,\n PaginationDescription,\n PrevIcon,\n StickyHeader,\n ZoomIcon,\n StatIcon,\n} from './styled';\n\nimport { EvergisCardProps } from './EvergisCard';\nimport { UseEvergisCard } from '../../hooks/useEvergisCard';\nimport { FeatureAttribute } from '../../';\n\nexport const StyledCard: FC<EvergisCardProps & UseEvergisCard> = ({\n features = [],\n className,\n reset,\n feature,\n zoom,\n prev,\n current,\n next,\n onAttributes,\n onStatistics,\n onFeatureChange,\n headerExtra,\n hideZoom,\n}) => {\n useEffect(() => {\n onFeatureChange && onFeatureChange(current);\n }, [current, onFeatureChange]);\n\n return (\n <EvergisCardContainer className={className}>\n <StickyHeader>\n <CardHeader>\n <StyleSymbol symbol={feature.symbol || {}} />\n <CardTitle>\n <FeatureName title={feature.displayName || ''}>\n {feature.displayName}\n </FeatureName>\n <LayerName>{feature.layerAlias}</LayerName>\n </CardTitle>\n <CardControls>\n {onStatistics && <StatIcon kind=\"statistics\" onClick={() => onStatistics(feature)} />}\n {!hideZoom && <ZoomIcon kind=\"zoom_to\" onClick={zoom} />}\n <CloseIcon kind=\"close\" onClick={reset} />\n </CardControls>\n </CardHeader>\n {features.length > 1 ? (\n <CardPagination>\n <PrevIcon kind=\"prev\" onClick={prev} />\n <PaginationDescription>\n <CurrentFeatureIndex onClick={zoom}>\n {current + 1}\n </CurrentFeatureIndex>\n объект из {features.length}\n </PaginationDescription>\n <NextIcon kind=\"next\" onClick={next} />\n </CardPagination>\n ) : null}\n {headerExtra}\n </StickyHeader>\n <CardAttributes>\n {feature.attributes &&\n (typeof onAttributes === 'function'\n ? onAttributes(feature.attributes)\n : feature.attributes\n ).map((attribute: FeatureAttribute) => {\n return (\n attribute.render || (\n <EvergisCardAttribute\n key={attribute.name}\n attribute={attribute}\n />\n )\n );\n })}\n </CardAttributes>\n </EvergisCardContainer>\n );\n};\n","import React, { ReactElement, ReactNode } from 'react';\n\nimport { useEvergisCard, UseEvergisCard } from '../../hooks/useEvergisCard';\n\nimport { StyledCard } from './StyledCard';\nimport { EvergisFeature, FeatureAttribute } from '../../core';\n\nexport type EvergisCardProps = {\n features?: EvergisFeature[];\n reset?: VoidFunction;\n children?: (current: number) => React.ReactNode;\n className?: string;\n renderCard?: (\n cardProps: Omit<EvergisCardProps, 'className' | 'renderCard' | 'children'> &\n UseEvergisCard\n ) => ReactElement;\n onAttributes?: (attributes: FeatureAttribute[]) => FeatureAttribute[];\n onStatistics?: (feature: EvergisFeature) => void;\n onFeatureChange?: (current: number) => void;\n headerExtra?: ReactNode;\n hideZoom?: boolean;\n};\n\nexport const EvergisCard: React.FC<EvergisCardProps> = ({\n renderCard,\n className,\n children,\n ...props\n}) => {\n const { features = [] } = props;\n const hookProps = useEvergisCard(features);\n const { feature, current } = hookProps;\n const cardProps = { ...props, ...hookProps };\n\n return feature ? (\n <>\n {typeof renderCard === 'function' ? (\n renderCard(cardProps)\n ) : (\n <StyledCard className={className} {...cardProps} />\n )}\n {children && children(current)}\n </>\n ) : null;\n};\n","import * as React from 'react';\n\nimport { ClusterLayerProps, useClusterLayer } from '../../hooks';\n\nexport const ClusterLayer: React.FC<ClusterLayerProps> = props => {\n useClusterLayer(props);\n\n return null;\n};\n","import * as React from 'react';\n\nimport { EvergisDynamicLayerProps, useEvergisDynamicLayer } from '../../hooks';\n\nexport const EvergisDynamicLayer: React.FC<EvergisDynamicLayerProps> = props => {\n useEvergisDynamicLayer(props);\n\n return null;\n};\n","import * as React from 'react';\n\nimport { FeatureLayerProps, useFeatureLayer } from '../../hooks';\n\nexport const FeatureLayer: React.FC<FeatureLayerProps> = props => {\n useFeatureLayer(props);\n\n return null;\n};\n","import { useMemo } from 'react';\nimport { Feature } from '@evergis/sgis';\n\nimport { EvergisFeature } from '../../core';\n\nconst truthly = <Value>(value: Value | null | undefined): value is Value =>\n Boolean(value);\n\nconst setSelected = (current: number) => (feature: Feature, index: number) => {\n // @ts-ignore\n feature['isSelected'] = index === current;\n\n return feature;\n};\n\nconst toSgis = (feature: EvergisFeature) => feature.sGisFeature();\n\n// TODO inner hooks???\nexport const useSGisFeatures = (\n features: EvergisFeature[],\n currentIndex: number\n) =>\n useMemo(\n () =>\n features\n .map(toSgis)\n .filter(truthly)\n .map(setSelected(currentIndex)),\n [features, currentIndex]\n );\n","import React from 'react';\n\nimport { FeatureLayer } from './FeatureLayer';\nimport { useSGisFeatures } from './useSGisFeatures';\n\nimport { EvergisFeature } from '../../core';\n\ntype EvergisSelectLayerProps = {\n features: EvergisFeature[];\n current: number;\n zIndex: number;\n};\n\nexport const EvergisSelectLayer: React.FC<EvergisSelectLayerProps> = ({\n features,\n zIndex,\n current,\n}) => {\n const sGisFeatures = useSGisFeatures(features, current);\n\n return <FeatureLayer features={sGisFeatures} zIndex={zIndex} />;\n};\n","import React from 'react';\n\nimport { EvergisTileLayerProps, useEvergisTileLayer } from '../../hooks';\n\nexport const EvergisTileLayer: React.FC<EvergisTileLayerProps> = props => {\n useEvergisTileLayer(props);\n\n return null;\n};\n","import {\n GetTileUrl,\n TileLayer,\n TileLayerConstructorParams,\n} from '@evergis/sgis/es/layers/TileLayer';\n\nimport { useProperty } from './useProperty';\nimport { useLayerOrder } from './useLayerOrder';\nimport { LayerProps } from './LayerProps';\nimport { useLayerVisibility } from './useLayerVisibility';\n\nimport { useMapContext } from '../contexts';\n\nexport function useTileLayer({\n maskUrl,\n zIndex,\n isDisplayed,\n ...tileLayerParams\n}: TileLayerProps) {\n const { map } = useMapContext();\n\n const layer = useProperty(\n {\n factory: () => new TileLayer(maskUrl, tileLayerParams),\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\n },\n [maskUrl]\n );\n\n useLayerOrder(layer, zIndex);\n useLayerVisibility(layer, isDisplayed);\n\n return layer;\n}\n\nexport type TileLayerProps = {\n maskUrl: string | GetTileUrl;\n} & LayerProps &\n TileLayerConstructorParams;\n","import * as React from 'react';\n\nimport { useTileLayer, TileLayerProps } from '../../hooks/useTileLayer';\n\nexport const TileLayer: React.FC<TileLayerProps> = props => {\n useTileLayer(props);\n\n return null;\n};\n","import React from 'react';\n\nimport { EvergisCard } from '../EvergisCard';\nimport { EvergisSelectLayer } from '../Layers';\n\nimport { useEvergisSelect } from '../../hooks';\n\nimport { EvergisSelectProps } from './types';\n\nconst defaultZIndex = 200;\n\nexport const EvergisSelect: React.FC<EvergisSelectProps> = ({\n onPick,\n className,\n renderCard,\n zIndex,\n onFeatures,\n onAttributes,\n onStatistics,\n}) => {\n const [features, resetSelection] = useEvergisSelect({ onPick, onFeatures });\n\n return (\n <EvergisCard\n className={className}\n features={features}\n reset={resetSelection}\n renderCard={renderCard}\n onAttributes={onAttributes}\n onStatistics={onStatistics}\n >\n {current => (\n <EvergisSelectLayer\n features={features}\n current={current}\n zIndex={zIndex || defaultZIndex}\n />\n )}\n </EvergisCard>\n );\n};\n","import styled from 'styled-components';\n\nexport const LegendContainer = styled.div`\n background-color: #fff;\n\n canvas {\n border-radius: 0.125rem;\n }\n`;\n\nexport const LegendSectionContainer = styled.div``;\n\nexport const LegendSymbolTitle = styled.p`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin: 0;\n`;\n\nexport const LegendValueContainer = styled.div`\n display: flex;\n align-items: center;\n font-size: 0.625rem;\n padding: 0.125rem 0;\n\n ${LegendSymbolTitle} {\n padding-left: 0.5rem;\n }\n`;\n\nexport const LegendSectionHeader = styled.div`\n margin-top: 0.5rem;\n font-size: 0.75rem;\n`;\n","import React from 'react';\nimport { LegendSectionContainer, LegendSectionHeader } from './styled';\n\nimport { LegendItem, LegendValueType } from '../../core';\n\ntype LegendSectionProps = {\n item: LegendItem;\n children: (value: LegendValueType) => React.ReactNode;\n renderLegendTitle?: (item: React.ReactNode | LegendItem) => React.ReactNode;\n};\n\nexport const LegendSection: React.FC<LegendSectionProps> = ({\n item,\n renderLegendTitle,\n children,\n}) => (\n <LegendSectionContainer>\n <LegendSectionHeader>\n {renderLegendTitle ? renderLegendTitle(item) : item.title}\n </LegendSectionHeader>\n {item.values.map(children)}\n </LegendSectionContainer>\n);\n","import styled from 'styled-components';\nimport { Icon } from '@evergis/ui';\n\nexport const InputContainer = styled.div`\n display: flex;\n align-items: center;\n border-radius: 0.125rem;\n box-sizing: border-box;\n border: 0.0625rem solid rgba(48, 69, 79, 0.12);\n margin-bottom: 0.5rem;\n`;\n\nexport const InputField = styled.input`\n width: 100%;\n border: none;\n outline: none;\n font-size: 1rem;\n line-height: 1.1875rem;\n padding: 0 0.5rem;\n background-color: transparent;\n color: rgba(48, 69, 79, 0.87);\n`;\n\nexport const SearchPrefix = styled(Icon)`\n color: rgba(48, 69, 79, 0.54);\n padding: 0.25rem;\n\n &:hover {\n cursor: pointer;\n color: rgba(48, 69, 79, 0.87);\n }\n`;\nSearchPrefix.defaultProps = {\n kind: \"search\",\n};\n","import React from 'react';\n\nimport { InputContainer, InputField, SearchPrefix } from './styled';\n\ntype SearchInputProps = {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n};\n\nexport const SearchInput: React.FC<SearchInputProps> = ({ onChange }) => (\n <InputContainer>\n <SearchPrefix />\n <InputField onChange={onChange} />\n </InputContainer>\n);\n","import React from 'react';\n\nimport { LegendSymbolPart, useLegendValueSymbol } from '../../hooks';\n\nimport { SGisSymbolType } from '../../symbols';\n\ntype LegendSymbolProps = {\n children: (symbol: SGisSymbolType) => React.ReactNode;\n} & LegendSymbolPart;\n\nexport const LegendSymbol: React.FC<LegendSymbolProps> = ({\n parameter,\n parameterValue,\n children,\n}) => {\n const symbol = useLegendValueSymbol({ parameterValue, parameter });\n\n if (!symbol) {\n return null;\n }\n\n return <>{children(symbol)}</>;\n};\n","import React from 'react';\n\nimport { LegendSymbolTitle, LegendValueContainer } from './styled';\nimport { LegendSymbol } from './LegendSymbol';\nimport { Symbol } from '../Symbol';\n\nimport { ClassificationParameterExtended, LegendValueType } from '../../core';\n\nimport { getLegendSymbolRenders } from '../../symbols';\n\nimport { LegendProps } from './types';\n\nexport type LegendValueProps = {\n value: LegendValueType;\n parameter: ClassificationParameterExtended;\n} & Pick<LegendProps, 'maxSize'>;\n\nexport const LegendValue: React.FC<LegendValueProps> = ({\n value,\n parameter,\n maxSize,\n}) => (\n <LegendValueContainer>\n <LegendSymbol parameter={parameter} parameterValue={value.parameterValue}>\n {symbol => (\n <Symbol\n render={getLegendSymbolRenders}\n symbol={symbol}\n size={maxSize}\n />\n )}\n </LegendSymbol>\n <LegendSymbolTitle>{value.title}</LegendSymbolTitle>\n </LegendValueContainer>\n);\n","import { LegendProps } from './types';\nimport { LegendValueType } from '../../core';\n\nconst MAX_SIZE = 16;\n\nconst getNumberParam = (parameterValue: any, param: string): number | null => {\n return typeof parameterValue === 'object' &&\n param in parameterValue &&\n typeof parameterValue[param] === 'number'\n ? parameterValue[param]\n : null;\n};\n\nexport const getSymbolSize = ({\n parameterValue,\n maxSize,\n}: Pick<LegendProps, 'maxSize'> &\n Pick<LegendValueType, 'parameterValue'>): number => {\n const size = getNumberParam(parameterValue, 'size');\n const strokeWidth = getNumberParam(parameterValue, 'strokeWidth');\n const width = getNumberParam(parameterValue, 'width');\n const height = getNumberParam(parameterValue, 'height');\n\n if (width && height) {\n return Math.max(width, height);\n } else if (width) {\n return width;\n } else if (height) {\n return height;\n } else if (size) {\n return size + (strokeWidth || 0);\n } else if (typeof maxSize === 'number') {\n return maxSize;\n } else {\n return MAX_SIZE;\n }\n};\n","import React from 'react';\n\nimport { LegendContainer } from './styled';\nimport { LegendSection } from './LegendSection';\nimport { SearchInput } from '../SearchInput/SearchInput';\nimport { LegendValue } from './LegendValue';\nimport { LegendProps } from './types';\n\nimport { LegendProvider } from '../../contexts';\nimport { getSymbolSize } from './getSymbolSize';\n\nimport { useLayerLegend } from '../../hooks';\n\nexport const Legend: React.FC<LegendProps> = ({\n layer,\n children,\n className,\n config,\n maxSize,\n}) => {\n const legend = useLayerLegend(layer, config);\n const { renderCustomLegend, searchLayer, searchable } = config || {};\n const { symbol } = legend || {};\n\n if (!legend && !renderCustomLegend) {\n return <></>;\n }\n\n return (\n <LegendProvider symbol={symbol}>\n <LegendContainer className={className}>\n {searchable && searchLayer && <SearchInput onChange={searchLayer} />}\n {renderCustomLegend && layer\n ? renderCustomLegend(layer)\n : children\n ? legend && children(legend)\n : legend &&\n legend.items.map(legendItem => (\n <LegendSection\n key={`${legendItem.attribute}-${legendItem.parameter}`}\n item={legendItem}\n renderLegendTitle={config && config.renderLegendTitle}\n >\n {legendValue => (\n <LegendValue\n key={legendValue.title}\n value={legendValue}\n parameter={legendItem.parameter}\n maxSize={getSymbolSize({\n parameterValue: legendValue.parameterValue,\n maxSize,\n })}\n />\n )}\n </LegendSection>\n ))}\n </LegendContainer>\n </LegendProvider>\n );\n};\n","import React, { CSSProperties, PropsWithChildren, useCallback } from 'react';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { useMapContext } from '../../contexts';\n\nimport {\n MapState,\n shouldUpdateMapState,\n useMapBboxChange,\n useMapWrapper,\n useMaxMinScale,\n useUpdateMapView,\n} from '../../hooks';\n\nexport type MapProps = PropsWithChildren<{\n className?: string;\n position?: Coordinates;\n resolution?: number;\n minScale?: number;\n maxScale?: number;\n style?: CSSProperties;\n onBboxChange?: (mapState: MapState) => void;\n}>;\n\nexport const Map: React.FC<MapProps> = ({\n className,\n position,\n resolution,\n minScale,\n maxScale,\n children,\n onBboxChange,\n style,\n}) => {\n const wrapperRef = useMapWrapper();\n const { map } = useMapContext();\n\n const handleBboxChange = useCallback(\n (state: MapState) => {\n if (onBboxChange && shouldUpdateMapState(map, { position, resolution })) {\n onBboxChange(state);\n }\n },\n [map, onBboxChange, position, resolution]\n );\n\n useUpdateMapView({ position, resolution });\n useMaxMinScale(minScale, maxScale, position, resolution);\n\n useMapBboxChange(handleBboxChange);\n\n return (\n <div className={className} ref={wrapperRef} style={style}>\n {children}\n </div>\n );\n};\n","import { css } from 'styled-components';\n\nexport const CONTROL_PLACEMENTS: Placement[] = [\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst topLeft = (distance: string) => css`\n top: ${distance};\n left: ${distance};\n`;\n\nconst topRight = (distance: string) => css`\n top: ${distance};\n right: ${distance};\n`;\n\nconst bottomLeft = (distance: string) => css`\n bottom: ${distance};\n left: ${distance};\n`;\n\nconst bottomRight = (distance: string) => css`\n bottom: ${distance};\n right: ${distance};\n`;\n\nexport type Placement =\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right';\n\nexport const placementMixin = (\n placement: Placement = 'bottom-left',\n distance: string = '1rem'\n) => css`\n ${placement === 'top-left' && topLeft(distance)}\n ${placement === 'top-right' && topRight(distance)}\n ${placement === 'bottom-left' && bottomLeft(distance)}\n ${placement === 'bottom-right' && bottomRight(distance)}\n`;\n","import styled, { css } from 'styled-components';\nimport { Icon } from \"@evergis/ui\";\n\nimport { Placement, placementMixin } from '../../ui/mixins/placementMixin';\n\nexport type MapControlsProps = {\n placement?: Placement;\n vertical?: boolean;\n};\n\nconst mapControlBtnMixin = css`\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #fff;\n`;\n\ntype MapControlBtnProps = {\n onClick?: () => void;\n};\n\nexport const ZoomInBtn = styled(Icon)<MapControlBtnProps>`\n ${mapControlBtnMixin}\n`;\nZoomInBtn.defaultProps = { kind: \"plus\" };\n\nexport const ZoomOutBtn = styled(Icon)<MapControlBtnProps>`\n ${mapControlBtnMixin}\n`;\nZoomOutBtn.defaultProps = { kind: \"minus\" };\n\nexport const SearchBtn = styled(Icon)<MapControlBtnProps>`\n ${mapControlBtnMixin}\n`;\nSearchBtn.defaultProps = { kind: \"search\" };\n\n// TODO not exists in fonts\nexport const FullscreenBtn = styled(Icon)<MapControlBtnProps>`\n ${mapControlBtnMixin}\n`;\nFullscreenBtn.defaultProps = { kind: \"maximize\" };\n\nexport const MeasureBtn = styled(Icon)<\n MapControlBtnProps\n>`\n ${mapControlBtnMixin}\n`;\nMeasureBtn.defaultProps = { kind: \"measure_length\" };\n\nexport const MapControl = styled.div`\n border-radius: 0.15rem;\n background: rgba(28, 33, 48, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n font-size: 1.5rem;\n cursor: pointer;\n height: auto;\n width: auto;\n padding: 0.25rem;\n`;\n\nexport const MapControls = styled.div<MapControlsProps>`\n position: absolute;\n display: flex;\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\n\n ${({ placement }) => placementMixin(placement)}\n\n ${MapControl} {\n margin-bottom: ${({ vertical }) => (vertical ? '0.5rem' : '0')};\n margin-right: ${({ vertical }) => (vertical ? '0' : '0.5rem')};\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\n }\n`;\n","import React from 'react';\nimport { MapControl, MeasureBtn } from './styled';\n\n// TODO\nexport const Measure = () => {\n return (\n <MapControl>\n <MeasureBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import React from 'react';\nimport { MapControl, SearchBtn } from './styled';\n\n// TODO\nexport const Search = () => {\n return (\n <MapControl>\n <SearchBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import React from 'react';\nimport { FullscreenBtn, MapControl } from './styled';\n\n// TODO\nexport const Fullscreen = () => {\n return (\n <MapControl>\n <FullscreenBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import styled from 'styled-components';\nimport { LegendSectionHeader } from '../Legend/styled';\nimport { MapControl } from '../MapControls/styled';\n\nexport const MapLegendControl = styled(MapControl)`\n cursor: default;\n`;\n\nexport const MapLegendContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 16.5rem;\n height: 3.875rem;\n align-items: center;\n padding: 0.5rem;\n box-sizing: border-box;\n\n canvas {\n height: 1rem;\n width: 0.835rem;\n }\n`;\n\nexport const MapLegendHeader = styled(LegendSectionHeader)`\n margin: 0;\n`;\n\nexport const MapLegendSection = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const MapLegendValueDescr = styled.div`\n margin: 0.5rem;\n font-size: 0.625rem;\n opacity: 0.65;\n`;\n","import React from 'react';\n\nimport { LegendSymbol } from '../Legend';\nimport { Symbol } from '../Symbol';\n\nimport { ClassificationParameterExtended, LegendValueType } from '../../core';\n\nimport { getMapLegendSymbolRenders } from '../../symbols';\n\nconst MAX_SIZE = 100;\n\nexport type MapLegendSymbolProps = {\n value: LegendValueType;\n parameter: ClassificationParameterExtended;\n};\n\nexport const MapLegendSymbol: React.FC<MapLegendSymbolProps> = ({\n value,\n parameter,\n}) => (\n <LegendSymbol\n key={value.title}\n parameter={parameter}\n parameterValue={value.parameterValue}\n >\n {symbol => (\n <Symbol\n render={getMapLegendSymbolRenders}\n symbol={symbol}\n size={MAX_SIZE}\n />\n )}\n </LegendSymbol>\n);\n","import React from 'react';\n\nimport { LegendProps } from '../Legend';\nimport {\n MapLegendContainer,\n MapLegendControl,\n MapLegendHeader,\n MapLegendSection,\n MapLegendValueDescr,\n} from './styled';\nimport { MapLegendSymbol } from './MapLegendSymbol';\n\nimport { LegendProvider } from '../../contexts';\n\nimport { useMapLegend } from '../../hooks';\n\ntype MapLegendProps = LegendProps & {\n fromToTitle?: [string, string];\n className?: string;\n};\n\nconst DEFAULT_FROM_TO: [string, string] = ['Выше', 'Ниже'];\n\nexport const MapLegend: React.FC<MapLegendProps> = ({\n layer,\n config,\n fromToTitle = DEFAULT_FROM_TO,\n className,\n}) => {\n const legend = useMapLegend(layer, config);\n\n if (!legend) {\n return null;\n }\n\n const { symbol, item } = legend;\n\n return (\n <LegendProvider symbol={symbol}>\n <MapLegendControl className={className}>\n <MapLegendContainer>\n <MapLegendHeader>{item.title}</MapLegendHeader>\n <MapLegendSection>\n <MapLegendValueDescr>{fromToTitle[0]}</MapLegendValueDescr>\n {item.values.map(value => (\n <MapLegendSymbol\n key={value.title}\n value={value}\n parameter={item.parameter}\n />\n ))}\n <MapLegendValueDescr>{fromToTitle[1]}</MapLegendValueDescr>\n </MapLegendSection>\n </MapLegendContainer>\n </MapLegendControl>\n </LegendProvider>\n );\n};\n","import { formatLength, formatPolygonMeasure } from '../core';\n\nexport interface MeasureToolFormatters {\n polygon: typeof formatPolygonMeasure;\n length: typeof formatLength;\n}\n\nexport const DEFAULT_FORMATTERS: MeasureToolFormatters = {\n polygon: formatPolygonMeasure,\n length: formatLength,\n};\n","import { PolylineControl } from '@evergis/sgis/es/controls/PolylineControl';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { Map as SMap } from '@evergis/sgis/es/Map';\nimport { PolyControlParams } from '@evergis/sgis/es/controls/PolyControl';\nimport { sGisMouseMoveEvent } from '@evergis/sgis/es/commonEvents';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport {\n area as calcArea,\n length as calcLength,\n} from '@evergis/sgis/es/geotools';\nimport { geo } from '@evergis/sgis/es/Crs';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport {\n ChangeEvent,\n DrawingFinishEvent,\n} from '@evergis/sgis/es/controls/Control';\n\nimport { renderLabelSymbolType } from '../components';\n\nimport { isPolylineLikePolygon } from '../core';\n\nimport {\n createLabelSymbol,\n measureAreaSymbol,\n ShadowedPolySymbol,\n} from '../symbols';\nimport {\n DEFAULT_FORMATTERS,\n MeasureToolFormatters,\n} from './MeasureToolFormatters';\n\ninterface BaseMeasureToolCreatorParams extends PolyControlParams {\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n areaSymbol?: ShadowedPolySymbol;\n}\n\nconst COORD_FRACTION = 6;\nconst DEFAULT_LABEL_POSITION: [number, number] = [Infinity, Infinity];\n\nexport class BaseMeasureToolCreator extends PolylineControl {\n private tempLabel?: LabelFeature;\n private coordLabel?: LabelFeature;\n private measureResultLabel?: LabelFeature;\n private tempPolygon?: Poly;\n formatters: MeasureToolFormatters;\n painter: DomPainter;\n renderLabelSymbol: renderLabelSymbolType;\n areaSymbol?: ShadowedPolySymbol;\n\n constructor(\n map: SMap,\n painter: DomPainter,\n params: BaseMeasureToolCreatorParams\n ) {\n super(map, params);\n this.painter = painter;\n this.renderLabelSymbol = params.renderLabelSymbol;\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\n this.areaSymbol = params.areaSymbol;\n this.on('pointAdd', this.handlePointAdd);\n // @ts-ignore\n this.on('change', this.updateDistance);\n }\n\n protected _handleMousemove(event: sGisMouseMoveEvent): void {\n super._handleMousemove(event);\n this.drawPointOnMouseMove(event);\n }\n\n protected _activate(): void {\n super._activate();\n this.addTempLabel();\n this.setCursor('pointer');\n }\n\n protected _deactivate(): void {\n super._deactivate();\n this.removeCoordLabel();\n this.removeTempLabel();\n this.removeMeasureLabel();\n this.removeTempPolygon();\n this.setCursor('default');\n }\n\n private handlePointAdd() {\n const feature = this.activeFeature;\n\n if (!feature) return;\n const { rings, crs }: Polyline = feature;\n\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\n this.finishDrawing();\n this.fire(new DrawingFinishEvent(feature, new MouseEvent('mouseup')));\n\n return;\n }\n\n if (rings[0].length === 2) {\n const projection = crs.projectionTo(geo);\n const point = rings[0][0];\n if (!projection) return;\n const [lat, long] = projection(point);\n\n this.removeTempLabel();\n this.addMeasureResultLabel();\n this.addCoordLabel(\n `${lat.toFixed(COORD_FRACTION)}, ${long.toFixed(COORD_FRACTION)}`,\n point\n );\n } else {\n this.removeCoordLabel();\n }\n }\n\n private polygonPreview() {\n if (this.tempPolygon) {\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\n }\n\n const feature = this.activeFeature;\n\n if (!feature) return;\n const { rings, crs } = feature;\n const polygonRings = [...rings[0]];\n\n polygonRings.shift();\n this.tempPolygon = new Polygon(polygonRings, { crs });\n this.tempPolygon.symbol = this.areaSymbol || measureAreaSymbol;\n\n this.activeFeature && this.activeFeature.hide();\n this._tempLayer && this._tempLayer.add(this.tempPolygon);\n }\n\n private removeTempPolygon() {\n if (this.tempPolygon) {\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\n delete this.tempPolygon;\n }\n }\n\n private updateDistance(event: ChangeEvent) {\n const feature = this.activeFeature;\n const { ringIndex, pointIndex } = event;\n\n if (!feature || ringIndex === null || pointIndex === null) return;\n\n const { rings, crs } = feature;\n\n const position = rings[ringIndex][pointIndex];\n const length = calcLength(rings, crs);\n let content = this.formatters.length(length);\n\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\n this.polygonPreview();\n\n const area = calcArea(rings, crs);\n\n content = this.formatters.polygon(area, length);\n } else if (this.tempPolygon) {\n feature.show();\n this.removeTempPolygon();\n }\n\n if (this.measureResultLabel) {\n this.measureResultLabel.position = position;\n this.measureResultLabel.content = content;\n }\n }\n\n private addTempLabel() {\n this.tempLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\n content: 'Нажмите на карту, чтобы начать измерение',\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer && this._tempLayer.add(this.tempLabel);\n }\n\n private addCoordLabel(content: string, position: Coordinates) {\n this.coordLabel = new LabelFeature(position, {\n content,\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n onClose: this.cancel,\n }),\n });\n this._tempLayer && this.coordLabel && this._tempLayer.add(this.coordLabel);\n }\n\n private addMeasureResultLabel() {\n this.measureResultLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer &&\n this.measureResultLabel &&\n this._tempLayer.add(this.measureResultLabel);\n }\n\n private removeTempLabel() {\n if (this.tempLabel) {\n this._tempLayer && this._tempLayer.remove(this.tempLabel);\n delete this.tempLabel;\n }\n }\n\n private removeCoordLabel() {\n if (this.coordLabel) {\n this._tempLayer && this._tempLayer.remove(this.coordLabel);\n delete this.coordLabel;\n }\n }\n\n private removeMeasureLabel() {\n if (this.measureResultLabel) {\n this._tempLayer && this._tempLayer.remove(this.measureResultLabel);\n delete this.measureResultLabel;\n }\n }\n\n private drawPointOnMouseMove(event: sGisMouseMoveEvent) {\n if (this.tempLabel) {\n this.tempLabel.position = event.point.position;\n }\n }\n\n private setCursor(cursor: 'pointer' | 'default') {\n const { wrapper } = this.painter;\n\n if (wrapper && typeof wrapper !== 'string') {\n wrapper.style.cursor = cursor;\n }\n }\n\n private cancel = () => {\n this.fire('cancel');\n };\n}\n","import { PolyEditor } from '@evergis/sgis/es/controls/PolyEditor';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { Map as SMap } from '@evergis/sgis/es/Map';\nimport { ControlWithSymbolParams } from '@evergis/sgis/es/controls/Control';\nimport {\n area as calcArea,\n length as calcLength,\n} from '@evergis/sgis/es/geotools';\n\nimport { renderLabelSymbolType } from '../components';\n\nimport { createLabelSymbol } from '../symbols';\nimport {\n DEFAULT_FORMATTERS,\n MeasureToolFormatters,\n} from './MeasureToolFormatters';\n\ninterface BaseMeasureToolEditorParams extends ControlWithSymbolParams {\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n}\n\nexport class BaseMeasureToolEditor extends PolyEditor {\n private measureResultLabel?: LabelFeature;\n formatters: MeasureToolFormatters;\n painter: DomPainter;\n renderLabelSymbol: renderLabelSymbolType;\n\n constructor(\n map: SMap,\n painter: DomPainter,\n params: BaseMeasureToolEditorParams\n ) {\n super(map, params);\n this.painter = painter;\n this.renderLabelSymbol = params.renderLabelSymbol;\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\n this.on('change', this.updateMeasureResult);\n this.on('edit', this.updateMeasureResult);\n }\n\n protected _activate(): void {\n super._activate();\n this.addMeasureResultLabel();\n }\n\n private measureResult = () => {\n const feature = this.activeFeature;\n\n if (!feature) return null;\n\n const { rings, isEnclosed, crs } = feature;\n const pointsCount = rings[0].length;\n const position = rings[0][pointsCount - 1];\n\n const area = calcArea(rings, crs);\n const length = calcLength(rings, crs, isEnclosed);\n const content = isEnclosed\n ? this.formatters.polygon(area, length)\n : this.formatters.length(length);\n\n return {\n content,\n position,\n };\n };\n\n private addMeasureResultLabel() {\n const measureResult = this.measureResult();\n if (measureResult === null) return;\n\n const { content, position } = measureResult;\n\n this.measureResultLabel = new LabelFeature(position, {\n content,\n crs: this.map.crs,\n symbol: createLabelSymbol({\n onClose: this.removeFeature,\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer && this._tempLayer.add(this.measureResultLabel);\n }\n\n updateMeasureResult() {\n if (this.measureResultLabel) {\n const measureResult = this.measureResult();\n\n if (measureResult === null) return;\n\n const { content, position } = measureResult;\n\n this.measureResultLabel.content = content;\n this.measureResultLabel.position = position;\n }\n }\n\n private removeFeature = () => {\n this.fire('remove');\n };\n}\n","import React from 'react';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Map as SMap } from '@evergis/sgis/es/Map';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\nimport { DrawingFinishEvent } from '@evergis/sgis/es/controls/Control';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\n\nimport { renderLabelSymbolType, MeasureProps } from './Measurer';\n\nimport { BaseMeasureToolCreator, BaseMeasureToolEditor } from '../../controls';\n\nimport { isPolylineLikePolygon } from '../../core';\n\nimport {\n measureAreaSymbol,\n measureLengthSymbol,\n measurePolygonSnapSymbol,\n} from '../../symbols';\n\ninterface MeasureToolProps extends Omit<MeasureProps, 'isActive'> {\n map: SMap;\n painter: DomPainter;\n}\n\nexport class MeasureTool extends React.Component<MeasureToolProps> {\n layer?: FeatureLayer;\n createControl?: BaseMeasureToolCreator;\n editorControl?: BaseMeasureToolEditor;\n\n componentDidMount(): void {\n const { map, painter, renderLabelSymbol } = this.props;\n\n this.layer = new FeatureLayer();\n this.initCreateMode(map, painter, renderLabelSymbol);\n this.initEditMode(map, painter, renderLabelSymbol);\n\n this.props.map.addLayer(this.layer);\n this.switchMode(true, false);\n }\n\n componentWillUnmount(): void {\n this.layer && this.props.map.removeLayer(this.layer);\n this.switchMode(false, false);\n this.offEvents();\n this.clearProperties();\n }\n\n initCreateMode(\n map: SMap,\n painter: DomPainter,\n renderLabelSymbol: renderLabelSymbolType\n ): void {\n const { lengthSymbol, formatters, areaSymbol } = this.props;\n\n this.createControl = new BaseMeasureToolCreator(map, painter, {\n isActive: false,\n useTempLayer: true,\n symbol: lengthSymbol || measureLengthSymbol,\n areaSymbol,\n dblClickMinTime: 300,\n renderLabelSymbol,\n formatters: formatters,\n });\n // @ts-ignore\n this.createControl.on('drawingFinish', this.createFeature);\n this.createControl.on('cancel', this.cancelFeatureCreation);\n }\n\n initEditMode(\n map: SMap,\n painter: DomPainter,\n renderLabelSymbol: renderLabelSymbolType\n ): void {\n const { lengthSymbol, snapSymbol, formatters } = this.props;\n\n this.editorControl = new BaseMeasureToolEditor(map, painter, {\n isActive: false,\n activeLayer: this.layer,\n snappingSymbol: snapSymbol || measurePolygonSnapSymbol,\n symbol: lengthSymbol || measureLengthSymbol,\n renderLabelSymbol,\n formatters,\n });\n this.editorControl.featureDragAllowed = false;\n this.editorControl.on('remove', this.removeFeature);\n }\n\n componentDidUpdate({ formatters }: MeasureToolProps) {\n const { formatters: currentFormatters } = this.props;\n\n if (currentFormatters !== formatters && currentFormatters)\n if (this.editorControl) {\n this.editorControl.formatters = currentFormatters;\n this.editorControl.updateMeasureResult();\n }\n }\n\n offEvents(): void {\n if (this.createControl) {\n // @ts-ignore\n this.createControl.off('drawingFinish', this.createFeature);\n }\n\n this.editorControl && this.editorControl.off('remove', this.removeFeature);\n this.createControl &&\n this.createControl.off('cancel', this.cancelFeatureCreation);\n }\n\n clearProperties(): void {\n delete this.createControl;\n delete this.editorControl;\n delete this.layer;\n }\n\n switchMode(create: boolean, edit: boolean): void {\n if (this.createControl) {\n this.createControl.isActive = create;\n }\n\n if (this.editorControl) {\n this.editorControl.isActive = edit;\n }\n }\n\n getFeature(rings: [number, number][][]): Feature | Feature[] {\n const { lengthSymbol, areaSymbol, map } = this.props;\n let feature;\n\n if (isPolylineLikePolygon(rings, map.resolution)) {\n rings[0].shift();\n feature = new Polygon(rings, { crs: map.crs });\n feature.symbol = areaSymbol || measureAreaSymbol;\n } else {\n feature = new Polyline(rings, { crs: map.crs });\n feature.symbol = lengthSymbol || measureLengthSymbol;\n }\n\n return feature;\n }\n\n createFeature = (event: DrawingFinishEvent<Polyline>): void => {\n const feature = this.getFeature([...event.feature.rings]);\n\n this.layer && this.layer.add(feature);\n if (this.editorControl) {\n this.editorControl.activeFeature = feature as Poly;\n }\n this.switchMode(false, true);\n };\n\n removeFeature = (): void => {\n if (this.editorControl && this.editorControl.activeFeature) {\n this.layer && this.layer.remove(this.editorControl.activeFeature);\n }\n\n this.switchMode(true, false);\n };\n\n cancelFeatureCreation = (): void => {\n setTimeout(() => {\n this.switchMode(false, false);\n this.switchMode(true, false);\n }, 10);\n };\n\n render(): React.ReactElement {\n return <div style={{ display: 'none' }} />;\n }\n}\n","import React, { ReactElement } from 'react';\n\nimport { useMapContext } from '../../contexts';\nimport { MeasureToolFormatters } from '../../controls/MeasureToolFormatters';\nimport { MeasureTool } from './MeasureTool';\nimport { ShadowedPolySymbol, ShadowedPointSymbol } from '../../symbols';\n\nexport type renderLabelSymbolType = (props: {\n content: string;\n onClose?: VoidFunction;\n}) => ReactElement;\n\nexport type MeasureProps = {\n isActive: boolean;\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n snapSymbol?: ShadowedPointSymbol;\n lengthSymbol?: ShadowedPolySymbol;\n areaSymbol?: ShadowedPolySymbol;\n};\n\nexport const Measurer: React.FC<MeasureProps> = ({ isActive, ...props }) => {\n const { map, painter } = useMapContext();\n\n return isActive ? (\n <MeasureTool map={map} painter={painter} {...props} />\n ) : null;\n};\n","import styled from 'styled-components';\n\nexport const ScaleRulerContainer = styled.div`\n height: 2rem;\n cursor: default;\n display: flex;\n align-items: flex-end;\n padding: 0 0.5rem 0.5rem;\n box-sizing: border-box;\n`;\n\ntype ScaleRulerBlockProps = {\n width: number;\n};\n\nexport const ScaleRulerBlock = styled.div<ScaleRulerBlockProps>`\n display: flex;\n align-items: flex-end;\n justify-content: center;\n width: ${({ width }) => `${width}px`};\n height: 0.25rem;\n border: 0.0625rem solid white;\n border-top: 0;\n`;\n\ntype TextContainerProps = {\n margin?: string;\n width?: string;\n buttonText?: boolean;\n alignEnd?: boolean;\n};\n\nexport const TextContainer = styled.div<TextContainerProps>`\n height: 2rem;\n display: flex;\n justify-content: center;\n align-items: ${({ alignEnd }) => (alignEnd ? 'flex-end' : 'center')};\n width: ${({ width }) => width || 'auto'};\n color: #fff;\n font-size: 1rem;\n cursor: default;\n padding: 0 0.5rem;\n`;\n","import React from 'react';\nimport { ScaleRulerBlock, ScaleRulerContainer, TextContainer } from './styled';\nimport { useMapView, useScale } from '../../hooks';\n\nexport const ScaleRuler: React.FC = () => {\n const { resolution } = useMapView();\n const { currentScale, width } = useScale({ resolution: resolution || 0 });\n\n return (\n <ScaleRulerContainer>\n <ScaleRulerBlock width={width}>\n <TextContainer alignEnd margin={'0'}>\n {currentScale >= 1000\n ? `${currentScale / 1000}km`\n : `${currentScale}m`}\n </TextContainer>\n </ScaleRulerBlock>\n </ScaleRulerContainer>\n );\n};\n","import React, { PropsWithChildren } from 'react';\n\nimport { MapControl, ZoomInBtn, ZoomOutBtn } from '../MapControls/styled';\n\nimport { useMapViewActions } from '../../hooks';\n\ntype ZoomProps = PropsWithChildren<{}>;\n\nexport const Zoom: React.FC<ZoomProps> = ({ children }) => {\n const { zoomIn, zoomOut } = useMapViewActions();\n\n return (\n <MapControl>\n <ZoomInBtn onClick={zoomIn} />\n <ZoomOutBtn onClick={zoomOut} />\n {children}\n </MapControl>\n );\n};\n","import React from 'react';\n\nimport { TextContainer } from './styled';\n\nimport { useMapLevel } from '../../hooks';\n\nexport const ZoomLevel: React.FC = () => {\n const level = useMapLevel();\n\n return (\n <TextContainer buttonText={true} width={'2rem'}>\n {level || 0}\n </TextContainer>\n );\n};\n","import styled, { css } from 'styled-components';\n\nimport { TooltipComponentProps, Placement } from './types';\n\nexport const TOOLTIP_PLACEMENTS: Placement[] = [\n 'top',\n 'right',\n 'left',\n 'bottom',\n];\n\nconst cornerBottom = (cornerSize: string) => css`\n &:before {\n left: 50%;\n transform: translate(-50%, 100%);\n bottom: 0;\n border-left: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid transparent;\n border-top: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n }\n`;\n\nconst cornerLeft = (cornerSize: string) => css`\n &:before {\n transform: translate(-100%, -50%);\n left: 0;\n top: 50%;\n border-top: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n border-bottom: ${cornerSize} solid transparent;\n }\n`;\n\nconst cornerRight = (cornerSize: string) => css`\n &:before {\n transform: translate(100%, -50%);\n right: 0;\n top: 50%;\n border-top: ${cornerSize} solid transparent;\n border-left: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n border-bottom: ${cornerSize} solid transparent;\n }\n`;\n\nconst cornerTop = (cornerSize: string) => css`\n &:before {\n transform: translate(-50%, -100%);\n left: 50%;\n top: 0;\n border-left: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid transparent;\n border-bottom: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n }\n`;\n\nconst top = (distance: string, cornerSize: string | null) => css`\n transform: translate(-50%, 0);\n left: -50%;\n bottom: ${distance};\n ${cornerSize && cornerBottom(cornerSize)}\n`;\n\nconst right = (distance: string, cornerSize: string | null) => css`\n transform: translate(0, -50%);\n top: -50%;\n left: ${distance};\n ${cornerSize && cornerLeft(cornerSize)}\n`;\n\nconst left = (distance: string, cornerSize: string | null) => css`\n transform: translate(0, -50%);\n top: -50%;\n right: ${distance};\n ${cornerSize && cornerRight(cornerSize)}\n`;\n\nconst bottom = (distance: string, cornerSize: string | null) => css`\n transform: translate(-50%, 0);\n left: -50%;\n top: ${distance};\n ${cornerSize && cornerTop(cornerSize)}\n`;\n\nexport const placementMixin = (\n placement: Placement = 'top',\n distance: string,\n cornerSize: string | null\n) => css`\n ${placement === 'top' && top(distance, cornerSize)}\n ${placement === 'right' && right(distance, cornerSize)}\n ${placement === 'left' && left(distance, cornerSize)}\n ${placement === 'bottom' && bottom(distance, cornerSize)}\n`;\n\nconst corner = css`\n &:before {\n content: '';\n width: 0;\n height: 0;\n position: absolute;\n }\n`;\n\nexport const TooltipComponent = styled.div<TooltipComponentProps>`\n position: absolute;\n z-index: 999;\n display: flex;\n font-size: 0.625rem;\n color: #fff;\n background-color: rgba(28, 33, 48, 0.8);\n padding: 0.4em 0.6em;\n border-radius: 2px;\n user-select: none;\n box-sizing: border-box;\n white-space: pre;\n ${({ placement, distance = '0.5rem', withArrow, cornerSize = '0.25rem' }) =>\n placementMixin(placement, distance, withArrow ? cornerSize : null)}\n ${({ withArrow }) => withArrow && corner}\n`;\n","import React, { createContext, useEffect } from 'react';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { Map } from '@evergis/sgis/es/Map';\n\nimport { TooltipComponent } from './styled';\nimport { ITooltip } from './types';\n\nimport { useTooltip } from '../../hooks';\n\n// TODO why???\nconst { Provider, Consumer } = createContext<Feature[]>([]);\n\n// TODO I just cant read that\nexport const Tooltip: React.FC<ITooltip> = ({\n features = [],\n map,\n center,\n component,\n zIndex,\n children,\n content,\n onEachFeature,\n clickMode,\n ...props\n}: ITooltip) => {\n const onTooltip = useTooltip(zIndex);\n\n useEffect(() => {\n (map ? [map] : features).forEach((feature: Feature | Map) => {\n const position =\n center && !(feature instanceof Map) && feature.bbox.center\n ? feature.bbox.center\n : undefined;\n\n onTooltip({\n feature,\n component:\n typeof onEachFeature === 'function'\n ? () => onEachFeature(feature)\n : () => <TooltipComponent {...props}>{content}</TooltipComponent>,\n position,\n clickMode,\n });\n });\n }, [\n content,\n clickMode,\n onEachFeature,\n onTooltip,\n map,\n center,\n features,\n component,\n props,\n ]);\n\n return (\n <Provider value={features}>\n {map ? children : children ? <Consumer>{children}</Consumer> : null}\n </Provider>\n );\n};\n","import React from 'react';\n\n/** No operation element */\nexport const Noop = () => <div style={{ display: 'none' }}></div>;\n","import React, { FC, ReactElement, Fragment } from 'react';\n\nimport { useDraggableMarker } from '../../hooks';\n\nimport { DraggableMarkerProps } from './types';\n\nexport const DraggableMarker: FC<DraggableMarkerProps> = ({\n position,\n onChange,\n symbol,\n}): ReactElement => {\n useDraggableMarker({ position, onChange, symbol });\n\n return <Fragment />;\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nexport const polygonCircleFromPoint = (\n center: Coordinates,\n diameter: number\n): Coordinates[][] => {\n const coordinates: Coordinates[] = [];\n const radius = diameter / 2;\n const endAngle = Math.PI * 2;\n const step = Math.max(Math.PI / 2 / radius, endAngle / 128);\n let start = 0;\n let end = endAngle;\n\n for (let ang = start; ang < end; ang += step) {\n coordinates.push([\n Math.cos(ang) * radius + center[0],\n Math.sin(ang) * radius + center[1],\n ]);\n }\n\n return [coordinates];\n};\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","CircleLineMiterRender","polygonCircleFromPoint","SquareLineMiterRender","getLineMiterRender","options","updateRingForRightMiter","isLastRing","reversedRing","reverse","coordinates","nextCoordinates","abs","updateRingForLeftMiter","isFirstRing","newRing","prevCoordinates","updateRingsForMiter","ringIndex","copyRings","SGisPolylineSymbol","beginningSize","endingSize","renders","featureCopy","clone","beginningMiterRender","endingMiterRender","updatedRings","usageSize","render","getRender","unshift","sPolylineSymbol","LabelSymbol","component","node","renderDom","content","getNode","Component","ReactDOM","innerText","DynamicPointSymbol","defaultOffset","createLabelSymbol","props","renderLabel","onClose","createShadowRender","shadowColor","shadowSize","shadowDiameter","getEditorPointRenderer","ShadowedPointSymbol","PointFeature","projectTo","pxPosition","shadowRender","getShadow","pointArc","getPoint","_feature","getShadowArc","getPointArc","params","pointRender","PointSymbol","ShadowedPolySymbol","Poly","polyRender","getPolyRender","vertexRenders","getVertexRenders","concat","enclose","showVertex","vertexCoordinates","acc","curr","coord","vertexShadowSize","PolylineSymbol","polySymbolParams","measureSymbolParams","measureLengthSymbol","measureAreaSymbol","snapSymbolParams","measurePolygonSnapSymbol","SelectedPointSymbol","isSelected","selectedStrokeColor","selectedFillColor","SelectedPolySymbol","selectedStrokeWidth","selectedPoint","selectedPolyline","selectedPolygon","metersToPixels","meters","zeroPoint","maxWidthPoint","widthDistance","distance","pxK","defaultPathStyles","SVGPoly","redrawFeatureNode","pathStyles","circle","className","appendToSvg","container","getRenderedCoordinates","centroid","setCirclePxRaius","innerHTML","svg","setSvg","append","__dynamicSymbolRender","DynamicRender","update","redraw","_setEventListeners","radius","pxOffset","__lastBbox","__lastResolution","canProjectTo","newCoordinates","polygon","radiusOffset","dx","dy","left","top","miterLimit","dashOffset","svgRender","SvgRender","_setArcNode","_setPolyNode","svgElement","classList","add","querySelector","setAttribute","dynamicFeature","eventFlags","MouseEventFlags","svgNode","keys","mouseEvents","forEach","eventName","flag","listenDomEvent","fire","Symbol","isSGisPointSymbol","StaticImageSymbol","SquareSymbol","MaskedImage","isSGisImageSymbol","isSGisPolygonSymbol","PolygonSymbol","BrushFill","ImageFill","isSGisPolylineSymbol","isSGisH3Symbol","H3Symbol","viewBoxSize","pointFeature","plain","lineFeature","Polyline","polygonFeature","Polygon","h3gridFeature","H3Feature","lineLegendFeature","polygonLegendFeature","polygonMapLegendFeature","MAP_LEGEND_FEATURES","LEGEND_FEATURES","polyline","h3grid","MOCK_FEATURES","getSymbolRenders","featuresToRender","renderFunctionAsync","getMapLegendSymbolRenders","getLegendSymbolRenders","renderSymbolToCanvas","draw","deserializeSymbol","deserializePointSymbol","deserializeSquareSymbol","deserializeMaskedImageSymbol","deserializeImagePointSymbol","deserializePolygonSymbol","deserializePolylineSymbol","SPointSymbol","deserializePointSymbolParams","SSquareSymbol","angle","anchorPoint","deserializeAnchor","imageSource","deserializeBase64","image","maskSource","imageMask","maskColor","deserializeColor","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","createStyleLegend","config","items","parameters","createValueTitle","formatArea","measure","formatLength","formatPolygonMeasure","area","perimiter","isPolylineLikePolygon","coords","firstPoint","lastPoint","softEquals","getScale","scale","scales","pow","useLegend","DEFAULT_LEGEND_CONFIG","useLayerLegend","styleProxy","useMapLegend","legend","firstLegend","item","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","on","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","remove","currentFeatureEvents","onMouseOver","onMouseMove","onMouseOut","onClick","hasListener","onSetLabelFeature","clickMode","LabelFeature","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","setCursor","cursor","none","useDraggableMarker","onChange","pointEditor","PointEditor","isActive","activeLayer","onMapClick","addLayer","activeFeature","hasMapClick","useMetersToPixels","useMetersToPixelsCb","useDebouncedCallback","interval","debounce","cb","CompoundIcon","styled","div","geometryType","icons","MAX_SIZE","StyleSymbol","EvergisCardContainer","Icon","StickyHeader","CardHeader","CardTitle","CardControls","FeatureName","LayerName","CardPagination","PaginationDescription","CurrentFeatureIndex","CardAttributes","AttributeContainer","AttributeTitle","AttributeValueContainer","SimpleAttribute","ValueLink","featureCardIconMixin","css","StatIcon","ZoomIcon","CloseIcon","PrevIcon","NextIcon","MailValue","rel","href","PhoneValue","phone","UrlValue","AttributeValue","key","punycodeDecode","domains","punycode","toUnicode","error","EvergisCardAttribute","StyledCard","onAttributes","onStatistics","onFeatureChange","headerExtra","hideZoom","EvergisCard","renderCard","hookProps","cardProps","truthly","setSelected","toSgis","useSGisFeatures","currentIndex","EvergisSelectLayer","sGisFeatures","useTileLayer","maskUrl","tileLayerParams","TileLayer","defaultZIndex","EvergisSelect","LegendContainer","LegendSectionContainer","LegendSymbolTitle","p","LegendValueContainer","LegendSectionHeader","LegendSection","renderLegendTitle","InputContainer","InputField","input","SearchPrefix","defaultProps","SearchInput","LegendSymbol","LegendValue","maxSize","getNumberParam","param","getSymbolSize","Legend","renderCustomLegend","searchLayer","searchable","legendItem","legendValue","state","topLeft","topRight","bottomLeft","bottomRight","placementMixin","placement","mapControlBtnMixin","ZoomInBtn","ZoomOutBtn","SearchBtn","FullscreenBtn","MeasureBtn","MapControl","MapControls","vertical","Measure","Search","Fullscreen","MapLegendControl","MapLegendContainer","MapLegendHeader","MapLegendSection","MapLegendValueDescr","MapLegendSymbol","DEFAULT_FROM_TO","MapLegend","fromToTitle","DEFAULT_FORMATTERS","COORD_FRACTION","DEFAULT_LABEL_POSITION","Infinity","BaseMeasureToolCreator","renderLabelSymbol","formatters","areaSymbol","handlePointAdd","updateDistance","drawPointOnMouseMove","addTempLabel","removeCoordLabel","removeTempLabel","removeMeasureLabel","removeTempPolygon","finishDrawing","DrawingFinishEvent","MouseEvent","projection","projectionTo","lat","long","addMeasureResultLabel","addCoordLabel","tempPolygon","_tempLayer","polygonRings","shift","hide","pointIndex","calcLength","polygonPreview","calcArea","measureResultLabel","tempLabel","coordLabel","cancel","PolylineControl","BaseMeasureToolEditor","isEnclosed","pointsCount","updateMeasureResult","measureResult","removeFeature","PolyEditor","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","diameter","endAngle","step","start","end","ang","cos","sin"],"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/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/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/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/MapLegendSymbol.tsx","../src/components/MapLegend/MapLegend.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';\nimport { Api } from '@evergis/api';\n\nconst BASE_URL = '/';\n\nconst defaultApi = new Api({\n url: BASE_URL,\n});\n\nconst evergisContext = createContext<Api>(defaultApi);\n\ntype EvergisProviderProps = {\n api?: Api;\n};\n\nexport const EvergisProvider: React.FC<EvergisProviderProps> = ({\n api,\n children,\n}) => {\n const value = useMemo(() => api || defaultApi, [api]);\n return (\n <evergisContext.Provider value={value}>{children}</evergisContext.Provider>\n );\n};\n\nexport const useEvergisContext = () => useContext(evergisContext);\n","import React, { createContext, useContext, useMemo } from 'react';\nimport { Map } from '@evergis/sgis/es/Map';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype MapContext = {\n map: Map;\n painter: DomPainter;\n};\n\nconst defaultMap = new Map();\nconst defaultPainter = new DomPainter(defaultMap);\n\nconst mapContext = createContext<MapContext>({\n map: defaultMap,\n painter: defaultPainter,\n});\n\ntype MapProviderProps = {\n map?: Map;\n painter?: DomPainter;\n};\n\nexport const MapProvider: React.FC<MapProviderProps> = ({\n map,\n painter,\n children,\n}) => {\n const value = useMemo(\n () => ({\n map: map || defaultMap,\n painter: painter || (map ? new DomPainter(map) : defaultPainter),\n }),\n [map, painter]\n );\n return <mapContext.Provider value={value}>{children}</mapContext.Provider>;\n};\n\nexport const useMapContext = () => useContext(mapContext);\n","import React, { createContext, useContext, useMemo } from 'react';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\n\ntype TooltipContext = {\n layer: FeatureLayer;\n popupLayer: FeatureLayer;\n};\n\nconst defaultLayer = new FeatureLayer();\n\nconst defaultPopupLayer = new FeatureLayer();\n\nconst tooltipContext = createContext<TooltipContext>({\n layer: defaultLayer,\n popupLayer: defaultPopupLayer,\n});\n\ntype TooltipProviderProps = {\n layer?: FeatureLayer;\n popupLayer?: FeatureLayer;\n zIndex?: number;\n};\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\n layer,\n popupLayer,\n children,\n}) => {\n const value = useMemo(\n () => ({\n layer: layer || defaultLayer,\n popupLayer: popupLayer || defaultPopupLayer,\n }),\n [layer, popupLayer]\n );\n\n return (\n <tooltipContext.Provider value={value}>{children}</tooltipContext.Provider>\n );\n};\n\nexport const useTooltipContext = () => useContext(tooltipContext);\n","import React, { createContext, useContext } from 'react';\nimport { StyleSymbolType } from '../core/style/types/symbol';\n\nconst LegendContext = createContext<StyleSymbolType | null>(null);\n\ntype LegendProviderProps = {\n symbol?: StyleSymbolType;\n};\n\nexport const LegendProvider: React.FC<LegendProviderProps> = ({\n symbol,\n children,\n}) => {\n return (\n <LegendContext.Provider value={symbol || null}>\n {children}\n </LegendContext.Provider>\n );\n};\n\nexport const useLegendContext = () => useContext(LegendContext);\n","import React, { createContext, useContext } from 'react';\nimport { EvergisLayer } from '../core/layer/EvergisLayer';\n\nconst evergisSelectContext = createContext<EvergisLayer[]>([]);\n\ntype EvergisSelectProviderProps = {\n layers: EvergisLayer[];\n};\n\nexport const EvergisSelectProvider: React.FC<EvergisSelectProviderProps> = ({\n layers,\n children,\n}) => (\n <evergisSelectContext.Provider value={layers}>\n {children}\n </evergisSelectContext.Provider>\n);\nexport const useEvergisSelectContext = () => useContext(evergisSelectContext);\n","import { useCallback } from 'react';\nimport { getMouseOffset } from '@evergis/sgis/es/utils/domEvent';\nimport { sGisMouseEvent } from '@evergis/sgis/es/commonEvents';\nimport { IPoint } from '@evergis/sgis/es/Point';\n\nimport { useMapContext } from '../contexts';\n\nexport const useEventPoint = () => {\n const { painter } = useMapContext();\n\n return useCallback(\n (event: sGisMouseEvent | TouchEvent | MouseEvent): IPoint => {\n if ('point' in event) {\n return event.point;\n }\n\n const browserEvent =\n 'browserEvent' in event ? event['browserEvent'] : event;\n\n const wrapper = painter.wrapper;\n const { x, y } = getMouseOffset(\n wrapper,\n 'touches' in browserEvent\n ? {\n pageX: browserEvent.touches[0].pageX,\n pageY: browserEvent.touches[0].pageY,\n }\n : browserEvent\n );\n const originalPoint = painter.getPointFromPxPosition(x, y);\n\n return originalPoint;\n },\n [painter]\n );\n};\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';\n\nimport { useMapViewActions } from './useMapViewActions';\n\nimport { EvergisFeature } from '../core';\n\nexport const useZoomToFeature = () => {\n const { animateTo } = useMapViewActions();\n\n return useCallback(\n (feature: EvergisFeature) => {\n const extent = feature.extent();\n\n if (extent) {\n animateTo({ extent });\n }\n },\n [animateTo]\n );\n};\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(\n x: number,\n fractionDigits = 2,\n delim: ',' | '.' | '' = ','\n): string {\n const [num, frac] = x.toFixed(fractionDigits).split('.');\n const numWithSpaces = num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n return [numWithSpaces, frac].join(delim);\n}\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';\n\nimport { numberWithSpaces } from '../../utils/format';\nimport {\n isStringAsMail,\n isStringAsPhone,\n isStringAsUrl,\n matchPhone,\n isRequisiteNumbers,\n isStringAsOgrn,\n isStringContainsDate,\n} from '../../utils/url';\n\nexport const NO_CONTENT_VALUE = '—';\n\nconst stringAttribute = (value: string) => ({\n type: AttributeValueType.String,\n value,\n});\n\nconst urlAttribute = (value: string) => ({\n type: AttributeValueType.Url,\n value,\n});\n\nconst mailAttribute = (value: string) => ({\n type: AttributeValueType.Mail,\n value,\n});\n\nconst phoneAttribute = (value: string) => ({\n type: AttributeValueType.Phone,\n value,\n});\n\nconst convertStringAttribute = (value: string) => {\n if (isStringAsMail(value)) {\n return mailAttribute(value);\n }\n\n if (isStringAsUrl(value)) {\n return urlAttribute(value);\n }\n\n if (isStringAsPhone(value)) {\n return phoneAttribute(value);\n }\n\n return stringAttribute(value);\n};\n\nconst formatStringAttribute = (value: string): AttributeValue[] => {\n const phones = matchPhone(value);\n\n if (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phones &&\n phones.length\n ) {\n return phones.map(phoneAttribute);\n }\n\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\n\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\n return [\n stringAttribute(\n attributeValues\n .map(({ value }) =>\n isNaN(+value) || isRequisiteNumbers(value)\n ? isStringAsOgrn(value)\n ? +value\n : value\n : numberWithSpaces(+value, 0, '')\n )\n .join(' ')\n ),\n ];\n }\n\n return attributeValues;\n};\n\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\n stringAttribute(value.toString());\n\nconst formatIntAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, 0, ''));\n\nconst DOUBLE_FRACTIONS = 2;\n\nconst formatDoubleAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\n\nconst isNullOrUndefined = <Value>(\n value: Value | null | undefined\n): value is null | undefined => value === null || value === undefined;\n\nconst NO_CONTENT_ATTRIBUTE = {\n type: AttributeValueType.String,\n value: NO_CONTENT_VALUE,\n};\n\nexport const formatAttributeValue = (\n attribute: FeatureAttribute\n): AttributeValue[] => {\n if (isNullOrUndefined(attribute.value)) {\n return [NO_CONTENT_ATTRIBUTE];\n }\n\n switch (attribute.type) {\n case 'String':\n return formatStringAttribute(attribute.value as string);\n case 'DateTime':\n return [formatDateTimeAttribute(attribute.value as Date)];\n case 'Int32':\n case 'Int64':\n return [formatIntAttribute(attribute.value as number)];\n case 'Double':\n return [formatDoubleAttribute(attribute.value as number)];\n default:\n return [NO_CONTENT_ATTRIBUTE];\n }\n};\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\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';\n\nexport const PARAMETER_SEPARATOR = '.';\n\nexport const parameterToPaths = (\n parameter: ClassificationParameterExtended\n): ClassificationParameterExtended[] =>\n parameter.split(PARAMETER_SEPARATOR) as ClassificationParameterExtended[];\n\nexport const pathsToParameter = (\n paths: ClassificationParameterExtended[]\n): ClassificationParameterExtended =>\n paths.join(PARAMETER_SEPARATOR) as ClassificationParameterExtended;\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\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 CompositeSymbolDc,\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} 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 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 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\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 {\n DashedBrushDc,\n HatchBrushDc,\n PatternBrushDc,\n SolidStrokeBrushDc,\n TextBackgroundDc,\n} from '@evergis/api';\n\nimport { ClientSymbol, symbolTypeGuard, Unclassify } from './utils';\nimport { isPolygonSymbol, PolygonSymbol, UnknownSymbol } from './symbol';\n\nexport type SolidBrush = ClientSymbol<'solid', SolidStrokeBrushDc>;\nexport type DashedBrush = ClientSymbol<'dashed', DashedBrushDc>;\nexport type HatchBrush = ClientSymbol<'hatch', HatchBrushDc>;\nexport type PatternBrush = ClientSymbol<'pattern', PatternBrushDc>;\nexport type StrokeBrushType = SolidBrush | DashedBrush;\nexport type FillBrushType = SolidBrush | HatchBrush | PatternBrush;\n\nexport const isHatchBrush = symbolTypeGuard<HatchBrush>('hatch');\nexport const isPatternBrush = symbolTypeGuard<PatternBrush>('pattern');\nexport const isDashedBrush = symbolTypeGuard<DashedBrush>('dashed');\nexport const isSolidBrush = symbolTypeGuard<SolidBrush>('solid');\n\nexport const isPolygonHasPatternBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<PatternBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isPatternBrush(symbol.fill));\n\nexport const isPolygonHasHatchBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<HatchBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isHatchBrush(symbol.fill));\n\nexport type TextBackgroundType = Omit<TextBackgroundDc, 'fill' | 'stroke'> & {\n fill: Unclassify<FillBrushType>;\n stroke: Unclassify<StrokeBrushType>;\n};\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';\nimport { ParameterByAttribute } from './parameterValue';\n\nimport { isParameterByAttribute } from '../../classification/parameterValue';\n\nexport type SimpleOffset = [number, number];\n\nexport type ClassifiedOffset = [\n ParameterByAttribute<number>,\n ParameterByAttribute<number>\n];\n\nexport type Offset = SimpleOffset | ClassifiedOffset;\n\nexport const isSimpleOffset = (offset: Offset): offset is SimpleOffset =>\n offset &&\n !isParameterByAttribute(offset[0]) &&\n !isParameterByAttribute(offset[1]);\n\nexport const isSymbolWithOffset = (\n symbol: UnknownSymbol\n): symbol is PointSymbolType => Boolean(symbol && 'offset' in symbol);\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';\n\nimport { LabelType } from './label';\nimport { CompositeSymbolType, RasterSymbol, StyleSymbolType } from './symbol';\n\nexport type Style = Omit<StyleDc, 'symbol' | 'children'> & {\n symbol: Exclude<StyleSymbolType, CompositeSymbolType>;\n ignoreLabel?: boolean;\n label: LabelType | null;\n raster: RasterSymbol | null;\n children: Style[] | null;\n};\n\nexport const isStyle = (value: object): value is Style => 'symbol' in value;\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';\nimport { ExtendedClassification } from './types';\n\nimport { Style } from '../style/types';\n\nexport class ClassificationManager {\n private classifications: ExtendedClassification[] = [];\n\n constructor(private style: Style) {\n this.collectClassifications();\n }\n\n public get values() {\n return this.classifications;\n }\n\n public find(predicate: (classification: ExtendedClassification) => boolean) {\n for (const classification of this.classifications) {\n if (predicate(classification)) {\n return classification;\n }\n }\n\n return null;\n }\n\n public filter(callback: (classification: ExtendedClassification) => boolean) {\n return this.classifications.filter(callback);\n }\n\n public map<T extends ValueOf<ExtendedClassification>>(\n callback: (classification: ExtendedClassification) => T\n ) {\n return this.classifications.map(callback);\n }\n\n public reduce<T>(\n callback: (classifications: T, classification: ExtendedClassification) => T,\n initial: T\n ) {\n return this.classifications.reduce(callback, initial);\n }\n\n public hasClassifications() {\n return this.classifications.length > 0;\n }\n\n private collectClassifications() {\n if (this.style.children && this.style.children.length) {\n this.classifications.push(\n toClassification(this.style.children, 'symbol')\n );\n }\n\n if (this.style.symbol) {\n this.classifications.push(...getClassifications(this.style.symbol));\n }\n }\n}\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 {\n Crs,\n ellipticalMercator,\n geo,\n webMercator,\n wgs84,\n} from '@evergis/sgis/es/Crs';\n\n/** Spatial Reference WKID using for @evergis/sgis */\nexport enum SrId {\n /** 3857 */\n WebMercator = 3857,\n /** 4326 */\n Geo = 4326,\n /** 84 */\n Wgs84 = 84,\n /** 3395 */\n EllipticalMercator = 3395,\n}\n\nexport const CRS_MAP: Record<SrId, Crs> = {\n [SrId.WebMercator]: webMercator,\n [SrId.Geo]: geo,\n [SrId.Wgs84]: wgs84,\n [SrId.EllipticalMercator]: ellipticalMercator,\n};\n\nexport const DEFAULT_SRID = SrId.WebMercator;\n\nexport const DEFAULT_CRS = CRS_MAP[DEFAULT_SRID];\n\nexport const getCrs = (srId: number): Crs => CRS_MAP[srId as SrId];\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';\n\nexport const getHexColor = (colorString: string): string | undefined =>\n colorString ? new Color(colorString).toString('hex') : undefined;\n","// TODO reduce\nexport const PREVIEW_LIMITS = {\n STROKE_WIDTH_MIN: 0.25,\n STROKE_WIDTH_MAX: 6.5,\n};\n","export function clamp(num: number, min: number, max: number): number {\n return Math.min(Math.max(num, min), max);\n}\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';\nimport { Color } from '@evergis/color';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport {\n FillBrushType,\n HatchBrush,\n isHatchBrush,\n PolygonSymbol,\n} from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nconst ALPHA_NORMALIZER = 65025;\n\nconst sum = (numbers: number[]) =>\n numbers.reduce((result, num) => result + num, 0);\n\nconst shouldFillMatrixCell = (\n matrixSize: number,\n hatchAngle: number,\n x: number,\n y: number\n) => {\n const center = Math.round(matrixSize / 2);\n\n if ((hatchAngle === 0 || hatchAngle === Math.PI) && x === center) {\n return true;\n }\n if (hatchAngle === Math.PI / 4 && y === x) {\n return true;\n }\n if (hatchAngle === Math.PI / 2 && y === center) {\n return true;\n }\n\n return hatchAngle === (3 * Math.PI) / 4 && matrixSize - 1 - y === x;\n};\n\nconst createEmptyMatrix = (size: number): number[][] =>\n Array(size)\n .fill(null)\n .map(() => Array(size));\n\nconst fillMatrix = (\n matrix: number[][],\n filler: (x: number, y: number, size: number) => number\n) => {\n const matrixSize = matrix.length;\n\n for (let x = 0; x < matrixSize; x++) {\n for (let y = 0; y < matrixSize; y++) {\n matrix[x][y] = filler(x, y, matrixSize);\n }\n }\n};\n\nconst createFillBrushMatrix = (\n hatchAngle: number,\n hatchWidth: number,\n scalingFactor: number[]\n) => {\n const matrixSize = Math.max(\n Math.round(sum([Math.max(...scalingFactor), hatchWidth])),\n hatchWidth\n );\n const matrix = createEmptyMatrix(matrixSize);\n\n fillMatrix(matrix, (x, y, size) =>\n shouldFillMatrixCell(size, hatchAngle, x, y) ? 255 : 0\n );\n\n return matrix;\n};\n\nconst createSymbolFillBrush = (\n fillBrush: FillBrushType\n): number[][] | undefined => {\n if (fillBrush.type !== 'hatch') return undefined;\n\n return createFillBrushMatrix(\n // @ts-ignore\n getParameterValue(fillBrush.hatchAngle),\n // @ts-ignore\n Math.round(fillBrush.hatchWidth),\n fillBrush.scalingFactor\n );\n};\n\nexport class SGisBrushFill extends sBrushFill {\n constructor(public originalSymbol: PolygonSymbol<HatchBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n fillBackground: getHexColor(\n // @ts-ignore\n getParameterValue(originalSymbol.fill?.color)\n ),\n fillForeground: isHatchBrush(originalSymbol.fill)\n ? // @ts-ignore\n getHexColor(getParameterValue(originalSymbol.fill?.hatchColor))\n : void 0,\n fillBrush: createSymbolFillBrush(originalSymbol.fill),\n lineCap: 'square',\n });\n }\n\n _updateBrush() {\n // @ts-ignore\n if (!this._initialized) return;\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return;\n }\n\n const brush = this.fillBrush;\n const brushSize = brush.length;\n const foreground = new Color(this.fillForeground);\n const background = new Color(this.fillBackground);\n\n canvas.height = brushSize;\n canvas.width = brushSize;\n for (let i = 0; i < brushSize; i++) {\n // eslint-disable-next-line id-length\n for (let j = 0; j < brush[i].length; j++) {\n const srcA = (brush[i][j] * foreground.a) / ALPHA_NORMALIZER;\n const dstA = (background.a / 255) * (1 - srcA);\n const alpha = +Math.min(1, srcA + dstA).toFixed(2);\n const red = Math.round(\n Math.min(255, background.r * dstA + foreground.r * srcA)\n );\n const green = Math.round(\n Math.min(255, background.g * dstA + foreground.g * srcA)\n );\n const blue = Math.round(\n Math.min(255, background.b * dstA + foreground.b * srcA)\n );\n\n ctx.fillStyle = `rgba(${red},${green},${blue},${alpha})`;\n ctx.fillRect(j, i, 1, 1);\n }\n }\n this._brush = new Image();\n this._brush.src = canvas.toDataURL();\n }\n\n clone() {\n return new SGisBrushFill(this.originalSymbol);\n }\n}\n","import { ImageFill as sImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PatternBrush, PolygonSymbol } from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisImageFill extends sImageFill {\n constructor(public originalSymbol: PolygonSymbol<PatternBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n src: `data:image/png;base64,${originalSymbol.fill.pattern}`,\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisImageFill(this.originalSymbol);\n }\n}\n","import { PolygonSymbol as sPolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PolygonSymbol } from '../../core/style/types';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisPolygonSymbol extends sPolygonSymbol {\n constructor(public originalSymbol: PolygonSymbol) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n // @ts-ignore\n fillColor: getHexColor(getParameterValue(originalSymbol.fill?.color)),\n // TODO?: may be it should be defined by user\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisPolygonSymbol(this.originalSymbol);\n }\n}\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';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\n\nimport { LineMiterKind } from '../../core/style/types';\n\nexport class ArrowLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth;\n }\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [\n [\n [x, y + this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y],\n [x, y - this.miterSize / 2],\n ],\n ];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineMiterKind.FilledArrow;\n\n return new PolyRender(miterRings, {\n enclosed: isFilled,\n fillColor: isFilled ? this.color : void 0,\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\n lineCap: 'square',\n lineJoin: 'miter',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n });\n }\n}\n","import { formatLength, formatPolygonMeasure } from '../core';\n\nexport interface MeasureToolFormatters {\n polygon: typeof formatPolygonMeasure;\n length: typeof formatLength;\n}\n\nexport const DEFAULT_FORMATTERS: MeasureToolFormatters = {\n polygon: formatPolygonMeasure,\n length: formatLength,\n};\n","import { PolylineControl } from '@evergis/sgis/es/controls/PolylineControl';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { Map as SMap } from '@evergis/sgis/es/Map';\nimport { PolyControlParams } from '@evergis/sgis/es/controls/PolyControl';\nimport { sGisMouseMoveEvent } from '@evergis/sgis/es/commonEvents';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport {\n area as calcArea,\n length as calcLength,\n} from '@evergis/sgis/es/geotools';\nimport { geo } from '@evergis/sgis/es/Crs';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport {\n ChangeEvent,\n DrawingFinishEvent,\n} from '@evergis/sgis/es/controls/Control';\n\nimport { renderLabelSymbolType } from '../components';\n\nimport { isPolylineLikePolygon } from '../core';\n\nimport {\n createLabelSymbol,\n measureAreaSymbol,\n ShadowedPolySymbol,\n} from '../symbols';\nimport {\n DEFAULT_FORMATTERS,\n MeasureToolFormatters,\n} from './MeasureToolFormatters';\n\ninterface BaseMeasureToolCreatorParams extends PolyControlParams {\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n areaSymbol?: ShadowedPolySymbol;\n}\n\nconst COORD_FRACTION = 6;\nconst DEFAULT_LABEL_POSITION: [number, number] = [Infinity, Infinity];\n\nexport class BaseMeasureToolCreator extends PolylineControl {\n private tempLabel?: LabelFeature;\n private coordLabel?: LabelFeature;\n private measureResultLabel?: LabelFeature;\n private tempPolygon?: Poly;\n formatters: MeasureToolFormatters;\n painter: DomPainter;\n renderLabelSymbol: renderLabelSymbolType;\n areaSymbol?: ShadowedPolySymbol;\n\n constructor(\n map: SMap,\n painter: DomPainter,\n params: BaseMeasureToolCreatorParams\n ) {\n super(map, params);\n this.painter = painter;\n this.renderLabelSymbol = params.renderLabelSymbol;\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\n this.areaSymbol = params.areaSymbol;\n this.on('pointAdd', this.handlePointAdd);\n // @ts-ignore\n this.on('change', this.updateDistance);\n }\n\n protected _handleMousemove(event: sGisMouseMoveEvent): void {\n super._handleMousemove(event);\n this.drawPointOnMouseMove(event);\n }\n\n protected _activate(): void {\n super._activate();\n this.addTempLabel();\n this.setCursor('pointer');\n }\n\n protected _deactivate(): void {\n super._deactivate();\n this.removeCoordLabel();\n this.removeTempLabel();\n this.removeMeasureLabel();\n this.removeTempPolygon();\n this.setCursor('default');\n }\n\n private handlePointAdd() {\n const feature = this.activeFeature;\n\n if (!feature) return;\n const { rings, crs }: Polyline = feature;\n\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\n this.finishDrawing();\n this.fire(new DrawingFinishEvent(feature, new MouseEvent('mouseup')));\n\n return;\n }\n\n if (rings[0].length === 2) {\n const projection = crs.projectionTo(geo);\n const point = rings[0][0];\n if (!projection) return;\n const [lat, long] = projection(point);\n\n this.removeTempLabel();\n this.addMeasureResultLabel();\n this.addCoordLabel(\n `${lat.toFixed(COORD_FRACTION)}, ${long.toFixed(COORD_FRACTION)}`,\n point\n );\n } else {\n this.removeCoordLabel();\n }\n }\n\n private polygonPreview() {\n if (this.tempPolygon) {\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\n }\n\n const feature = this.activeFeature;\n\n if (!feature) return;\n const { rings, crs } = feature;\n const polygonRings = [...rings[0]];\n\n polygonRings.shift();\n this.tempPolygon = new Polygon(polygonRings, { crs });\n this.tempPolygon.symbol = this.areaSymbol || measureAreaSymbol;\n\n this.activeFeature && this.activeFeature.hide();\n this._tempLayer && this._tempLayer.add(this.tempPolygon);\n }\n\n private removeTempPolygon() {\n if (this.tempPolygon) {\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\n delete this.tempPolygon;\n }\n }\n\n private updateDistance(event: ChangeEvent) {\n const feature = this.activeFeature;\n const { ringIndex, pointIndex } = event;\n\n if (!feature || ringIndex === null || pointIndex === null) return;\n\n const { rings, crs } = feature;\n\n const position = rings[ringIndex][pointIndex];\n const length = calcLength(rings, crs);\n let content = this.formatters.length(length);\n\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\n this.polygonPreview();\n\n const area = calcArea(rings, crs);\n\n content = this.formatters.polygon(area, length);\n } else if (this.tempPolygon) {\n feature.show();\n this.removeTempPolygon();\n }\n\n if (this.measureResultLabel) {\n this.measureResultLabel.position = position;\n this.measureResultLabel.content = content;\n }\n }\n\n private addTempLabel() {\n this.tempLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\n content: 'Нажмите на карту, чтобы начать измерение',\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer && this._tempLayer.add(this.tempLabel);\n }\n\n private addCoordLabel(content: string, position: Coordinates) {\n this.coordLabel = new LabelFeature(position, {\n content,\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n onClose: this.cancel,\n }),\n });\n this._tempLayer && this.coordLabel && this._tempLayer.add(this.coordLabel);\n }\n\n private addMeasureResultLabel() {\n this.measureResultLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer &&\n this.measureResultLabel &&\n this._tempLayer.add(this.measureResultLabel);\n }\n\n private removeTempLabel() {\n if (this.tempLabel) {\n this._tempLayer && this._tempLayer.remove(this.tempLabel);\n delete this.tempLabel;\n }\n }\n\n private removeCoordLabel() {\n if (this.coordLabel) {\n this._tempLayer && this._tempLayer.remove(this.coordLabel);\n delete this.coordLabel;\n }\n }\n\n private removeMeasureLabel() {\n if (this.measureResultLabel) {\n this._tempLayer && this._tempLayer.remove(this.measureResultLabel);\n delete this.measureResultLabel;\n }\n }\n\n private drawPointOnMouseMove(event: sGisMouseMoveEvent) {\n if (this.tempLabel) {\n this.tempLabel.position = event.point.position;\n }\n }\n\n private setCursor(cursor: 'pointer' | 'default') {\n const { wrapper } = this.painter;\n\n if (wrapper && typeof wrapper !== 'string') {\n wrapper.style.cursor = cursor;\n }\n }\n\n private cancel = () => {\n this.fire('cancel');\n };\n}\n","import { PolyEditor } from '@evergis/sgis/es/controls/PolyEditor';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { Map as SMap } from '@evergis/sgis/es/Map';\nimport { ControlWithSymbolParams } from '@evergis/sgis/es/controls/Control';\nimport {\n area as calcArea,\n length as calcLength,\n} from '@evergis/sgis/es/geotools';\n\nimport { renderLabelSymbolType } from '../components';\n\nimport { createLabelSymbol } from '../symbols';\nimport {\n DEFAULT_FORMATTERS,\n MeasureToolFormatters,\n} from './MeasureToolFormatters';\n\ninterface BaseMeasureToolEditorParams extends ControlWithSymbolParams {\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n}\n\nexport class BaseMeasureToolEditor extends PolyEditor {\n private measureResultLabel?: LabelFeature;\n formatters: MeasureToolFormatters;\n painter: DomPainter;\n renderLabelSymbol: renderLabelSymbolType;\n\n constructor(\n map: SMap,\n painter: DomPainter,\n params: BaseMeasureToolEditorParams\n ) {\n super(map, params);\n this.painter = painter;\n this.renderLabelSymbol = params.renderLabelSymbol;\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\n this.on('change', this.updateMeasureResult);\n this.on('edit', this.updateMeasureResult);\n }\n\n protected _activate(): void {\n super._activate();\n this.addMeasureResultLabel();\n }\n\n private measureResult = () => {\n const feature = this.activeFeature;\n\n if (!feature) return null;\n\n const { rings, isEnclosed, crs } = feature;\n const pointsCount = rings[0].length;\n const position = rings[0][pointsCount - 1];\n\n const area = calcArea(rings, crs);\n const length = calcLength(rings, crs, isEnclosed);\n const content = isEnclosed\n ? this.formatters.polygon(area, length)\n : this.formatters.length(length);\n\n return {\n content,\n position,\n };\n };\n\n private addMeasureResultLabel() {\n const measureResult = this.measureResult();\n if (measureResult === null) return;\n\n const { content, position } = measureResult;\n\n this.measureResultLabel = new LabelFeature(position, {\n content,\n crs: this.map.crs,\n symbol: createLabelSymbol({\n onClose: this.removeFeature,\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer && this._tempLayer.add(this.measureResultLabel);\n }\n\n updateMeasureResult() {\n if (this.measureResultLabel) {\n const measureResult = this.measureResult();\n\n if (measureResult === null) return;\n\n const { content, position } = measureResult;\n\n this.measureResultLabel.content = content;\n this.measureResultLabel.position = position;\n }\n }\n\n private removeFeature = () => {\n this.fire('remove');\n };\n}\n","import { Crs, geo } from '@evergis/sgis/es/Crs';\nimport { distance } from '@evergis/sgis/es/geotools';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype ConvertionContext = {\n painter: DomPainter;\n crs?: Crs;\n};\n\nexport const metersToPixels = (\n meters: number,\n { painter, crs = geo }: ConvertionContext\n): number => {\n const { width } = painter;\n const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);\n const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);\n const widthDistance: number = distance(zeroPoint, maxWidthPoint);\n const pxK = width / (widthDistance || 1);\n\n return Math.round(meters * pxK);\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nexport const polygonCircleFromPoint = (\n center: Coordinates,\n diameter: number\n): Coordinates[][] => {\n const coordinates: Coordinates[] = [];\n const radius = diameter / 2;\n const endAngle = Math.PI * 2;\n const step = Math.max(Math.PI / 2 / radius, endAngle / 128);\n let start = 0;\n let end = endAngle;\n\n for (let ang = start; ang < end; ang += step) {\n coordinates.push([\n Math.cos(ang) * radius + center[0],\n Math.sin(ang) * radius + center[1],\n ]);\n }\n\n return [coordinates];\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\nimport { LineMiterKind } from '../../core';\nimport { polygonCircleFromPoint } from '../../';\n\nexport class CircleLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth * 3;\n }\n\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [[[x + (this.miterSize / 2 + this.strokeWidth) * xMultiplier, y]]];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineMiterKind.FilledCircle;\n\n return new PolyRender(\n polygonCircleFromPoint(miterRings[0][0], this.miterSize),\n {\n fillColor: isFilled ? this.color : 'transparent',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n enclosed: true,\n }\n );\n }\n}\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\n\nimport { LineMiterKind } from '../../core/style/types';\n\nexport class SquareLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth;\n }\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [\n [\n [x, y + this.miterSize / 2],\n [x, y - this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y - this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y + this.miterSize / 2],\n ],\n ];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineMiterKind.FilledSquare;\n\n return new PolyRender(miterRings, {\n enclosed: true,\n fillColor: isFilled ? this.color : void 0,\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\n lineCap: 'square',\n lineJoin: 'miter',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n });\n }\n}\n","import { ArrowLineMiterRender } from './ArrowLineMiterRender';\nimport { CircleLineMiterRender } from './CircleLineMiterRender';\nimport { LineMiterRenderBaseInfo, LineMiterRender } from './LineMiterRender';\nimport { SquareLineMiterRender } from './SquareLineMiterRender';\n\nimport { LineMiterKind } from '../../core/style/types';\n\nexport const getLineMiterRender = (\n options: LineMiterRenderBaseInfo\n): LineMiterRender | null => {\n switch (options.kind) {\n case LineMiterKind.Arrow:\n case LineMiterKind.FilledArrow:\n return new ArrowLineMiterRender(options);\n case LineMiterKind.Square:\n case LineMiterKind.FilledSquare:\n return new SquareLineMiterRender(options);\n case LineMiterKind.Circle:\n case LineMiterKind.FilledCircle:\n return new CircleLineMiterRender(options);\n default:\n return null;\n }\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { MiterPosition } from './LineMiterRender';\n\nconst updateRingForRightMiter = (\n ring: Coordinates[],\n miterSize: number,\n isLastRing: boolean\n): Coordinates[] => {\n const reversedRing = ring.slice().reverse();\n\n for (let i = 0; i < reversedRing.length; i++) {\n const coordinates = reversedRing[i];\n\n if (isLastRing && i === 0) {\n reversedRing[i] = [coordinates[0] - miterSize, coordinates[1]];\n }\n\n const nextCoordinates = reversedRing[i - 1];\n\n if (nextCoordinates && nextCoordinates[0] < coordinates[0]) {\n reversedRing[i] = [\n nextCoordinates[0] - Math.abs(nextCoordinates[0] - coordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return reversedRing.reverse();\n};\n\nconst updateRingForLeftMiter = (\n ring: Coordinates[],\n miterSize: number,\n isFirstRing: boolean\n): Coordinates[] => {\n const newRing = ring.slice();\n\n for (let i = 0; i < newRing.length; i++) {\n const coordinates = newRing[i];\n\n if (i === 0 && isFirstRing) {\n newRing[i] = [coordinates[0] + miterSize, coordinates[1]];\n }\n\n const prevCoordinates = newRing[i - 1];\n\n if (prevCoordinates && prevCoordinates[0] > coordinates[0]) {\n newRing[i] = [\n prevCoordinates[0] + Math.abs(coordinates[0] - prevCoordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return newRing;\n};\n\nexport const updateRingsForMiter = (\n rings: Coordinates[][],\n position: MiterPosition,\n miterSize: number\n): Coordinates[][] => {\n return rings.map((ring, ringIndex) => {\n switch (position) {\n case 'right':\n return updateRingForRightMiter(\n ring,\n miterSize,\n ringIndex === rings.length - 1\n );\n default:\n return updateRingForLeftMiter(ring, miterSize, ringIndex === 0);\n }\n });\n};\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';\nimport ReactDOM from 'react-dom';\nimport { DynamicPointSymbol } from '@evergis/sgis/es/symbols/Symbol';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nexport type LabelSymbolComponent =\n | ComponentType<{ content: string }>\n | ComponentType;\n\ntype LabelSymbolParams = {\n offset?: Offset;\n component?: LabelSymbolComponent;\n};\n\nexport class LabelSymbol extends DynamicPointSymbol {\n public component?: LabelSymbolComponent;\n\n constructor({ component, offset }: LabelSymbolParams = {}) {\n super({ offset });\n this.component = component;\n }\n\n protected _getFeatureNode(feature: LabelFeature): HTMLElement {\n const node = document.createElement('div');\n\n this.renderDom(feature.content, node);\n\n return node;\n }\n\n protected _updateFeatureNode(feature: LabelFeature): void {\n this.renderDom(feature.content, this.getNode(feature));\n }\n\n private renderDom(content: string, node: HTMLElement): void {\n if (!node) {\n return;\n }\n\n const Component = this.component;\n\n if (Component) {\n ReactDOM.render(<Component content={content} />, node);\n } else {\n node.innerText = content;\n }\n }\n}\n","import React from 'react';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nimport { renderLabelSymbolType } from '../../components';\nimport { LabelSymbol } from './LabelSymbol';\n\nexport const defaultOffset: Offset = [8, -16];\n\ntype createLabelSymbolParams = {\n offset?: Offset;\n onClose?: VoidFunction;\n renderLabel: renderLabelSymbolType;\n};\n\nexport const createLabelSymbol = (props: createLabelSymbolParams) => {\n const {\n offset = defaultOffset,\n renderLabel = ({ content }: { content: string }) => <div>{content}</div>,\n onClose = undefined,\n } = props || {};\n\n return new LabelSymbol({\n offset,\n component: ({ content }: { content: string }) =>\n renderLabel({ content, onClose }),\n });\n};\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { polygonCircleFromPoint } from '../../';\nimport { EditorPointSymbolParams } from './ShadowedPointSymbol';\n\nexport function createShadowRender(\n position: Coordinates,\n {\n strokeWidth = 2,\n shadowColor,\n shadowSize,\n size = 6,\n }: EditorPointSymbolParams\n) {\n const shadowDiameter = size + strokeWidth + shadowSize;\n\n return new PolyRender(polygonCircleFromPoint(position, shadowDiameter), {\n fillColor: 'transparent',\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n enclosed: true,\n });\n}\n\nexport function getEditorPointRenderer(\n position: Coordinates,\n {\n strokeColor,\n strokeWidth,\n shadowColor,\n fillColor,\n shadowSize,\n size = 0,\n }: EditorPointSymbolParams\n) {\n return [\n createShadowRender(position, {\n strokeWidth,\n strokeColor,\n shadowSize,\n shadowColor,\n size,\n }),\n new PolyRender(polygonCircleFromPoint(position, size), {\n fillColor,\n strokeColor,\n strokeWidth,\n enclosed: true,\n }),\n ];\n}\n","import {\n PointSymbol,\n PointSymbolConstructorParams,\n} from '@evergis/sgis/es/symbols/point/Point';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Feature } from '@evergis/sgis';\n\nimport { polygonCircleFromPoint } from '../..';\n\nexport type EditorPointSymbolParams = {\n shadowColor: string;\n shadowSize: number;\n} & PointSymbolConstructorParams;\n\nexport class ShadowedPointSymbol extends PointSymbol {\n shadowColor!: string;\n shadowSize!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options: EditorPointSymbolParams) {\n super(options);\n }\n\n static getShadowArc(\n position: Coordinates,\n {\n strokeWidth = 2,\n shadowColor,\n shadowSize,\n size = 6,\n }: EditorPointSymbolParams\n ): PolyRender {\n return new PolyRender(\n polygonCircleFromPoint(position, size + strokeWidth + shadowSize),\n {\n fillColor: 'transparent',\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n enclosed: true,\n }\n );\n }\n\n static getPointArc(\n position: Coordinates,\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams\n ): PolyRender {\n return new PolyRender(polygonCircleFromPoint(position, size), {\n fillColor,\n strokeColor,\n strokeWidth,\n enclosed: true,\n });\n }\n\n static getArcs(\n position: Coordinates,\n params: EditorPointSymbolParams\n ): PolyRender[] {\n const shadowRender = ShadowedPointSymbol.getShadowArc(position, params);\n const pointRender = ShadowedPointSymbol.getPointArc(position, params);\n\n return shadowRender ? [shadowRender, pointRender] : [pointRender];\n }\n\n public renderFunction(\n feature: PointFeature,\n resolution: number,\n crs: Crs\n ): Render[] {\n if (!(feature instanceof PointFeature)) return [];\n const { position } = feature.projectTo(crs);\n\n const pxPosition: Coordinates = [\n position[0] / resolution + (this.offset[0] || 0),\n -position[1] / resolution + (this.offset[1] || 0),\n ];\n\n const shadowRender = this.getShadow(pxPosition, feature);\n const pointArc = this.getPoint(pxPosition, feature);\n\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\n }\n\n protected getShadow(\n position: Coordinates,\n _feature?: Feature\n ): PolyRender | void {\n return ShadowedPointSymbol.getShadowArc(position, this);\n }\n\n protected getPoint(position: Coordinates, _feature?: Feature): PolyRender {\n return ShadowedPointSymbol.getPointArc(position, this);\n }\n}\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';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\n\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\n\ntype SelectedFeature = PointFeature & {\n isSelected: boolean;\n};\n\nexport type SelectedPointSymbolParams = {\n selectedStrokeColor: string;\n selectedFillColor: string;\n} & EditorPointSymbolParams;\n\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\n selectedStrokeColor!: string;\n selectedFillColor!: string;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPointSymbolParams) {\n super(props);\n }\n\n protected getShadow(\n position: [number, number],\n feature: SelectedFeature\n ): PolyRender | void {\n if (feature.isSelected) {\n return super.getShadow(position, feature);\n }\n }\n\n protected getPoint(\n position: [number, number],\n feature: SelectedFeature\n ): PolyRender {\n const pointRender = super.getPoint(position, feature);\n\n if (feature.isSelected) {\n pointRender.strokeColor = this.selectedStrokeColor;\n pointRender.fillColor = this.selectedFillColor;\n }\n\n return pointRender;\n }\n}\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\n\nimport {\n EditorPolySymbolParams,\n ShadowedPolySymbol,\n} from '../Shadowed/ShadowedPolySymbol';\n\ntype SelectedFeature = Polygon & {\n isSelected: boolean;\n};\n\nexport type SelectedPolySymbolParams = {\n selectedFillColor?: string;\n selectedStrokeColor: string;\n selectedStrokeWidth?: number;\n} & EditorPolySymbolParams;\n\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\n selectedFillColor!: string;\n selectedStrokeColor!: string;\n selectedStrokeWidth!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPolySymbolParams) {\n super(props);\n }\n\n protected getShadow(\n coordinates: Coordinates[][],\n feature: SelectedFeature\n ): PolyRender | void {\n if (feature.isSelected) {\n return super.getShadow(coordinates, feature);\n }\n }\n\n protected getPolyRender(\n coordinates: Coordinates[][],\n feature: SelectedFeature\n ): PolyRender {\n const polyRender = super.getPolyRender(coordinates, feature);\n if (feature.isSelected) {\n polyRender.fillColor = this.selectedFillColor;\n polyRender.strokeColor = this.selectedStrokeColor;\n if (this.selectedStrokeWidth !== void 0) {\n polyRender.strokeWidth = this.selectedStrokeWidth;\n }\n }\n\n return polyRender;\n }\n}\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\nimport { SelectedPointSymbol } from './SelectedPointSymbol';\n\nexport const selectedPoint = new SelectedPointSymbol({\n size: 8,\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.65)',\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 3,\n\n selectedStrokeColor: '#ff5722',\n selectedFillColor: 'rgba(255, 255, 255, 0.65)',\n});\n\nexport const selectedPolyline = new SelectedPolySymbol({\n strokeWidth: 6,\n strokeColor: 'rgba(255, 87, 34, 0.2)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n selectedStrokeColor: '#ff5722',\n selectedStrokeWidth: 2,\n});\n\nexport const selectedPolygon = new SelectedPolySymbol({\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.36)',\n enclose: true,\n selectedFillColor: 'rgba(255, 255, 255, 0.56)',\n selectedStrokeColor: '#ff5722',\n});\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\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","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 [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\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 [0, 0],\r\n [100, 0],\r\n [100, -100],\r\n [0, -100],\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 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 } 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\n\r\nimport { getParameterValue } from '../core/classification';\r\n\r\nimport {\r\n ClassifyAble,\r\n isPolygonHasHatchBrush,\r\n isPolygonHasPatternBrush,\r\n MaskedImageSymbol,\r\n Offset,\r\n PointSymbol,\r\n PolygonSymbol,\r\n PolylineSymbols,\r\n SquareSymbol,\r\n StaticImageSymbol,\r\n StyleSymbolType,\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 'circlePointSymbol':\r\n return deserializePointSymbol(symbol);\r\n case 'squarePointSymbol':\r\n return deserializeSquareSymbol(symbol);\r\n case 'maskedImagePointSymbol':\r\n return deserializeMaskedImageSymbol(symbol);\r\n case 'imagePointSymbol':\r\n return deserializeImagePointSymbol(symbol);\r\n case 'polygonSymbol':\r\n return deserializePolygonSymbol(symbol);\r\n case 'simplePolylineSymbol':\r\n case 'polylineSymbol':\r\n return deserializePolylineSymbol(symbol);\r\n default:\r\n return null;\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\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';\nimport { MultiPoint } from '@evergis/sgis/es/features/MultiPoint';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\n\nimport { CRS_MAP, SrId } from '../crs';\n\nimport { FeatureAttribute } from '../attributes';\nimport { getFeatureAttributes } from '../attributes/utils';\n\nimport { StyleSymbolType } from '../style';\n\nimport {\n selectedPoint,\n selectedPolygon,\n selectedPolyline,\n} from '../../symbols';\n\nexport type FeatureDCExtened = FeatureDc & {\n layer?: string;\n};\n\nexport class EvergisFeature {\n public id?: string | null = null;\n public displayName?: string | null = null;\n public geometry?: GeometryDc | null = null;\n\n public layerName?: string | null = null;\n public layerAlias?: string | null = null;\n public attributes?: FeatureAttribute[] | null = null;\n public symbol?: StyleSymbolType | null = null;\n\n constructor(feature: FeatureDCExtened) {\n this.id = feature.id;\n this.displayName = feature.id;\n this.geometry = feature.geometry;\n\n this.layerName = feature.layer;\n this.layerAlias = feature.layer;\n this.attributes = getFeatureAttributes(feature.attributes);\n }\n\n public sGisFeature() {\n if (!this.geometry || !this.symbol) {\n return null;\n }\n\n // @ts-ignore\n const { type, coordinates, sr } = this.geometry;\n const crs = CRS_MAP[sr as SrId];\n\n if (!crs) {\n return null;\n }\n\n switch (type) {\n case GeometryType.Point:\n return new PointFeature(coordinates, {\n symbol: selectedPoint,\n crs,\n });\n case GeometryType.Multipoint:\n return new MultiPoint(coordinates, {\n symbol: selectedPoint,\n crs,\n });\n case GeometryType.Polyline:\n return new Polyline(coordinates, {\n symbol: selectedPolyline,\n crs,\n });\n case GeometryType.Polygon:\n return new Polygon(coordinates, {\n symbol: selectedPolygon,\n crs,\n });\n default:\n return null;\n }\n }\n\n public extent() {\n const feature = this.sGisFeature();\n\n return feature && feature.bbox;\n }\n}\n","import { ConditionAttributes, ConditionEvaluator } from '@evergis/condition';\n\nexport function evaluateCondition(\n condition: string,\n attributes: ConditionAttributes\n) {\n try {\n const evaluator = new ConditionEvaluator(attributes);\n const result = evaluator.evaluate(condition);\n\n if (result instanceof Error) {\n return null;\n }\n\n return result;\n } catch {\n return null;\n }\n}\n","import { evaluateCondition } from './evaluateCondition';\n\nimport { FeatureAttribute, FeatureAttributeValue } from '../attributes';\n\nimport {\n ClassificationCondition,\n isParameterByAttribute,\n} from '../classification';\n\nimport {\n ClassifiedParameterValue,\n EvergisStyle,\n ParameterByAttributeValue,\n ParameterByAttributeValues,\n ParameterValueWithSymbol,\n Style,\n StyleSymbolType,\n} from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nfunction getAttributeValue(\n attributes: FeatureAttribute[],\n attributeName: string\n) {\n const attributeMeta = attributes.find(({ name }) => name === attributeName);\n\n return attributeMeta ? attributeMeta.value : null;\n}\n\nexport const getAttributeNameFromCondition = (\n condition: string\n): string | null => new ClassificationCondition(condition).attributeName;\n\nexport const getAttributeNameFromClassified = (\n values: ParameterByAttributeValue<ParameterValueWithSymbol>[]\n): string | null =>\n values.length > 0 ? getAttributeNameFromCondition(values[0].condition) : null;\n\nfunction findFeatureValue(\n parameterValues: ParameterByAttributeValues,\n [name, value]: [string, FeatureAttributeValue | undefined]\n) {\n return value !== null\n ? parameterValues.find(\n ({ condition }) =>\n value !== undefined && evaluateCondition(condition, { [name]: value })\n )\n : null;\n}\n\nfunction extractValuesAttribute(\n parameterValues: ParameterByAttributeValues,\n attributes: FeatureAttribute[]\n): [string, FeatureAttributeValue | undefined] {\n const name = getAttributeNameFromClassified(parameterValues) || '';\n const value = name && getAttributeValue(attributes, name);\n\n return [name, value];\n}\n\nfunction evaluateFeatureSymbol(attributes: FeatureAttribute[]) {\n // @ts-ignore\n function calc(\n result: StyleSymbolType,\n [parameterName, parameterValue]: [string, ClassifiedParameterValue]\n ) {\n let newParameterValue;\n\n if (isParameterByAttribute(parameterValue)) {\n const [attributeName, attributeValue] = extractValuesAttribute(\n parameterValue.values,\n attributes\n );\n const featureValue = findFeatureValue(parameterValue.values, [\n attributeName,\n attributeValue,\n ]);\n\n newParameterValue = featureValue\n ? featureValue.value\n : parameterValue.defaultValue;\n } else if (isObject(parameterValue)) {\n // @ts-ignore\n newParameterValue = Object.entries(parameterValue).reduce(\n calc,\n parameterValue\n );\n }\n\n return newParameterValue !== undefined\n ? {\n ...result,\n [parameterName]: newParameterValue,\n }\n : result;\n }\n\n return calc;\n}\n\nexport function findChildFeatureStyle(\n childStyles: Style[],\n attributes: FeatureAttribute[]\n) {\n return (\n (childStyles || []).find(({ condition }) => {\n const attributeName =\n condition && getAttributeNameFromCondition(condition);\n const attributeValue =\n attributeName && getAttributeValue(attributes, attributeName);\n\n if (condition && attributeName && attributeValue !== undefined) {\n return evaluateCondition(condition, {\n [attributeName]: attributeValue,\n });\n }\n\n return false;\n }) || null\n );\n}\n\nexport function findChildFeatureSymbol(\n childStyles: Style[],\n attributes: FeatureAttribute[]\n) {\n const featureStyle = findChildFeatureStyle(childStyles, attributes);\n\n return featureStyle ? featureStyle.symbol : null;\n}\n\nexport function getFeatureSymbol(\n style: EvergisStyle,\n attributes: FeatureAttribute[]\n): StyleSymbolType | null {\n if (!style || !style.symbol) {\n return null;\n }\n\n if (style.children !== null) {\n return findChildFeatureSymbol(style.children, attributes) || style.symbol;\n }\n\n return Object.entries(style.symbol).reduce(\n evaluateFeatureSymbol(attributes),\n style.symbol\n );\n}\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 { createLegendItem } from './createLegendItem';\n\nimport { unClassify } from '../classification';\n\nimport { EvergisStyle } from '../style';\nimport { LayerLegend, LegendConfig } from './types';\n\nexport function createStyleLegend(\n style: EvergisStyle,\n config: LegendConfig\n): LayerLegend | null {\n const { classificationManager, symbol } = style;\n\n const items = classificationManager.filter(({ parameter }) =>\n config.parameters && parameter\n ? config.parameters.includes(parameter)\n : true\n );\n\n if (items.length === 0) {\n return null;\n }\n\n return {\n symbol: unClassify(symbol),\n items: items.map(createLegendItem(config)),\n };\n}\n","import {\n ClassificationClass,\n isRangeClass,\n isUniqueClass,\n printRangeClass,\n} from '../classification';\n\nexport function createValueTitle(\n value: ClassificationClass,\n index: number\n): string {\n if (value.title) return value.title;\n\n if (isRangeClass(value)) return printRangeClass(value, index);\n if (isUniqueClass(value)) return value.uniqueValue;\n\n return '';\n}\n","import { softEquals } from '@evergis/sgis/es/utils/math';\n\nimport { numberWithSpaces } from '../utils/format';\n\nexport function formatArea(num: number): string {\n let result = num;\n let measure = 'м²';\n\n if (num >= 10000000) {\n result = num / 1000000;\n measure = 'км²';\n } else if (num >= 10000) {\n result = num / 10000;\n measure = 'га';\n }\n\n return `${numberWithSpaces(result)} ${measure}`;\n}\n\nexport function formatLength(num: number): string {\n let result = num;\n let measure = 'м';\n\n if (num > 10000) {\n result = num / 1000;\n measure = 'км';\n }\n\n return `${numberWithSpaces(result)} ${measure}`;\n}\nexport function formatPolygonMeasure(area: number, perimiter: number): string {\n return `S : ${formatArea(area)} P : ${formatLength(perimiter)}`;\n}\n\nexport function isPolylineLikePolygon(\n rings: [number, number][][],\n resolution: number\n): boolean {\n if (rings[0].length <= 3) {\n return false;\n }\n\n const coords = rings[0];\n const firstPoint = coords[0];\n const lastPoint = coords[coords.length - 1];\n const distance = resolution * 2;\n\n return (\n softEquals(firstPoint[0], lastPoint[0], distance) &&\n softEquals(firstPoint[1], lastPoint[1], distance)\n );\n}\n","export function getScale(scale: number): number {\n const scales = [1, 2, 5];\n\n for (let x = 0; x < 21; x++) {\n for (let y = 0; y < scales.length; y++) {\n const result = Math.pow(10, x) * scales[y];\n\n if (result > scale) {\n return result;\n }\n }\n }\n\n return 1;\n}\n","import { useMemo } from 'react';\n\nimport {\n createStyleLegend,\n EvergisStyle,\n LayerLegend,\n LegendConfig,\n} from '../../core';\n\nexport const useLegend = (\n style?: EvergisStyle,\n config?: LegendConfig\n): LayerLegend | null =>\n useMemo(() => {\n if (!style || !(config && config.attributes)) return null;\n\n return createStyleLegend(style, config);\n }, [style, config]);\n","import { FeatureLayerServiceInfoDc } from '@evergis/api';\n\nimport { useLegend } from './useLegend';\n\nimport {\n createValueTitle,\n EvergisStyle,\n LayerAttributes,\n LayerLegend,\n LegendConfig,\n} from '../../core';\n\nconst DEFAULT_LEGEND_CONFIG: LegendConfig = {\n renderTitle: createValueTitle,\n};\n\nexport const useLayerLegend = (\n layer?: FeatureLayerServiceInfoDc,\n config?: LegendConfig\n): LayerLegend | null => {\n const { style, layerDefinition } = layer || {};\n const { attributes } = layerDefinition || {};\n\n const styleProxy = style && new EvergisStyle(style);\n\n return useLegend(styleProxy, {\n attributes: attributes as LayerAttributes,\n ...DEFAULT_LEGEND_CONFIG,\n ...config,\n });\n};\n","import { FeatureLayerServiceInfoDc } from '@evergis/api';\n\nimport { useLayerLegend } from './useLayerLegend';\n\nimport { LegendConfig } from '../../core';\n\nexport const useMapLegend = (\n layer?: FeatureLayerServiceInfoDc,\n config?: LegendConfig\n) => {\n const legend = useLayerLegend(layer, config);\n\n if (!legend) {\n return null;\n }\n\n const firstLegend = legend.items[0];\n\n return {\n symbol: legend.symbol,\n item: firstLegend,\n };\n};\n","import { useLegendContext } from '../../contexts';\n\nimport {\n applyParameterValue,\n ClassificationParameterExtended,\n ParameterValueWithSymbol,\n} from '../../core';\n\nimport { adjustSymbol, deserializeSymbol, SGisSymbolType } from '../../symbols';\n\nexport type LegendSymbolPart = {\n parameter: ClassificationParameterExtended;\n parameterValue: ParameterValueWithSymbol;\n};\n\nconst LEGEND_SYMBOL_MAX_SIZE = 32;\n\nexport const useLegendValueSymbol = ({\n parameter,\n parameterValue,\n}: LegendSymbolPart) => {\n const symbol = useLegendContext();\n const valueSymbol =\n // @ts-ignore\n symbol && applyParameterValue(symbol, parameter, parameterValue);\n let sGisSymbol: SGisSymbolType | null = null;\n\n try {\n sGisSymbol = valueSymbol && deserializeSymbol(valueSymbol);\n } catch (e) {}\n\n return (\n sGisSymbol && adjustSymbol(sGisSymbol, { size: LEGEND_SYMBOL_MAX_SIZE - 1 })\n );\n};\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 = 16;\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';\nimport { useCallback, useRef } from 'react';\n\nexport function useCanvas() {\n const canvas = useRef<Canvas | null>(null);\n const ref = useCallback((node: HTMLCanvasElement | null) => {\n if (node !== null) {\n canvas.current = new Canvas(node);\n } else {\n canvas.current = null;\n }\n }, []);\n\n return { canvas, ref };\n}\n","import { useEffect } from 'react';\n\nexport function useMount({ onMount, onUnmount }: UseMountOptions) {\n useEffect(() => {\n onMount && onMount();\n return onUnmount;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\ntype UseMountOptions = {\n onMount?: () => void;\n onUnmount?: () => void;\n};\n","import { useMemo, useRef } from 'react';\n\nimport { useMount } from './useMount';\n\nexport function useProperty<T, D extends unknown[] | []>(\n { factory, destructor, update }: UsePropertyOptions<T, D>,\n deps: D = [] as D\n): T {\n const propRef = useRef<T>();\n\n useMount({\n onUnmount() {\n if (propRef.current && destructor) {\n destructor(propRef.current);\n }\n },\n });\n\n return useMemo(() => {\n if (propRef.current) {\n if (update) {\n const newProp = update(propRef.current, deps, { factory, destructor });\n if (newProp) propRef.current = newProp;\n } else if (destructor) {\n destructor(propRef.current);\n }\n } else {\n if (!update || !propRef.current) {\n propRef.current = factory(deps);\n }\n }\n\n return propRef.current;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\ntype UsePropertyOptions<T, D> = {\n factory: (deps: D) => T;\n destructor?: (prop: T) => void;\n\n /**\n * Allows to update useProperty return value.\n * If that property is not exist then each update of deps call factory\n */\n update?: (\n prop: T,\n deps: D,\n propertyOptions: Omit<UsePropertyOptions<T, D>, 'update'>\n ) => void | T;\n};\n","import { useEffect } from 'react';\n\nexport function useUpdate<Deps extends Array<unknown>>({\n onUpdate,\n shouldUpdate,\n deps,\n}: UseUpdateOptions<Deps>) {\n useEffect(() => {\n if (!shouldUpdate || shouldUpdate()) {\n onUpdate();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\ntype UseUpdateOptions<Deps> = {\n onUpdate: () => void;\n shouldUpdate?: () => boolean;\n deps?: Deps;\n};\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nimport { useMapContext } from '../contexts';\n\nexport function useLayerOrder(layer: Layer, zIndex: number) {\n const { map } = useMapContext();\n\n useUpdate({\n onUpdate: () => map.insertLayer(layer, zIndex),\n deps: [zIndex, layer],\n });\n}\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nexport function useLayerVisibility(layer: Layer, isDisplayed: boolean = true) {\n useUpdate({\n shouldUpdate: () => layer.isDisplayed !== isDisplayed,\n onUpdate: () => (layer.isDisplayed = isDisplayed),\n deps: [isDisplayed, layer],\n });\n}\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nexport function useLayerOpacity(layer: Layer, opacity: number = 1) {\n useUpdate({\n shouldUpdate: () => layer.opacity !== opacity,\n onUpdate: () => (layer.opacity = opacity),\n deps: [opacity, layer],\n });\n}\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 { useLayerOrder } from './useLayerOrder';\r\nimport { LayerProps } from './LayerProps';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\nimport { useProperty } from './useProperty';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useFeatureLayer({\r\n zIndex,\r\n isDisplayed = true,\r\n features,\r\n}: FeatureLayerProps) {\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new FeatureLayer({ features }),\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\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';\n\nimport { getMapState, MapState, useMapBboxChange } from './useMapBboxChange';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapState(force?: boolean) {\n const { map } = useMapContext();\n\n const [, dispatch] = useReducer(mapStateReducer, undefined, () =>\n getMapState(map)\n );\n\n const handleBboxChange = useCallback(dispatch, [dispatch]);\n\n useMapBboxChange(handleBboxChange, force);\n\n return getMapState(map);\n}\n\nfunction mapStateReducer(_: MapState, mapState: MapState): MapState {\n return mapState;\n}\n","import { useMemo } from 'react';\nimport { Bbox } from '@evergis/sgis/es/Bbox';\n\nimport { useMapState } from './useMapState';\nimport { MapState } from './useMapBboxChange';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapView(): MapView {\n const { map, painter } = useMapContext();\n const { position, resolution } = useMapState();\n\n const level = useMemo(() => {\n const index = map.tileScheme.getLevel(resolution);\n\n if (index === void 0 && index === null) return;\n\n return map.tileScheme.levels[index].zIndex;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolution]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const bbox = useMemo(() => painter.bbox, [position, resolution]);\n\n return {\n position,\n resolution,\n level,\n bbox,\n };\n}\n\nexport function useMapLevel() {\n const { map } = useMapContext();\n const { resolution } = useMapState(true);\n\n return useMemo(() => {\n const index = map.tileScheme.getLevel(resolution);\n\n if (index === void 0 && index === null) return;\n\n return map.tileScheme.levels[index].zIndex;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolution]);\n}\n\ntype MapView = MapState & {\n level?: number;\n bbox: Bbox;\n};\n","import { useRef } from 'react';\n\nimport { useMount } from './useMount';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapWrapper() {\n const { painter } = useMapContext();\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n useMount({\n onMount: () => (painter.wrapper = wrapperRef.current),\n onUnmount: () => (painter.wrapper = null),\n });\n\n return wrapperRef;\n}\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';\nimport { distance } from '@evergis/sgis/es/geotools';\n\nimport { useMapContext } from '../contexts';\n\nfunction getScale(scale: number): number {\n const pow10 = Math.pow(10, (Math.floor(scale) + '').length - 1);\n const d = scale / pow10;\n\n return pow10 * (d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1);\n}\n\nfunction useCorrectedResolution(resolution: number): number {\n const { painter } = useMapContext();\n const {\n height,\n width,\n bbox: { xMin, xMax, yMin, yMax, crs },\n } = painter;\n\n return useMemo(() => {\n if (width === 0) {\n return resolution;\n }\n const segmentLength = width / 10;\n const a = painter.getPointFromPxPosition(0, height / 2);\n const b = painter.getPointFromPxPosition(segmentLength, height / 2);\n\n return distance(a, b) / segmentLength;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [height, width, xMin, xMax, yMin, yMax, crs.wkid, resolution, painter]);\n}\n\nexport function useScale({\n resolution,\n minLength = 50,\n}: {\n resolution: number;\n minLength?: number;\n}) {\n const correctedResolution = useCorrectedResolution(resolution);\n\n return useMemo(() => {\n const minScale = minLength * correctedResolution;\n const currentScale = getScale(minScale);\n const width = getScale(minScale) / correctedResolution;\n\n return {\n currentScale,\n width,\n };\n }, [correctedResolution, minLength]);\n}\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';\nimport { CRS_MAP, DEFAULT_CRS, DEFAULT_SRID, SrId } from '../core';\n\nexport const useCrs = (srId?: SrId) => {\n return useMemo(() => {\n return CRS_MAP[srId || DEFAULT_SRID] || DEFAULT_CRS;\n }, [srId]);\n};\n","import { useRef, useEffect, useCallback } from 'react';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\nimport { PointEditor } from '@evergis/sgis/es/controls/PointEditor';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\nimport { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\nimport { useMount } from './useMount';\nimport { useMapContext } from '../contexts';\n\nimport { DraggableMarkerProps } from '../components';\n\nconst setCursor = (painter: DomPainter, cursor: string) =>\n painter.wrapper &&\n typeof painter.wrapper !== 'string' &&\n (painter.wrapper.style.cursor = cursor);\n\nfunction none() {\n return;\n}\n\nexport const useDraggableMarker = ({\n position,\n onChange,\n symbol,\n}: DraggableMarkerProps) => {\n const feature = useRef<Feature | null>(null);\n const { map, painter } = useMapContext();\n const layer = useRef(new FeatureLayer());\n const pointEditor = useRef(\n new PointEditor(map, {\n isActive: false,\n activeLayer: layer.current,\n })\n );\n\n const onMapClick = useCallback(\n (event: sGisEvent) => {\n event.stopPropagation();\n if (!(event instanceof sGisClickEvent)) {\n return;\n }\n\n map.off('click', onMapClick);\n setCursor(painter, 'default');\n onChange(event.point.position);\n },\n [painter, map, onChange]\n );\n\n useMount({\n onMount: () => {\n map.addLayer(layer.current);\n pointEditor.current.on('edit', () =>\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\n );\n\n if (!position) {\n setCursor(painter, 'pointer');\n map.on('click', onMapClick);\n }\n },\n onUnmount: () => {\n map.removeLayer(layer.current);\n map.off('click', onMapClick);\n pointEditor.current.off('edit', () =>\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\n );\n setCursor(painter, 'default');\n },\n });\n\n useEffect(() => {\n if (position) {\n if (!feature.current) {\n const hasMapClick = map.hasListener('click', onMapClick);\n\n const pointFeature = new PointFeature(position, {\n crs: map.crs,\n symbol: symbol || new StaticImageSymbol(),\n });\n\n pointFeature.on('mousemove', none);\n pointFeature.on('mouseover', () => setCursor(painter, 'pointer'));\n pointFeature.on('mouseout', () => setCursor(painter, 'default'));\n\n layer.current.add(pointFeature);\n pointEditor.current.activeFeature = pointFeature;\n pointEditor.current.isActive = true;\n feature.current = pointFeature;\n if (hasMapClick) {\n map.off('click', onMapClick);\n setCursor(painter, 'default');\n }\n } else if (feature.current && pointEditor.current.activeFeature) {\n pointEditor.current.activeFeature.position = position;\n layer.current.redraw();\n }\n } else if (feature.current) {\n layer.current.remove(feature.current as Feature);\n feature.current = null;\n setCursor(painter, 'pointer');\n map.on('click', onMapClick);\n }\n }, [onMapClick, painter, map, position, symbol]);\n};\n","import { useMemo, useCallback } from 'react';\nimport { Crs } from '@evergis/sgis/es/Crs';\n\nimport { useMapContext } from '../contexts';\nimport { useMapState } from '../hooks';\nimport { metersToPixels } from '../utils/metersToPixels';\n\nexport const useMetersToPixels = (meters: number, crs?: Crs): number => {\n const { painter, map } = useMapContext();\n const { resolution } = useMapState();\n\n return useMemo(\n () =>\n metersToPixels(meters, {\n painter: painter,\n crs: crs || map.crs,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [painter, meters, crs, map.crs, resolution]\n );\n};\n\nexport const useMetersToPixelsCb = () => {\n const { painter, map } = useMapContext();\n\n return useCallback(\n (meters: number, crs?: Crs) =>\n metersToPixels(meters, {\n painter: painter,\n crs: crs || map.crs,\n }),\n [painter, map.crs]\n );\n};\n","import { useMemo } from 'react';\nimport { debounce } from '@evergis/sgis/es/utils/utils';\n\nexport const useDebouncedCallback = <CallbackFn extends () => void>(\n interval: number\n): ((cb: CallbackFn) => void) => {\n return useMemo(\n () =>\n debounce((cb: CallbackFn) => {\n cb();\n }, interval),\n [interval]\n );\n};\n","import React from 'react';\n\nimport { useCanvas, useSymbol, UseSymbolParams } from '../../hooks';\n\ninterface Props extends UseSymbolParams {}\n\nexport const Symbol: React.FC<Props> = ({ symbol, size, render }) => {\n const { canvas, ref } = useCanvas();\n useSymbol({ symbol, size, render }, canvas);\n\n return <canvas ref={ref} />;\n};\n","import { GeometryType } from '@evergis/api';\nimport styled from 'styled-components';\n\nexport type CompoundIconProps = {\n geometryType: GeometryType;\n icons: Record<GeometryType, string>;\n};\n\nexport const CompoundIcon = styled.div<CompoundIconProps>`\n background: ${({ geometryType, icons }) =>\n `url(${icons[geometryType]}) center center / ${\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\n } no-repeat`};\n height: 32px;\n width: 32px;\n`;\n","import React, { PropsWithChildren } from 'react';\n\nimport { Symbol } from './Symbol';\n\nimport { StyleSymbolType } from '../../core';\nimport { deserializeSymbol, adjustSymbol } from '../../symbols';\n\ntype StyleSymbolProps = PropsWithChildren<{\n symbol: StyleSymbolType;\n size?: number;\n}>;\n\nconst MAX_SIZE = 32;\n\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\n symbol,\n size = MAX_SIZE,\n children,\n}) => {\n let sGisSymbol = null;\n\n try {\n sGisSymbol = deserializeSymbol(symbol);\n } catch (e) {\n // TODO generate Error symbol\n }\n\n return (\n <>\n {children ||\n (sGisSymbol ? (\n <Symbol\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\n size={size}\n />\n ) : null)}\n </>\n );\n};\n","import { Icon, IIconProps } from '@evergis/ui';\r\nimport styled, { css } 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 width: 13.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 color: #30454f;\r\n font-size: 0.75rem;\r\n margin: 0.25rem 0;\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\r\ntype CardIconProps = {\r\n onClick?: () => void;\r\n};\r\n\r\nconst featureCardIconMixin = css`\r\n color: #30454f;\r\n`;\r\n\r\nexport const StatIcon = styled(Icon)<IIconProps & CardIconProps>`\r\n ${featureCardIconMixin}\r\n`;\r\n\r\nexport const ZoomIcon = styled(Icon)<IIconProps & CardIconProps>`\r\n ${featureCardIconMixin}\r\n`;\r\n\r\nexport const CloseIcon = styled(Icon)<IIconProps & CardIconProps>`\r\n ${featureCardIconMixin}\r\n`;\r\n\r\nexport const PrevIcon = styled(Icon)<IIconProps & CardIconProps>`\r\n ${featureCardIconMixin}\r\n`;\r\n\r\nexport const NextIcon = styled(Icon)<IIconProps & CardIconProps>`\r\n ${featureCardIconMixin}\r\n`;\r\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { mailHref } from '../../utils/url';\n\ntype MailValueProps = {\n mail: string;\n};\n\nexport const MailValue = ({ mail }: MailValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={mailHref(mail)}>\n {mail}\n </ValueLink>\n);\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { phoneHref } from '../../utils/url';\n\ntype PhoneValueProps = {\n phone: string;\n};\n\nexport const PhoneValue = ({ phone }: PhoneValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={phoneHref(phone)}>\n {phone}\n </ValueLink>\n);\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { urlHref } from '../../utils/url';\n\ntype UrlValueProps = {\n url: string;\n};\n\nexport const UrlValue = ({ url }: UrlValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={urlHref(url)}>\n {url}\n </ValueLink>\n);\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';\n\nimport { AttributeContainer, AttributeTitle } from './styled';\n\nimport { FeatureAttribute } from '../../core';\nimport { AttributeValue } from './AttributeValue';\n\nexport type EvergisCardAttributeProps = {\n attribute: FeatureAttribute;\n className?: string;\n};\n\nexport const EvergisCardAttribute: React.FC<EvergisCardAttributeProps> = ({\n attribute,\n className,\n}) => (\n <AttributeContainer className={className}>\n <AttributeTitle>{attribute.alias || attribute.name}</AttributeTitle>\n <AttributeValue attribute={attribute} />\n </AttributeContainer>\n);\n","import React, { FC, useEffect } from 'react';\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 CloseIcon,\r\n CurrentFeatureIndex,\r\n EvergisCardContainer,\r\n FeatureName,\r\n LayerName,\r\n NextIcon,\r\n PaginationDescription,\r\n PrevIcon,\r\n StickyHeader,\r\n ZoomIcon,\r\n StatIcon,\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 && <StatIcon kind=\"statistics\" onClick={() => onStatistics(feature)} />}\r\n {!hideZoom && <ZoomIcon kind=\"zoom_to\" onClick={zoom} />}\r\n <CloseIcon kind=\"close\" onClick={reset} />\r\n </CardControls>\r\n </CardHeader>\r\n {features.length > 1 ? (\r\n <CardPagination>\r\n <PrevIcon kind=\"prev\" onClick={prev} />\r\n <PaginationDescription>\r\n <CurrentFeatureIndex onClick={zoom}>\r\n {current + 1}\r\n </CurrentFeatureIndex>\r\n объект из {features.length}\r\n </PaginationDescription>\r\n <NextIcon kind=\"next\" onClick={next} />\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';\n\nimport { useEvergisCard, UseEvergisCard } from '../../hooks/useEvergisCard';\n\nimport { StyledCard } from './StyledCard';\nimport { EvergisFeature, FeatureAttribute } from '../../core';\n\nexport type EvergisCardProps = {\n features?: EvergisFeature[];\n reset?: VoidFunction;\n children?: (current: number) => React.ReactNode;\n className?: string;\n renderCard?: (\n cardProps: Omit<EvergisCardProps, 'className' | 'renderCard' | 'children'> &\n UseEvergisCard\n ) => ReactElement;\n onAttributes?: (attributes: FeatureAttribute[]) => FeatureAttribute[];\n onStatistics?: (feature: EvergisFeature) => void;\n onFeatureChange?: (current: number) => void;\n headerExtra?: ReactNode;\n hideZoom?: boolean;\n};\n\nexport const EvergisCard: React.FC<EvergisCardProps> = ({\n renderCard,\n className,\n children,\n ...props\n}) => {\n const { features = [] } = props;\n const hookProps = useEvergisCard(features);\n const { feature, current } = hookProps;\n const cardProps = { ...props, ...hookProps };\n\n return feature ? (\n <>\n {typeof renderCard === 'function' ? (\n renderCard(cardProps)\n ) : (\n <StyledCard className={className} {...cardProps} />\n )}\n {children && children(current)}\n </>\n ) : null;\n};\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';\n\nimport { FeatureLayer } from './FeatureLayer';\nimport { useSGisFeatures } from './useSGisFeatures';\n\nimport { EvergisFeature } from '../../core';\n\ntype EvergisSelectLayerProps = {\n features: EvergisFeature[];\n current: number;\n zIndex: number;\n};\n\nexport const EvergisSelectLayer: React.FC<EvergisSelectLayerProps> = ({\n features,\n zIndex,\n current,\n}) => {\n const sGisFeatures = useSGisFeatures(features, current);\n\n return <FeatureLayer features={sGisFeatures} zIndex={zIndex} />;\n};\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';\n\nexport const LegendContainer = styled.div`\n background-color: #fff;\n\n canvas {\n border-radius: 0.125rem;\n }\n`;\n\nexport const LegendSectionContainer = styled.div``;\n\nexport const LegendSymbolTitle = styled.p`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin: 0;\n`;\n\nexport const LegendValueContainer = styled.div`\n display: flex;\n align-items: center;\n font-size: 0.625rem;\n padding: 0.125rem 0;\n\n ${LegendSymbolTitle} {\n padding-left: 0.5rem;\n }\n`;\n\nexport const LegendSectionHeader = styled.div`\n margin-top: 0.5rem;\n font-size: 0.75rem;\n`;\n","import React from 'react';\nimport { LegendSectionContainer, LegendSectionHeader } from './styled';\n\nimport { LegendItem, LegendValueType } from '../../core';\n\ntype LegendSectionProps = {\n item: LegendItem;\n children: (value: LegendValueType) => React.ReactNode;\n renderLegendTitle?: (item: React.ReactNode | LegendItem) => React.ReactNode;\n};\n\nexport const LegendSection: React.FC<LegendSectionProps> = ({\n item,\n renderLegendTitle,\n children,\n}) => (\n <LegendSectionContainer>\n <LegendSectionHeader>\n {renderLegendTitle ? renderLegendTitle(item) : item.title}\n </LegendSectionHeader>\n {item.values.map(children)}\n </LegendSectionContainer>\n);\n","import styled from 'styled-components';\r\nimport { Icon } from '@evergis/ui';\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\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\r\nexport const SearchPrefix = styled(Icon)`\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\nSearchPrefix.defaultProps = {\r\n kind: \"search\",\r\n};\r\n","import React from 'react';\n\nimport { InputContainer, InputField, SearchPrefix } from './styled';\n\ntype SearchInputProps = {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n};\n\nexport const SearchInput: React.FC<SearchInputProps> = ({ onChange }) => (\n <InputContainer>\n <SearchPrefix />\n <InputField onChange={onChange} />\n </InputContainer>\n);\n","import React from 'react';\n\nimport { LegendSymbolPart, useLegendValueSymbol } from '../../hooks';\n\nimport { SGisSymbolType } from '../../symbols';\n\ntype LegendSymbolProps = {\n children: (symbol: SGisSymbolType) => React.ReactNode;\n} & LegendSymbolPart;\n\nexport const LegendSymbol: React.FC<LegendSymbolProps> = ({\n parameter,\n parameterValue,\n children,\n}) => {\n const symbol = useLegendValueSymbol({ parameterValue, parameter });\n\n if (!symbol) {\n return null;\n }\n\n return <>{children(symbol)}</>;\n};\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';\nimport { LegendValueType } from '../../core';\n\nconst MAX_SIZE = 16;\n\nconst getNumberParam = (parameterValue: any, param: string): number | null => {\n return typeof parameterValue === 'object' &&\n param in parameterValue &&\n typeof parameterValue[param] === 'number'\n ? parameterValue[param]\n : null;\n};\n\nexport const getSymbolSize = ({\n parameterValue,\n maxSize,\n}: Pick<LegendProps, 'maxSize'> &\n Pick<LegendValueType, 'parameterValue'>): number => {\n const size = getNumberParam(parameterValue, 'size');\n const strokeWidth = getNumberParam(parameterValue, 'strokeWidth');\n const width = getNumberParam(parameterValue, 'width');\n const height = getNumberParam(parameterValue, 'height');\n\n if (width && height) {\n return Math.max(width, height);\n } else if (width) {\n return width;\n } else if (height) {\n return height;\n } else if (size) {\n return size + (strokeWidth || 0);\n } else if (typeof maxSize === 'number') {\n return maxSize;\n } else {\n return MAX_SIZE;\n }\n};\n","import React from 'react';\n\nimport { LegendContainer } from './styled';\nimport { LegendSection } from './LegendSection';\nimport { SearchInput } from '../SearchInput/SearchInput';\nimport { LegendValue } from './LegendValue';\nimport { LegendProps } from './types';\n\nimport { LegendProvider } from '../../contexts';\nimport { getSymbolSize } from './getSymbolSize';\n\nimport { useLayerLegend } from '../../hooks';\n\nexport const Legend: React.FC<LegendProps> = ({\n layer,\n children,\n className,\n config,\n maxSize,\n}) => {\n const legend = useLayerLegend(layer, config);\n const { renderCustomLegend, searchLayer, searchable } = config || {};\n const { symbol } = legend || {};\n\n if (!legend && !renderCustomLegend) {\n return <></>;\n }\n\n return (\n <LegendProvider symbol={symbol}>\n <LegendContainer className={className}>\n {searchable && searchLayer && <SearchInput onChange={searchLayer} />}\n {renderCustomLegend && layer\n ? renderCustomLegend(layer)\n : children\n ? legend && children(legend)\n : legend &&\n legend.items.map(legendItem => (\n <LegendSection\n key={`${legendItem.attribute}-${legendItem.parameter}`}\n item={legendItem}\n renderLegendTitle={config && config.renderLegendTitle}\n >\n {legendValue => (\n <LegendValue\n key={legendValue.title}\n value={legendValue}\n parameter={legendItem.parameter}\n maxSize={getSymbolSize({\n parameterValue: legendValue.parameterValue,\n maxSize,\n })}\n />\n )}\n </LegendSection>\n ))}\n </LegendContainer>\n </LegendProvider>\n );\n};\n","import React, { CSSProperties, PropsWithChildren, useCallback } from 'react';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { useMapContext } from '../../contexts';\n\nimport {\n MapState,\n shouldUpdateMapState,\n useMapBboxChange,\n useMapWrapper,\n useMaxMinScale,\n useUpdateMapView,\n} from '../../hooks';\n\nexport type MapProps = PropsWithChildren<{\n className?: string;\n position?: Coordinates;\n resolution?: number;\n minScale?: number;\n maxScale?: number;\n style?: CSSProperties;\n onBboxChange?: (mapState: MapState) => void;\n}>;\n\nexport const Map: React.FC<MapProps> = ({\n className,\n position,\n resolution,\n minScale,\n maxScale,\n children,\n onBboxChange,\n style,\n}) => {\n const wrapperRef = useMapWrapper();\n const { map } = useMapContext();\n\n const handleBboxChange = useCallback(\n (state: MapState) => {\n if (onBboxChange && shouldUpdateMapState(map, { position, resolution })) {\n onBboxChange(state);\n }\n },\n [map, onBboxChange, position, resolution]\n );\n\n useUpdateMapView({ position, resolution });\n useMaxMinScale(minScale, maxScale, position, resolution);\n\n useMapBboxChange(handleBboxChange);\n\n return (\n <div className={className} ref={wrapperRef} style={style}>\n {children}\n </div>\n );\n};\n","import { css } from 'styled-components';\n\nexport const CONTROL_PLACEMENTS: Placement[] = [\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst topLeft = (distance: string) => css`\n top: ${distance};\n left: ${distance};\n`;\n\nconst topRight = (distance: string) => css`\n top: ${distance};\n right: ${distance};\n`;\n\nconst bottomLeft = (distance: string) => css`\n bottom: ${distance};\n left: ${distance};\n`;\n\nconst bottomRight = (distance: string) => css`\n bottom: ${distance};\n right: ${distance};\n`;\n\nexport type Placement =\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right';\n\nexport const placementMixin = (\n placement: Placement = 'bottom-left',\n distance: string = '1rem'\n) => css`\n ${placement === 'top-left' && topLeft(distance)}\n ${placement === 'top-right' && topRight(distance)}\n ${placement === 'bottom-left' && bottomLeft(distance)}\n ${placement === 'bottom-right' && bottomRight(distance)}\n`;\n","import styled, { css } from 'styled-components';\r\nimport { Icon } from \"@evergis/ui\";\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\nZoomInBtn.defaultProps = { kind: \"plus\" };\r\n\r\nexport const ZoomOutBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\nZoomOutBtn.defaultProps = { kind: \"minus\" };\r\n\r\nexport const SearchBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\nSearchBtn.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\nFullscreenBtn.defaultProps = { kind: \"maximize\" };\r\n\r\nexport const MeasureBtn = styled(Icon)<\r\n MapControlBtnProps\r\n>`\r\n ${mapControlBtnMixin}\r\n`;\r\nMeasureBtn.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';\nimport { MapControl, MeasureBtn } from './styled';\n\n// TODO\nexport const Measure = () => {\n return (\n <MapControl>\n <MeasureBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import React from 'react';\nimport { MapControl, SearchBtn } from './styled';\n\n// TODO\nexport const Search = () => {\n return (\n <MapControl>\n <SearchBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import React from 'react';\nimport { FullscreenBtn, MapControl } from './styled';\n\n// TODO\nexport const Fullscreen = () => {\n return (\n <MapControl>\n <FullscreenBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import styled from 'styled-components';\nimport { LegendSectionHeader } from '../Legend/styled';\nimport { MapControl } from '../MapControls/styled';\n\nexport const MapLegendControl = styled(MapControl)`\n cursor: default;\n`;\n\nexport const MapLegendContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 16.5rem;\n height: 3.875rem;\n align-items: center;\n padding: 0.5rem;\n box-sizing: border-box;\n\n canvas {\n height: 1rem;\n width: 0.835rem;\n }\n`;\n\nexport const MapLegendHeader = styled(LegendSectionHeader)`\n margin: 0;\n`;\n\nexport const MapLegendSection = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const MapLegendValueDescr = styled.div`\n margin: 0.5rem;\n font-size: 0.625rem;\n opacity: 0.65;\n`;\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 from 'react';\r\n\r\nimport { LegendProps } from '../Legend';\r\nimport {\r\n MapLegendContainer,\r\n MapLegendControl,\r\n MapLegendHeader,\r\n MapLegendSection,\r\n MapLegendValueDescr,\r\n} from './styled';\r\nimport { MapLegendSymbol } from './MapLegendSymbol';\r\n\r\nimport { LegendProvider } from '../../contexts';\r\n\r\nimport { useMapLegend } from '../../hooks';\r\n\r\ntype MapLegendProps = LegendProps & {\r\n fromToTitle?: [string, string];\r\n className?: string;\r\n};\r\n\r\nconst DEFAULT_FROM_TO: [string, string] = ['Выше', 'Ниже'];\r\n\r\nexport const MapLegend: React.FC<MapLegendProps> = ({\r\n layer,\r\n config,\r\n fromToTitle = DEFAULT_FROM_TO,\r\n className,\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, item } = legend;\r\n\r\n return (\r\n <LegendProvider symbol={symbol}>\r\n <MapLegendControl className={className}>\r\n <MapLegendContainer>\r\n <MapLegendHeader>{item.title}</MapLegendHeader>\r\n <MapLegendSection>\r\n <MapLegendValueDescr>{fromToTitle[0]}</MapLegendValueDescr>\r\n {item.values.map(value => (\r\n <MapLegendSymbol\r\n key={value.title}\r\n value={value}\r\n parameter={item.parameter}\r\n />\r\n ))}\r\n <MapLegendValueDescr>{fromToTitle[1]}</MapLegendValueDescr>\r\n </MapLegendSection>\r\n </MapLegendContainer>\r\n </MapLegendControl>\r\n </LegendProvider>\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';\n\nimport { useMapContext } from '../../contexts';\nimport { MeasureToolFormatters } from '../../controls/MeasureToolFormatters';\nimport { MeasureTool } from './MeasureTool';\nimport { ShadowedPolySymbol, ShadowedPointSymbol } from '../../symbols';\n\nexport type renderLabelSymbolType = (props: {\n content: string;\n onClose?: VoidFunction;\n}) => ReactElement;\n\nexport type MeasureProps = {\n isActive: boolean;\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n snapSymbol?: ShadowedPointSymbol;\n lengthSymbol?: ShadowedPolySymbol;\n areaSymbol?: ShadowedPolySymbol;\n};\n\nexport const Measurer: React.FC<MeasureProps> = ({ isActive, ...props }) => {\n const { map, painter } = useMapContext();\n\n return isActive ? (\n <MeasureTool map={map} painter={painter} {...props} />\n ) : null;\n};\n","import styled from 'styled-components';\n\nexport const ScaleRulerContainer = styled.div`\n height: 2rem;\n cursor: default;\n display: flex;\n align-items: flex-end;\n padding: 0 0.5rem 0.5rem;\n box-sizing: border-box;\n`;\n\ntype ScaleRulerBlockProps = {\n width: number;\n};\n\nexport const ScaleRulerBlock = styled.div<ScaleRulerBlockProps>`\n display: flex;\n align-items: flex-end;\n justify-content: center;\n width: ${({ width }) => `${width}px`};\n height: 0.25rem;\n border: 0.0625rem solid white;\n border-top: 0;\n`;\n\ntype TextContainerProps = {\n margin?: string;\n width?: string;\n buttonText?: boolean;\n alignEnd?: boolean;\n};\n\nexport const TextContainer = styled.div<TextContainerProps>`\n height: 2rem;\n display: flex;\n justify-content: center;\n align-items: ${({ alignEnd }) => (alignEnd ? 'flex-end' : 'center')};\n width: ${({ width }) => width || 'auto'};\n color: #fff;\n font-size: 1rem;\n cursor: default;\n padding: 0 0.5rem;\n`;\n","import React from 'react';\nimport { ScaleRulerBlock, ScaleRulerContainer, TextContainer } from './styled';\nimport { useMapView, useScale } from '../../hooks';\n\nexport const ScaleRuler: React.FC = () => {\n const { resolution } = useMapView();\n const { currentScale, width } = useScale({ resolution: resolution || 0 });\n\n return (\n <ScaleRulerContainer>\n <ScaleRulerBlock width={width}>\n <TextContainer alignEnd margin={'0'}>\n {currentScale >= 1000\n ? `${currentScale / 1000}km`\n : `${currentScale}m`}\n </TextContainer>\n </ScaleRulerBlock>\n </ScaleRulerContainer>\n );\n};\n","import React, { PropsWithChildren } from 'react';\n\nimport { MapControl, ZoomInBtn, ZoomOutBtn } from '../MapControls/styled';\n\nimport { useMapViewActions } from '../../hooks';\n\ntype ZoomProps = PropsWithChildren<{}>;\n\nexport const Zoom: React.FC<ZoomProps> = ({ children }) => {\n const { zoomIn, zoomOut } = useMapViewActions();\n\n return (\n <MapControl>\n <ZoomInBtn onClick={zoomIn} />\n <ZoomOutBtn onClick={zoomOut} />\n {children}\n </MapControl>\n );\n};\n","import React from 'react';\n\nimport { TextContainer } from './styled';\n\nimport { useMapLevel } from '../../hooks';\n\nexport const ZoomLevel: React.FC = () => {\n const level = useMapLevel();\n\n return (\n <TextContainer buttonText={true} width={'2rem'}>\n {level || 0}\n </TextContainer>\n );\n};\n","import styled, { css } from 'styled-components';\n\nimport { TooltipComponentProps, Placement } from './types';\n\nexport const TOOLTIP_PLACEMENTS: Placement[] = [\n 'top',\n 'right',\n 'left',\n 'bottom',\n];\n\nconst cornerBottom = (cornerSize: string) => css`\n &:before {\n left: 50%;\n transform: translate(-50%, 100%);\n bottom: 0;\n border-left: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid transparent;\n border-top: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n }\n`;\n\nconst cornerLeft = (cornerSize: string) => css`\n &:before {\n transform: translate(-100%, -50%);\n left: 0;\n top: 50%;\n border-top: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n border-bottom: ${cornerSize} solid transparent;\n }\n`;\n\nconst cornerRight = (cornerSize: string) => css`\n &:before {\n transform: translate(100%, -50%);\n right: 0;\n top: 50%;\n border-top: ${cornerSize} solid transparent;\n border-left: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n border-bottom: ${cornerSize} solid transparent;\n }\n`;\n\nconst cornerTop = (cornerSize: string) => css`\n &:before {\n transform: translate(-50%, -100%);\n left: 50%;\n top: 0;\n border-left: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid transparent;\n border-bottom: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n }\n`;\n\nconst top = (distance: string, cornerSize: string | null) => css`\n transform: translate(-50%, 0);\n left: -50%;\n bottom: ${distance};\n ${cornerSize && cornerBottom(cornerSize)}\n`;\n\nconst right = (distance: string, cornerSize: string | null) => css`\n transform: translate(0, -50%);\n top: -50%;\n left: ${distance};\n ${cornerSize && cornerLeft(cornerSize)}\n`;\n\nconst left = (distance: string, cornerSize: string | null) => css`\n transform: translate(0, -50%);\n top: -50%;\n right: ${distance};\n ${cornerSize && cornerRight(cornerSize)}\n`;\n\nconst bottom = (distance: string, cornerSize: string | null) => css`\n transform: translate(-50%, 0);\n left: -50%;\n top: ${distance};\n ${cornerSize && cornerTop(cornerSize)}\n`;\n\nexport const placementMixin = (\n placement: Placement = 'top',\n distance: string,\n cornerSize: string | null\n) => css`\n ${placement === 'top' && top(distance, cornerSize)}\n ${placement === 'right' && right(distance, cornerSize)}\n ${placement === 'left' && left(distance, cornerSize)}\n ${placement === 'bottom' && bottom(distance, cornerSize)}\n`;\n\nconst corner = css`\n &:before {\n content: '';\n width: 0;\n height: 0;\n position: absolute;\n }\n`;\n\nexport const TooltipComponent = styled.div<TooltipComponentProps>`\n position: absolute;\n z-index: 999;\n display: flex;\n font-size: 0.625rem;\n color: #fff;\n background-color: rgba(28, 33, 48, 0.8);\n padding: 0.4em 0.6em;\n border-radius: 2px;\n user-select: none;\n box-sizing: border-box;\n white-space: pre;\n ${({ placement, distance = '0.5rem', withArrow, cornerSize = '0.25rem' }) =>\n placementMixin(placement, distance, withArrow ? cornerSize : null)}\n ${({ withArrow }) => withArrow && corner}\n`;\n","import React, { createContext, useEffect } from 'react';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { Map } from '@evergis/sgis/es/Map';\n\nimport { TooltipComponent } from './styled';\nimport { ITooltip } from './types';\n\nimport { useTooltip } from '../../hooks';\n\n// TODO why???\nconst { Provider, Consumer } = createContext<Feature[]>([]);\n\n// TODO I just cant read that\nexport const Tooltip: React.FC<ITooltip> = ({\n features = [],\n map,\n center,\n component,\n zIndex,\n children,\n content,\n onEachFeature,\n clickMode,\n ...props\n}: ITooltip) => {\n const onTooltip = useTooltip(zIndex);\n\n useEffect(() => {\n (map ? [map] : features).forEach((feature: Feature | Map) => {\n const position =\n center && !(feature instanceof Map) && feature.bbox.center\n ? feature.bbox.center\n : undefined;\n\n onTooltip({\n feature,\n component:\n typeof onEachFeature === 'function'\n ? () => onEachFeature(feature)\n : () => <TooltipComponent {...props}>{content}</TooltipComponent>,\n position,\n clickMode,\n });\n });\n }, [\n content,\n clickMode,\n onEachFeature,\n onTooltip,\n map,\n center,\n features,\n component,\n props,\n ]);\n\n return (\n <Provider value={features}>\n {map ? children : children ? <Consumer>{children}</Consumer> : null}\n </Provider>\n );\n};\n","import React from 'react';\n\n/** No operation element */\nexport const Noop = () => <div style={{ display: 'none' }}></div>;\n","import React, { FC, ReactElement, Fragment } from 'react';\n\nimport { useDraggableMarker } from '../../hooks';\n\nimport { DraggableMarkerProps } from './types';\n\nexport const DraggableMarker: FC<DraggableMarkerProps> = ({\n position,\n onChange,\n symbol,\n}): ReactElement => {\n useDraggableMarker({ position, onChange, symbol });\n\n return <Fragment />;\n};\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","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","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","deserializePointSymbol","deserializeSquareSymbol","deserializeMaskedImageSymbol","deserializeImagePointSymbol","deserializePolygonSymbol","deserializePolylineSymbol","SPointSymbol","deserializePointSymbolParams","SSquareSymbol","angle","anchorPoint","deserializeAnchor","imageSource","deserializeBase64","image","maskSource","imageMask","maskColor","deserializeColor","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","createStyleLegend","config","items","parameters","createValueTitle","formatArea","measure","perimiter","coords","firstPoint","lastPoint","softEquals","getScale","scale","scales","pow","useLegend","DEFAULT_LEGEND_CONFIG","useLayerLegend","styleProxy","useMapLegend","legend","firstLegend","item","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","CompoundIcon","styled","div","geometryType","icons","MAX_SIZE","StyleSymbol","EvergisCardContainer","Icon","StickyHeader","CardHeader","CardTitle","CardControls","FeatureName","LayerName","CardPagination","PaginationDescription","CurrentFeatureIndex","CardAttributes","AttributeContainer","AttributeTitle","AttributeValueContainer","SimpleAttribute","ValueLink","featureCardIconMixin","css","StatIcon","ZoomIcon","CloseIcon","PrevIcon","NextIcon","MailValue","rel","href","PhoneValue","phone","UrlValue","AttributeValue","key","punycodeDecode","domains","punycode","toUnicode","error","EvergisCardAttribute","StyledCard","onAttributes","onStatistics","onFeatureChange","headerExtra","hideZoom","EvergisCard","renderCard","hookProps","cardProps","truthly","setSelected","toSgis","useSGisFeatures","currentIndex","EvergisSelectLayer","sGisFeatures","useTileLayer","maskUrl","tileLayerParams","TileLayer","defaultZIndex","EvergisSelect","LegendContainer","LegendSectionContainer","LegendSymbolTitle","p","LegendValueContainer","LegendSectionHeader","LegendSection","renderLegendTitle","InputContainer","InputField","input","SearchPrefix","defaultProps","SearchInput","LegendSymbol","LegendValue","maxSize","getNumberParam","param","getSymbolSize","Legend","renderCustomLegend","searchLayer","searchable","legendItem","legendValue","state","topLeft","topRight","bottomLeft","bottomRight","placementMixin","placement","mapControlBtnMixin","ZoomInBtn","ZoomOutBtn","SearchBtn","FullscreenBtn","MeasureBtn","MapControl","MapControls","vertical","Measure","Search","Fullscreen","MapLegendControl","MapLegendContainer","MapLegendHeader","MapLegendSection","MapLegendValueDescr","MapLegendSymbol","DEFAULT_FROM_TO","MapLegend","fromToTitle","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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"}
|