@evergis/react 2.0.170 → 2.0.172
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Legend/styled.d.ts +5 -1
- package/dist/react.cjs.development.js +40 -39
- 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 +40 -40
- package/dist/react.esm.js.map +1 -1
- package/package.json +2 -2
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/date.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/isNumeric.ts","../src/utils/isParameterType.ts","../src/utils/legend.ts","../src/utils/metersToPixels.ts","../src/utils/polygonCircleFromPoint.ts","../src/components/Legend/constants.ts","../src/components/Legend/types.ts","../src/utils/svg.ts","../src/symbols/LineMiters/CircleLineMiterRender.ts","../src/symbols/LineMiters/SquareLineMiterRender.ts","../src/symbols/LineMiters/getLineMiterRender.ts","../src/symbols/LineMiters/updateRingsForMiter.ts","../src/symbols/Evergis/SGisPolylineSymbol.ts","../src/symbols/Label/LabelSymbol.tsx","../src/symbols/Label/createLabelSymbol.tsx","../src/symbols/Shadowed/getEditorPointRenderer.ts","../src/symbols/Shadowed/ShadowedPointSymbol.ts","../src/symbols/Shadowed/ShadowedPolySymbol.ts","../src/symbols/Selected/SelectedPointSymbol.ts","../src/symbols/Selected/SelectedPolySymbol.ts","../src/symbols/Selected/selectedSymbols.ts","../src/symbols/SVGPoly/index.ts","../src/symbols/guards.ts","../src/symbols/mockFeatures.ts","../src/symbols/getSymbolRenders.ts","../src/symbols/renderSymbolToCanvas.ts","../src/symbols/deserializeSymbol.ts","../src/symbols/adjustSymbol.ts","../src/core/feature/EvergisFeature.ts","../src/core/feature/evaluateCondition.ts","../src/core/feature/getFeatureSymbol.ts","../src/core/layer/EvergisLayer.ts","../src/core/legend/createLegendItem.ts","../src/core/legend/isValidParameter.ts","../src/core/legend/createStyleLegend.ts","../src/core/legend/createValueTitle.ts","../src/core/measurer.ts","../src/core/scale.ts","../src/hooks/useLegend/useLegend.ts","../src/hooks/useLegend/useLayerLegend.ts","../src/hooks/useLegend/useMapLegend.ts","../src/hooks/useLegend/useLegendValueSymbol.ts","../src/hooks/useSymbol.ts","../src/hooks/useCanvas.ts","../src/hooks/useMount.ts","../src/hooks/useProperty.ts","../src/hooks/useUpdate.ts","../src/hooks/useLayerOrder.ts","../src/hooks/useLayerVisibility.ts","../src/hooks/useLayerOpacity.ts","../src/hooks/useEvergisDynamicLayer.ts","../src/hooks/useEvergisTileLayer.ts","../src/hooks/useFeatureLayer.ts","../src/hooks/useMapBboxChange.ts","../src/hooks/useMapResize.ts","../src/hooks/useMapPick.ts","../src/hooks/useMapState.ts","../src/hooks/useMapView.ts","../src/hooks/useMapWrapper.ts","../src/hooks/useMaxMinScale.ts","../src/hooks/useScale.ts","../src/hooks/useUpdateMapView.ts","../src/hooks/useTooltip.ts","../src/hooks/useClusterLayer.ts","../src/hooks/useEvergisSelect.ts","../src/hooks/useCrs.ts","../src/hooks/useDraggableMarker.ts","../src/hooks/useMetersToPixels.ts","../src/hooks/useDebouncedCallback.ts","../src/hooks/useToggle.ts","../src/components/Symbol/Symbol.tsx","../src/components/Symbol/styled.ts","../src/components/Symbol/StyleSymbol.tsx","../src/components/EvergisCard/styled.ts","../src/components/EvergisCard/MailValue.tsx","../src/components/EvergisCard/PhoneValue.tsx","../src/components/EvergisCard/UrlValue.tsx","../src/components/EvergisCard/AttributeValue.tsx","../src/components/EvergisCard/EvergisCardAttribute.tsx","../src/components/EvergisCard/StyledCard.tsx","../src/components/EvergisCard/EvergisCard.tsx","../src/components/Layers/ClusterLayer.tsx","../src/components/Layers/EvergisDynamicLayer.tsx","../src/components/Layers/FeatureLayer.tsx","../src/components/Layers/useSGisFeatures.ts","../src/components/Layers/EvergisSelectLayer.tsx","../src/components/Layers/EvergisTileLayer.tsx","../src/hooks/useTileLayer.ts","../src/components/Layers/TileLayer.tsx","../src/components/EvergisSelect/EvergisSelect.tsx","../src/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/Legend/styled.ts","../src/components/Legend/components/MinimizedLegend.tsx","../src/components/Legend/hooks/useSvgSymbol.ts","../src/components/Legend/components/SvgSymbol.tsx","../src/components/Legend/components/SymbolByType.tsx","../src/components/Legend/components/LegendSymbolRenderer.tsx","../src/components/Legend/components/MaximizedLegend.tsx","../src/components/Legend/components/LegendParameterDescription.tsx","../src/components/Legend/components/LegendSection.tsx","../src/components/Legend/Legend.tsx","../src/components/Map/Map.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","import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\r\n\r\nexport const NO_CONTENT_VALUE = '—';\r\n\r\nexport type DateType = number | Date;\r\nexport type RawDateType = string | DateType;\r\n\r\nexport enum DateFormat {\r\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\r\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\r\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\r\n AxisTooltip = \"d MMMM yyyy\",\r\n}\r\n\r\ninterface FormatDateOptions {\r\n dateFormat?: DateFormat;\r\n defaultValue?: RawDateType;\r\n}\r\n\r\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\r\n\r\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\r\n if (!rawDate) return null;\r\n\r\n if (typeof rawDate === \"string\") {\r\n for (const parser of stringDateParsers) {\r\n const date = parser(rawDate);\r\n\r\n if (isValid(date)) {\r\n return toDate(date);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n const parsedDate = toDate(rawDate);\r\n\r\n return isValid(parsedDate) ? parsedDate : null;\r\n};\r\n\r\nexport const formatDate = (\r\n date?: RawDateType,\r\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\r\n): string => {\r\n const dateValue = date ? getDate(date) : null;\r\n\r\n if (isValid(dateValue)) {\r\n return format(dateValue as Date, dateFormat);\r\n }\r\n\r\n return `${defaultValue}`;\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';\r\n\r\nimport { NO_CONTENT_VALUE } from \"../../utils/date\";\r\nimport { numberWithSpaces } from '../../utils/format';\r\nimport {\r\n isStringAsMail,\r\n isStringAsPhone,\r\n isStringAsUrl,\r\n matchPhone,\r\n isRequisiteNumbers,\r\n isStringAsOgrn,\r\n isStringContainsDate,\r\n} from '../../utils/url';\r\n\r\nconst stringAttribute = (value: string) => ({\r\n type: AttributeValueType.String,\r\n value,\r\n});\r\n\r\nconst urlAttribute = (value: string) => ({\r\n type: AttributeValueType.Url,\r\n value,\r\n});\r\n\r\nconst mailAttribute = (value: string) => ({\r\n type: AttributeValueType.Mail,\r\n value,\r\n});\r\n\r\nconst phoneAttribute = (value: string) => ({\r\n type: AttributeValueType.Phone,\r\n value,\r\n});\r\n\r\nconst convertStringAttribute = (value: string) => {\r\n if (isStringAsMail(value)) {\r\n return mailAttribute(value);\r\n }\r\n\r\n if (isStringAsUrl(value)) {\r\n return urlAttribute(value);\r\n }\r\n\r\n if (isStringAsPhone(value)) {\r\n return phoneAttribute(value);\r\n }\r\n\r\n return stringAttribute(value);\r\n};\r\n\r\nconst formatStringAttribute = (value: string): AttributeValue[] => {\r\n const phones = matchPhone(value);\r\n\r\n if (\r\n !isRequisiteNumbers(value) &&\r\n !isStringContainsDate(value) &&\r\n phones &&\r\n phones.length\r\n ) {\r\n return phones.map(phoneAttribute);\r\n }\r\n\r\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\r\n\r\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\r\n return [\r\n stringAttribute(\r\n attributeValues\r\n .map(({ value }) =>\r\n isNaN(+value) || isRequisiteNumbers(value)\r\n ? isStringAsOgrn(value)\r\n ? +value\r\n : value\r\n : numberWithSpaces(+value, 0, '')\r\n )\r\n .join(' ')\r\n ),\r\n ];\r\n }\r\n\r\n return attributeValues;\r\n};\r\n\r\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\r\n stringAttribute(value.toString());\r\n\r\nconst formatIntAttribute = (value: number): AttributeValue =>\r\n stringAttribute(numberWithSpaces(value, 0, ''));\r\n\r\nconst DOUBLE_FRACTIONS = 2;\r\n\r\nconst formatDoubleAttribute = (value: number): AttributeValue =>\r\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\r\n\r\nconst isNullOrUndefined = <Value>(\r\n value: Value | null | undefined\r\n): value is null | undefined => value === null || value === undefined;\r\n\r\nconst NO_CONTENT_ATTRIBUTE = {\r\n type: AttributeValueType.String,\r\n value: NO_CONTENT_VALUE,\r\n};\r\n\r\nexport const formatAttributeValue = (\r\n attribute: FeatureAttribute\r\n): AttributeValue[] => {\r\n if (isNullOrUndefined(attribute.value)) {\r\n return [NO_CONTENT_ATTRIBUTE];\r\n }\r\n\r\n switch (attribute.type) {\r\n case 'String':\r\n return formatStringAttribute(attribute.value as string);\r\n case 'DateTime':\r\n return [formatDateTimeAttribute(attribute.value as Date)];\r\n case 'Int32':\r\n case 'Int64':\r\n return [formatIntAttribute(attribute.value as number)];\r\n case 'Double':\r\n return [formatDoubleAttribute(attribute.value as number)];\r\n default:\r\n return [NO_CONTENT_ATTRIBUTE];\r\n }\r\n};\r\n","import { ClassifyAble, ParameterValue, ParameterValueWithSymbol } from '../style';\r\n\r\nimport { ClassificationAttribute } from '../attributes';\r\n\r\nexport type NestedClassificationParameters =\r\n | 'fill.color'\r\n | 'fill.hatchColor'\r\n | 'stroke.width'\r\n | 'stroke.color'\r\n | 'background.fillColor'\r\n | 'background.strokeColor'\r\n | 'background.strokeWidth'\r\n | 'figure.fillColor';\r\n\r\nexport type SimpleClassificationParameters =\r\n | 'fillColor'\r\n | 'strokeColor'\r\n | 'strokeWidth'\r\n | 'size'\r\n | 'symbol'\r\n | 'angle'\r\n | 'maskedColor';\r\n\r\nexport type ClassificationParameter =\r\n | NestedClassificationParameters\r\n | SimpleClassificationParameters;\r\n\r\nexport type ClassificationParameterExtended =\r\n | ClassificationParameter\r\n | 'width'\r\n | 'height';\r\n\r\nexport interface ClassBase {\r\n title: string | null;\r\n parameterValue: ParameterValueWithSymbol;\r\n attribute?: ClassificationAttribute;\r\n}\r\n\r\nexport type UniqueClass = ClassBase & {\r\n uniqueValue: string;\r\n};\r\n\r\nexport type RangeClass = ClassBase & {\r\n from: number | string | null;\r\n to: number | string | null;\r\n};\r\n\r\nexport type ClassificationClass = UniqueClass | RangeClass;\r\nexport type ClassificationValues = ClassificationClass[];\r\n\r\nexport const enum ClassificationType {\r\n Range,\r\n Unique,\r\n}\r\n\r\nexport interface Classification<\r\n Type extends ClassificationType = ClassificationType,\r\n Value extends ClassificationClass = ClassificationClass\r\n> {\r\n parameter?: ClassificationParameterExtended;\r\n attribute?: string;\r\n type: Type;\r\n values: Value[];\r\n}\r\n\r\nexport type RangeClassification = Classification<\r\n ClassificationType.Range,\r\n RangeClass\r\n>;\r\n\r\nexport type UniqueClassification = Classification<\r\n ClassificationType.Unique,\r\n UniqueClass\r\n>;\r\n\r\nexport interface ClassificationExtras {\r\n defaultTitle: string;\r\n defaultValue: ParameterValue;\r\n}\r\n\r\nexport type ExtendedClassification<\r\n Type extends ClassificationType = ClassificationType,\r\n Value extends ClassificationClass = ClassificationClass\r\n> = Classification<Type, Value> & ClassificationExtras;\r\n\r\nexport function isRangeClass(value: ClassificationClass): value is RangeClass {\r\n return Boolean(value && 'from' in value);\r\n}\r\n\r\nexport function isUniqueClass(\r\n value: ClassificationClass\r\n): value is UniqueClass {\r\n return Boolean(value && 'uniqueValue' in value);\r\n}\r\n\r\nexport type ParameterValueModifier = (\r\n parameterValue: ClassifyAble<ParameterValue>\r\n) => ClassifyAble<ParameterValue> | void;\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, ParameterValueModifier } 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\nexport const isParameterByAttribute = (\r\n value: UnidentifiedParameterValue\r\n): value is ParameterByAttribute<ParameterValue> =>\r\n Boolean(isObject(value) && (value as ParameterByAttribute<ParameterValue>)?.type === 'byAttribute');\r\n\r\nexport const isCalculatedParameter = (\r\n value: UnidentifiedParameterValue\r\n): value is CalculatedParameter<ParameterValue> =>\r\n Boolean(isObject(value) && (value as CalculatedParameter<ParameterValue>)?.type === 'calculated');\r\n\r\nexport const getParameterValue = <Value extends ParameterValue>(\r\n value: ClassifyAble<Value> | CalculatedAble<Value>\r\n): Value => {\r\n if (isParameterByAttribute(value) || isCalculatedParameter(value)) {\r\n return value.defaultValue;\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport const symbolParameterWalker = (\r\n valueModifier: ParameterValueModifier\r\n) => <S extends StyleSymbolType>(\r\n symbol: S,\r\n parameter: ClassificationParameterExtended | ClassificationParameterExtended[]\r\n): S => {\r\n const paths = Array.isArray(parameter)\r\n ? parameter\r\n : parameterToPaths(parameter);\r\n const [firstKey, ...restKeys] = paths;\r\n\r\n // @ts-ignore\r\n const symbolPart = symbol[firstKey];\r\n\r\n if (restKeys.length) {\r\n const goDeeper = symbolParameterWalker(valueModifier);\r\n\r\n return {\r\n ...symbol,\r\n [firstKey]: goDeeper(symbolPart, restKeys) || symbolPart,\r\n };\r\n }\r\n\r\n return {\r\n ...symbol,\r\n [firstKey]: valueModifier(symbolPart) || symbolPart,\r\n };\r\n};\r\n\r\nexport const setDefaultParameterValue = symbolParameterWalker(\r\n getParameterValue\r\n);\r\n\r\nexport const setParameterValue = <S extends StyleSymbolType>(\r\n symbol: S,\r\n path: ClassificationParameterExtended,\r\n value: ClassifyAble<ParameterValue>\r\n): S => symbolParameterWalker(() => value)(symbol, path);\r\n\r\nexport function applyParameterValue(\r\n symbol: StyleSymbolType,\r\n path: ClassificationParameterExtended,\r\n value: ClassifyAble<ParameterValue>\r\n) {\r\n if (path === 'symbol') {\r\n return value as StyleSymbolType;\r\n }\r\n\r\n return setParameterValue(symbol, path, value);\r\n}\r\n","import { ParameterDcColor, ParameterDcDouble } from '@evergis/api';\r\n\r\nimport { CalculatedAble, ClassifyAble } from './parameterValue';\r\nimport { Offset } from './offset';\r\nimport { LineMiterKind, LineMiterSize } from './miters';\r\nimport { StyleSymbolType } from './symbol';\r\nimport { FillBrushType, StrokeBrushType, TextBackgroundType } from './brush';\r\n\r\ntype ToClientSymbolField<\r\n F,\r\n IsClassifyable extends boolean\r\n> = F extends ParameterDcDouble\r\n ? IsClassifyable extends true\r\n ? ClassifyAble<number>\r\n : number\r\n : F extends ParameterDcColor\r\n ? IsClassifyable extends true\r\n ? ClassifyAble<string>\r\n : string\r\n : F;\r\n\r\ntype ExtraClientSymbolFields = {\r\n offset: Offset;\r\n /* TODO: DC has other type */\r\n fontWeight: number;\r\n childSymbols: StyleSymbolType[];\r\n stroke: StrokeBrushType;\r\n fill: FillBrushType;\r\n textBackground: TextBackgroundType;\r\n beginning: null | LineMiterKind;\r\n beginningSize: LineMiterSize;\r\n ending: null | LineMiterKind;\r\n endingSize: LineMiterSize;\r\n angle: CalculatedAble<number>;\r\n};\r\n\r\nexport type ClientSymbol<\r\n SymbolType,\r\n SymbolDcType,\r\n NonClassifiedFields extends keyof SymbolDcType = never\r\n> = {\r\n [K in keyof SymbolDcType]: K extends 'type'\r\n ? SymbolType\r\n : K extends keyof ExtraClientSymbolFields\r\n ? ExtraClientSymbolFields[K]\r\n : ToClientSymbolField<\r\n SymbolDcType[K],\r\n K extends NonClassifiedFields ? false : true\r\n >;\r\n};\r\n\r\nexport const symbolTypeGuard = <ClientSymbol extends { type?: string }>(\r\n type: ClientSymbol['type']\r\n) => (symbol: { type?: string }): symbol is ClientSymbol =>\r\n symbol && symbol.type === type;\r\n\r\nexport type Unclassify<T> = {\r\n [K in keyof T]: T[K] extends ClassifyAble<infer V>\r\n ? V\r\n : T[K] extends CalculatedAble<infer V2>\r\n ? V2\r\n : T[K];\r\n};\r\n","import {\r\n PointLabelSymbolDc,\r\n PolygonLabelSymbolDc,\r\n PolylineLabelSymbolDc,\r\n} from '@evergis/api';\r\n\r\nimport { UnknownSymbol } from './symbol';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\n\r\ntype NonClassifyableLabelFields = 'fontColor' | 'fontSize' | 'haloColor';\r\n\r\nexport type PointLabelSymbol = ClientSymbol<\r\n 'labelPointSymbol',\r\n PointLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\nexport type PolygonLabelSymbol = ClientSymbol<\r\n 'polygonLabelSymbol',\r\n PolygonLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\nexport type PolylineLabelSymbol = ClientSymbol<\r\n 'polylineLabelSymbol',\r\n PolylineLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\n\r\nexport const isPointLabelSymbol = symbolTypeGuard<PointLabelSymbol>(\r\n 'labelPointSymbol'\r\n);\r\nexport const isPolygonLabelSymbol = symbolTypeGuard<PolygonLabelSymbol>(\r\n 'polygonLabelSymbol'\r\n);\r\nexport const isPolylineLabelSymbol = symbolTypeGuard<PolylineLabelSymbol>(\r\n 'polylineLabelSymbol'\r\n);\r\n\r\nexport const isLabelSymbol = (symbol: UnknownSymbol): symbol is LabelType =>\r\n Boolean(\r\n symbol &&\r\n (isPointLabelSymbol(symbol) ||\r\n isPolygonLabelSymbol(symbol) ||\r\n isPolylineLabelSymbol(symbol))\r\n );\r\n\r\nexport type LabelType =\r\n | PolylineLabelSymbol\r\n | PolygonLabelSymbol\r\n | PointLabelSymbol;\r\n","import {\r\n CirclePointSymbolDc,\r\n ClusterSymbolDc,\r\n CompositeSymbolDc,\r\n H3GridSymbolDc,\r\n ImagePointSymbolDc,\r\n MaskedImagePointSymbolDc,\r\n PolygonSymbolDc,\r\n PolylineSymbolDc,\r\n RasterSymbolDc,\r\n SimplePolylineSymbolDc,\r\n SquarePointSymbolDc,\r\n StyleDc,\r\n SvgPointSymbolDc,\r\n} from '@evergis/api';\r\n\r\nimport { isLabelSymbol, LabelType } from './label';\r\nimport { CalculatedAble } from './parameterValue';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\nimport { FillBrushType, StrokeBrushType } from './brush';\r\n\r\nexport type PointSymbol = ClientSymbol<\r\n 'circlePointSymbol',\r\n CirclePointSymbolDc\r\n>;\r\n\r\nexport type SvgPointSymbol = ClientSymbol<\r\n 'svgPointSymbol',\r\n SvgPointSymbolDc\r\n>;\r\n\r\nexport type SquareSymbol = ClientSymbol<\r\n 'squarePointSymbol',\r\n SquarePointSymbolDc\r\n> & {\r\n angle?: CalculatedAble<number>;\r\n};\r\n\r\nexport type MaskedImageSymbol = ClientSymbol<\r\n 'maskedImagePointSymbol',\r\n MaskedImagePointSymbolDc\r\n>;\r\n\r\nexport type StaticImageSymbol = ClientSymbol<\r\n 'imagePointSymbol',\r\n ImagePointSymbolDc\r\n>;\r\n\r\nexport type PolygonSymbol<\r\n Fill = FillBrushType,\r\n Stroke = StrokeBrushType\r\n> = ClientSymbol<'polygonSymbol', PolygonSymbolDc> & {\r\n fill: Fill;\r\n stroke: Stroke;\r\n};\r\n\r\nexport type SimplePolylineSymbol = ClientSymbol<\r\n 'simplePolylineSymbol',\r\n SimplePolylineSymbolDc\r\n>;\r\n\r\nexport type PolylineSymbol = ClientSymbol<'polylineSymbol', PolylineSymbolDc>;\r\n\r\nexport type RasterSymbol = ClientSymbol<'rasterSymbol', RasterSymbolDc>;\r\n\r\nexport type CompositeSymbolType = ClientSymbol<\r\n 'compositeSymbol',\r\n CompositeSymbolDc\r\n>;\r\n\r\nexport type H3GridSymbol = ClientSymbol<\r\n 'h3grid',\r\n H3GridSymbolDc\r\n>;\r\n\r\nexport type SimpleShapeSymbol = PointSymbol | SquareSymbol;\r\n\r\nexport type ImageSymbol = MaskedImageSymbol | StaticImageSymbol;\r\n\r\nexport type PointSymbolType = SvgPointSymbol | PointSymbol | SquareSymbol | MaskedImageSymbol | StaticImageSymbol;\r\n\r\nexport type PolylineSymbols = PolylineSymbol | SimplePolylineSymbol;\r\n\r\nexport type StyleSymbolType =\r\n | PointSymbolType\r\n | PolygonSymbol\r\n | PolylineSymbols\r\n | LabelType\r\n | RasterSymbol\r\n | CompositeSymbolType\r\n | H3GridSymbolDc\r\n | ClusterSymbolDc;\r\n\r\nexport type StyleSymbolTypes = StyleSymbolType['type'];\r\n\r\nexport type UnknownSymbol = StyleDc['symbol'] | StyleSymbolType;\r\n\r\nexport type LayerSymbol = PointSymbol | PolylineSymbols | PolygonSymbol;\r\n\r\nexport type FillStyledSymbols = PolygonSymbol;\r\n\r\nexport type StrokeStyledSymbols = PolygonSymbol | PolylineSymbols;\r\n\r\nexport const isPointSymbol = symbolTypeGuard<PointSymbol>('circlePointSymbol');\r\n\r\nexport const isSquareSymbol = symbolTypeGuard<SquareSymbol>(\r\n 'squarePointSymbol'\r\n);\r\n\r\nexport const isMaskedImageSymbol = symbolTypeGuard<MaskedImageSymbol>(\r\n 'maskedImagePointSymbol'\r\n);\r\n\r\nexport const isStaticImageSymbol = symbolTypeGuard<StaticImageSymbol>(\r\n 'imagePointSymbol'\r\n);\r\n\r\nexport const isPolygonSymbol = symbolTypeGuard<PolygonSymbol>('polygonSymbol');\r\n\r\nexport const isPolylineSymbol = symbolTypeGuard<PolylineSymbol>(\r\n 'polylineSymbol'\r\n);\r\n\r\nexport const isSimplePolylineSymbol = symbolTypeGuard<SimplePolylineSymbol>(\r\n 'simplePolylineSymbol'\r\n);\r\n\r\nexport const isPolylineSymbols = (\r\n symbol: UnknownSymbol\r\n): symbol is PolylineSymbols =>\r\n Boolean(\r\n symbol && (isPolylineSymbol(symbol) || isSimplePolylineSymbol(symbol))\r\n );\r\n\r\nexport const isCompositeSymbol = symbolTypeGuard<CompositeSymbolType>(\r\n 'compositeSymbol'\r\n);\r\nexport const isRasterSymbol = symbolTypeGuard<RasterSymbol>('rasterSymbol');\r\n\r\nexport const isImageSymbol = (symbol: UnknownSymbol): symbol is ImageSymbol =>\r\n Boolean(\r\n symbol && (isMaskedImageSymbol(symbol) || isStaticImageSymbol(symbol))\r\n );\r\n\r\nexport const isTwoDimensionalSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is ImageSymbol => Boolean(symbol && 'width' in symbol);\r\n\r\nexport const isSizableSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is SimpleShapeSymbol => Boolean(symbol && 'size' in symbol);\r\n\r\nexport const isStrokeStyledSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is StrokeStyledSymbols =>\r\n Boolean(symbol && (isPolygonSymbol(symbol) || isPolylineSymbols(symbol)));\r\n\r\nexport const isScalablePolylineSymbol = (\r\n symbol: PolylineSymbol | SimplePolylineSymbol\r\n) =>\r\n (symbol.beginning !== null && symbol.ending !== null) ||\r\n (symbol.stroke && symbol.stroke.type !== 'solid');\r\n\r\nexport const isSimpleSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is Exclude<StyleSymbolType, LabelType | CompositeSymbolType> =>\r\n Boolean(\r\n symbol &&\r\n !isLabelSymbol(symbol) &&\r\n !isCompositeSymbol(symbol) &&\r\n !isRasterSymbol(symbol)\r\n );\r\n\r\nexport const isH3GridSymbol = symbolTypeGuard<H3GridSymbolDc>(\"h3grid\");\r\n\r\nexport const isSvgPointSymbol = symbolTypeGuard<SvgPointSymbol>(\"svgPointSymbol\");\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 | Date;\r\n\r\nexport type ParameterByAttributeValues = ParameterByAttributeValue<\r\n ParameterValue\r\n>[];\r\n\r\nexport type ParameterValueWithSymbol = ParameterValue | StyleSymbolType | Date;\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","export const isNumeric = (number: string | number): boolean =>\r\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\r\n","import { ClassificationParameterExtended } from \"../core\";\r\n\r\ntype IsParameterType = \"size\" | \"strokeWidth\" | \"stroke.width\" | \"strokeColor\" | \"stroke.color\";\r\n\r\nexport const isParameterType = (\r\n types: IsParameterType | Array<IsParameterType>,\r\n parameter?: ClassificationParameterExtended,\r\n): boolean => (typeof types === \"string\"\r\n ? parameter?.toLowerCase()?.includes(types.toLowerCase())\r\n : types.some(type => parameter?.toLowerCase()?.includes(type.toLowerCase()))) || false;\r\n","/* eslint-disable max-lines */\r\nimport get from \"lodash/get\";\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport {\r\n AttributesConfigurationDc,\r\n AttributeType,\r\n CompositeLayerInfoDc,\r\n FeatureLayerServiceInfoDc,\r\n GeometryType,\r\n LayerDefinitionDc,\r\n PostgresLayerServiceConfigurationDc,\r\n ServiceInfoDc,\r\n StyleDc,\r\n SvgParameterDc,\r\n} from \"@evergis/api\";\r\n\r\nimport {\r\n DEFAULT_LEGEND_SYMBOL_SIZE,\r\n DEFAULT_PARAMETER_INFO,\r\n EXTRA_BORDER_SIZE,\r\n PARAMETER_INFOS,\r\n SYMBOL_CLASSIFICATION,\r\n ClassifyParameter,\r\n LegendSectionItem,\r\n ParameterInfo,\r\n SvgSymbolBg\r\n} from \"../components\";\r\nimport { DateFormat, formatDate } from \"./date\";\r\nimport {\r\n ClassificationClass,\r\n ClassificationParameter,\r\n ClassificationParameterExtended,\r\n ClassifyAble,\r\n FeatureAttributeValue,\r\n getParameterValue,\r\n ImageSymbol,\r\n isH3GridSymbol,\r\n isMaskedImageSymbol,\r\n isParameterValueSymbol,\r\n isPolygonSymbol,\r\n isPolylineSymbols,\r\n isRangeClass,\r\n isSizableSymbol,\r\n isSvgPointSymbol,\r\n isTwoDimensionalSymbol,\r\n isUniqueClass,\r\n LabelType,\r\n LegendValueType,\r\n MaskedImageSymbol,\r\n ParameterByAttribute,\r\n ParameterByAttributeValue,\r\n ParameterValue,\r\n ParameterValueWithSymbol,\r\n PointSymbol,\r\n PointSymbolType,\r\n PolygonSymbol,\r\n PolylineSymbol,\r\n RangeClass,\r\n SquareSymbol,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n symbolParameterWalker,\r\n UniqueClass\r\n} from \"../core\";\r\nimport { isNumeric } from \"./isNumeric\";\r\nimport { isObject } from \"./isObject\";\r\n\r\nexport const isLayerService = (value?: unknown): value is CompositeLayerInfoDc[\"layer\"] => isObject(value) && \"name\" in value;\r\n\r\nexport const getAttributeFromCondition = (condition: string): string => {\r\n const parts = condition.split(\" \");\r\n\r\n return parts[0].startsWith(\"(\") ? parts[0].slice(1) : parts[0];\r\n};\r\n\r\nexport const getExprFromCondition = (condition: string, partIndex?: number): string[] => {\r\n let expr;\r\n\r\n if (partIndex) {\r\n const parts = condition.split(\" && \").map(part => part.slice(1, -1));\r\n\r\n expr = parts[partIndex - 1];\r\n } else {\r\n expr = condition;\r\n }\r\n\r\n return expr?.split(\" \");\r\n};\r\n\r\nexport const getSignFromConditionPart = (condition: string, partIndex?: number): string => {\r\n return getExprFromCondition(condition, partIndex)?.[1];\r\n};\r\n\r\nexport const getValueFromConditionPart = (condition: string, partIndex?: number): string => {\r\n return getExprFromCondition(condition, partIndex)?.[2];\r\n};\r\n\r\nexport const isRangeCondition = (condition: string) => condition.includes(\"(\");\r\n\r\nexport const getSymbolParameterInfo = (parameter: ClassificationParameter): ParameterInfo => {\r\n return PARAMETER_INFOS[parameter] || DEFAULT_PARAMETER_INFO;\r\n};\r\n\r\nexport const formatValue = (\r\n value: FeatureAttributeValue,\r\n type?: AttributeType,\r\n calculatedParameter?: ClassificationParameter,\r\n) => {\r\n if (type === AttributeType.DateTime) {\r\n return formatDate(value as Date, { dateFormat: DateFormat.DateTime });\r\n }\r\n\r\n const { serialize } = getSymbolParameterInfo(calculatedParameter as ClassificationParameter);\r\n\r\n return (value && typeof value === \"number\" ? serialize(value) : value)?.toString();\r\n};\r\n\r\nexport const formatUniqueClassValue = (value: UniqueClass): string => {\r\n const { attribute, uniqueValue } = value;\r\n\r\n return attribute ? formatValue(uniqueValue, attribute.type) as string : uniqueValue;\r\n};\r\n\r\nexport const 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 ? (isDate ? from : isDouble ? +from : +from + 1) : from,\r\n to,\r\n };\r\n};\r\n\r\nexport const formatRangeClassValue = (value: RangeClass, index: number): string => {\r\n const isDouble = value.attribute?.type === \"Double\";\r\n const isDate = value.attribute?.type === \"DateTime\";\r\n\r\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\r\n\r\n const formattedFrom = isDate && from ? formatDate(from) : from;\r\n const formattedTo = isDate && to ? formatDate(to) : to;\r\n\r\n if (from === null) {\r\n return `${formattedTo}${!isDate ? \" и менее\" : \"\"}`;\r\n }\r\n\r\n if (to === null) {\r\n return `${!isDate ? \"более \" : \"\"}${formattedFrom}`;\r\n }\r\n\r\n return from === to ? `${formattedFrom}` : `${formattedFrom} - ${formattedTo}`;\r\n};\r\n\r\nexport const checkLayerHasLegend = (layerInfo: FeatureLayerServiceInfoDc): boolean => {\r\n return SYMBOL_CLASSIFICATION[layerInfo.geometryType]?.some(param => {\r\n const paramValue = get(layerInfo.style?.symbol, param) as unknown as ParameterByAttribute<ParameterValue>;\r\n\r\n return paramValue?.type === \"byAttribute\";\r\n }) || false;\r\n};\r\n\r\nexport const getTitleFromCondition = (condition: string) => {\r\n const parts = condition.split(\" == \");\r\n\r\n return parts[1]?.slice(1, -1);\r\n};\r\n\r\nfunction createValueTitle(\r\n paramValue: ParameterByAttributeValue<ParameterValue>,\r\n attributeType: AttributeType,\r\n index: number,\r\n): string {\r\n if (paramValue.title) return paramValue.title;\r\n\r\n const value = {\r\n parameterValue: getParameterValue(paramValue.value),\r\n attribute: { type: attributeType },\r\n } as ClassificationClass;\r\n\r\n const sign = getSignFromConditionPart(paramValue.condition, 1);\r\n const isFirstFrom = sign.includes(\">\");\r\n\r\n (value as RangeClass).from = isFirstFrom ? getValueFromConditionPart(paramValue.condition, 1) : null;\r\n (value as RangeClass).to =\r\n paramValue.condition.includes(\" && \") && isFirstFrom\r\n ? getValueFromConditionPart(paramValue.condition, 2)\r\n : !isFirstFrom\r\n ? getValueFromConditionPart(paramValue.condition, 1)\r\n : null;\r\n\r\n if (isRangeClass(value)) return formatRangeClassValue(value as RangeClass, index);\r\n if (isUniqueClass(value)) return formatUniqueClassValue(value as UniqueClass);\r\n\r\n return \"\";\r\n}\r\n\r\ntype SymbolCreator<T> = (\r\n baseSymbol: T,\r\n parameter: ClassificationParameterExtended,\r\n classificationsParams: ClassificationParameterExtended[],\r\n parameterValue: ParameterValue,\r\n) => T;\r\n\r\nexport const enum LegendSymbolTypes {\r\n Point,\r\n ImagePoint,\r\n Line,\r\n Polygon,\r\n}\r\n\r\ntype LegendSymbolsMap = {\r\n [LegendSymbolTypes.Point]: PointSymbolType;\r\n [LegendSymbolTypes.ImagePoint]: MaskedImageSymbol;\r\n [LegendSymbolTypes.Line]: PolylineSymbol;\r\n [LegendSymbolTypes.Polygon]: PolygonSymbol;\r\n};\r\n\r\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 ->\r\n// пункт \"Настраиваемые значения параметров символики в системе\"\r\n// Для добавления подготовленных значений размеров символов нужно использовать константу PREPARED_SYMBOL_SIZES\r\nexport const DEFAULT_LEGEND_STYLES: LegendSymbolsMap = {\r\n [LegendSymbolTypes.Point]: {\r\n fillColor: \"#00000047\",\r\n strokeWidth: 1,\r\n strokeColor: \"#0000001f\",\r\n },\r\n [LegendSymbolTypes.ImagePoint]: {\r\n maskedColor: \"#00000047\",\r\n },\r\n [LegendSymbolTypes.Line]: {\r\n stroke: {\r\n width: 2,\r\n color: \"#00000047\",\r\n },\r\n },\r\n [LegendSymbolTypes.Polygon]: {\r\n fill: {\r\n color: \"#00000000\",\r\n hatchColor: \"#00000000\",\r\n },\r\n stroke: {\r\n width: 1,\r\n color: \"#0000001f\",\r\n },\r\n },\r\n};\r\n\r\nexport const SYMBOL_SIZE_PARAMETERS = [\"size\", \"width\", \"height\"];\r\n\r\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 -> пункт \"Библиотека символов\"\r\nexport const DEFAULT_LEGEND_SIZES: Record<string, number> = {\r\n circlePointSymbol: 8,\r\n squarePointSymbol: 12,\r\n imagePointSymbol: 24,\r\n maskedImagePointSymbol: 24,\r\n svgPointSymbol: 24,\r\n};\r\n\r\nconst getNonClassifiedParamValue = <S extends StyleSymbolType>(\r\n baseSymbol: S,\r\n parameter: ClassificationParameterExtended,\r\n classificationsParams: ClassificationParameterExtended[],\r\n type: LegendSymbolTypes,\r\n) => {\r\n if (classificationsParams.includes(parameter)) {\r\n const defaultParameterValue = getParameterFromSymbol(DEFAULT_LEGEND_STYLES[type], parameter);\r\n\r\n if (defaultParameterValue) {\r\n return defaultParameterValue;\r\n }\r\n if (SYMBOL_SIZE_PARAMETERS.includes(parameter) && DEFAULT_LEGEND_SIZES[baseSymbol.type as string]) {\r\n return DEFAULT_LEGEND_SIZES[baseSymbol.type as string];\r\n }\r\n }\r\n\r\n return getParameterValue(getParameterFromSymbol(baseSymbol, parameter));\r\n};\r\n\r\nexport const updateSymbolParameter = <S extends StyleSymbolType | LabelType>(\r\n symbol: S,\r\n path: string,\r\n value: ClassifyAble<ParameterValue>,\r\n): S =>\r\n symbolParameterWalker(() => value)(\r\n symbol,\r\n path as ClassificationParameterExtended | ClassificationParameterExtended[],\r\n );\r\n\r\nconst createPointSymbol: SymbolCreator<PointSymbol | SquareSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue,\r\n): PointSymbol | SquareSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fillColor: getNonClassifiedParamValue(baseSymbol, \"fillColor\", classificationsParams, LegendSymbolTypes.Point),\r\n strokeColor: getNonClassifiedParamValue(\r\n baseSymbol,\r\n \"strokeColor\",\r\n classificationsParams,\r\n LegendSymbolTypes.Point,\r\n ),\r\n strokeWidth: getNonClassifiedParamValue(\r\n baseSymbol,\r\n \"strokeWidth\",\r\n classificationsParams,\r\n LegendSymbolTypes.Point,\r\n ),\r\n size: getNonClassifiedParamValue(baseSymbol, \"size\", classificationsParams, LegendSymbolTypes.Point),\r\n offset: [0, 0],\r\n },\r\n parameter,\r\n parameterValue,\r\n ) as PointSymbol | SquareSymbol;\r\n};\r\n\r\ntype Dimensions = {\r\n height: number;\r\n width: number;\r\n};\r\n\r\nexport function getDimensions(symbol: ImageSymbol, size: number): Dimensions {\r\n const height = getParameterValue(symbol.height as ParameterValue) as number;\r\n const width = getParameterValue(symbol.width as ParameterValue) as number;\r\n\r\n if (width === height) {\r\n return {\r\n width: size,\r\n height: size,\r\n };\r\n }\r\n\r\n const ratio = height / width;\r\n\r\n if (width < height) {\r\n return {\r\n width: size,\r\n height: height + (size - width) * ratio,\r\n };\r\n }\r\n\r\n return {\r\n width: width + (size - height) * ratio,\r\n height: size,\r\n };\r\n}\r\n\r\nconst createImagePointSymbol: SymbolCreator<ImageSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue,\r\n): ImageSymbol => {\r\n let symbol = { ...baseSymbol };\r\n\r\n if (isMaskedImageSymbol(symbol)) {\r\n symbol.maskedColor = getNonClassifiedParamValue(\r\n baseSymbol,\r\n \"maskedColor\",\r\n classificationsParams,\r\n LegendSymbolTypes.ImagePoint,\r\n ) as ClassifyAble<string>;\r\n }\r\n\r\n if (parameter === \"height\" || parameter === \"width\") {\r\n const { height, width } = getDimensions(baseSymbol, parameterValue as number);\r\n\r\n symbol.height = height;\r\n symbol.width = width;\r\n } else {\r\n symbol.width = getNonClassifiedParamValue(baseSymbol, \"width\", classificationsParams, LegendSymbolTypes.ImagePoint) as number;\r\n symbol.height = symbol.width;\r\n\r\n symbol = updateSymbolParameter(symbol, parameter, parameterValue);\r\n }\r\n\r\n symbol.offset = [\r\n (getParameterValue(symbol.height as ClassifyAble<number>) as number) / 2,\r\n (getParameterValue(symbol.width as ClassifyAble<number>) as number) / 2,\r\n ];\r\n\r\n return symbol;\r\n};\r\n\r\nconst createLineSymbol: SymbolCreator<PolylineSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue,\r\n): PolylineSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n type: \"polylineSymbol\",\r\n stroke: {\r\n color: getNonClassifiedParamValue(baseSymbol, \"stroke.color\", classificationsParams, LegendSymbolTypes.Line),\r\n width: getNonClassifiedParamValue(baseSymbol, \"stroke.width\", classificationsParams, LegendSymbolTypes.Line),\r\n },\r\n },\r\n parameter,\r\n parameterValue,\r\n ) as PolylineSymbol;\r\n};\r\n\r\nconst createPolygonSymbol: SymbolCreator<PolygonSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue,\r\n): PolygonSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fill: {\r\n color: getNonClassifiedParamValue(baseSymbol, \"fill.color\", classificationsParams, LegendSymbolTypes.Polygon),\r\n hatchColor: getNonClassifiedParamValue(\r\n baseSymbol,\r\n \"fill.hatchColor\",\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon,\r\n ),\r\n },\r\n stroke: {\r\n color: getNonClassifiedParamValue(baseSymbol, \"stroke.color\", classificationsParams, LegendSymbolTypes.Polygon),\r\n width: getNonClassifiedParamValue(baseSymbol, \"stroke.width\", classificationsParams, LegendSymbolTypes.Polygon),\r\n },\r\n },\r\n parameter,\r\n parameterValue,\r\n ) as PolygonSymbol;\r\n};\r\n\r\nconst createH3Symbol: SymbolCreator<H3Symbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue,\r\n): H3Symbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fill: {\r\n color: getNonClassifiedParamValue(baseSymbol, \"fill.color\", classificationsParams, LegendSymbolTypes.Polygon),\r\n },\r\n stroke: {\r\n color: getNonClassifiedParamValue(baseSymbol, \"stroke.color\", classificationsParams, LegendSymbolTypes.Polygon),\r\n width: getNonClassifiedParamValue(baseSymbol, \"stroke.width\", classificationsParams, LegendSymbolTypes.Polygon),\r\n },\r\n },\r\n parameter,\r\n parameterValue\r\n ) as unknown as H3Symbol;\r\n};\r\n\r\nexport const createLegendSymbol = (\r\n parameterValue: ParameterValueWithSymbol,\r\n parameter: ClassificationParameterExtended,\r\n classificationsParams: ClassificationParameterExtended[],\r\n baseSymbol: StyleSymbolType,\r\n): StyleSymbolType | null => {\r\n if (isParameterValueSymbol(parameterValue)) {\r\n return parameterValue;\r\n }\r\n\r\n /* if (isClusterSymbol(baseSymbol)) {\r\n return createClusterSymbol(baseSymbol, parameter, classificationsParams, parameterValue);\r\n }*/\r\n\r\n if (isSizableSymbol(baseSymbol)) {\r\n return createPointSymbol(baseSymbol, parameter, classificationsParams, parameterValue as ParameterValue);\r\n }\r\n\r\n if (isTwoDimensionalSymbol(baseSymbol)) {\r\n return createImagePointSymbol(baseSymbol, parameter, classificationsParams, parameterValue as ParameterValue);\r\n }\r\n\r\n if (isPolylineSymbols(baseSymbol)) {\r\n return createLineSymbol(\r\n baseSymbol as PolylineSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue,\r\n );\r\n }\r\n\r\n if (isPolygonSymbol(baseSymbol)) {\r\n return createPolygonSymbol(\r\n baseSymbol as PolygonSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue,\r\n );\r\n }\r\n\r\n if (isH3GridSymbol(baseSymbol)) {\r\n return createH3Symbol(baseSymbol as H3Symbol, parameter, classificationsParams, parameterValue as ParameterValue);\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const getMinimizedLegendValues = (\r\n attributeType: AttributeType,\r\n param: ParameterByAttribute<ParameterValue>,\r\n index: number,\r\n): LegendValueType[] => {\r\n return param.values.map(paramValue => {\r\n const parameterValue = getParameterValue(paramValue.value);\r\n const result = { parameterValue, attribute: { type: attributeType } } as ClassificationClass;\r\n\r\n if (isRangeCondition(paramValue.condition)) {\r\n const from = getValueFromConditionPart(paramValue.condition, 1);\r\n const to = getValueFromConditionPart(paramValue.condition, 2);\r\n\r\n (result as RangeClass).from = from ? (isNumeric(from) ? +from : formatDate(from)) : null;\r\n (result as RangeClass).to = to ? (isNumeric(to) ? +to : formatDate(to)) : null;\r\n\r\n result.title = createValueTitle(paramValue, attributeType, index);\r\n\r\n return result;\r\n }\r\n\r\n (result as UniqueClass).uniqueValue = formatValue(paramValue.value) as string;\r\n result.title = getTitleFromCondition(paramValue.condition);\r\n\r\n return result;\r\n }) as LegendValueType[];\r\n};\r\n\r\nexport const getMaximizedLegendValues = (\r\n attributeType: AttributeType,\r\n param: ClassificationParameterExtended,\r\n params: ClassificationParameterExtended[],\r\n classified: ParameterByAttribute<ParameterValue>,\r\n symbol: StyleDc[\"symbol\"],\r\n sectionIndex: number,\r\n otherTitle: string,\r\n): LegendSectionItem[] => {\r\n const other = {\r\n title: otherTitle,\r\n symbol: createLegendSymbol(classified.defaultValue, param, params, symbol as StyleSymbolType),\r\n };\r\n\r\n const items = classified.values.map((paramValue, index) => {\r\n const result = {\r\n symbol: createLegendSymbol(classified.values[index].value, param, params, symbol as StyleSymbolType),\r\n } as LegendSectionItem;\r\n\r\n if (isRangeCondition(paramValue.condition)) {\r\n result.title = createValueTitle(paramValue, attributeType, sectionIndex);\r\n\r\n return result;\r\n }\r\n\r\n result.title = getTitleFromCondition(paramValue.condition);\r\n\r\n return result;\r\n });\r\n\r\n return [...items, other] as LegendSectionItem[];\r\n};\r\n\r\nexport type ClassifiedList = Record<ClassifyParameter, ParameterByAttribute<ParameterValue>>;\r\n\r\nexport const getClassified = (\r\n layerInfo: FeatureLayerServiceInfoDc,\r\n): ClassifiedList => {\r\n const classifyParams = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\r\n\r\n return classifyParams?.reduce((result, classified) => {\r\n const param = get(layerInfo.style?.symbol, classified) as unknown as ParameterByAttribute<ParameterValue>;\r\n\r\n return param?.type === \"byAttribute\" ? { ...result, [classified]: param } : result;\r\n }, {}) as Record<ClassifyParameter, ParameterByAttribute<ParameterValue>>;\r\n};\r\n\r\nexport const getSymbolStrokeWidth = (symbol: PointSymbolType): number => {\r\n return isSvgPointSymbol(symbol)\r\n ? ((symbol.background as SvgParameterDc)?.strokeWidth as number)\r\n : ((symbol as PointSymbol).strokeWidth as number);\r\n};\r\n\r\nexport const getParameterFromSymbol = <R extends ClassifyAble<ParameterValue>>(\r\n symbol: StyleSymbolType | LabelType,\r\n parameter: ClassificationParameterExtended,\r\n): R => {\r\n let parameterFromSymbol = {};\r\n\r\n symbolParameterWalker((parameterValue: ClassifyAble<ParameterValue>) => {\r\n parameterFromSymbol = parameterValue;\r\n })(symbol, parameter);\r\n\r\n return parameterFromSymbol as R;\r\n};\r\n\r\nexport const getLegendSymbolSize = (symbol: StyleSymbolType): number => {\r\n let size = 0;\r\n\r\n if (isSvgPointSymbol(symbol)) {\r\n size = getParameterValue(symbol.size as ClassifyAble<number>);\r\n }\r\n\r\n if (isH3GridSymbol(symbol)) {\r\n size = getParameterValue(symbol.cellSize as ClassifyAble<number>);\r\n }\r\n\r\n if (isTwoDimensionalSymbol(symbol)) {\r\n size = Math.max(\r\n getParameterValue(symbol.width as ClassifyAble<number>),\r\n getParameterValue(symbol.height as ClassifyAble<number>),\r\n );\r\n }\r\n\r\n if (isSizableSymbol(symbol)) {\r\n const strokeWidth = getSymbolStrokeWidth(symbol);\r\n\r\n size = getParameterValue(symbol.size as ClassifyAble<number>) +\r\n (strokeWidth ? getParameterValue(strokeWidth) + EXTRA_BORDER_SIZE : 0);\r\n }\r\n\r\n if (isPolylineSymbols(symbol)) {\r\n size = getParameterValue(getParameterFromSymbol(symbol, \"stroke.width\")) as number;\r\n }\r\n\r\n return Math.max(DEFAULT_LEGEND_SYMBOL_SIZE, size);\r\n};\r\n\r\nexport const serializeSvgPointSymbol = (symbol: SvgPointSymbol) => {\r\n if (!symbol) return null;\r\n\r\n const figureFillColor = ((symbol.figure as SvgParameterDc)?.fillColor as string) || null;\r\n const bgFillColor = ((symbol.background as SvgParameterDc)?.fillColor as string) || null;\r\n\r\n return {\r\n type: \"svgPointSymbol\",\r\n size: symbol.size,\r\n offset: symbol.offset,\r\n angle: symbol.angle,\r\n ...(bgFillColor\r\n ? {\r\n background: {\r\n id: \"symbol-bg\",\r\n fillColor: bgFillColor,\r\n strokeColor: ((symbol.background as SvgParameterDc)?.strokeColor as string) || null,\r\n strokeWidth: (symbol.background as SvgParameterDc)?.strokeWidth || null,\r\n type: (symbol.background as SvgParameterDc)?.type || SvgSymbolBg.Circle,\r\n },\r\n }\r\n : {}),\r\n ...(figureFillColor\r\n ? {\r\n figure: { id: \"symbol-figure\", fillColor: figureFillColor },\r\n }\r\n : {}),\r\n };\r\n};\r\n\r\nconst SIZE_PARAMETERS = [\"size\", \"height\", \"strokeWidth\", \"stroke.width\"];\r\n\r\nexport const isSizeClassification = (parameter: string): boolean => SIZE_PARAMETERS.includes(parameter);\r\n\r\nexport const getServiceConfiguration = (layer?: ServiceInfoDc): ServiceInfoDc[\"configuration\"] => {\r\n const emptyServiceConfiguration: ServiceInfoDc[\"configuration\"] = {\r\n name: \"\",\r\n };\r\n\r\n if (!isLayerService(layer) || !(\"configuration\" in layer)) return emptyServiceConfiguration;\r\n\r\n return {\r\n ...emptyServiceConfiguration,\r\n ...(layer.configuration || {}),\r\n };\r\n};\r\n\r\n/** default attribute name which use for geometry info */\r\nexport const GEOMETRY_ATTRIBUTE = \"geometry\";\r\n\r\n/** default attribute name which contains unique id info */\r\nexport const DEFAULT_ID_ATTRIBUTE_NAME = \"gid\";\r\n\r\nexport const getAttributesConfiguration = (layer: ServiceInfoDc): AttributesConfigurationDc => {\r\n const serviceConfiguration = getServiceConfiguration(layer);\r\n const emptyAttributesConfiguration: AttributesConfigurationDc = {\r\n geometryAttribute: GEOMETRY_ATTRIBUTE,\r\n idAttribute: DEFAULT_ID_ATTRIBUTE_NAME,\r\n tableName: \"\",\r\n };\r\n\r\n if (!serviceConfiguration || !(\"attributesConfiguration\" in serviceConfiguration)) {\r\n return emptyAttributesConfiguration;\r\n }\r\n\r\n return {\r\n ...emptyAttributesConfiguration,\r\n ...((serviceConfiguration as PostgresLayerServiceConfigurationDc).attributesConfiguration || {}),\r\n };\r\n};\r\n\r\nexport const getLayerDefinition = (layer?: FeatureLayerServiceInfoDc): LayerDefinitionDc => {\r\n const { geometryAttribute, idAttribute } = getAttributesConfiguration(layer as FeatureLayerServiceInfoDc);\r\n\r\n const emptyLayerDefinition: LayerDefinitionDc = {\r\n attributes: {},\r\n geometryAttribute: geometryAttribute as string,\r\n idAttribute,\r\n geometryType: GeometryType.Unknown,\r\n titleAttribute: \"\",\r\n };\r\n\r\n if (!isLayerService(layer) || !(\"layerDefinition\" in layer)) {\r\n return emptyLayerDefinition;\r\n }\r\n\r\n return {\r\n ...emptyLayerDefinition,\r\n ...(layer.layerDefinition || {}),\r\n attributes: layer.layerDefinition.attributes || emptyLayerDefinition.attributes,\r\n };\r\n};\r\n\r\nexport function getAttributeType(layer: FeatureLayerServiceInfoDc, attributeName: string): AttributeType {\r\n const { attributes } = getLayerDefinition(layer);\r\n const attribute = attributes[attributeName];\r\n\r\n return attribute ? attribute.type : AttributeType.Unknown;\r\n}\r\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 { GeometryType } from \"@evergis/api\";\r\n\r\nimport { ClassifyParameter, ParameterInfo, Units } from \"./types\";\r\nimport { ClassificationParameter } from \"../../core\";\r\n\r\nexport const DEFAULT_LEGEND_SYMBOL_SIZE = 26;\r\n\r\nexport const EXTRA_BORDER_SIZE = 4;\r\n\r\nexport const DEFAULT_SYMBOL_SIZE = 20;\r\n\r\nexport const DEFAULT_SYMBOL_WITH_BG_SIZE = 24;\r\n\r\nexport const DEFAULT_SYMBOL_FILL_COLOR = \"rgba(0, 163, 245, 1)\";\r\n\r\nexport const DEFAULT_SYMBOL_STROKE_COLOR = \"rgb(255, 255, 255)\";\r\n\r\nexport const DEFAULT_SYMBOL_OFFSET = [0, 0];\r\n\r\nexport const SYMBOL_CLASSIFICATION: Partial<Record<GeometryType, ClassifyParameter[]>> = {\r\n [GeometryType.Polygon]: [\"fill.color\", \"stroke.color\", \"stroke.width\"],\r\n [GeometryType.Polyline]: [\"stroke.color\", \"stroke.width\"],\r\n [GeometryType.Point]: [\r\n \"angle\",\r\n \"background.fillColor\",\r\n \"background.strokeColor\",\r\n \"background.strokeWidth\",\r\n \"figure.fillColor\",\r\n \"size\",\r\n ],\r\n};\r\n\r\nexport const SYMBOL_LIMITS = {\r\n SIZE_MIN: 1,\r\n SIZE_MAX: 64,\r\n SIZE_STEP: 1,\r\n GRID_SIZE_MIN: 0.1,\r\n GRID_SIZE_MAX: 120,\r\n MIN_OBJECTS_COUNT: 2,\r\n MAX_OBJECTS_COUNT: 10000,\r\n MIN_CLUSTER_SIZE: 16,\r\n MAX_CLUSTER_SIZE: 120,\r\n STROKE_WIDTH_MIN: 0,\r\n STROKE_WIDTH_MAX: 32,\r\n STROKE_WIDTH_STEP: 0.25,\r\n ANGLE_MIN: -360,\r\n ANGLE_MAX: 360,\r\n ANGLE_STEP: 1,\r\n PREVIEW_SIZE_MAX: 32,\r\n PREVIEW_SIZE_MAX_WIDTH: 26,\r\n};\r\n\r\nexport const DEFAULT_PARAMETER_INFO: ParameterInfo = {\r\n classifyAble: true,\r\n min: SYMBOL_LIMITS.STROKE_WIDTH_MIN,\r\n max: SYMBOL_LIMITS.STROKE_WIDTH_MAX,\r\n step: SYMBOL_LIMITS.STROKE_WIDTH_STEP,\r\n units: Units.Pixels,\r\n serialize: value => value,\r\n deserialize: value => value,\r\n};\r\n\r\nexport const PARAMETER_INFOS: Partial<Record<ClassificationParameter, ParameterInfo>> = {\r\n size: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.SIZE_MIN,\r\n max: SYMBOL_LIMITS.SIZE_MAX,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n units: Units.Pixels,\r\n },\r\n /* gridSize: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.GRID_SIZE_MIN,\r\n max: SYMBOL_LIMITS.GRID_SIZE_MAX,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n classifyAble: false,\r\n units: null,\r\n },\r\n maxObjectCount: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\r\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n classifyAble: false,\r\n units: i18n.t(Units.Count, { ns: \"common\" }),\r\n },\r\n selectionObjectsLimit: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\r\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n classifyAble: false,\r\n units: i18n.t(Units.Count, { ns: \"common\" }),\r\n },\r\n angle: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.ANGLE_MIN,\r\n max: SYMBOL_LIMITS.ANGLE_MAX,\r\n step: SYMBOL_LIMITS.ANGLE_STEP,\r\n units: Units.Degrees,\r\n serialize: compose(Math.round, radToDeg),\r\n deserialize: degToRad,\r\n },\r\n endingSize: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n classifyAble: false,\r\n min: 3,\r\n max: 12,\r\n step: 1,\r\n },*/\r\n};\r\n","import { ReactNode } from \"react\";\r\nimport { AttributeType, PointLabelSymbolDc, SvgPointSymbolDc, StyleDc } from \"@evergis/api\";\r\nimport { MaskedImage } from \"@evergis/sgis/es/symbols/point/MaskedImage\";\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\n\r\nimport {\r\n ClassificationParameterExtended,\r\n LegendValueType,\r\n ParameterByAttribute,\r\n ParameterValue,\r\n StyleSymbolType,\r\n SvgPointSymbol\r\n} from \"../../core\";\r\nimport { SGisBrushFill, SGisImageFill, SGisPolygonSymbol, SGisPolylineSymbol } from \"../../symbols\";\r\n\r\nexport type ClassifyParameter =\r\n | \"fill.color\"\r\n | \"fill.hatchColor\"\r\n | \"stroke.width\"\r\n | \"stroke.color\"\r\n | \"textBackground.fill.color\"\r\n | \"background.fillColor\"\r\n | \"background.strokeColor\"\r\n | \"background.strokeWidth\"\r\n | \"figure.fillColor\"\r\n | \"fillColor\"\r\n | \"strokeColor\"\r\n | \"strokeWidth\"\r\n | \"fontColor\"\r\n | \"haloColor\"\r\n | \"size\"\r\n | \"symbol\"\r\n | \"angle\"\r\n | \"maskedColor\"\r\n | \"endingSize\"\r\n | \"beginningSize\"\r\n | \"maxObjectCount\"\r\n | \"gridSize\"\r\n | \"selectionObjectsLimit\";\r\n\r\nexport interface ParameterInfo {\r\n min: number;\r\n max: number;\r\n step: number;\r\n units: Units | null;\r\n serialize: (value: number) => number;\r\n deserialize: (value: number) => number;\r\n classifyAble: boolean;\r\n}\r\n\r\nexport const enum Units {\r\n Pixels = \"px\",\r\n Count = \"pcs\",\r\n Degrees = \"°\",\r\n}\r\n\r\nexport type LegendSectionProps = {\r\n symbol: StyleDc[\"symbol\"];\r\n param: ClassificationParameterExtended;\r\n params: ClassificationParameterExtended[];\r\n classified: ParameterByAttribute<ParameterValue>;\r\n attributeTitle: string;\r\n attributeType: AttributeType;\r\n index: number;\r\n};\r\n\r\nexport type LegendSectionItem = {\r\n attributeType: AttributeType;\r\n symbol: StyleSymbolType;\r\n title: string;\r\n index: number;\r\n hiddenCondition?: string;\r\n};\r\n\r\nexport type MaximizedLegendProps = {\r\n symbol: StyleDc[\"symbol\"];\r\n parameter: ClassificationParameterExtended;\r\n values: LegendSectionItem[];\r\n attributeType: AttributeType;\r\n index: number;\r\n};\r\n\r\nexport type SvgSymbolProps = {\r\n svg: string;\r\n symbol: SvgPointSymbol;\r\n size?: number;\r\n title?: string;\r\n text?: string;\r\n bg?: SvgSymbolBg;\r\n skipOffset?: boolean;\r\n fontSettings?: PointLabelSymbolDc;\r\n onClick?: (svg: string, symbol: SvgPointSymbol) => void;\r\n};\r\n\r\nexport enum SvgSymbolBg {\r\n Rect = \"rect\",\r\n Circle = \"circle\",\r\n}\r\n\r\nexport type SGisSymbol =\r\n | MaskedImage\r\n | SvgPointSymbolDc\r\n | SGisPolylineSymbol\r\n | SGisPolygonSymbol\r\n | SGisImageFill\r\n | SGisBrushFill\r\n | H3Symbol;\r\n/* | sPointSymbol\r\n | sSquareSymbol\r\n | sStaticImageSymbol\r\n | SGisMiterSymbol*/\r\n\r\nexport type SvgEditorField = Pick<SvgPointSymbol, \"size\" | \"offset\" | \"angle\"> & {\r\n \"background.fillColor\": string;\r\n \"background.strokeColor\": string;\r\n \"background.strokeWidth\": string;\r\n \"figure.fillColor\": string;\r\n};\r\n\r\nexport type MinimizedLegendProps = {\r\n title?: string | ReactNode;\r\n defaultValue: string;\r\n values: LegendValueType[];\r\n parameter: ClassificationParameterExtended;\r\n hiddenLegends?: string[];\r\n attributeType?: AttributeType;\r\n}\r\n\r\nexport type MapLegendItemProps = {\r\n value?: string | number;\r\n parameter?: ClassificationParameterExtended;\r\n isHidden?: boolean;\r\n}\r\n","import { Gradient, Svg } from \"@svgdotjs/svg.js\";\r\nimport { SvgParameterDc } from \"@evergis/api\";\r\n\r\nimport {\r\n DEFAULT_SYMBOL_FILL_COLOR,\r\n DEFAULT_SYMBOL_SIZE,\r\n DEFAULT_SYMBOL_STROKE_COLOR,\r\n DEFAULT_SYMBOL_WITH_BG_SIZE,\r\n} from \"../components/Legend/constants\";\r\nimport { SvgSymbolBg } from \"../components/Legend/types\";\r\nimport {\r\n getParameterValue,\r\n isParameterByAttribute,\r\n ParameterByAttribute,\r\n ParameterByAttributeValue,\r\n ParameterValue,\r\n SvgPointSymbol\r\n} from \"../core\";\r\n\r\nexport const convertSvgToBase64 = (svg: string) => `data:image/svg+xml;base64,${window.btoa(svg)}`;\r\n\r\nexport const createSvgGradient = (svg: Svg, values: ParameterByAttributeValue<string>[]) =>\r\n svg\r\n .gradient(\"linear\", (add: Gradient) => {\r\n values?.forEach(({ value }, index) => {\r\n add.stop(index / (values?.length - 1), value);\r\n });\r\n })\r\n .from(0, 0)\r\n .to(1, 1);\r\n\r\n// eslint-disable-next-line max-lines-per-function\r\nexport const manipulateSvgSymbol = (SVGContainer: Svg, symbol: SvgPointSymbol, svg?: string, bg?: SvgSymbolBg): Svg => {\r\n if (!symbol) return SVGContainer;\r\n\r\n const symbolData = svg || symbol.data;\r\n\r\n if (!symbolData) return SVGContainer;\r\n\r\n SVGContainer.clear();\r\n\r\n const { size, angle, background, figure } = symbol;\r\n const isUploadedFile = !bg && !symbolData.includes(\"symbol-bg\") && !symbolData.includes(\"symbol-figure\");\r\n const innerSvg = symbolData.replace(/<\\?xml[^?]*\\?>|<svg[^>]*>|<\\/svg>/g, \"\");\r\n\r\n if (isUploadedFile) {\r\n SVGContainer.svg(innerSvg);\r\n\r\n const uploadedViewBox = /viewBox=\"([^\"]+)\"/g.exec(symbolData)?.[1];\r\n\r\n if (uploadedViewBox?.[1]) {\r\n SVGContainer.viewbox(uploadedViewBox);\r\n }\r\n\r\n SVGContainer.size(size as number);\r\n } else {\r\n const hasBg = bg || innerSvg?.includes(\"symbol-bg\");\r\n let defaultSize = hasBg ? DEFAULT_SYMBOL_WITH_BG_SIZE : DEFAULT_SYMBOL_SIZE;\r\n const currentSize = size || defaultSize;\r\n let viewBox = [0, 0, defaultSize, defaultSize];\r\n const strokeWidth =\r\n getParameterValue((background as SvgParameterDc)?.strokeWidth as number) ||\r\n (typeof (background as SvgParameterDc)?.strokeColor === \"object\" ? 1 : 0);\r\n\r\n if (strokeWidth) {\r\n defaultSize += strokeWidth as number;\r\n viewBox = [-strokeWidth / 2, -strokeWidth / 2, defaultSize, defaultSize];\r\n }\r\n\r\n if (hasBg) {\r\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(viewBox.join(\" \"));\r\n\r\n const currentBg = bg || (background as SvgParameterDc)?.type;\r\n\r\n if (currentBg) {\r\n const strokeColor = getParameterValue((background as SvgParameterDc)?.strokeColor as ParameterValue);\r\n const fillColor = getParameterValue((background as SvgParameterDc)?.fillColor as ParameterValue);\r\n\r\n SVGContainer.svg(\r\n currentBg === SvgSymbolBg.Circle\r\n ? `<circle\r\n id=\"symbol-bg\"\r\n cx=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\r\n cy=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\r\n r=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\r\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\r\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\r\n stroke-width=\"${strokeWidth}\"\r\n />`\r\n : `<rect\r\n id=\"symbol-bg\"\r\n width=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\r\n height=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\r\n rx=\"4\"\r\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\r\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\r\n stroke-width=\"${strokeWidth}\"\r\n />`,\r\n );\r\n SVGContainer.svg(innerSvg);\r\n SVGContainer.find(\"#symbol-bg:not(:first-child)\").each((item: any) => item.remove());\r\n SVGContainer.find(\":not(#symbol-bg)\").each((item: any) =>\r\n item.center(DEFAULT_SYMBOL_WITH_BG_SIZE / 2, DEFAULT_SYMBOL_WITH_BG_SIZE / 2).fill(\"white\"),\r\n );\r\n\r\n // eslint-disable-next-line max-depth\r\n if (isParameterByAttribute((background as SvgParameterDc)?.fillColor as ParameterValue)) {\r\n const gradient = createSvgGradient(\r\n SVGContainer,\r\n ((background as SvgParameterDc)?.fillColor as ParameterByAttribute<string>)?.values,\r\n );\r\n\r\n SVGContainer.find(\"#symbol-bg\")[0]?.fill(gradient);\r\n }\r\n } else {\r\n SVGContainer.svg(innerSvg);\r\n }\r\n } else {\r\n const fillColor = getParameterValue((figure as SvgParameterDc)?.fillColor as string);\r\n\r\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(viewBox.join(\" \"));\r\n SVGContainer.svg(innerSvg);\r\n SVGContainer.find(\"#symbol-figure\").each(item => {\r\n item.center(DEFAULT_SYMBOL_SIZE / 2, DEFAULT_SYMBOL_SIZE / 2).fill(fillColor || DEFAULT_SYMBOL_FILL_COLOR);\r\n });\r\n }\r\n }\r\n\r\n const rootTransform = /<svg[^>]*transform=\"([^\"]+)\"/g.exec(symbolData)?.[1];\r\n\r\n if (rootTransform) {\r\n const transformParts = rootTransform.slice(0, -1).split(\"(\");\r\n\r\n SVGContainer.transform({ [transformParts[0]]: transformParts[1].split(\",\") });\r\n }\r\n\r\n const rotatedAngle = SVGContainer.transform(\"rotate\");\r\n\r\n if (rotatedAngle) {\r\n SVGContainer.rotate(-rotatedAngle, 0, 0);\r\n }\r\n if (angle !== undefined) {\r\n SVGContainer.rotate((angle as number) * (180 / Math.PI), 0, 0);\r\n }\r\n\r\n return SVGContainer;\r\n};\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { polygonCircleFromPoint } from '../../';\r\nimport { LineMiterRender } from './LineMiterRender';\r\nimport { LineMiterKind } from '../../core';\r\n\r\nexport class CircleLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth * 3;\r\n }\r\n\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [[[x + (this.miterSize / 2 + this.strokeWidth) * xMultiplier, y]]];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineMiterKind.FilledCircle;\r\n\r\n return new PolyRender(\r\n polygonCircleFromPoint(miterRings[0][0], this.miterSize),\r\n {\r\n fillColor: isFilled ? this.color : 'transparent',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n enclosed: true,\r\n }\r\n );\r\n }\r\n}\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\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 {\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\nimport { ClusterSymbol } from \"@evergis/sgis/es/symbols/ClusterSymbol\";\r\nimport { ClusterSymbolDc } from \"@evergis/api\";\r\n\r\nimport {\r\n SGisImageSymbolType,\r\n SGisPointSymbolType,\r\n SGisPolygonSymbolType,\r\n SGisPolylineSymbolType,\r\n SGisSymbolType,\r\n} from './types';\r\n\r\nexport function isSGisPointSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPointSymbolType {\r\n return (\r\n symbol instanceof PointSymbol ||\r\n symbol instanceof StaticImageSymbol ||\r\n symbol instanceof SquareSymbol ||\r\n symbol instanceof MaskedImage\r\n );\r\n}\r\n\r\nexport function isSGisImageSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisImageSymbolType {\r\n return symbol instanceof StaticImageSymbol || symbol instanceof MaskedImage;\r\n}\r\n\r\nexport function isSGisPolygonSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPolygonSymbolType {\r\n return (\r\n symbol instanceof PolygonSymbol ||\r\n symbol instanceof BrushFill ||\r\n symbol instanceof ImageFill\r\n );\r\n}\r\n\r\nexport function isSGisPolylineSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPolylineSymbolType {\r\n return symbol instanceof PolylineSymbol;\r\n}\r\n\r\nexport function isSGisH3Symbol(\r\n symbol: SGisSymbolType\r\n): symbol is H3Symbol {\r\n return symbol instanceof H3Symbol;\r\n}\r\n\r\nexport function isSGisClusterSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is ClusterSymbol {\r\n return !!(symbol as ClusterSymbolDc).singleObjectSymbol;\r\n}\r\n","import { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { H3Feature } from \"@evergis/sgis/es/features/H3Feature\";\r\nimport { plain } from '@evergis/sgis/es/Crs';\r\n\r\n/**\r\n * Моки фич для отображения превью символа\r\n * http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217\r\n */\r\n\r\nexport const viewBoxSize = 100;\r\n\r\nexport const pointFeature = new PointFeature([50, -50], { crs: plain });\r\n\r\nexport const lineFeature = new Polyline(\r\n [\r\n [0, -57],\r\n [26, -57],\r\n [40, -35],\r\n [60, -65],\r\n [74, -43],\r\n [100, -43],\r\n ],\r\n {\r\n crs: plain,\r\n }\r\n);\r\nexport const polygonFeature = new Polygon(\r\n [\r\n [20, -20],\r\n [80, -20],\r\n [80, -80],\r\n [20, -80],\r\n ],\r\n { crs: plain }\r\n);\r\nexport const h3gridFeature = new H3Feature(\r\n [\r\n [50, -15],\r\n [80, -33],\r\n [80, -67],\r\n [50, -85],\r\n [20, -67],\r\n [20, -33],\r\n [50, -15],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const lineLegendFeature = new Polyline(\r\n [\r\n [0, -50],\r\n [100, -50],\r\n ],\r\n {\r\n crs: plain,\r\n }\r\n);\r\n\r\nexport const polygonLegendFeature = new Polygon(\r\n [\r\n [20, -20],\r\n [80, -20],\r\n [80, -80],\r\n [20, -80],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const polygonMapLegendFeature = new Polygon(\r\n [\r\n [50, 0],\r\n [100, -25],\r\n [100, -75],\r\n [50, -100],\r\n [0, -75],\r\n [0, -25],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const MAP_LEGEND_FEATURES = {\r\n polygon: polygonMapLegendFeature,\r\n};\r\n\r\nexport const LEGEND_FEATURES = {\r\n point: pointFeature,\r\n polyline: lineLegendFeature,\r\n polygon: polygonLegendFeature,\r\n h3grid: h3gridFeature,\r\n};\r\n\r\nexport const MOCK_FEATURES = {\r\n point: pointFeature,\r\n polyline: lineFeature,\r\n polygon: polygonFeature,\r\n h3grid: h3gridFeature,\r\n} as const;\r\n","import { plain } from '@evergis/sgis/es/Crs';\r\n\r\nimport { isSGisH3Symbol, isSGisPolygonSymbol, isSGisPolylineSymbol } from './guards';\r\nimport {\r\n LEGEND_FEATURES,\r\n MAP_LEGEND_FEATURES,\r\n MOCK_FEATURES,\r\n viewBoxSize,\r\n} from './mockFeatures';\r\nimport { SGisSymbolType } from './types';\r\n\r\nexport function getSymbolRenders(\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize,\r\n features: Partial<typeof MOCK_FEATURES> = {}\r\n) {\r\n const resolution = viewBoxSize / size;\r\n const featuresToRender = { ...MOCK_FEATURES, ...features };\r\n\r\n if (isSGisPolygonSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.polygon,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n if (isSGisPolylineSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.polyline,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n if (isSGisH3Symbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.h3grid,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n return symbol.renderFunctionAsync(featuresToRender.point, resolution, plain);\r\n}\r\n\r\nexport const getMapLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => getSymbolRenders(symbol, size, MAP_LEGEND_FEATURES);\r\n\r\nexport const getLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => getSymbolRenders(symbol, size, LEGEND_FEATURES);\r\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { RenderForCanvas } from \"@evergis/sgis/es/painters/DomPainter/types\";\r\n\r\nexport function renderSymbolToCanvas(renders: Render[], canvas: Canvas) {\r\n renders.forEach(render => {\r\n canvas.draw(<RenderForCanvas>render);\r\n });\r\n}\r\n","import { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\r\nimport { PointSymbol as SPointSymbol, PointSymbolConstructorParams } from '@evergis/sgis/es/symbols/point/Point';\r\nimport { SquareSymbol as SSquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\r\nimport { Color } from '@evergis/color';\r\nimport { StaticImageSymbol as SStaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { ClusterSymbolDc, SvgParameterDc } from \"@evergis/api\";\r\n\r\nimport { getParameterValue } from '../core/classification';\r\n\r\nimport {\r\n ClassifyAble,\r\n H3GridSymbol,\r\n isPolygonHasHatchBrush,\r\n isPolygonHasPatternBrush,\r\n MaskedImageSymbol,\r\n Offset,\r\n ParameterValue,\r\n PointSymbol,\r\n PolygonSymbol,\r\n PolylineSymbols,\r\n SimpleOffset,\r\n SquareSymbol,\r\n StaticImageSymbol,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n} from '../core/style';\r\n\r\nimport {\r\n SGisBrushFill,\r\n SGisImageFill,\r\n SGisPolygonSymbol,\r\n SGisPolylineSymbol,\r\n} from './Evergis';\r\n\r\nimport { SGisSymbolType } from './types';\r\n\r\n// TODO create classes from unClassified symbols only\r\nexport function deserializeSymbol(\r\n symbol: StyleSymbolType\r\n): SGisSymbolType | null {\r\n switch (symbol.type) {\r\n case \"h3grid\":\r\n return deserializeH3Symbol(symbol as H3Symbol);\r\n case \"svgPointSymbol\":\r\n return deserializeSvgPointSymbol(symbol as SvgPointSymbol);\r\n case 'circlePointSymbol':\r\n return deserializePointSymbol(symbol as PointSymbol);\r\n case 'squarePointSymbol':\r\n return deserializeSquareSymbol(symbol as SquareSymbol);\r\n case 'maskedImagePointSymbol':\r\n return deserializeMaskedImageSymbol(symbol as MaskedImageSymbol);\r\n case 'imagePointSymbol':\r\n return deserializeImagePointSymbol(symbol as StaticImageSymbol);\r\n case 'polygonSymbol':\r\n return deserializePolygonSymbol(symbol as PolygonSymbol);\r\n case 'simplePolylineSymbol':\r\n case 'polylineSymbol':\r\n return deserializePolylineSymbol(symbol as PolylineSymbols);\r\n case \"clusterSymbol\":\r\n return deserializeSymbol((symbol as ClusterSymbolDc).singleObjectSymbol as StyleSymbolType);\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nfunction deserializeH3Symbol(symbol: H3GridSymbol) {\r\n return new H3Symbol({\r\n ...symbol,\r\n cellSize: getParameterValue(symbol.cellSize as number),\r\n strokeWidth: getParameterValue(symbol?.stroke?.width as number),\r\n strokeColor: getParameterValue(symbol?.stroke?.color as string),\r\n fillColor: getParameterValue(symbol?.fill?.color as string),\r\n });\r\n}\r\n\r\nfunction deserializePointSymbol(symbol: PointSymbol) {\r\n // @ts-ignore\r\n return new SPointSymbol(deserializePointSymbolParams(symbol));\r\n}\r\n\r\nexport const getOffsetParameterValue = (offset: Offset): SimpleOffset => [\r\n getParameterValue(offset?.[0]),\r\n getParameterValue(offset?.[1]),\r\n];\r\n\r\nfunction deserializeSvgPointSymbolParams({ type, data, size, offset, angle, background, figure }: SvgPointSymbol) {\r\n return {\r\n type: getParameterValue(type as ParameterValue),\r\n data: getParameterValue(data as ParameterValue),\r\n size: getParameterValue(size as ParameterValue),\r\n offset: getOffsetParameterValue(offset as Offset),\r\n angle: getParameterValue(angle as ParameterValue),\r\n ...(background\r\n ? {\r\n background: {\r\n ...(background as SvgParameterDc),\r\n fillColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.fillColor as string)),\r\n strokeColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.strokeColor as string)),\r\n strokeWidth: getParameterValue((background as SvgParameterDc)?.strokeWidth as ParameterValue),\r\n },\r\n }\r\n : {}),\r\n ...(figure\r\n ? {\r\n figure: {\r\n ...(figure as SvgParameterDc),\r\n fillColor: deserializeColor(\r\n getParameterValue((figure as SvgParameterDc)?.fillColor as ParameterValue) as string,\r\n ),\r\n },\r\n }\r\n : {}),\r\n };\r\n}\r\n\r\nfunction deserializeSvgPointSymbol(symbol: SvgPointSymbol) {\r\n return new SPointSymbol(deserializeSvgPointSymbolParams(symbol) as PointSymbolConstructorParams);\r\n}\r\n\r\nfunction deserializeSquareSymbol(symbol: SquareSymbol) {\r\n return new SSquareSymbol({\r\n ...deserializePointSymbolParams(symbol),\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n });\r\n}\r\n\r\nfunction deserializeMaskedImageSymbol(symbol: MaskedImageSymbol) {\r\n return new MaskedImage({\r\n ...symbol,\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n // @ts-ignore\r\n width: getParameterValue(symbol.width),\r\n // @ts-ignore\r\n height: getParameterValue(symbol.height),\r\n // @ts-ignore\r\n anchorPoint: deserializeAnchor(symbol.offset),\r\n // @ts-ignore\r\n imageSource: deserializeBase64(symbol.image),\r\n // @ts-ignore\r\n maskSource: deserializeBase64(symbol.imageMask),\r\n // @ts-ignore\r\n maskColor: deserializeColor(getParameterValue(symbol.maskedColor)),\r\n });\r\n}\r\n\r\nfunction deserializeImagePointSymbol(symbol: StaticImageSymbol) {\r\n return new SStaticImageSymbol({\r\n ...symbol,\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n // @ts-ignore\r\n width: getParameterValue(symbol.width),\r\n // @ts-ignore\r\n height: getParameterValue(symbol.height),\r\n // @ts-ignore\r\n anchorPoint: deserializeAnchor(symbol.offset),\r\n // @ts-ignore\r\n source: deserializeBase64(symbol.image),\r\n });\r\n}\r\n\r\nfunction deserializePolygonSymbol(symbol: PolygonSymbol) {\r\n if (isPolygonHasPatternBrush(symbol)) {\r\n return new SGisImageFill(symbol);\r\n }\r\n\r\n if (isPolygonHasHatchBrush(symbol)) {\r\n return new SGisBrushFill(symbol);\r\n }\r\n\r\n return new SGisPolygonSymbol(symbol);\r\n}\r\n\r\nfunction deserializePolylineSymbol(symbol: PolylineSymbols) {\r\n return new SGisPolylineSymbol(symbol);\r\n}\r\n\r\nfunction deserializePointSymbolParams({\r\n size,\r\n offset,\r\n strokeColor,\r\n strokeWidth,\r\n fillColor,\r\n}: PointSymbol | SquareSymbol) {\r\n return {\r\n size: getParameterValue(size as ClassifyAble<number>),\r\n offset: deserializeAnchor(offset as Offset),\r\n strokeWidth: getParameterValue(strokeWidth as ClassifyAble<number>),\r\n strokeColor: deserializeColor(\r\n getParameterValue(strokeColor as ClassifyAble<string>)\r\n ),\r\n fillColor: deserializeColor(\r\n getParameterValue(fillColor as ClassifyAble<string>)\r\n ),\r\n };\r\n}\r\n\r\nfunction deserializeBase64(base: string) {\r\n return `data:image/png;base64,${base}`;\r\n}\r\n\r\nexport function deserializeAnchor(offset: Offset) {\r\n // @ts-ignore\r\n return offset.map(getParameterValue);\r\n}\r\n\r\nfunction deserializeColor(color: string): string | null {\r\n return color ? new Color(color).toString() : null;\r\n}\r\n","import { SGisSymbolType } from './types';\r\nimport { isSGisImageSymbol, isSGisPointSymbol } from './guards';\r\n\r\nimport { clamp } from '../utils/math';\r\n\r\nexport const clampSymbol = (\r\n symbol: SGisSymbolType,\r\n min: number,\r\n max: number\r\n): SGisSymbolType => {\r\n if (isSGisImageSymbol(symbol)) {\r\n symbol.width = clamp(symbol.width, min, max);\r\n symbol.height = clamp(symbol.height, min, max);\r\n } else if (isSGisPointSymbol(symbol)) {\r\n symbol.size = clamp(symbol.size, min, max);\r\n }\r\n\r\n return symbol;\r\n};\r\n\r\nexport function centerAlignSymbol(symbol: SGisSymbolType) {\r\n if (isSGisImageSymbol(symbol)) {\r\n symbol.anchorPoint = [symbol.width / 2, symbol.height / 2];\r\n } else if (isSGisPointSymbol(symbol)) {\r\n symbol.offset = [0, 0];\r\n }\r\n\r\n return symbol;\r\n}\r\n\r\nexport const adjustSymbol = (\r\n symbol: SGisSymbolType,\r\n { size }: { size: number }\r\n) => centerAlignSymbol(clampSymbol(symbol, 0, size));\r\n","import { FeatureDc, GeometryDc, GeometryType } from '@evergis/api';\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 { ClassificationParameterExtended } from \"../classification\";\r\n\r\nexport function isValidParameter(parameter: ClassificationParameterExtended) {\r\n return !parameter?.includes(\"labelSymbol\") && !parameter?.includes(\"singleObjectSymbol\");\r\n}\r\n","import { ClusterSymbolDc } from \"@evergis/api\";\r\n\r\nimport { createLegendItem } from './createLegendItem';\r\nimport { isValidParameter } from \"./isValidParameter\";\r\nimport { ClassificationParameterExtended, unClassify } from '../classification';\r\nimport { EvergisStyle, StyleSymbolType } from '../style';\r\nimport { LayerLegend, LegendConfig } from './types';\r\n\r\nexport function createStyleLegend(\r\n style: EvergisStyle,\r\n config: LegendConfig\r\n): LayerLegend | null {\r\n const { classificationManager, symbol } = style;\r\n\r\n const items = classificationManager.filter(({ parameter }) => {\r\n return config.parameters && parameter\r\n ? config.parameters.includes(parameter)\r\n : isValidParameter(parameter as ClassificationParameterExtended)\r\n });\r\n\r\n if (!items.length) {\r\n return null;\r\n }\r\n\r\n return {\r\n symbol: unClassify((symbol as ClusterSymbolDc).singleObjectSymbol || symbol) as StyleSymbolType,\r\n items: items.map(createLegendItem(config)),\r\n };\r\n}\r\n","import {\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';\r\n\r\nimport { useLayerLegend } from './useLayerLegend';\r\n\r\nimport { LegendConfig } from '../../core';\r\n\r\nexport const useMapLegend = (\r\n layer?: FeatureLayerServiceInfoDc,\r\n config?: LegendConfig\r\n) => {\r\n const legend = useLayerLegend(layer, config);\r\n\r\n if (!legend) {\r\n return null;\r\n }\r\n\r\n return {\r\n symbol: legend.symbol,\r\n items: legend.items,\r\n };\r\n};\r\n","import { useLegendContext } from '../../contexts';\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\nconst DEFAULT_SYMBOL_SIZE = 26;\r\n\r\nexport function useSymbol(\r\n {\r\n symbol,\r\n size = DEFAULT_SYMBOL_SIZE,\r\n render = getSymbolRenders,\r\n maxWidth,\r\n }: UseSymbolParams,\r\n canvasRef: MutableRefObject<Canvas | null>\r\n) {\r\n useEffect(() => {\r\n if (canvasRef.current !== null && symbol !== undefined) {\r\n const canvas = canvasRef.current;\r\n setCanvasSize(canvas, size, maxWidth);\r\n\r\n render(symbol, size).then(renders => {\r\n renderSymbolToCanvas(renders, canvas);\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [symbol, size, maxWidth]);\r\n}\r\n\r\nfunction setCanvasSize(canvas: Canvas, size: number, maxWidth?: number) {\r\n canvas.node.height = size;\r\n canvas.node.width = maxWidth ? Math.min(size, maxWidth) : size;\r\n}\r\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\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 { useMapContext } from '../contexts';\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\nimport { useLayerOpacity } from \"./useLayerOpacity\";\r\n\r\nimport { LayerProps } from './LayerProps';\r\n\r\nexport function useFeatureLayer({\r\n zIndex,\r\n isDisplayed = true,\r\n features,\r\n opacity,\r\n}: FeatureLayerProps) {\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new FeatureLayer({ features, opacity }),\r\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\r\n update: (layer, [features]) => {\r\n layer.features = features;\r\n },\r\n },\r\n [features]\r\n );\r\n\r\n useLayerOrder(layer, zIndex);\r\n useLayerVisibility(layer, isDisplayed);\r\n useLayerOpacity(layer, opacity);\r\n\r\n return layer;\r\n}\r\n\r\nexport type FeatureLayerProps = {\r\n features: Feature[];\r\n} & LayerProps;\r\n","import { useCallback, useEffect } from 'react';\r\nimport { BboxChangeEndEvent, BboxChangeEvent, Map } from '@evergis/sgis/es/Map';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapBboxChange(\r\n onBboxChange?: (mapState: MapState) => void,\r\n force?: boolean\r\n) {\r\n const { map } = useMapContext();\r\n\r\n const event = force ? BboxChangeEvent : BboxChangeEndEvent;\r\n\r\n const handleBboxChange = useCallback(() => {\r\n onBboxChange && onBboxChange(getMapState(map));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [onBboxChange, map, event]);\r\n\r\n useEffect(() => {\r\n map.on(event.type, handleBboxChange);\r\n\r\n return () => {\r\n map.off(event.type, handleBboxChange);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [handleBboxChange, event]);\r\n}\r\n\r\nexport type MapState = {\r\n position: Coordinates;\r\n resolution: number;\r\n};\r\n\r\nexport function getMapState(map: Map): MapState {\r\n return {\r\n position: map.position.slice(0) as Coordinates,\r\n resolution: map.resolution,\r\n };\r\n}\r\n","import { MapResize } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { useCallback, useEffect } from 'react';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapResize(onResize?: (size: number[]) => void) {\r\n const { painter } = useMapContext();\r\n\r\n const handleMapResize = useCallback(() => {\r\n onResize && onResize([painter.width, painter.height]);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [onResize, painter]);\r\n\r\n useEffect(() => {\r\n painter.on(MapResize.type, handleMapResize);\r\n\r\n return () => {\r\n painter.off(MapResize.type, handleMapResize);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [handleMapResize]);\r\n}\r\n","import { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\r\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\r\nimport {\r\n EvergisDynamicLayer,\r\n EvergisLayer,\r\n isEvergisDynamicLayer,\r\n} from '@evergis/api';\r\nimport { useCallback, useMemo, useState } from 'react';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMount } from './useMount';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\ntype BboxCoordinates = [number, number, number, number];\r\n\r\nexport type Envelopes = {\r\n [layerName: string]: BboxCoordinates;\r\n};\r\n\r\nexport type MapPickResult = {\r\n clickPoint: Coordinates;\r\n envelopes: Envelopes;\r\n imageRectangle: [number, number, number, number];\r\n extentSr: number;\r\n};\r\n\r\nexport const useMapPick = (): MapPickResult | undefined => {\r\n const { map, painter } = useMapContext();\r\n const [geometryParams, setGeometryParams] = useState<MapPickResult>();\r\n\r\n const evergisLayers = useMemo(() => map.layers as unknown as EvergisLayer[], [\r\n map.layers,\r\n ]);\r\n\r\n const pick = useCallback(\r\n (event: sGisEvent) => {\r\n if (!(event instanceof sGisClickEvent)) {\r\n return;\r\n }\r\n\r\n const imageRectangle = [0, 0, painter.width, painter.height];\r\n const [x, y] = painter.getPxPosition(event.point.position);\r\n\r\n setGeometryParams({\r\n clickPoint: [Math.round(x), Math.round(y)],\r\n envelopes: collectLayerEnvelopes(evergisLayers),\r\n imageRectangle,\r\n extentSr: map.crs.wkid,\r\n } as MapPickResult);\r\n },\r\n\r\n [painter, evergisLayers, map.crs.wkid]\r\n );\r\n\r\n useMount({\r\n onMount: () => map.on('click', pick),\r\n onUnmount: () => map.off('click', pick),\r\n });\r\n\r\n return geometryParams;\r\n};\r\n\r\nfunction getLayerBboxCoors(layer: EvergisDynamicLayer): BboxCoordinates {\r\n return (\r\n // @ts-ignore TODO _currentRender prop on DynamicLayer private\r\n layer._currentRender &&\r\n // @ts-ignore\r\n layer._currentRender.bbox &&\r\n // @ts-ignore\r\n layer._currentRender.bbox.coordinates\r\n );\r\n}\r\n\r\nfunction collectLayerEnvelopes(layers: EvergisLayer[]) {\r\n let envelopes: Envelopes = {};\r\n\r\n for (const layer of layers) {\r\n if (!isEvergisDynamicLayer(layer)) {\r\n continue;\r\n }\r\n\r\n envelopes[layer.name] = getLayerBboxCoors(layer);\r\n }\r\n\r\n return envelopes;\r\n}\r\n","import { useCallback, useReducer } from 'react';\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 { useCallback, useState } from \"react\";\r\n\r\nexport const useToggle = (initial?: boolean): [boolean, VoidFunction, (value: boolean) => void] => {\r\n const [state, setState] = useState(initial !== undefined ? initial : false);\r\n const toggle = useCallback(() => setState(!state), [state]);\r\n\r\n return [state, toggle, setState];\r\n};\r\n","import React from 'react';\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';\r\nimport styled from 'styled-components';\r\n\r\nexport type CompoundIconProps = {\r\n geometryType: GeometryType;\r\n icons: Record<GeometryType, string>;\r\n};\r\n\r\nexport const CompoundIcon = styled.div<CompoundIconProps>`\r\n background: ${({ geometryType, icons }) =>\r\n `url(${icons[geometryType]}) center center / ${\r\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\r\n } no-repeat`};\r\n height: 32px;\r\n width: 32px;\r\n`;\r\n\r\nexport const ClusterSymbol = styled.div<{ color?: string }>`\r\n position: relative;\r\n width: 32px;\r\n height: 32px;\r\n\r\n :before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: inherit;\r\n height: inherit;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n opacity: 0.28;\r\n }\r\n \r\n :after {\r\n content: \"99\";\r\n position: absolute;\r\n top: 4px;\r\n left: 4px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 24px;\r\n height: 24px;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n color: white;\r\n font-size: 0.75rem;\r\n line-height: 1;\r\n }\r\n`;\r\n","import React, { PropsWithChildren } from 'react';\r\nimport { SvgPointSymbolDc } from \"@evergis/api\";\r\n\r\nimport { Symbol } from './Symbol';\r\nimport { ClusterSymbol } from \"./styled\";\r\nimport { getParameterValue, StyleSymbolType } from '../../core';\r\nimport { deserializeSymbol, adjustSymbol, isSGisClusterSymbol, SGisSymbolType } from '../../symbols';\r\n\r\ntype StyleSymbolProps = PropsWithChildren<{\r\n symbol: StyleSymbolType;\r\n size?: number;\r\n}>;\r\n\r\nconst MAX_SIZE = 32;\r\n\r\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\r\n symbol,\r\n size = MAX_SIZE,\r\n children,\r\n}) => {\r\n if (children) {\r\n return <>{children}</>;\r\n }\r\n\r\n let sGisSymbol = null;\r\n\r\n try {\r\n sGisSymbol = deserializeSymbol(symbol);\r\n } catch (e) {\r\n // TODO generate Error symbol\r\n }\r\n\r\n if (!sGisSymbol) {\r\n return null;\r\n }\r\n\r\n if (isSGisClusterSymbol(symbol as SGisSymbolType)) {\r\n const color = getParameterValue((sGisSymbol as SvgPointSymbolDc).background?.fillColor as string) ||\r\n getParameterValue((sGisSymbol as SvgPointSymbolDc).figure?.fillColor as string) || \"rgb(0, 170, 255)\";\r\n\r\n return <ClusterSymbol color={color} />\r\n }\r\n\r\n return (\r\n <Symbol\r\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\r\n size={size}\r\n />\r\n );\r\n};\r\n","import { Icon } from '@evergis/icons';\r\nimport styled from 'styled-components';\r\n\r\nexport const EvergisCardContainer = styled.div`\r\n position: absolute;\r\n top: 2.25rem;\r\n right: 0.5rem;\r\n width: 22.5rem;\r\n margin-bottom: 1rem;\r\n max-height: 90%;\r\n min-height: 1rem;\r\n background: #fff;\r\n border-radius: 4px;\r\n z-index: 1;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n flex-grow: 1;\r\n overflow: initial;\r\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\r\n\r\n ${Icon} {\r\n color: rgba(0, 0, 0, 0.65);\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &:hover {\r\n color: #1fb3aa;\r\n }\r\n }\r\n`;\r\n\r\nexport const StickyHeader = styled.div`\r\n display: flex;\r\n position: sticky;\r\n top: 0;\r\n flex-direction: column;\r\n background: #fff;\r\n`;\r\n\r\nexport const CardHeader = styled.div`\r\n display: flex;\r\n padding: 1.5rem 1.5rem 1rem;\r\n align-items: center;\r\n`;\r\n\r\nexport const CardTitle = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin: 0 0.5rem;\r\n flex-grow: 1;\r\n`;\r\n\r\nexport const CardControls = styled.div`\r\n display: flex;\r\n\r\n ${Icon} {\r\n margin: 0 0.5rem;\r\n }\r\n`;\r\n\r\nexport const FeatureName = styled.div`\r\n font-size: 1.25rem;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const LayerName = styled.div`\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const CardPagination = styled.div`\r\n display: flex;\r\n height: 2.5rem;\r\n padding: 0 1.5rem;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n justify-content: space-between;\r\n background: linear-gradient(\r\n 0deg,\r\n rgba(161, 186, 208, 0.12),\r\n rgba(161, 186, 208, 0.12)\r\n );\r\n`;\r\n\r\nexport const PaginationDescription = styled.div`\r\n display: flex;\r\n`;\r\n\r\nexport const CurrentFeatureIndex = styled.div`\r\n cursor: pointer;\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n`;\r\n\r\nexport const CardAttributes = styled.div`\r\n padding: 1rem 1.5rem;\r\n overflow-y: scroll;\r\n`;\r\n\r\nexport const AttributeContainer = styled.div`\r\n padding-bottom: 0.5rem;\r\n`;\r\n\r\nexport const AttributeTitle = styled.div`\r\n margin: 0.25rem 0;\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const AttributeValueContainer = styled.div`\r\n flex-wrap: wrap;\r\n display: flex;\r\n`;\r\n\r\nexport const SimpleAttribute = styled.div``;\r\n\r\nexport const ValueLink = styled.a`\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n text-decoration: none;\r\n`;\r\n","import React from 'react';\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';\nimport {\n IconButton,\n EverCloudCloseIcon,\n EverCloudStatisticsIcon,\n EverCloudZoomtoIcon,\n EverCloudPlayPrevIcon,\n EverCloudPlayNextIcon,\n} from \"@evergis/icons\";\n\nimport { StyleSymbol } from '../Symbol';\nimport { EvergisCardAttribute } from './EvergisCardAttribute';\n\nimport {\n CardAttributes,\n CardControls,\n CardHeader,\n CardPagination,\n CardTitle,\n CurrentFeatureIndex,\n EvergisCardContainer,\n FeatureName,\n LayerName,\n PaginationDescription,\n StickyHeader,\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 && <IconButton onClick={() => onStatistics(feature)}><EverCloudStatisticsIcon /></IconButton>}\n {!hideZoom && <IconButton onClick={zoom}><EverCloudZoomtoIcon /></IconButton>}\n <IconButton onClick={reset}><EverCloudCloseIcon /></IconButton>\n </CardControls>\n </CardHeader>\n {features.length > 1 ? (\n <CardPagination>\n <IconButton onClick={prev}><EverCloudPlayPrevIcon /></IconButton>\n <PaginationDescription>\n <CurrentFeatureIndex onClick={zoom}>\n {current + 1}\n </CurrentFeatureIndex>\n объект из {features.length}\n </PaginationDescription>\n <IconButton onClick={next}><EverCloudPlayNextIcon /></IconButton>\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';\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 { 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/icons\";\r\n\r\nimport { Placement, placementMixin } from '../../ui/mixins/placementMixin';\r\n\r\nexport type MapControlsProps = {\r\n placement?: Placement;\r\n vertical?: boolean;\r\n};\r\n\r\nconst mapControlBtnMixin = css`\r\n width: 2rem;\r\n height: 2rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n color: #fff;\r\n`;\r\n\r\ntype MapControlBtnProps = {\r\n onClick?: () => void;\r\n};\r\n\r\nexport const ZoomInBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// ZoomInBtn.defaultProps = { kind: \"plus\" };\r\n\r\nexport const ZoomOutBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// ZoomOutBtn.defaultProps = { kind: \"minus\" };\r\n\r\nexport const SearchBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// SearchBtn.defaultProps = { kind: \"search\" };\r\n\r\n// TODO not exists in fonts\r\nexport const FullscreenBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// FullscreenBtn.defaultProps = { kind: \"maximize\" };\r\n\r\nexport const MeasureBtn = styled(Icon)<\r\n MapControlBtnProps\r\n>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// MeasureBtn.defaultProps = { kind: \"measure_length\" };\r\n\r\nexport const MapControl = styled.div`\r\n border-radius: 0.15rem;\r\n background: rgba(28, 33, 48, 0.8);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: #fff;\r\n font-size: 1.5rem;\r\n cursor: pointer;\r\n height: auto;\r\n width: auto;\r\n padding: 0.25rem;\r\n`;\r\n\r\nexport const MapControls = styled.div<MapControlsProps>`\r\n position: absolute;\r\n display: flex;\r\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\r\n\r\n ${({ placement }) => placementMixin(placement)}\r\n\r\n ${MapControl} {\r\n margin-bottom: ${({ vertical }) => (vertical ? '0.5rem' : '0')};\r\n margin-right: ${({ vertical }) => (vertical ? '0' : '0.5rem')};\r\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\r\n }\r\n`;\r\n","import React from 'react';\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 { MouseEventHandler } from \"react\";\r\nimport styled, { css } from \"styled-components\";\r\nimport { Description, Flex, transition } from \"@evergis/ui\";\r\n\r\nimport { MapControl } from \"../MapControls\";\r\nimport { isParameterType } from \"../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended } from \"../../core\";\r\nimport { MapLegendItemProps } from \"./types\";\r\n\r\nexport const ItemText = styled.div`\r\n max-width: calc(100% - 2rem);\r\n font: ${({ theme: { fonts } }) => fonts.description};\r\n\r\n ${Description} {\r\n margin: 0;\r\n }\r\n`;\r\n\r\nexport const ItemSeparator = styled.div`\r\n :after {\r\n content: \"-\";\r\n margin: 0 0.5rem;\r\n font-size: 0.75rem;\r\n }\r\n`;\r\n\r\nexport const SymbolContainer = styled(\"span\")`\r\n display: flex;\r\n justify-content: center;\r\n min-width: 16px;\r\n margin-right: 0.5rem;\r\n`;\r\n\r\nexport const ClassifiedItem = styled<typeof Flex & { isHidden?: boolean; isClusterFillColor?: boolean }>(Flex)`\r\n align-items: center;\r\n /* cursor: ${({ isClusterFillColor }) => (isClusterFillColor ? \"default\" : \"pointer\")};\r\n pointer-events: ${({ isClusterFillColor }) => (isClusterFillColor ? \"none\" : \"auto\")};*/\r\n\r\n :not(:last-of-type) {\r\n margin-bottom: 0.25rem;\r\n }\r\n\r\n ${ItemText}, ${SymbolContainer} {\r\n transition: opacity ${transition.hover};\r\n }\r\n\r\n ${ItemText} {\r\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 0.65)};\r\n }\r\n\r\n ${SymbolContainer} {\r\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 1)};\r\n }\r\n\r\n /* :hover {\r\n ${ItemText}, ${SymbolContainer} {\r\n opacity: 1;\r\n }\r\n }*/\r\n`;\r\n\r\nconst SymbolButtonWithClick = css`\r\n width: 3.875rem;\r\n height: 3.875rem;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${({ theme: { palette } }) => palette.elementDeep};\r\n }\r\n`;\r\n\r\nexport const SymbolButton = styled.span<{ onClick?: MouseEventHandler<HTMLSpanElement> | null }>`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: background-color ${transition.hover};\r\n ${({ onClick }) => !!onClick && SymbolButtonWithClick};\r\n\r\n svg {\r\n max-width: 4rem;\r\n max-height: 4rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendControl = styled(MapControl)`\r\n cursor: default;\r\n`;\r\n\r\nexport const MapLegendContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n width: 100%;\r\n padding-bottom: 1rem;\r\n box-sizing: border-box;\r\n\r\n canvas {\r\n height: 1.625rem;\r\n width: 1.625rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendHeader = styled.div`\r\n max-width: 15rem;\r\n margin-bottom: 0.25rem;\r\n font-size: 0.75rem;\r\n font-weight: bold;\r\n`;\r\n\r\nexport const MapLegendDescriptionContainer = styled.div`\r\n margin-bottom: 0.5rem;\r\n font-weight: 400;\r\n font-size: 0.625rem;\r\n color: rgba(255, 255, 255, 0.65);\r\n`;\r\n\r\nexport const MinimizedLegendContainer = styled.div`\r\n width: calc(100% - 1.5rem);\r\n padding-right: 1.5rem;\r\n`;\r\n\r\nexport const MapLegendSectionContainer = styled.div`\r\n width: 100%;\r\n \r\n :not(:last-child) {\r\n margin-bottom: 1rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendValueDescr = styled.div`\r\n min-height: 1rem;\r\n margin-bottom: 0.25rem;\r\n font-size: 0.75rem;\r\n font-weight: 600;\r\n line-height: 1rem;\r\n`;\r\n\r\nconst SizeLegendItemMixin = (value = 0) => css`\r\n position: absolute;\r\n top: 0;\r\n left: 50%;\r\n flex: none;\r\n height: inherit;\r\n width: inherit;\r\n margin: 0 auto;\r\n background: none;\r\n border: none;\r\n\r\n :after {\r\n content: \"\";\r\n display: flex;\r\n border: 1px rgba(48, 69, 79, 0.28) solid;\r\n border-radius: 50%;\r\n margin: 0 0 0 -${value / 2}px;\r\n width: ${value}px;\r\n height: ${value}px;\r\n }\r\n`;\r\n\r\nconst StrokeWidthLegendItemMixin = (value = 0) => css`\r\n position: relative;\r\n background: none;\r\n border: none;\r\n display: flex;\r\n align-items: center;\r\n flex: none;\r\n width: calc(100% - 2rem);\r\n height: ${value}px;\r\n margin: 0 0 0.25rem 0;\r\n padding-left: 2rem;\r\n font-size: 0.75rem;\r\n \r\n :first-child, :last-child {\r\n height: auto;\r\n }\r\n \r\n :after {\r\n content: \"\";\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 1.5rem;\r\n height: ${value}px;\r\n margin-top: -${Math.round(value / 2)}px;\r\n background: rgb(224, 224, 224);\r\n }\r\n`;\r\n\r\nconst StrokeColorLegendItemMixin = css`\r\n margin-right: 0.5rem;\r\n width: 1.5rem;\r\n`;\r\n\r\nexport const MapLegendItem = styled.div<MapLegendItemProps>`\r\n flex: 1;\r\n height: ${({ parameter }) =>\r\n isParameterType([\"strokeColor\", \"stroke.color\"], parameter as ClassificationParameterExtended) ? 0.25 : 1}rem;\r\n background: ${({ value }) => typeof value === \"number\" ? \"none\" : value};\r\n border: 1px rgba(48, 69, 79, 0.1) solid;\r\n margin-right: -1px;\r\n color: rgba(48, 69, 79, 0.65);\r\n opacity: ${({ isHidden }) => isHidden ? 0.28 : 1};\r\n\r\n ${({ value, parameter }) => isParameterType(\"size\", parameter as ClassificationParameterExtended)\r\n && SizeLegendItemMixin(value as number)}\r\n\r\n ${({ value, parameter }) => isParameterType(\r\n [\"strokeWidth\", \"stroke.width\"],\r\n parameter as ClassificationParameterExtended,\r\n) && StrokeWidthLegendItemMixin(value as number)}\r\n`;\r\n\r\nexport const MapLegendOther = styled(MapLegendItem)`\r\n display: flex;\r\n align-items: center;\r\n flex: none;\r\n position: relative;\r\n width: 1rem;\r\n margin-left: 0.25rem;\r\n border-radius: 0.125rem;\r\n`;\r\n\r\nconst SizeLegendItemsMixin = css`\r\n position: relative;\r\n width: 2rem;\r\n height: 2rem;\r\n margin: 0 auto;\r\n\r\n ${MapLegendOther} {\r\n width: auto;\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nconst StrokeWidthLegendItemsMixin = css`\r\n position: relative;\r\n flex-direction: column;\r\n width: auto;\r\n\r\n ${MapLegendOther} {\r\n width: calc(100% - 2rem);\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nexport const SizeMinimizedLegend = styled.div`\r\n display: flex;\r\n flex-wrap: nowrap;\r\n align-items: center;\r\n margin: 0.5rem 0 0.25rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendSymbol = styled.div`\r\n width: 4rem;\r\n margin-right: 0.75rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendLabel = styled.div`\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendDown = styled.div`\r\n color: rgba(48, 69, 79, 0.65);\r\n`;\r\n\r\nexport const SizeMinimizedLegendUp = styled(SizeMinimizedLegendDown)``;\r\n\r\nconst SingleSizeLegendItemsMixin = css`\r\n width: 4rem;\r\n margin-right: 0.75rem;\r\n\r\n ${MapLegendItem}:after {\r\n margin: 0 auto;\r\n }\r\n`;\r\n\r\nconst SingleLegendItemsMixin = css<{\r\n parameter: ClassificationParameterExtended;\r\n isSize?: boolean;\r\n}>`\r\n justify-content: center;\r\n width: 2rem;\r\n height: auto;\r\n margin: 0;\r\n ${({ isSize }) => isSize && SingleSizeLegendItemsMixin}\r\n \r\n ${MapLegendItem} {\r\n position: relative;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n align-content: center;\r\n justify-content: center;\r\n margin: 0;\r\n height: auto;\r\n width: auto;\r\n\r\n ${({ parameter }) => isParameterType(\r\n [\"strokeColor\", \"stroke.color\"],\r\n parameter as ClassificationParameterExtended,\r\n) && StrokeColorLegendItemMixin}\r\n }\r\n`;\r\n\r\nexport const MapLegendItems = styled.div<{\r\n parameter: ClassificationParameterExtended;\r\n isSize?: boolean;\r\n isStrokeWidth?: boolean;\r\n isStrokeColor?: boolean;\r\n isSingle?: boolean;\r\n}>`\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n border-radius: 0.125rem;\r\n\r\n ${({ isSize }) => isSize && SizeLegendItemsMixin};\r\n ${({ isStrokeWidth }) => isStrokeWidth && StrokeWidthLegendItemsMixin};\r\n ${({ isSingle }) => isSingle && SingleLegendItemsMixin};\r\n`;\r\n\r\nexport const MapLegendItemsContainer = styled.div`\r\n display: flex;\r\n width: 100%;\r\n \r\n ${MapLegendItem} {\r\n :first-child {\r\n border-top-left-radius: 0.125rem;\r\n border-bottom-left-radius: 0.125rem;\r\n }\r\n\r\n :last-child {\r\n border-top-right-radius: 0.125rem;\r\n border-bottom-right-radius: 0.125rem;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendValues = styled.div`\r\n display: flex;\r\n width: 100%;\r\n margin-top: 0.5rem;\r\n font-size: 0.75rem;\r\n color: rgba(48, 69, 79, 0.65);\r\n`;\r\n\r\nexport const MapLegendValuesRange = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n width: calc(100% - 1.25rem);\r\n \r\n div {\r\n flex: 1;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n\r\n :first-child {\r\n margin-right: 0.5rem;\r\n }\r\n\r\n :last-child {\r\n margin-left: 0.5rem;\r\n text-align: right;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendValuesOther = styled(MapLegendOther)`\r\n justify-content: center;\r\n border: 0;\r\n overflow: visible;\r\n`;\r\n\r\nexport const MapLegendExpandButton = styled.div`\r\n cursor: pointer;\r\n margin-top: 0.1rem;\r\n font-size: 0.625rem;\r\n color: #1FB3AA;\r\n`;\r\n","import React, { FC, useCallback } from \"react\";\r\n\r\nimport { isNumeric } from \"../../../utils/isNumeric\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\nimport {\r\n MapLegendItem,\r\n MapLegendItems,\r\n MapLegendItemsContainer,\r\n MapLegendOther,\r\n MapLegendValueDescr,\r\n MapLegendValues,\r\n MapLegendValuesOther,\r\n MapLegendValuesRange,\r\n MinimizedLegendContainer,\r\n SizeMinimizedLegend,\r\n SizeMinimizedLegendDown,\r\n SizeMinimizedLegendLabel,\r\n SizeMinimizedLegendSymbol,\r\n SizeMinimizedLegendUp\r\n} from \"../styled\";\r\nimport { MinimizedLegendProps } from \"../types\";\r\n\r\nconst getValueFromLegendTitle = (title: string, minOrMax: \"min\" | \"max\"): string => {\r\n if (title.includes(\" - \")) {\r\n const result = title?.split(\" - \");\r\n\r\n return minOrMax === \"min\" ? result?.[0] : result?.[1];\r\n }\r\n\r\n if (title.includes(\",\")) {\r\n const result = title?.split(\",\");\r\n\r\n return result.join(\", \");\r\n }\r\n\r\n return title.split(\" \").find(isNumeric) || title || \"\";\r\n};\r\n\r\nexport const MinimizedLegend: FC<MinimizedLegendProps> = ({\r\n values,\r\n title,\r\n parameter,\r\n hiddenLegends,\r\n}) => {\r\n const currentValues = [...values];\r\n const other = currentValues.pop();\r\n const isSize = isParameterType(\"size\", parameter);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\r\n const titleMax = getValueFromLegendTitle(currentValues[0]?.title, \"max\");\r\n const titleMin = getValueFromLegendTitle(currentValues[currentValues.length - 1]?.title, \"min\");\r\n\r\n const checkIsHidden = useCallback((hiddenCondition?: string) => hiddenCondition\r\n ? hiddenLegends?.some(condition => hiddenCondition.includes(condition))\r\n : false, [hiddenLegends]);\r\n\r\n return (\r\n <MinimizedLegendContainer>\r\n {!!title && <MapLegendValueDescr>{title}</MapLegendValueDescr>}\r\n {isSize ? (\r\n <>\r\n <SizeMinimizedLegend>\r\n <SizeMinimizedLegendSymbol>\r\n <MapLegendItems parameter={parameter} isSize>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n />\r\n ))}\r\n </MapLegendItems>\r\n </SizeMinimizedLegendSymbol>\r\n <SizeMinimizedLegendLabel>\r\n <SizeMinimizedLegendDown>{currentValues[0]?.title}</SizeMinimizedLegendDown>\r\n <SizeMinimizedLegendUp>{currentValues[currentValues.length - 1]?.title}</SizeMinimizedLegendUp>\r\n </SizeMinimizedLegendLabel>\r\n </SizeMinimizedLegend>\r\n <SizeMinimizedLegend>\r\n <SizeMinimizedLegendSymbol>\r\n <MapLegendItems parameter={parameter} isSize>\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n </SizeMinimizedLegendSymbol>\r\n <SizeMinimizedLegendLabel>\r\n <SizeMinimizedLegendUp>Другое</SizeMinimizedLegendUp>\r\n </SizeMinimizedLegendLabel>\r\n </SizeMinimizedLegend>\r\n </>\r\n ) : isStrokeWidth ? (\r\n <MapLegendItems parameter={parameter} isStrokeWidth>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n >\r\n {(!index || index === currentValues.length - 1) && value.title}\r\n </MapLegendItem>\r\n ))}\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n >\r\n Другое\r\n </MapLegendOther>\r\n </MapLegendItems>\r\n ) : (\r\n <MapLegendItems parameter={parameter}>\r\n <MapLegendItemsContainer>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n />\r\n ))}\r\n </MapLegendItemsContainer>\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n )}\r\n {typeof other?.parameterValue === \"string\" && (titleMax || titleMin) && (\r\n <MapLegendValues>\r\n <MapLegendValuesRange>\r\n <div>{titleMax}</div>\r\n <div>{titleMin}</div>\r\n </MapLegendValuesRange>\r\n <MapLegendValuesOther>-</MapLegendValuesOther>\r\n </MapLegendValues>\r\n )}\r\n </MinimizedLegendContainer>\r\n )\r\n}\r\n","import { useCallback, useMemo, useRef } from \"react\";\r\nimport { SVG } from \"@svgdotjs/svg.js\";\r\nimport { Color } from \"@evergis/color/es/Color\";\r\n\r\nimport { DEFAULT_SYMBOL_OFFSET } from \"../constants\";\r\nimport { manipulateSvgSymbol } from \"../../../utils/svg\";\r\nimport { isSizeClassification } from \"../../../utils/legend\";\r\nimport { getOffsetParameterValue } from \"../../../symbols\";\r\nimport { SvgEditorField, SvgSymbolBg } from \"../types\";\r\nimport { Offset, SvgPointSymbol } from \"../../../core\";\r\n\r\nexport const useSvgSymbol = (symbol: SvgPointSymbol, skipOffset?: boolean) => {\r\n const SVGWrapperRefElement = useRef<HTMLElement | null>(null);\r\n const SVGContainer = useMemo(() => SVG(), []);\r\n\r\n const initSvg = useCallback(() => {\r\n SVGContainer.addTo(SVGWrapperRefElement.current as HTMLElement);\r\n }, [SVGContainer]);\r\n\r\n const getSvgData = useCallback(() => SVGContainer.svg(), [SVGContainer]);\r\n\r\n const manipulateSvg = useCallback(\r\n ({ svg, bg, newSymbol }: { svg: string; bg?: SvgSymbolBg; newSymbol?: SvgPointSymbol }) => {\r\n manipulateSvgSymbol(SVGContainer, newSymbol || symbol, svg, bg);\r\n },\r\n [SVGContainer, symbol],\r\n );\r\n\r\n const getUpdatedSvgSymbol = useCallback(\r\n (field: keyof SvgEditorField, value: Color | number | string) => {\r\n const { data, offset } = symbol;\r\n const newValue = value instanceof Color ? value.toString(\"rgba\") : value;\r\n\r\n const newSymbol = JSON.parse(\r\n JSON.stringify({\r\n ...symbol,\r\n offset: skipOffset\r\n ? DEFAULT_SYMBOL_OFFSET\r\n : isSizeClassification(field)\r\n ? getOffsetParameterValue(offset as Offset)\r\n : offset,\r\n }),\r\n );\r\n\r\n if (field.indexOf(\".\") !== -1) {\r\n const parts = field.split(\".\");\r\n\r\n if (newSymbol[parts[0]]?.[parts[1]]) {\r\n newSymbol[parts[0]][parts[1]] = newValue;\r\n } else {\r\n newSymbol[parts[0]] = {\r\n ...newSymbol[parts[0]],\r\n [parts[1]]: newValue,\r\n ...(parts[0] === \"background\"\r\n ? { type: newSymbol.background.type, id: \"symbol-bg\" }\r\n : parts[0] === \"figure\"\r\n ? { id: \"symbol-figure\" }\r\n : {}),\r\n };\r\n }\r\n } else {\r\n newSymbol[field] = newValue;\r\n }\r\n\r\n manipulateSvg({ svg: data as string, newSymbol, bg: newSymbol.background?.type });\r\n\r\n return { ...newSymbol, data: SVGContainer.svg() };\r\n },\r\n [SVGContainer, manipulateSvg, skipOffset, symbol],\r\n );\r\n\r\n return {\r\n svgRef: SVGWrapperRefElement,\r\n initSvg,\r\n getSvgData,\r\n manipulateSvg,\r\n getUpdatedSvgSymbol,\r\n };\r\n};\r\n","import React, { FC, memo, useCallback, useEffect, useMemo } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { SvgParameterDc, PointLabelSymbolDc } from \"@evergis/api\";\r\n\r\nimport { SymbolButton } from \"../styled\";\r\nimport { useSvgSymbol } from \"../hooks/useSvgSymbol\";\r\nimport { SvgPointSymbol } from \"../../../core\";\r\nimport { SvgSymbolProps } from \"../types\";\r\n\r\nconst SvgSymbolContainer = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst SvgSymbolLabel = styled.div<{ fontSettings?: PointLabelSymbolDc }>`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n color: #fff;\r\n ${({ fontSettings }) => !!fontSettings?.fontFamily && `font-family: ${fontSettings.fontFamily}`};\r\n ${({ fontSettings }) => !!fontSettings?.fontWeight && `font-weight: ${fontSettings.fontWeight}`};\r\n ${({ fontSettings }) => !!fontSettings?.fontStyle && `font-style: ${fontSettings.fontStyle}`};\r\n ${({ fontSettings }) => !!fontSettings?.fontColor && `color: ${fontSettings.fontColor}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontSize &&\r\n `font-size: ${typeof fontSettings.fontSize === \"string\" ? fontSettings.fontSize : `${fontSettings.fontSize}px`}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.haloColor &&\r\n !!fontSettings?.haloWidth &&\r\n `-webkit-text-stroke: ${fontSettings.haloWidth}px ${fontSettings.haloColor};`};\r\n`;\r\n\r\nexport const SvgSymbol: FC<SvgSymbolProps> = memo(\r\n ({ svg, bg, symbol, title, skipOffset, text, fontSettings, onClick }) => {\r\n const { svgRef, initSvg, getSvgData, manipulateSvg } = useSvgSymbol(symbol, skipOffset);\r\n\r\n const onSelectSymbol = useCallback(() => {\r\n onClick?.(getSvgData(), {\r\n ...symbol,\r\n ...(bg ? { background: { ...(symbol.background as SvgParameterDc), type: bg } } : {}),\r\n } as SvgPointSymbol);\r\n }, [bg, getSvgData, onClick, symbol]);\r\n\r\n const renderSymbol = useMemo(\r\n () => <SymbolButton ref={svgRef} title={title} onClick={onClick ? onSelectSymbol : undefined} />,\r\n [svgRef, title, onClick, onSelectSymbol],\r\n );\r\n\r\n useEffect(() => {\r\n initSvg();\r\n }, [initSvg]);\r\n\r\n useEffect(() => {\r\n manipulateSvg({ svg, bg, newSymbol: symbol });\r\n }, [svg, symbol, bg, manipulateSvg]);\r\n\r\n return text ? (\r\n <SvgSymbolContainer>\r\n {renderSymbol}\r\n <SvgSymbolLabel fontSettings={fontSettings}>{text}</SvgSymbolLabel>\r\n {!!fontSettings?.haloColor && !!fontSettings?.haloWidth && (\r\n <SvgSymbolLabel fontSettings={{ ...fontSettings, haloColor: undefined, haloWidth: undefined }}>\r\n {text}\r\n </SvgSymbolLabel>\r\n )}\r\n </SvgSymbolContainer>\r\n ) : (\r\n renderSymbol\r\n );\r\n },\r\n);\r\n","import React, { FC, useMemo } from \"react\";\r\n\r\nimport { SvgSymbol } from \"./SvgSymbol\";\r\nimport { Symbol, SGisSymbolType } from \"../../../\";\r\nimport { serializeSvgPointSymbol } from \"../../../utils/legend\";\r\nimport { SGisSymbol } from \"../types\";\r\nimport { SvgPointSymbol } from \"../../../core\";\r\n\r\nexport const SymbolByType: FC<{\r\n symbol?: SGisSymbol;\r\n size?: number;\r\n type?: string;\r\n svg?: string;\r\n skipOffset?: boolean;\r\n}> = ({ type, symbol, size, svg, skipOffset }) => {\r\n const defaultSymbol = useMemo(() => <Symbol symbol={symbol as SGisSymbolType} size={size} />, [symbol, size]);\r\n\r\n switch (type) {\r\n case \"svgPointSymbol\":\r\n return svg ? (\r\n <SvgSymbol\r\n svg={svg}\r\n size={size}\r\n skipOffset={skipOffset}\r\n symbol={serializeSvgPointSymbol(symbol as SvgPointSymbol) as unknown as SvgPointSymbol}\r\n />\r\n ) : (\r\n defaultSymbol\r\n );\r\n default:\r\n return defaultSymbol;\r\n }\r\n};\r\n","import React, { FC, memo } from \"react\";\r\n\r\nimport { SymbolByType } from \"./SymbolByType\";\r\nimport { DEFAULT_LEGEND_SYMBOL_SIZE } from \"../constants\";\r\nimport { getLegendSymbolSize } from \"../../../utils/legend\";\r\nimport { deserializeSymbol } from \"../../../symbols\";\r\nimport { StyleSymbolType, SvgPointSymbol } from \"../../../core\";\r\nimport { SGisSymbol } from \"../types\";\r\n\r\nexport const LegendSymbolRenderer: FC<{ symbol: StyleSymbolType }> = memo(({ symbol }) => {\r\n /* return isClusterSymbol(symbol) ? (\r\n <ClusterLegendContainer>\r\n <ClusterSymbolPreview symbol={symbol as ClusterSymbolDc} />\r\n </ClusterLegendContainer>\r\n ) : (\r\n <SymbolByType\r\n symbol={deserializeSymbol(symbol)}\r\n size={getLegendSymbolSize(symbol) || DEFAULT_LEGEND_SYMBOL_SIZE}\r\n type={symbol.type}\r\n svg={(symbol as SvgPointSymbol).data}\r\n skipOffset\r\n />\r\n );*/\r\n return (\r\n <SymbolByType\r\n symbol={deserializeSymbol(symbol) as SGisSymbol}\r\n size={getLegendSymbolSize(symbol) || DEFAULT_LEGEND_SYMBOL_SIZE}\r\n type={symbol.type}\r\n svg={(symbol as SvgPointSymbol).data}\r\n skipOffset\r\n />\r\n );\r\n});\r\n","import React, { FC, Fragment, useCallback, useMemo } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport get from \"lodash/get\";\r\nimport { Description } from \"@evergis/ui\";\r\n\r\nimport { ClassifiedItem, ItemSeparator, ItemText, MapLegendItem, MapLegendItems, SymbolContainer } from \"../styled\";\r\nimport { LegendSymbolRenderer } from \"./LegendSymbolRenderer\";\r\nimport { MaximizedLegendProps } from \"../types\";\r\nimport { ClassificationParameterExtended, ParameterByAttribute, ParameterValue } from \"../../../core\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\n\r\nexport const MaximizedLegend: FC<MaximizedLegendProps> = ({\r\n symbol: sectionSymbol,\r\n parameter,\r\n values,\r\n index: sectionIndex,\r\n attributeType,\r\n}) => {\r\n const { t } = useTranslation(\"common\");\r\n const isDate = attributeType === \"DateTime\";\r\n const isSize = isParameterType(\"size\", parameter as ClassificationParameterExtended);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter as ClassificationParameterExtended);\r\n const isStrokeColor = isParameterType([\"strokeColor\", \"stroke.color\"], parameter as ClassificationParameterExtended);\r\n\r\n const parameterValue = useMemo(\r\n () => get(sectionSymbol, parameter) as unknown as ParameterByAttribute<ParameterValue>,\r\n [sectionSymbol, parameter],\r\n );\r\n\r\n const renderColumn = useCallback((column: string, index?: number) => {\r\n const dateTime = column.split(\" \");\r\n\r\n return (\r\n <Fragment key={index}>\r\n <ItemText title={column}>\r\n {dateTime[0]}\r\n <Description>{dateTime[1]}</Description>\r\n </ItemText>\r\n {index === 0 && <ItemSeparator />}\r\n </Fragment>\r\n );\r\n }, []);\r\n\r\n const renderItemText = useCallback(\r\n (title: string, index: number) => {\r\n if (!title) {\r\n return <ItemText>{t(\"classification.other\")}</ItemText>;\r\n }\r\n\r\n const columns = title?.split(\" - \");\r\n const isSingleColumn = columns?.length === 1;\r\n\r\n if (!isDate || (index && isSingleColumn)) {\r\n return <ItemText title={title}>{title}</ItemText>;\r\n }\r\n\r\n if (!index && isSingleColumn) {\r\n return (\r\n <>\r\n <ItemText title=\"∞\">∞</ItemText>\r\n <ItemSeparator />\r\n {renderColumn(title)}\r\n </>\r\n );\r\n }\r\n\r\n return <>{columns.map(renderColumn)}</>;\r\n },\r\n [isDate, renderColumn, t],\r\n );\r\n\r\n const renderLegend = useCallback(\r\n ({ symbol, title /* , hiddenCondition*/ }, index: number) => {\r\n if (!symbol) return null;\r\n\r\n // const isClusterFillColor = checkIsClusterFillColor(symbol, parameter);\r\n\r\n return (\r\n <ClassifiedItem\r\n key={sectionIndex + title + index}\r\n /* isHidden={isHidden(hiddenCondition)}\r\n isClusterFillColor={isClusterFillColor}\r\n onClick={() => toggleHiddenLegend(hiddenCondition)}*/\r\n >\r\n {isSize || isStrokeWidth || isStrokeColor ? (\r\n <MapLegendItems\r\n parameter={parameter as ClassificationParameterExtended}\r\n isSize={isSize}\r\n isStrokeWidth={isStrokeWidth}\r\n isStrokeColor={isStrokeColor}\r\n isSingle\r\n >\r\n <MapLegendItem\r\n key={`${title}${index}`}\r\n title={title}\r\n value={(parameterValue?.values[index]?.value || parameterValue?.defaultValue) as string | number}\r\n parameter={parameter as ClassificationParameterExtended}\r\n />\r\n </MapLegendItems>\r\n ) : (\r\n <SymbolContainer>\r\n <LegendSymbolRenderer\r\n symbol={symbol /* isClusterFillColor ? symbol : getExtractedSymbol(symbol, true)*/}\r\n />\r\n </SymbolContainer>\r\n )}\r\n {renderItemText(title, index)}\r\n </ClassifiedItem>\r\n );\r\n },\r\n [\r\n isSize,\r\n isStrokeColor,\r\n isStrokeWidth,\r\n parameter,\r\n parameterValue?.defaultValue,\r\n parameterValue?.values,\r\n renderItemText,\r\n sectionIndex,\r\n ],\r\n );\r\n\r\n return <>{values.map(renderLegend)}</>;\r\n};\r\n","import React, { FC } from 'react';\r\n\r\nimport { MapLegendDescriptionContainer } from \"../styled\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended } from \"../../../core\";\r\n\r\nexport const LegendParameterDescription: FC<{ parameter: ClassificationParameterExtended }> = ({ parameter }) => {\r\n const isSize = isParameterType(\"size\", parameter);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\r\n const isStrokeColor = isParameterType([\"strokeColor\", \"stroke.color\"], parameter);\r\n\r\n return (\r\n <MapLegendDescriptionContainer>\r\n {isStrokeWidth || isStrokeColor\r\n ? (isStrokeWidth ? \"Толщина обводки\" : \"Цвет обводки\")\r\n : isSize ? \"Размер знака\" : \"Цвет символа\"}\r\n </MapLegendDescriptionContainer>\r\n );\r\n};\r\n","import React, { FC } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useToggle } from \"@evergis/ui\";\r\n\r\nimport { MinimizedLegend } from \"./MinimizedLegend\";\r\nimport { MaximizedLegend } from \"./MaximizedLegend\";\r\nimport { LegendParameterDescription } from \"./LegendParameterDescription\";\r\nimport { MapLegendExpandButton, MapLegendHeader, MapLegendSectionContainer } from \"../styled\";\r\nimport { getMaximizedLegendValues, getMinimizedLegendValues } from \"../../../utils/legend\";\r\nimport { LegendSectionProps } from \"../types\";\r\nimport { ClassificationParameterExtended } from \"../../../core\";\r\n\r\nexport const LegendSection: FC<LegendSectionProps> = ({\r\n symbol,\r\n param,\r\n params,\r\n classified,\r\n attributeTitle,\r\n attributeType,\r\n index,\r\n}) => {\r\n const { t } = useTranslation(\"common\");\r\n const [isExpanded, toggleExpanded] = useToggle();\r\n\r\n return (\r\n <MapLegendSectionContainer>\r\n <MapLegendHeader>{attributeTitle}</MapLegendHeader>\r\n <LegendParameterDescription parameter={param} />\r\n {isExpanded ? (\r\n <MaximizedLegend\r\n key={param}\r\n symbol={symbol}\r\n parameter={param as ClassificationParameterExtended}\r\n attributeType={attributeType}\r\n index={index}\r\n values={getMaximizedLegendValues(\r\n attributeType,\r\n param as ClassificationParameterExtended,\r\n params,\r\n classified,\r\n symbol,\r\n index,\r\n t(\"classification.other\"),\r\n )}\r\n />\r\n ) : (\r\n <MinimizedLegend\r\n key={param}\r\n values={getMinimizedLegendValues(attributeType, classified, index)}\r\n defaultValue={classified.defaultValue as string}\r\n parameter={param as ClassificationParameterExtended}\r\n attributeType={attributeType}\r\n />\r\n )}\r\n <MapLegendExpandButton onClick={toggleExpanded}>\r\n {t(isExpanded ? \"toggleMenu\" : \"Развернуть\")}\r\n </MapLegendExpandButton>\r\n </MapLegendSectionContainer>\r\n );\r\n};\r\n","import React, { FC } from \"react\";\r\nimport { FeatureLayerServiceInfoDc } from \"@evergis/api\";\r\n\r\nimport { LegendSection } from \"./components\";\r\nimport { MapLegendContainer } from \"./styled\";\r\nimport { ClassifiedList, getAttributeType, getClassified } from \"../../utils/legend\";\r\nimport { ClassificationParameterExtended, getAttributeNameFromCondition } from \"../../core\";\r\nimport { getLayerAttributes } from \"../../core/attributes/utils\";\r\n\r\nexport const Legend: FC<{ layerInfo: FeatureLayerServiceInfoDc }> = ({ layerInfo }) => {\r\n const classified = getClassified(layerInfo);\r\n const params = Object.keys(classified) as ClassificationParameterExtended[];\r\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\r\n\r\n return (\r\n <MapLegendContainer>\r\n {Object.keys(classified).map((param, index) => {\r\n const attributeName = getAttributeNameFromCondition(\r\n classified[param as keyof ClassifiedList].values[0]?.condition\r\n ) as string;\r\n const attributeAlias = attributes.find(({ name }) => name === attributeName)?.alias;\r\n\r\n return (\r\n <LegendSection\r\n key={index}\r\n symbol={layerInfo.style?.symbol}\r\n attributeType={getAttributeType(layerInfo, attributeName)}\r\n attributeTitle={attributeAlias || attributeName}\r\n classified={classified[param as keyof ClassifiedList]}\r\n param={param as ClassificationParameterExtended}\r\n params={params}\r\n index={index}\r\n />\r\n );\r\n })}\r\n </MapLegendContainer>\r\n );\r\n};\r\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 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","NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","formatDate","dateFormat","ClientDefaultFormat","defaultValue","dateValue","format","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","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","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","isH3GridSymbol","isSvgPointSymbol","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","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","isNumeric","number","parseFloat","isFinite","isParameterType","types","toLowerCase","isLayerService","getAttributeFromCondition","parts","startsWith","getExprFromCondition","partIndex","expr","part","getSignFromConditionPart","getValueFromConditionPart","isRangeCondition","getSymbolParameterInfo","PARAMETER_INFOS","DEFAULT_PARAMETER_INFO","formatValue","calculatedParameter","serialize","formatUniqueClassValue","formatRangeClassValue","formattedFrom","formattedTo","checkLayerHasLegend","layerInfo","SYMBOL_CLASSIFICATION","geometryType","param","paramValue","get","getTitleFromCondition","createValueTitle","attributeType","sign","isFirstFrom","DEFAULT_LEGEND_STYLES","maskedColor","SYMBOL_SIZE_PARAMETERS","DEFAULT_LEGEND_SIZES","circlePointSymbol","squarePointSymbol","imagePointSymbol","maskedImagePointSymbol","svgPointSymbol","getNonClassifiedParamValue","baseSymbol","classificationsParams","defaultParameterValue","getParameterFromSymbol","updateSymbolParameter","createPointSymbol","getDimensions","ratio","createImagePointSymbol","createLineSymbol","createPolygonSymbol","createH3Symbol","createLegendSymbol","getMinimizedLegendValues","getMaximizedLegendValues","classified","sectionIndex","otherTitle","other","items","getClassified","classifyParams","getSymbolStrokeWidth","parameterFromSymbol","getLegendSymbolSize","cellSize","EXTRA_BORDER_SIZE","DEFAULT_LEGEND_SYMBOL_SIZE","serializeSvgPointSymbol","figureFillColor","figure","bgFillColor","angle","id","SvgSymbolBg","SIZE_PARAMETERS","isSizeClassification","getServiceConfiguration","emptyServiceConfiguration","configuration","GEOMETRY_ATTRIBUTE","DEFAULT_ID_ATTRIBUTE_NAME","getAttributesConfiguration","serviceConfiguration","emptyAttributesConfiguration","geometryAttribute","idAttribute","tableName","attributesConfiguration","getLayerDefinition","emptyLayerDefinition","GeometryType","titleAttribute","getAttributeType","metersToPixels","meters","zeroPoint","projectTo","maxWidthPoint","widthDistance","distance","pxK","polygonCircleFromPoint","diameter","coordinates","radius","endAngle","step","start","end","ang","cos","sin","DEFAULT_SYMBOL_SIZE","DEFAULT_SYMBOL_WITH_BG_SIZE","DEFAULT_SYMBOL_FILL_COLOR","DEFAULT_SYMBOL_STROKE_COLOR","DEFAULT_SYMBOL_OFFSET","Polyline","Point","SYMBOL_LIMITS","SIZE_MIN","SIZE_MAX","SIZE_STEP","GRID_SIZE_MIN","GRID_SIZE_MAX","MIN_OBJECTS_COUNT","MAX_OBJECTS_COUNT","MIN_CLUSTER_SIZE","MAX_CLUSTER_SIZE","STROKE_WIDTH_STEP","ANGLE_MIN","ANGLE_MAX","ANGLE_STEP","PREVIEW_SIZE_MAX","PREVIEW_SIZE_MAX_WIDTH","classifyAble","units","deserialize","convertSvgToBase64","svg","window","btoa","createSvgGradient","gradient","forEach","stop","manipulateSvgSymbol","SVGContainer","bg","symbolData","data","clear","isUploadedFile","innerSvg","uploadedViewBox","exec","viewbox","hasBg","defaultSize","currentSize","viewBox","currentBg","each","item","rootTransform","transformParts","transform","rotatedAngle","rotate","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","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","eventName","flag","listenDomEvent","Symbol","isSGisPointSymbol","StaticImageSymbol","SquareSymbol","MaskedImage","isSGisImageSymbol","isSGisPolygonSymbol","PolygonSymbol","BrushFill","ImageFill","isSGisPolylineSymbol","isSGisH3Symbol","H3Symbol","isSGisClusterSymbol","singleObjectSymbol","viewBoxSize","pointFeature","plain","lineFeature","polygonFeature","h3gridFeature","H3Feature","lineLegendFeature","polygonLegendFeature","polygonMapLegendFeature","MAP_LEGEND_FEATURES","LEGEND_FEATURES","polyline","h3grid","MOCK_FEATURES","getSymbolRenders","featuresToRender","renderFunctionAsync","getMapLegendSymbolRenders","getLegendSymbolRenders","renderSymbolToCanvas","draw","deserializeSymbol","deserializeH3Symbol","deserializeSvgPointSymbol","deserializePointSymbol","deserializeSquareSymbol","deserializeMaskedImageSymbol","deserializeImagePointSymbol","deserializePolygonSymbol","deserializePolylineSymbol","SPointSymbol","deserializePointSymbolParams","getOffsetParameterValue","deserializeSvgPointSymbolParams","deserializeColor","SSquareSymbol","anchorPoint","deserializeAnchor","imageSource","deserializeBase64","image","maskSource","imageMask","maskColor","SStaticImageSymbol","source","base","clampSymbol","centerAlignSymbol","adjustSymbol","EvergisFeature","displayName","geometry","layerName","layerAlias","sr","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","findFeatureLayer","evaluateFeature","featureLayer","OTHERS_TITLE","createLegendItem","renderTitle","skipDefaultValue","defaultLegendValue","legendValues","withDefault","reversedValues","isValidParameter","createStyleLegend","config","parameters","formatArea","measure","perimiter","coords","firstPoint","lastPoint","softEquals","getScale","scale","scales","pow","useLegend","DEFAULT_LEGEND_CONFIG","useLayerLegend","styleProxy","useMapLegend","legend","LEGEND_SYMBOL_MAX_SIZE","useLegendValueSymbol","valueSymbol","sGisSymbol","e","useSymbol","canvasRef","maxWidth","setCanvasSize","then","useCanvas","useRef","ref","Canvas","useMount","onMount","onUnmount","useProperty","deps","factory","destructor","propRef","newProp","useUpdate","onUpdate","shouldUpdate","useLayerOrder","insertLayer","useLayerVisibility","isDisplayed","useLayerOpacity","opacity","useEvergisDynamicLayer","dataFilterId","onLoadStart","onLoadEnd","EvergisDynamicLayer","indexOf","removeLayer","useEvergisTileLayer","sourceUrl","subDomains","EvergisTileLayer","useFeatureLayer","useMapBboxChange","onBboxChange","force","BboxChangeEvent","BboxChangeEndEvent","handleBboxChange","getMapState","off","useMapResize","onResize","handleMapResize","MapResize","useMapPick","geometryParams","setGeometryParams","evergisLayers","pick","sGisClickEvent","imageRectangle","getPxPosition","clickPoint","envelopes","collectLayerEnvelopes","extentSr","wkid","getLayerBboxCoors","_currentRender","isEvergisDynamicLayer","useMapState","dispatch","useReducer","mapStateReducer","mapState","useMapView","getLevel","useMapLevel","useMapWrapper","wrapperRef","byScale","useMaxMinScale","minScale","maxScale","currentPosition","currentResolution","updateMapResolution","newResolution","Number","MAX_VALUE","pow10","floor","d","useCorrectedResolution","segmentLength","useScale","minLength","correctedResolution","currentScale","useUpdateMapView","shouldUpdateMapState","shouldUpdatePosition","shouldUpdateResolution","useTooltip","targetFeatures","labelFeature","events","onClickMap","currentFeatureEvents","onMouseOver","onMouseMove","onMouseOut","onClick","hasListener","onSetLabelFeature","clickMode","onRemoveLabelFeature","doNotBubbleToMap","stopPropagation","has","tooltipParams","target","isMap","featureEvents","useClusterLayer","onChangeGrid","clusterSymbol","currentFeatures","gridClusterProvider","GridClusterProvider","clusterLayer","ClusterLayer","INIT_FEATURES","useEvergisSelect","onPick","onFeatures","mapPickResult","setFeatures","resetSelection","useCrs","none","useDraggableMarker","onChange","pointEditor","PointEditor","isActive","activeLayer","onMapClick","addLayer","hasMapClick","useMetersToPixels","useMetersToPixelsCb","useDebouncedCallback","interval","debounce","cb","useToggle","state","setState","toggle","CompoundIcon","styled","div","icons","ClusterSymbol","MAX_SIZE","StyleSymbol","EvergisCardContainer","Icon","StickyHeader","CardHeader","CardTitle","CardControls","FeatureName","LayerName","CardPagination","PaginationDescription","CurrentFeatureIndex","CardAttributes","AttributeContainer","AttributeTitle","AttributeValueContainer","SimpleAttribute","ValueLink","MailValue","rel","href","PhoneValue","phone","UrlValue","AttributeValue","key","punycodeDecode","domains","punycode","toUnicode","error","EvergisCardAttribute","StyledCard","onAttributes","onStatistics","onFeatureChange","headerExtra","hideZoom","IconButton","EverCloudStatisticsIcon","EverCloudZoomtoIcon","EverCloudCloseIcon","EverCloudPlayPrevIcon","EverCloudPlayNextIcon","EvergisCard","renderCard","hookProps","cardProps","truthly","setSelected","toSgis","useSGisFeatures","currentIndex","EvergisSelectLayer","sGisFeatures","useTileLayer","maskUrl","tileLayerParams","TileLayer","defaultZIndex","EvergisSelect","topLeft","css","topRight","bottomLeft","bottomRight","placementMixin","placement","mapControlBtnMixin","ZoomInBtn","ZoomOutBtn","SearchBtn","FullscreenBtn","MeasureBtn","MapControl","MapControls","vertical","Measure","Search","Fullscreen","ItemText","theme","fonts","description","Description","ItemSeparator","SymbolContainer","ClassifiedItem","Flex","isClusterFillColor","transition","hover","isHidden","SymbolButtonWithClick","palette","elementDeep","SymbolButton","span","MapLegendControl","MapLegendContainer","MapLegendHeader","MapLegendDescriptionContainer","MinimizedLegendContainer","MapLegendSectionContainer","MapLegendValueDescr","SizeLegendItemMixin","StrokeWidthLegendItemMixin","StrokeColorLegendItemMixin","MapLegendItem","MapLegendOther","SizeLegendItemsMixin","StrokeWidthLegendItemsMixin","SizeMinimizedLegend","SizeMinimizedLegendSymbol","SizeMinimizedLegendLabel","SizeMinimizedLegendDown","SizeMinimizedLegendUp","SingleSizeLegendItemsMixin","SingleLegendItemsMixin","isSize","MapLegendItems","isStrokeWidth","isSingle","MapLegendItemsContainer","MapLegendValues","MapLegendValuesRange","MapLegendValuesOther","MapLegendExpandButton","getValueFromLegendTitle","minOrMax","MinimizedLegend","hiddenLegends","currentValues","pop","titleMax","titleMin","checkIsHidden","hiddenCondition","useSvgSymbol","skipOffset","SVGWrapperRefElement","SVG","initSvg","addTo","getSvgData","manipulateSvg","newSymbol","getUpdatedSvgSymbol","field","newValue","JSON","parse","stringify","svgRef","SvgSymbolContainer","SvgSymbolLabel","fontSettings","fontFamily","fontWeight","fontStyle","fontColor","fontSize","haloColor","haloWidth","SvgSymbol","memo","text","onSelectSymbol","renderSymbol","SymbolByType","defaultSymbol","LegendSymbolRenderer","MaximizedLegend","sectionSymbol","t","useTranslation","isStrokeColor","renderColumn","column","dateTime","Fragment","renderItemText","columns","isSingleColumn","renderLegend","LegendParameterDescription","LegendSection","attributeTitle","isExpanded","toggleExpanded","Legend","attributeAlias","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"],"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/date.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/isNumeric.ts","../src/utils/isParameterType.ts","../src/utils/legend.ts","../src/utils/metersToPixels.ts","../src/utils/polygonCircleFromPoint.ts","../src/components/Legend/constants.ts","../src/components/Legend/types.ts","../src/utils/svg.ts","../src/symbols/LineMiters/CircleLineMiterRender.ts","../src/symbols/LineMiters/SquareLineMiterRender.ts","../src/symbols/LineMiters/getLineMiterRender.ts","../src/symbols/LineMiters/updateRingsForMiter.ts","../src/symbols/Evergis/SGisPolylineSymbol.ts","../src/symbols/Label/LabelSymbol.tsx","../src/symbols/Label/createLabelSymbol.tsx","../src/symbols/Shadowed/getEditorPointRenderer.ts","../src/symbols/Shadowed/ShadowedPointSymbol.ts","../src/symbols/Shadowed/ShadowedPolySymbol.ts","../src/symbols/Selected/SelectedPointSymbol.ts","../src/symbols/Selected/SelectedPolySymbol.ts","../src/symbols/Selected/selectedSymbols.ts","../src/symbols/SVGPoly/index.ts","../src/symbols/guards.ts","../src/symbols/mockFeatures.ts","../src/symbols/getSymbolRenders.ts","../src/symbols/renderSymbolToCanvas.ts","../src/symbols/deserializeSymbol.ts","../src/symbols/adjustSymbol.ts","../src/core/feature/EvergisFeature.ts","../src/core/feature/evaluateCondition.ts","../src/core/feature/getFeatureSymbol.ts","../src/core/layer/EvergisLayer.ts","../src/core/legend/createLegendItem.ts","../src/core/legend/isValidParameter.ts","../src/core/legend/createStyleLegend.ts","../src/core/legend/createValueTitle.ts","../src/core/measurer.ts","../src/core/scale.ts","../src/hooks/useLegend/useLegend.ts","../src/hooks/useLegend/useLayerLegend.ts","../src/hooks/useLegend/useMapLegend.ts","../src/hooks/useLegend/useLegendValueSymbol.ts","../src/hooks/useSymbol.ts","../src/hooks/useCanvas.ts","../src/hooks/useMount.ts","../src/hooks/useProperty.ts","../src/hooks/useUpdate.ts","../src/hooks/useLayerOrder.ts","../src/hooks/useLayerVisibility.ts","../src/hooks/useLayerOpacity.ts","../src/hooks/useEvergisDynamicLayer.ts","../src/hooks/useEvergisTileLayer.ts","../src/hooks/useFeatureLayer.ts","../src/hooks/useMapBboxChange.ts","../src/hooks/useMapResize.ts","../src/hooks/useMapPick.ts","../src/hooks/useMapState.ts","../src/hooks/useMapView.ts","../src/hooks/useMapWrapper.ts","../src/hooks/useMaxMinScale.ts","../src/hooks/useScale.ts","../src/hooks/useUpdateMapView.ts","../src/hooks/useTooltip.ts","../src/hooks/useClusterLayer.ts","../src/hooks/useEvergisSelect.ts","../src/hooks/useCrs.ts","../src/hooks/useDraggableMarker.ts","../src/hooks/useMetersToPixels.ts","../src/hooks/useDebouncedCallback.ts","../src/hooks/useToggle.ts","../src/components/Symbol/Symbol.tsx","../src/components/Symbol/styled.ts","../src/components/Symbol/StyleSymbol.tsx","../src/components/EvergisCard/styled.ts","../src/components/EvergisCard/MailValue.tsx","../src/components/EvergisCard/PhoneValue.tsx","../src/components/EvergisCard/UrlValue.tsx","../src/components/EvergisCard/AttributeValue.tsx","../src/components/EvergisCard/EvergisCardAttribute.tsx","../src/components/EvergisCard/StyledCard.tsx","../src/components/EvergisCard/EvergisCard.tsx","../src/components/Layers/ClusterLayer.tsx","../src/components/Layers/EvergisDynamicLayer.tsx","../src/components/Layers/FeatureLayer.tsx","../src/components/Layers/useSGisFeatures.ts","../src/components/Layers/EvergisSelectLayer.tsx","../src/components/Layers/EvergisTileLayer.tsx","../src/hooks/useTileLayer.ts","../src/components/Layers/TileLayer.tsx","../src/components/EvergisSelect/EvergisSelect.tsx","../src/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/Legend/styled.ts","../src/components/Legend/components/MinimizedLegend.tsx","../src/components/Legend/hooks/useSvgSymbol.ts","../src/components/Legend/components/SvgSymbol.tsx","../src/components/Legend/components/SymbolByType.tsx","../src/components/Legend/components/LegendSymbolRenderer.tsx","../src/components/Legend/components/MaximizedLegend.tsx","../src/components/Legend/components/LegendParameterDescription.tsx","../src/components/Legend/components/LegendSection.tsx","../src/components/Legend/Legend.tsx","../src/components/Map/Map.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","import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\r\n\r\nexport const NO_CONTENT_VALUE = '—';\r\n\r\nexport type DateType = number | Date;\r\nexport type RawDateType = string | DateType;\r\n\r\nexport enum DateFormat {\r\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\r\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\r\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\r\n AxisTooltip = \"d MMMM yyyy\",\r\n}\r\n\r\ninterface FormatDateOptions {\r\n dateFormat?: DateFormat;\r\n defaultValue?: RawDateType;\r\n}\r\n\r\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\r\n\r\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\r\n if (!rawDate) return null;\r\n\r\n if (typeof rawDate === \"string\") {\r\n for (const parser of stringDateParsers) {\r\n const date = parser(rawDate);\r\n\r\n if (isValid(date)) {\r\n return toDate(date);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n const parsedDate = toDate(rawDate);\r\n\r\n return isValid(parsedDate) ? parsedDate : null;\r\n};\r\n\r\nexport const formatDate = (\r\n date?: RawDateType,\r\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\r\n): string => {\r\n const dateValue = date ? getDate(date) : null;\r\n\r\n if (isValid(dateValue)) {\r\n return format(dateValue as Date, dateFormat);\r\n }\r\n\r\n return `${defaultValue}`;\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';\r\n\r\nimport { NO_CONTENT_VALUE } from \"../../utils/date\";\r\nimport { numberWithSpaces } from '../../utils/format';\r\nimport {\r\n isStringAsMail,\r\n isStringAsPhone,\r\n isStringAsUrl,\r\n matchPhone,\r\n isRequisiteNumbers,\r\n isStringAsOgrn,\r\n isStringContainsDate,\r\n} from '../../utils/url';\r\n\r\nconst stringAttribute = (value: string) => ({\r\n type: AttributeValueType.String,\r\n value,\r\n});\r\n\r\nconst urlAttribute = (value: string) => ({\r\n type: AttributeValueType.Url,\r\n value,\r\n});\r\n\r\nconst mailAttribute = (value: string) => ({\r\n type: AttributeValueType.Mail,\r\n value,\r\n});\r\n\r\nconst phoneAttribute = (value: string) => ({\r\n type: AttributeValueType.Phone,\r\n value,\r\n});\r\n\r\nconst convertStringAttribute = (value: string) => {\r\n if (isStringAsMail(value)) {\r\n return mailAttribute(value);\r\n }\r\n\r\n if (isStringAsUrl(value)) {\r\n return urlAttribute(value);\r\n }\r\n\r\n if (isStringAsPhone(value)) {\r\n return phoneAttribute(value);\r\n }\r\n\r\n return stringAttribute(value);\r\n};\r\n\r\nconst formatStringAttribute = (value: string): AttributeValue[] => {\r\n const phones = matchPhone(value);\r\n\r\n if (\r\n !isRequisiteNumbers(value) &&\r\n !isStringContainsDate(value) &&\r\n phones &&\r\n phones.length\r\n ) {\r\n return phones.map(phoneAttribute);\r\n }\r\n\r\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\r\n\r\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\r\n return [\r\n stringAttribute(\r\n attributeValues\r\n .map(({ value }) =>\r\n isNaN(+value) || isRequisiteNumbers(value)\r\n ? isStringAsOgrn(value)\r\n ? +value\r\n : value\r\n : numberWithSpaces(+value, 0, '')\r\n )\r\n .join(' ')\r\n ),\r\n ];\r\n }\r\n\r\n return attributeValues;\r\n};\r\n\r\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\r\n stringAttribute(value.toString());\r\n\r\nconst formatIntAttribute = (value: number): AttributeValue =>\r\n stringAttribute(numberWithSpaces(value, 0, ''));\r\n\r\nconst DOUBLE_FRACTIONS = 2;\r\n\r\nconst formatDoubleAttribute = (value: number): AttributeValue =>\r\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\r\n\r\nconst isNullOrUndefined = <Value>(\r\n value: Value | null | undefined\r\n): value is null | undefined => value === null || value === undefined;\r\n\r\nconst NO_CONTENT_ATTRIBUTE = {\r\n type: AttributeValueType.String,\r\n value: NO_CONTENT_VALUE,\r\n};\r\n\r\nexport const formatAttributeValue = (\r\n attribute: FeatureAttribute\r\n): AttributeValue[] => {\r\n if (isNullOrUndefined(attribute.value)) {\r\n return [NO_CONTENT_ATTRIBUTE];\r\n }\r\n\r\n switch (attribute.type) {\r\n case 'String':\r\n return formatStringAttribute(attribute.value as string);\r\n case 'DateTime':\r\n return [formatDateTimeAttribute(attribute.value as Date)];\r\n case 'Int32':\r\n case 'Int64':\r\n return [formatIntAttribute(attribute.value as number)];\r\n case 'Double':\r\n return [formatDoubleAttribute(attribute.value as number)];\r\n default:\r\n return [NO_CONTENT_ATTRIBUTE];\r\n }\r\n};\r\n","import { ClassifyAble, ParameterValue, ParameterValueWithSymbol } from '../style';\r\n\r\nimport { ClassificationAttribute } from '../attributes';\r\n\r\nexport type NestedClassificationParameters =\r\n | 'fill.color'\r\n | 'fill.hatchColor'\r\n | 'stroke.width'\r\n | 'stroke.color'\r\n | 'background.fillColor'\r\n | 'background.strokeColor'\r\n | 'background.strokeWidth'\r\n | 'figure.fillColor';\r\n\r\nexport type SimpleClassificationParameters =\r\n | 'fillColor'\r\n | 'strokeColor'\r\n | 'strokeWidth'\r\n | 'size'\r\n | 'symbol'\r\n | 'angle'\r\n | 'maskedColor';\r\n\r\nexport type ClassificationParameter =\r\n | NestedClassificationParameters\r\n | SimpleClassificationParameters;\r\n\r\nexport type ClassificationParameterExtended =\r\n | ClassificationParameter\r\n | 'width'\r\n | 'height';\r\n\r\nexport interface ClassBase {\r\n title: string | null;\r\n parameterValue: ParameterValueWithSymbol;\r\n attribute?: ClassificationAttribute;\r\n}\r\n\r\nexport type UniqueClass = ClassBase & {\r\n uniqueValue: string;\r\n};\r\n\r\nexport type RangeClass = ClassBase & {\r\n from: number | string | null;\r\n to: number | string | null;\r\n};\r\n\r\nexport type ClassificationClass = UniqueClass | RangeClass;\r\nexport type ClassificationValues = ClassificationClass[];\r\n\r\nexport const enum ClassificationType {\r\n Range,\r\n Unique,\r\n}\r\n\r\nexport interface Classification<\r\n Type extends ClassificationType = ClassificationType,\r\n Value extends ClassificationClass = ClassificationClass\r\n> {\r\n parameter?: ClassificationParameterExtended;\r\n attribute?: string;\r\n type: Type;\r\n values: Value[];\r\n}\r\n\r\nexport type RangeClassification = Classification<\r\n ClassificationType.Range,\r\n RangeClass\r\n>;\r\n\r\nexport type UniqueClassification = Classification<\r\n ClassificationType.Unique,\r\n UniqueClass\r\n>;\r\n\r\nexport interface ClassificationExtras {\r\n defaultTitle: string;\r\n defaultValue: ParameterValue;\r\n}\r\n\r\nexport type ExtendedClassification<\r\n Type extends ClassificationType = ClassificationType,\r\n Value extends ClassificationClass = ClassificationClass\r\n> = Classification<Type, Value> & ClassificationExtras;\r\n\r\nexport function isRangeClass(value: ClassificationClass): value is RangeClass {\r\n return Boolean(value && 'from' in value);\r\n}\r\n\r\nexport function isUniqueClass(\r\n value: ClassificationClass\r\n): value is UniqueClass {\r\n return Boolean(value && 'uniqueValue' in value);\r\n}\r\n\r\nexport type ParameterValueModifier = (\r\n parameterValue: ClassifyAble<ParameterValue>\r\n) => ClassifyAble<ParameterValue> | void;\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, ParameterValueModifier } 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\nexport const isParameterByAttribute = (\r\n value: UnidentifiedParameterValue\r\n): value is ParameterByAttribute<ParameterValue> =>\r\n Boolean(isObject(value) && (value as ParameterByAttribute<ParameterValue>)?.type === 'byAttribute');\r\n\r\nexport const isCalculatedParameter = (\r\n value: UnidentifiedParameterValue\r\n): value is CalculatedParameter<ParameterValue> =>\r\n Boolean(isObject(value) && (value as CalculatedParameter<ParameterValue>)?.type === 'calculated');\r\n\r\nexport const getParameterValue = <Value extends ParameterValue>(\r\n value: ClassifyAble<Value> | CalculatedAble<Value>\r\n): Value => {\r\n if (isParameterByAttribute(value) || isCalculatedParameter(value)) {\r\n return value.defaultValue;\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport const symbolParameterWalker = (\r\n valueModifier: ParameterValueModifier\r\n) => <S extends StyleSymbolType>(\r\n symbol: S,\r\n parameter: ClassificationParameterExtended | ClassificationParameterExtended[]\r\n): S => {\r\n const paths = Array.isArray(parameter)\r\n ? parameter\r\n : parameterToPaths(parameter);\r\n const [firstKey, ...restKeys] = paths;\r\n\r\n // @ts-ignore\r\n const symbolPart = symbol[firstKey];\r\n\r\n if (restKeys.length) {\r\n const goDeeper = symbolParameterWalker(valueModifier);\r\n\r\n return {\r\n ...symbol,\r\n [firstKey]: goDeeper(symbolPart, restKeys) || symbolPart,\r\n };\r\n }\r\n\r\n return {\r\n ...symbol,\r\n [firstKey]: valueModifier(symbolPart) || symbolPart,\r\n };\r\n};\r\n\r\nexport const setDefaultParameterValue = symbolParameterWalker(\r\n getParameterValue\r\n);\r\n\r\nexport const setParameterValue = <S extends StyleSymbolType>(\r\n symbol: S,\r\n path: ClassificationParameterExtended,\r\n value: ClassifyAble<ParameterValue>\r\n): S => symbolParameterWalker(() => value)(symbol, path);\r\n\r\nexport function applyParameterValue(\r\n symbol: StyleSymbolType,\r\n path: ClassificationParameterExtended,\r\n value: ClassifyAble<ParameterValue>\r\n) {\r\n if (path === 'symbol') {\r\n return value as StyleSymbolType;\r\n }\r\n\r\n return setParameterValue(symbol, path, value);\r\n}\r\n","import { ParameterDcColor, ParameterDcDouble } from '@evergis/api';\r\n\r\nimport { CalculatedAble, ClassifyAble } from './parameterValue';\r\nimport { Offset } from './offset';\r\nimport { LineMiterKind, LineMiterSize } from './miters';\r\nimport { StyleSymbolType } from './symbol';\r\nimport { FillBrushType, StrokeBrushType, TextBackgroundType } from './brush';\r\n\r\ntype ToClientSymbolField<\r\n F,\r\n IsClassifyable extends boolean\r\n> = F extends ParameterDcDouble\r\n ? IsClassifyable extends true\r\n ? ClassifyAble<number>\r\n : number\r\n : F extends ParameterDcColor\r\n ? IsClassifyable extends true\r\n ? ClassifyAble<string>\r\n : string\r\n : F;\r\n\r\ntype ExtraClientSymbolFields = {\r\n offset: Offset;\r\n /* TODO: DC has other type */\r\n fontWeight: number;\r\n childSymbols: StyleSymbolType[];\r\n stroke: StrokeBrushType;\r\n fill: FillBrushType;\r\n textBackground: TextBackgroundType;\r\n beginning: null | LineMiterKind;\r\n beginningSize: LineMiterSize;\r\n ending: null | LineMiterKind;\r\n endingSize: LineMiterSize;\r\n angle: CalculatedAble<number>;\r\n};\r\n\r\nexport type ClientSymbol<\r\n SymbolType,\r\n SymbolDcType,\r\n NonClassifiedFields extends keyof SymbolDcType = never\r\n> = {\r\n [K in keyof SymbolDcType]: K extends 'type'\r\n ? SymbolType\r\n : K extends keyof ExtraClientSymbolFields\r\n ? ExtraClientSymbolFields[K]\r\n : ToClientSymbolField<\r\n SymbolDcType[K],\r\n K extends NonClassifiedFields ? false : true\r\n >;\r\n};\r\n\r\nexport const symbolTypeGuard = <ClientSymbol extends { type?: string }>(\r\n type: ClientSymbol['type']\r\n) => (symbol: { type?: string }): symbol is ClientSymbol =>\r\n symbol && symbol.type === type;\r\n\r\nexport type Unclassify<T> = {\r\n [K in keyof T]: T[K] extends ClassifyAble<infer V>\r\n ? V\r\n : T[K] extends CalculatedAble<infer V2>\r\n ? V2\r\n : T[K];\r\n};\r\n","import {\r\n PointLabelSymbolDc,\r\n PolygonLabelSymbolDc,\r\n PolylineLabelSymbolDc,\r\n} from '@evergis/api';\r\n\r\nimport { UnknownSymbol } from './symbol';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\n\r\ntype NonClassifyableLabelFields = 'fontColor' | 'fontSize' | 'haloColor';\r\n\r\nexport type PointLabelSymbol = ClientSymbol<\r\n 'labelPointSymbol',\r\n PointLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\nexport type PolygonLabelSymbol = ClientSymbol<\r\n 'polygonLabelSymbol',\r\n PolygonLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\nexport type PolylineLabelSymbol = ClientSymbol<\r\n 'polylineLabelSymbol',\r\n PolylineLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\n\r\nexport const isPointLabelSymbol = symbolTypeGuard<PointLabelSymbol>(\r\n 'labelPointSymbol'\r\n);\r\nexport const isPolygonLabelSymbol = symbolTypeGuard<PolygonLabelSymbol>(\r\n 'polygonLabelSymbol'\r\n);\r\nexport const isPolylineLabelSymbol = symbolTypeGuard<PolylineLabelSymbol>(\r\n 'polylineLabelSymbol'\r\n);\r\n\r\nexport const isLabelSymbol = (symbol: UnknownSymbol): symbol is LabelType =>\r\n Boolean(\r\n symbol &&\r\n (isPointLabelSymbol(symbol) ||\r\n isPolygonLabelSymbol(symbol) ||\r\n isPolylineLabelSymbol(symbol))\r\n );\r\n\r\nexport type LabelType =\r\n | PolylineLabelSymbol\r\n | PolygonLabelSymbol\r\n | PointLabelSymbol;\r\n","import {\r\n CirclePointSymbolDc,\r\n ClusterSymbolDc,\r\n CompositeSymbolDc,\r\n H3GridSymbolDc,\r\n ImagePointSymbolDc,\r\n MaskedImagePointSymbolDc,\r\n PolygonSymbolDc,\r\n PolylineSymbolDc,\r\n RasterSymbolDc,\r\n SimplePolylineSymbolDc,\r\n SquarePointSymbolDc,\r\n StyleDc,\r\n SvgPointSymbolDc,\r\n} from '@evergis/api';\r\n\r\nimport { isLabelSymbol, LabelType } from './label';\r\nimport { CalculatedAble } from './parameterValue';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\nimport { FillBrushType, StrokeBrushType } from './brush';\r\n\r\nexport type PointSymbol = ClientSymbol<\r\n 'circlePointSymbol',\r\n CirclePointSymbolDc\r\n>;\r\n\r\nexport type SvgPointSymbol = ClientSymbol<\r\n 'svgPointSymbol',\r\n SvgPointSymbolDc\r\n>;\r\n\r\nexport type SquareSymbol = ClientSymbol<\r\n 'squarePointSymbol',\r\n SquarePointSymbolDc\r\n> & {\r\n angle?: CalculatedAble<number>;\r\n};\r\n\r\nexport type MaskedImageSymbol = ClientSymbol<\r\n 'maskedImagePointSymbol',\r\n MaskedImagePointSymbolDc\r\n>;\r\n\r\nexport type StaticImageSymbol = ClientSymbol<\r\n 'imagePointSymbol',\r\n ImagePointSymbolDc\r\n>;\r\n\r\nexport type PolygonSymbol<\r\n Fill = FillBrushType,\r\n Stroke = StrokeBrushType\r\n> = ClientSymbol<'polygonSymbol', PolygonSymbolDc> & {\r\n fill: Fill;\r\n stroke: Stroke;\r\n};\r\n\r\nexport type SimplePolylineSymbol = ClientSymbol<\r\n 'simplePolylineSymbol',\r\n SimplePolylineSymbolDc\r\n>;\r\n\r\nexport type PolylineSymbol = ClientSymbol<'polylineSymbol', PolylineSymbolDc>;\r\n\r\nexport type RasterSymbol = ClientSymbol<'rasterSymbol', RasterSymbolDc>;\r\n\r\nexport type CompositeSymbolType = ClientSymbol<\r\n 'compositeSymbol',\r\n CompositeSymbolDc\r\n>;\r\n\r\nexport type H3GridSymbol = ClientSymbol<\r\n 'h3grid',\r\n H3GridSymbolDc\r\n>;\r\n\r\nexport type SimpleShapeSymbol = PointSymbol | SquareSymbol;\r\n\r\nexport type ImageSymbol = MaskedImageSymbol | StaticImageSymbol;\r\n\r\nexport type PointSymbolType = SvgPointSymbol | PointSymbol | SquareSymbol | MaskedImageSymbol | StaticImageSymbol;\r\n\r\nexport type PolylineSymbols = PolylineSymbol | SimplePolylineSymbol;\r\n\r\nexport type StyleSymbolType =\r\n | PointSymbolType\r\n | PolygonSymbol\r\n | PolylineSymbols\r\n | LabelType\r\n | RasterSymbol\r\n | CompositeSymbolType\r\n | H3GridSymbolDc\r\n | ClusterSymbolDc;\r\n\r\nexport type StyleSymbolTypes = StyleSymbolType['type'];\r\n\r\nexport type UnknownSymbol = StyleDc['symbol'] | StyleSymbolType;\r\n\r\nexport type LayerSymbol = PointSymbol | PolylineSymbols | PolygonSymbol;\r\n\r\nexport type FillStyledSymbols = PolygonSymbol;\r\n\r\nexport type StrokeStyledSymbols = PolygonSymbol | PolylineSymbols;\r\n\r\nexport const isPointSymbol = symbolTypeGuard<PointSymbol>('circlePointSymbol');\r\n\r\nexport const isSquareSymbol = symbolTypeGuard<SquareSymbol>(\r\n 'squarePointSymbol'\r\n);\r\n\r\nexport const isMaskedImageSymbol = symbolTypeGuard<MaskedImageSymbol>(\r\n 'maskedImagePointSymbol'\r\n);\r\n\r\nexport const isStaticImageSymbol = symbolTypeGuard<StaticImageSymbol>(\r\n 'imagePointSymbol'\r\n);\r\n\r\nexport const isPolygonSymbol = symbolTypeGuard<PolygonSymbol>('polygonSymbol');\r\n\r\nexport const isPolylineSymbol = symbolTypeGuard<PolylineSymbol>(\r\n 'polylineSymbol'\r\n);\r\n\r\nexport const isSimplePolylineSymbol = symbolTypeGuard<SimplePolylineSymbol>(\r\n 'simplePolylineSymbol'\r\n);\r\n\r\nexport const isPolylineSymbols = (\r\n symbol: UnknownSymbol\r\n): symbol is PolylineSymbols =>\r\n Boolean(\r\n symbol && (isPolylineSymbol(symbol) || isSimplePolylineSymbol(symbol))\r\n );\r\n\r\nexport const isCompositeSymbol = symbolTypeGuard<CompositeSymbolType>(\r\n 'compositeSymbol'\r\n);\r\nexport const isRasterSymbol = symbolTypeGuard<RasterSymbol>('rasterSymbol');\r\n\r\nexport const isImageSymbol = (symbol: UnknownSymbol): symbol is ImageSymbol =>\r\n Boolean(\r\n symbol && (isMaskedImageSymbol(symbol) || isStaticImageSymbol(symbol))\r\n );\r\n\r\nexport const isTwoDimensionalSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is ImageSymbol => Boolean(symbol && 'width' in symbol);\r\n\r\nexport const isSizableSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is SimpleShapeSymbol => Boolean(symbol && 'size' in symbol);\r\n\r\nexport const isStrokeStyledSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is StrokeStyledSymbols =>\r\n Boolean(symbol && (isPolygonSymbol(symbol) || isPolylineSymbols(symbol)));\r\n\r\nexport const isScalablePolylineSymbol = (\r\n symbol: PolylineSymbol | SimplePolylineSymbol\r\n) =>\r\n (symbol.beginning !== null && symbol.ending !== null) ||\r\n (symbol.stroke && symbol.stroke.type !== 'solid');\r\n\r\nexport const isSimpleSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is Exclude<StyleSymbolType, LabelType | CompositeSymbolType> =>\r\n Boolean(\r\n symbol &&\r\n !isLabelSymbol(symbol) &&\r\n !isCompositeSymbol(symbol) &&\r\n !isRasterSymbol(symbol)\r\n );\r\n\r\nexport const isH3GridSymbol = symbolTypeGuard<H3GridSymbolDc>(\"h3grid\");\r\n\r\nexport const isSvgPointSymbol = symbolTypeGuard<SvgPointSymbol>(\"svgPointSymbol\");\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 | Date;\r\n\r\nexport type ParameterByAttributeValues = ParameterByAttributeValue<\r\n ParameterValue\r\n>[];\r\n\r\nexport type ParameterValueWithSymbol = ParameterValue | StyleSymbolType | Date;\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","export const isNumeric = (number: string | number): boolean =>\r\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\r\n","import { ClassificationParameterExtended } from \"../core\";\r\n\r\ntype IsParameterType = \"size\" | \"strokeWidth\" | \"stroke.width\" | \"strokeColor\" | \"stroke.color\";\r\n\r\nexport const isParameterType = (\r\n types: IsParameterType | Array<IsParameterType>,\r\n parameter?: ClassificationParameterExtended,\r\n): boolean => (typeof types === \"string\"\r\n ? parameter?.toLowerCase()?.includes(types.toLowerCase())\r\n : types.some(type => parameter?.toLowerCase()?.includes(type.toLowerCase()))) || false;\r\n","/* eslint-disable max-lines */\r\nimport get from \"lodash/get\";\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport {\r\n AttributesConfigurationDc,\r\n AttributeType,\r\n CompositeLayerInfoDc,\r\n FeatureLayerServiceInfoDc,\r\n GeometryType,\r\n LayerDefinitionDc,\r\n PostgresLayerServiceConfigurationDc,\r\n ServiceInfoDc,\r\n StyleDc,\r\n SvgParameterDc,\r\n} from \"@evergis/api\";\r\n\r\nimport {\r\n DEFAULT_LEGEND_SYMBOL_SIZE,\r\n DEFAULT_PARAMETER_INFO,\r\n EXTRA_BORDER_SIZE,\r\n PARAMETER_INFOS,\r\n SYMBOL_CLASSIFICATION,\r\n ClassifyParameter,\r\n LegendSectionItem,\r\n ParameterInfo,\r\n SvgSymbolBg\r\n} from \"../components\";\r\nimport { DateFormat, formatDate } from \"./date\";\r\nimport {\r\n ClassificationClass,\r\n ClassificationParameter,\r\n ClassificationParameterExtended,\r\n ClassifyAble,\r\n FeatureAttributeValue,\r\n getParameterValue,\r\n ImageSymbol,\r\n isH3GridSymbol,\r\n isMaskedImageSymbol,\r\n isParameterValueSymbol,\r\n isPolygonSymbol,\r\n isPolylineSymbols,\r\n isRangeClass,\r\n isSizableSymbol,\r\n isSvgPointSymbol,\r\n isTwoDimensionalSymbol,\r\n isUniqueClass,\r\n LabelType,\r\n LegendValueType,\r\n MaskedImageSymbol,\r\n ParameterByAttribute,\r\n ParameterByAttributeValue,\r\n ParameterValue,\r\n ParameterValueWithSymbol,\r\n PointSymbol,\r\n PointSymbolType,\r\n PolygonSymbol,\r\n PolylineSymbol,\r\n RangeClass,\r\n SquareSymbol,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n symbolParameterWalker,\r\n UniqueClass\r\n} from \"../core\";\r\nimport { isNumeric } from \"./isNumeric\";\r\nimport { isObject } from \"./isObject\";\r\n\r\nexport const isLayerService = (value?: unknown): value is CompositeLayerInfoDc[\"layer\"] => isObject(value) && \"name\" in value;\r\n\r\nexport const getAttributeFromCondition = (condition: string): string => {\r\n const parts = condition.split(\" \");\r\n\r\n return parts[0].startsWith(\"(\") ? parts[0].slice(1) : parts[0];\r\n};\r\n\r\nexport const getExprFromCondition = (condition: string, partIndex?: number): string[] => {\r\n let expr;\r\n\r\n if (partIndex) {\r\n const parts = condition.split(\" && \").map(part => part.slice(1, -1));\r\n\r\n expr = parts[partIndex - 1];\r\n } else {\r\n expr = condition;\r\n }\r\n\r\n return expr?.split(\" \");\r\n};\r\n\r\nexport const getSignFromConditionPart = (condition: string, partIndex?: number): string => {\r\n return getExprFromCondition(condition, partIndex)?.[1];\r\n};\r\n\r\nexport const getValueFromConditionPart = (condition: string, partIndex?: number): string => {\r\n return getExprFromCondition(condition, partIndex)?.[2];\r\n};\r\n\r\nexport const isRangeCondition = (condition: string) => condition.includes(\"(\");\r\n\r\nexport const getSymbolParameterInfo = (parameter: ClassificationParameter): ParameterInfo => {\r\n return PARAMETER_INFOS[parameter] || DEFAULT_PARAMETER_INFO;\r\n};\r\n\r\nexport const formatValue = (\r\n value: FeatureAttributeValue,\r\n type?: AttributeType,\r\n calculatedParameter?: ClassificationParameter,\r\n) => {\r\n if (type === AttributeType.DateTime) {\r\n return formatDate(value as Date, { dateFormat: DateFormat.DateTime });\r\n }\r\n\r\n const { serialize } = getSymbolParameterInfo(calculatedParameter as ClassificationParameter);\r\n\r\n return (value && typeof value === \"number\" ? serialize(value) : value)?.toString();\r\n};\r\n\r\nexport const formatUniqueClassValue = (value: UniqueClass): string => {\r\n const { attribute, uniqueValue } = value;\r\n\r\n return attribute ? formatValue(uniqueValue, attribute.type) as string : uniqueValue;\r\n};\r\n\r\nexport const 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 ? (isDate ? from : isDouble ? +from : +from + 1) : from,\r\n to,\r\n };\r\n};\r\n\r\nexport const formatRangeClassValue = (value: RangeClass, index: number): string => {\r\n const isDouble = value.attribute?.type === \"Double\";\r\n const isDate = value.attribute?.type === \"DateTime\";\r\n\r\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\r\n\r\n const formattedFrom = isDate && from ? formatDate(from) : from;\r\n const formattedTo = isDate && to ? formatDate(to) : to;\r\n\r\n if (from === null) {\r\n return `${formattedTo}${!isDate ? \" и менее\" : \"\"}`;\r\n }\r\n\r\n if (to === null) {\r\n return `${!isDate ? \"более \" : \"\"}${formattedFrom}`;\r\n }\r\n\r\n return from === to ? `${formattedFrom}` : `${formattedFrom} - ${formattedTo}`;\r\n};\r\n\r\nexport const checkLayerHasLegend = (layerInfo: FeatureLayerServiceInfoDc): boolean => {\r\n return SYMBOL_CLASSIFICATION[layerInfo.geometryType]?.some(param => {\r\n const paramValue = get(layerInfo.style?.symbol, param) as unknown as ParameterByAttribute<ParameterValue>;\r\n\r\n return paramValue?.type === \"byAttribute\";\r\n }) || false;\r\n};\r\n\r\nexport const getTitleFromCondition = (condition: string) => {\r\n const parts = condition.split(\" == \");\r\n\r\n return parts[1]?.slice(1, -1);\r\n};\r\n\r\nfunction createValueTitle(\r\n paramValue: ParameterByAttributeValue<ParameterValue>,\r\n attributeType: AttributeType,\r\n index: number,\r\n): string {\r\n if (paramValue.title) return paramValue.title;\r\n\r\n const value = {\r\n parameterValue: getParameterValue(paramValue.value),\r\n attribute: { type: attributeType },\r\n } as ClassificationClass;\r\n\r\n const sign = getSignFromConditionPart(paramValue.condition, 1);\r\n const isFirstFrom = sign.includes(\">\");\r\n\r\n (value as RangeClass).from = isFirstFrom ? getValueFromConditionPart(paramValue.condition, 1) : null;\r\n (value as RangeClass).to =\r\n paramValue.condition.includes(\" && \") && isFirstFrom\r\n ? getValueFromConditionPart(paramValue.condition, 2)\r\n : !isFirstFrom\r\n ? getValueFromConditionPart(paramValue.condition, 1)\r\n : null;\r\n\r\n if (isRangeClass(value)) return formatRangeClassValue(value as RangeClass, index);\r\n if (isUniqueClass(value)) return formatUniqueClassValue(value as UniqueClass);\r\n\r\n return \"\";\r\n}\r\n\r\ntype SymbolCreator<T> = (\r\n baseSymbol: T,\r\n parameter: ClassificationParameterExtended,\r\n classificationsParams: ClassificationParameterExtended[],\r\n parameterValue: ParameterValue,\r\n) => T;\r\n\r\nexport const enum LegendSymbolTypes {\r\n Point,\r\n ImagePoint,\r\n Line,\r\n Polygon,\r\n}\r\n\r\ntype LegendSymbolsMap = {\r\n [LegendSymbolTypes.Point]: PointSymbolType;\r\n [LegendSymbolTypes.ImagePoint]: MaskedImageSymbol;\r\n [LegendSymbolTypes.Line]: PolylineSymbol;\r\n [LegendSymbolTypes.Polygon]: PolygonSymbol;\r\n};\r\n\r\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 ->\r\n// пункт \"Настраиваемые значения параметров символики в системе\"\r\n// Для добавления подготовленных значений размеров символов нужно использовать константу PREPARED_SYMBOL_SIZES\r\nexport const DEFAULT_LEGEND_STYLES: LegendSymbolsMap = {\r\n [LegendSymbolTypes.Point]: {\r\n fillColor: \"#00000047\",\r\n strokeWidth: 1,\r\n strokeColor: \"#0000001f\",\r\n },\r\n [LegendSymbolTypes.ImagePoint]: {\r\n maskedColor: \"#00000047\",\r\n },\r\n [LegendSymbolTypes.Line]: {\r\n stroke: {\r\n width: 2,\r\n color: \"#00000047\",\r\n },\r\n },\r\n [LegendSymbolTypes.Polygon]: {\r\n fill: {\r\n color: \"#00000000\",\r\n hatchColor: \"#00000000\",\r\n },\r\n stroke: {\r\n width: 1,\r\n color: \"#0000001f\",\r\n },\r\n },\r\n};\r\n\r\nexport const SYMBOL_SIZE_PARAMETERS = [\"size\", \"width\", \"height\"];\r\n\r\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 -> пункт \"Библиотека символов\"\r\nexport const DEFAULT_LEGEND_SIZES: Record<string, number> = {\r\n circlePointSymbol: 8,\r\n squarePointSymbol: 12,\r\n imagePointSymbol: 24,\r\n maskedImagePointSymbol: 24,\r\n svgPointSymbol: 24,\r\n};\r\n\r\nconst getNonClassifiedParamValue = <S extends StyleSymbolType>(\r\n baseSymbol: S,\r\n parameter: ClassificationParameterExtended,\r\n classificationsParams: ClassificationParameterExtended[],\r\n type: LegendSymbolTypes,\r\n) => {\r\n if (classificationsParams.includes(parameter)) {\r\n const defaultParameterValue = getParameterFromSymbol(DEFAULT_LEGEND_STYLES[type], parameter);\r\n\r\n if (defaultParameterValue) {\r\n return defaultParameterValue;\r\n }\r\n if (SYMBOL_SIZE_PARAMETERS.includes(parameter) && DEFAULT_LEGEND_SIZES[baseSymbol.type as string]) {\r\n return DEFAULT_LEGEND_SIZES[baseSymbol.type as string];\r\n }\r\n }\r\n\r\n return getParameterValue(getParameterFromSymbol(baseSymbol, parameter));\r\n};\r\n\r\nexport const updateSymbolParameter = <S extends StyleSymbolType | LabelType>(\r\n symbol: S,\r\n path: string,\r\n value: ClassifyAble<ParameterValue>,\r\n): S =>\r\n symbolParameterWalker(() => value)(\r\n symbol,\r\n path as ClassificationParameterExtended | ClassificationParameterExtended[],\r\n );\r\n\r\nconst createPointSymbol: SymbolCreator<PointSymbol | SquareSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue,\r\n): PointSymbol | SquareSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fillColor: getNonClassifiedParamValue(baseSymbol, \"fillColor\", classificationsParams, LegendSymbolTypes.Point),\r\n strokeColor: getNonClassifiedParamValue(\r\n baseSymbol,\r\n \"strokeColor\",\r\n classificationsParams,\r\n LegendSymbolTypes.Point,\r\n ),\r\n strokeWidth: getNonClassifiedParamValue(\r\n baseSymbol,\r\n \"strokeWidth\",\r\n classificationsParams,\r\n LegendSymbolTypes.Point,\r\n ),\r\n size: getNonClassifiedParamValue(baseSymbol, \"size\", classificationsParams, LegendSymbolTypes.Point),\r\n offset: [0, 0],\r\n },\r\n parameter,\r\n parameterValue,\r\n ) as PointSymbol | SquareSymbol;\r\n};\r\n\r\ntype Dimensions = {\r\n height: number;\r\n width: number;\r\n};\r\n\r\nexport function getDimensions(symbol: ImageSymbol, size: number): Dimensions {\r\n const height = getParameterValue(symbol.height as ParameterValue) as number;\r\n const width = getParameterValue(symbol.width as ParameterValue) as number;\r\n\r\n if (width === height) {\r\n return {\r\n width: size,\r\n height: size,\r\n };\r\n }\r\n\r\n const ratio = height / width;\r\n\r\n if (width < height) {\r\n return {\r\n width: size,\r\n height: height + (size - width) * ratio,\r\n };\r\n }\r\n\r\n return {\r\n width: width + (size - height) * ratio,\r\n height: size,\r\n };\r\n}\r\n\r\nconst createImagePointSymbol: SymbolCreator<ImageSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue,\r\n): ImageSymbol => {\r\n let symbol = { ...baseSymbol };\r\n\r\n if (isMaskedImageSymbol(symbol)) {\r\n symbol.maskedColor = getNonClassifiedParamValue(\r\n baseSymbol,\r\n \"maskedColor\",\r\n classificationsParams,\r\n LegendSymbolTypes.ImagePoint,\r\n ) as ClassifyAble<string>;\r\n }\r\n\r\n if (parameter === \"height\" || parameter === \"width\") {\r\n const { height, width } = getDimensions(baseSymbol, parameterValue as number);\r\n\r\n symbol.height = height;\r\n symbol.width = width;\r\n } else {\r\n symbol.width = getNonClassifiedParamValue(baseSymbol, \"width\", classificationsParams, LegendSymbolTypes.ImagePoint) as number;\r\n symbol.height = symbol.width;\r\n\r\n symbol = updateSymbolParameter(symbol, parameter, parameterValue);\r\n }\r\n\r\n symbol.offset = [\r\n (getParameterValue(symbol.height as ClassifyAble<number>) as number) / 2,\r\n (getParameterValue(symbol.width as ClassifyAble<number>) as number) / 2,\r\n ];\r\n\r\n return symbol;\r\n};\r\n\r\nconst createLineSymbol: SymbolCreator<PolylineSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue,\r\n): PolylineSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n type: \"polylineSymbol\",\r\n stroke: {\r\n color: getNonClassifiedParamValue(baseSymbol, \"stroke.color\", classificationsParams, LegendSymbolTypes.Line),\r\n width: getNonClassifiedParamValue(baseSymbol, \"stroke.width\", classificationsParams, LegendSymbolTypes.Line),\r\n },\r\n },\r\n parameter,\r\n parameterValue,\r\n ) as PolylineSymbol;\r\n};\r\n\r\nconst createPolygonSymbol: SymbolCreator<PolygonSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue,\r\n): PolygonSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fill: {\r\n color: getNonClassifiedParamValue(baseSymbol, \"fill.color\", classificationsParams, LegendSymbolTypes.Polygon),\r\n hatchColor: getNonClassifiedParamValue(\r\n baseSymbol,\r\n \"fill.hatchColor\",\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon,\r\n ),\r\n },\r\n stroke: {\r\n color: getNonClassifiedParamValue(baseSymbol, \"stroke.color\", classificationsParams, LegendSymbolTypes.Polygon),\r\n width: getNonClassifiedParamValue(baseSymbol, \"stroke.width\", classificationsParams, LegendSymbolTypes.Polygon),\r\n },\r\n },\r\n parameter,\r\n parameterValue,\r\n ) as PolygonSymbol;\r\n};\r\n\r\nconst createH3Symbol: SymbolCreator<H3Symbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue,\r\n): H3Symbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fill: {\r\n color: getNonClassifiedParamValue(baseSymbol, \"fill.color\", classificationsParams, LegendSymbolTypes.Polygon),\r\n },\r\n stroke: {\r\n color: getNonClassifiedParamValue(baseSymbol, \"stroke.color\", classificationsParams, LegendSymbolTypes.Polygon),\r\n width: getNonClassifiedParamValue(baseSymbol, \"stroke.width\", classificationsParams, LegendSymbolTypes.Polygon),\r\n },\r\n },\r\n parameter,\r\n parameterValue\r\n ) as unknown as H3Symbol;\r\n};\r\n\r\nexport const createLegendSymbol = (\r\n parameterValue: ParameterValueWithSymbol,\r\n parameter: ClassificationParameterExtended,\r\n classificationsParams: ClassificationParameterExtended[],\r\n baseSymbol: StyleSymbolType,\r\n): StyleSymbolType | null => {\r\n if (isParameterValueSymbol(parameterValue)) {\r\n return parameterValue;\r\n }\r\n\r\n /* if (isClusterSymbol(baseSymbol)) {\r\n return createClusterSymbol(baseSymbol, parameter, classificationsParams, parameterValue);\r\n }*/\r\n\r\n if (isSizableSymbol(baseSymbol)) {\r\n return createPointSymbol(baseSymbol, parameter, classificationsParams, parameterValue as ParameterValue);\r\n }\r\n\r\n if (isTwoDimensionalSymbol(baseSymbol)) {\r\n return createImagePointSymbol(baseSymbol, parameter, classificationsParams, parameterValue as ParameterValue);\r\n }\r\n\r\n if (isPolylineSymbols(baseSymbol)) {\r\n return createLineSymbol(\r\n baseSymbol as PolylineSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue,\r\n );\r\n }\r\n\r\n if (isPolygonSymbol(baseSymbol)) {\r\n return createPolygonSymbol(\r\n baseSymbol as PolygonSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue,\r\n );\r\n }\r\n\r\n if (isH3GridSymbol(baseSymbol)) {\r\n return createH3Symbol(baseSymbol as H3Symbol, parameter, classificationsParams, parameterValue as ParameterValue);\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const getMinimizedLegendValues = (\r\n attributeType: AttributeType,\r\n param: ParameterByAttribute<ParameterValue>,\r\n index: number,\r\n): LegendValueType[] => {\r\n return param.values.map(paramValue => {\r\n const parameterValue = getParameterValue(paramValue.value);\r\n const result = { parameterValue, attribute: { type: attributeType } } as ClassificationClass;\r\n\r\n if (isRangeCondition(paramValue.condition)) {\r\n const from = getValueFromConditionPart(paramValue.condition, 1);\r\n const to = getValueFromConditionPart(paramValue.condition, 2);\r\n\r\n (result as RangeClass).from = from ? (isNumeric(from) ? +from : formatDate(from)) : null;\r\n (result as RangeClass).to = to ? (isNumeric(to) ? +to : formatDate(to)) : null;\r\n\r\n result.title = createValueTitle(paramValue, attributeType, index);\r\n\r\n return result;\r\n }\r\n\r\n (result as UniqueClass).uniqueValue = formatValue(paramValue.value) as string;\r\n result.title = getTitleFromCondition(paramValue.condition);\r\n\r\n return result;\r\n }) as LegendValueType[];\r\n};\r\n\r\nexport const getMaximizedLegendValues = (\r\n attributeType: AttributeType,\r\n param: ClassificationParameterExtended,\r\n params: ClassificationParameterExtended[],\r\n classified: ParameterByAttribute<ParameterValue>,\r\n symbol: StyleDc[\"symbol\"],\r\n sectionIndex: number,\r\n otherTitle: string,\r\n): LegendSectionItem[] => {\r\n const other = {\r\n title: otherTitle,\r\n symbol: createLegendSymbol(classified.defaultValue, param, params, symbol as StyleSymbolType),\r\n };\r\n\r\n const items = classified.values.map((paramValue, index) => {\r\n const result = {\r\n symbol: createLegendSymbol(classified.values[index].value, param, params, symbol as StyleSymbolType),\r\n } as LegendSectionItem;\r\n\r\n if (isRangeCondition(paramValue.condition)) {\r\n result.title = createValueTitle(paramValue, attributeType, sectionIndex);\r\n\r\n return result;\r\n }\r\n\r\n result.title = getTitleFromCondition(paramValue.condition);\r\n\r\n return result;\r\n });\r\n\r\n return [...items, other] as LegendSectionItem[];\r\n};\r\n\r\nexport type ClassifiedList = Record<ClassifyParameter, ParameterByAttribute<ParameterValue>>;\r\n\r\nexport const getClassified = (\r\n layerInfo: FeatureLayerServiceInfoDc,\r\n): ClassifiedList => {\r\n const classifyParams = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\r\n\r\n return classifyParams?.reduce((result, classified) => {\r\n const param = get(layerInfo.style?.symbol, classified) as unknown as ParameterByAttribute<ParameterValue>;\r\n\r\n return param?.type === \"byAttribute\" ? { ...result, [classified]: param } : result;\r\n }, {}) as Record<ClassifyParameter, ParameterByAttribute<ParameterValue>>;\r\n};\r\n\r\nexport const getSymbolStrokeWidth = (symbol: PointSymbolType): number => {\r\n return isSvgPointSymbol(symbol)\r\n ? ((symbol.background as SvgParameterDc)?.strokeWidth as number)\r\n : ((symbol as PointSymbol).strokeWidth as number);\r\n};\r\n\r\nexport const getParameterFromSymbol = <R extends ClassifyAble<ParameterValue>>(\r\n symbol: StyleSymbolType | LabelType,\r\n parameter: ClassificationParameterExtended,\r\n): R => {\r\n let parameterFromSymbol = {};\r\n\r\n symbolParameterWalker((parameterValue: ClassifyAble<ParameterValue>) => {\r\n parameterFromSymbol = parameterValue;\r\n })(symbol, parameter);\r\n\r\n return parameterFromSymbol as R;\r\n};\r\n\r\nexport const getLegendSymbolSize = (symbol: StyleSymbolType): number => {\r\n let size = 0;\r\n\r\n if (isSvgPointSymbol(symbol)) {\r\n size = getParameterValue(symbol.size as ClassifyAble<number>);\r\n }\r\n\r\n if (isH3GridSymbol(symbol)) {\r\n size = getParameterValue(symbol.cellSize as ClassifyAble<number>);\r\n }\r\n\r\n if (isTwoDimensionalSymbol(symbol)) {\r\n size = Math.max(\r\n getParameterValue(symbol.width as ClassifyAble<number>),\r\n getParameterValue(symbol.height as ClassifyAble<number>),\r\n );\r\n }\r\n\r\n if (isSizableSymbol(symbol)) {\r\n const strokeWidth = getSymbolStrokeWidth(symbol);\r\n\r\n size = getParameterValue(symbol.size as ClassifyAble<number>) +\r\n (strokeWidth ? getParameterValue(strokeWidth) + EXTRA_BORDER_SIZE : 0);\r\n }\r\n\r\n if (isPolylineSymbols(symbol)) {\r\n size = getParameterValue(getParameterFromSymbol(symbol, \"stroke.width\")) as number;\r\n }\r\n\r\n return Math.max(DEFAULT_LEGEND_SYMBOL_SIZE, size);\r\n};\r\n\r\nexport const serializeSvgPointSymbol = (symbol: SvgPointSymbol) => {\r\n if (!symbol) return null;\r\n\r\n const figureFillColor = ((symbol.figure as SvgParameterDc)?.fillColor as string) || null;\r\n const bgFillColor = ((symbol.background as SvgParameterDc)?.fillColor as string) || null;\r\n\r\n return {\r\n type: \"svgPointSymbol\",\r\n size: symbol.size,\r\n offset: symbol.offset,\r\n angle: symbol.angle,\r\n ...(bgFillColor\r\n ? {\r\n background: {\r\n id: \"symbol-bg\",\r\n fillColor: bgFillColor,\r\n strokeColor: ((symbol.background as SvgParameterDc)?.strokeColor as string) || null,\r\n strokeWidth: (symbol.background as SvgParameterDc)?.strokeWidth || null,\r\n type: (symbol.background as SvgParameterDc)?.type || SvgSymbolBg.Circle,\r\n },\r\n }\r\n : {}),\r\n ...(figureFillColor\r\n ? {\r\n figure: { id: \"symbol-figure\", fillColor: figureFillColor },\r\n }\r\n : {}),\r\n };\r\n};\r\n\r\nconst SIZE_PARAMETERS = [\"size\", \"height\", \"strokeWidth\", \"stroke.width\"];\r\n\r\nexport const isSizeClassification = (parameter: string): boolean => SIZE_PARAMETERS.includes(parameter);\r\n\r\nexport const getServiceConfiguration = (layer?: ServiceInfoDc): ServiceInfoDc[\"configuration\"] => {\r\n const emptyServiceConfiguration: ServiceInfoDc[\"configuration\"] = {\r\n name: \"\",\r\n };\r\n\r\n if (!isLayerService(layer) || !(\"configuration\" in layer)) return emptyServiceConfiguration;\r\n\r\n return {\r\n ...emptyServiceConfiguration,\r\n ...(layer.configuration || {}),\r\n };\r\n};\r\n\r\n/** default attribute name which use for geometry info */\r\nexport const GEOMETRY_ATTRIBUTE = \"geometry\";\r\n\r\n/** default attribute name which contains unique id info */\r\nexport const DEFAULT_ID_ATTRIBUTE_NAME = \"gid\";\r\n\r\nexport const getAttributesConfiguration = (layer: ServiceInfoDc): AttributesConfigurationDc => {\r\n const serviceConfiguration = getServiceConfiguration(layer);\r\n const emptyAttributesConfiguration: AttributesConfigurationDc = {\r\n geometryAttribute: GEOMETRY_ATTRIBUTE,\r\n idAttribute: DEFAULT_ID_ATTRIBUTE_NAME,\r\n tableName: \"\",\r\n };\r\n\r\n if (!serviceConfiguration || !(\"attributesConfiguration\" in serviceConfiguration)) {\r\n return emptyAttributesConfiguration;\r\n }\r\n\r\n return {\r\n ...emptyAttributesConfiguration,\r\n ...((serviceConfiguration as PostgresLayerServiceConfigurationDc).attributesConfiguration || {}),\r\n };\r\n};\r\n\r\nexport const getLayerDefinition = (layer?: FeatureLayerServiceInfoDc): LayerDefinitionDc => {\r\n const { geometryAttribute, idAttribute } = getAttributesConfiguration(layer as FeatureLayerServiceInfoDc);\r\n\r\n const emptyLayerDefinition: LayerDefinitionDc = {\r\n attributes: {},\r\n geometryAttribute: geometryAttribute as string,\r\n idAttribute,\r\n geometryType: GeometryType.Unknown,\r\n titleAttribute: \"\",\r\n };\r\n\r\n if (!isLayerService(layer) || !(\"layerDefinition\" in layer)) {\r\n return emptyLayerDefinition;\r\n }\r\n\r\n return {\r\n ...emptyLayerDefinition,\r\n ...(layer.layerDefinition || {}),\r\n attributes: layer.layerDefinition.attributes || emptyLayerDefinition.attributes,\r\n };\r\n};\r\n\r\nexport function getAttributeType(layer: FeatureLayerServiceInfoDc, attributeName: string): AttributeType {\r\n const { attributes } = getLayerDefinition(layer);\r\n const attribute = attributes[attributeName];\r\n\r\n return attribute ? attribute.type : AttributeType.Unknown;\r\n}\r\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 { GeometryType } from \"@evergis/api\";\r\n\r\nimport { ClassifyParameter, ParameterInfo, Units } from \"./types\";\r\nimport { ClassificationParameter } from \"../../core\";\r\n\r\nexport const DEFAULT_LEGEND_SYMBOL_SIZE = 26;\r\n\r\nexport const EXTRA_BORDER_SIZE = 4;\r\n\r\nexport const DEFAULT_SYMBOL_SIZE = 20;\r\n\r\nexport const DEFAULT_SYMBOL_WITH_BG_SIZE = 24;\r\n\r\nexport const DEFAULT_SYMBOL_FILL_COLOR = \"rgba(0, 163, 245, 1)\";\r\n\r\nexport const DEFAULT_SYMBOL_STROKE_COLOR = \"rgb(255, 255, 255)\";\r\n\r\nexport const DEFAULT_SYMBOL_OFFSET = [0, 0];\r\n\r\nexport const SYMBOL_CLASSIFICATION: Partial<Record<GeometryType, ClassifyParameter[]>> = {\r\n [GeometryType.Polygon]: [\"fill.color\", \"stroke.color\", \"stroke.width\"],\r\n [GeometryType.Polyline]: [\"stroke.color\", \"stroke.width\"],\r\n [GeometryType.Point]: [\r\n \"angle\",\r\n \"background.fillColor\",\r\n \"background.strokeColor\",\r\n \"background.strokeWidth\",\r\n \"figure.fillColor\",\r\n \"size\",\r\n ],\r\n};\r\n\r\nexport const SYMBOL_LIMITS = {\r\n SIZE_MIN: 1,\r\n SIZE_MAX: 64,\r\n SIZE_STEP: 1,\r\n GRID_SIZE_MIN: 0.1,\r\n GRID_SIZE_MAX: 120,\r\n MIN_OBJECTS_COUNT: 2,\r\n MAX_OBJECTS_COUNT: 10000,\r\n MIN_CLUSTER_SIZE: 16,\r\n MAX_CLUSTER_SIZE: 120,\r\n STROKE_WIDTH_MIN: 0,\r\n STROKE_WIDTH_MAX: 32,\r\n STROKE_WIDTH_STEP: 0.25,\r\n ANGLE_MIN: -360,\r\n ANGLE_MAX: 360,\r\n ANGLE_STEP: 1,\r\n PREVIEW_SIZE_MAX: 32,\r\n PREVIEW_SIZE_MAX_WIDTH: 26,\r\n};\r\n\r\nexport const DEFAULT_PARAMETER_INFO: ParameterInfo = {\r\n classifyAble: true,\r\n min: SYMBOL_LIMITS.STROKE_WIDTH_MIN,\r\n max: SYMBOL_LIMITS.STROKE_WIDTH_MAX,\r\n step: SYMBOL_LIMITS.STROKE_WIDTH_STEP,\r\n units: Units.Pixels,\r\n serialize: value => value,\r\n deserialize: value => value,\r\n};\r\n\r\nexport const PARAMETER_INFOS: Partial<Record<ClassificationParameter, ParameterInfo>> = {\r\n size: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.SIZE_MIN,\r\n max: SYMBOL_LIMITS.SIZE_MAX,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n units: Units.Pixels,\r\n },\r\n /* gridSize: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.GRID_SIZE_MIN,\r\n max: SYMBOL_LIMITS.GRID_SIZE_MAX,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n classifyAble: false,\r\n units: null,\r\n },\r\n maxObjectCount: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\r\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n classifyAble: false,\r\n units: i18n.t(Units.Count, { ns: \"common\" }),\r\n },\r\n selectionObjectsLimit: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\r\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n classifyAble: false,\r\n units: i18n.t(Units.Count, { ns: \"common\" }),\r\n },\r\n angle: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.ANGLE_MIN,\r\n max: SYMBOL_LIMITS.ANGLE_MAX,\r\n step: SYMBOL_LIMITS.ANGLE_STEP,\r\n units: Units.Degrees,\r\n serialize: compose(Math.round, radToDeg),\r\n deserialize: degToRad,\r\n },\r\n endingSize: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n classifyAble: false,\r\n min: 3,\r\n max: 12,\r\n step: 1,\r\n },*/\r\n};\r\n","import { ReactNode } from \"react\";\r\nimport { AttributeType, PointLabelSymbolDc, SvgPointSymbolDc, StyleDc } from \"@evergis/api\";\r\nimport { MaskedImage } from \"@evergis/sgis/es/symbols/point/MaskedImage\";\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\n\r\nimport {\r\n ClassificationParameterExtended,\r\n LegendValueType,\r\n ParameterByAttribute,\r\n ParameterValue,\r\n StyleSymbolType,\r\n SvgPointSymbol\r\n} from \"../../core\";\r\nimport { SGisBrushFill, SGisImageFill, SGisPolygonSymbol, SGisPolylineSymbol } from \"../../symbols\";\r\n\r\nexport type ClassifyParameter =\r\n | \"fill.color\"\r\n | \"fill.hatchColor\"\r\n | \"stroke.width\"\r\n | \"stroke.color\"\r\n | \"textBackground.fill.color\"\r\n | \"background.fillColor\"\r\n | \"background.strokeColor\"\r\n | \"background.strokeWidth\"\r\n | \"figure.fillColor\"\r\n | \"fillColor\"\r\n | \"strokeColor\"\r\n | \"strokeWidth\"\r\n | \"fontColor\"\r\n | \"haloColor\"\r\n | \"size\"\r\n | \"symbol\"\r\n | \"angle\"\r\n | \"maskedColor\"\r\n | \"endingSize\"\r\n | \"beginningSize\"\r\n | \"maxObjectCount\"\r\n | \"gridSize\"\r\n | \"selectionObjectsLimit\";\r\n\r\nexport interface ParameterInfo {\r\n min: number;\r\n max: number;\r\n step: number;\r\n units: Units | null;\r\n serialize: (value: number) => number;\r\n deserialize: (value: number) => number;\r\n classifyAble: boolean;\r\n}\r\n\r\nexport const enum Units {\r\n Pixels = \"px\",\r\n Count = \"pcs\",\r\n Degrees = \"°\",\r\n}\r\n\r\nexport type LegendSectionProps = {\r\n symbol: StyleDc[\"symbol\"];\r\n param: ClassificationParameterExtended;\r\n params: ClassificationParameterExtended[];\r\n classified: ParameterByAttribute<ParameterValue>;\r\n attributeTitle: string;\r\n attributeType: AttributeType;\r\n index: number;\r\n};\r\n\r\nexport type LegendSectionItem = {\r\n attributeType: AttributeType;\r\n symbol: StyleSymbolType;\r\n title: string;\r\n index: number;\r\n hiddenCondition?: string;\r\n};\r\n\r\nexport type MaximizedLegendProps = {\r\n symbol: StyleDc[\"symbol\"];\r\n parameter: ClassificationParameterExtended;\r\n values: LegendSectionItem[];\r\n attributeType: AttributeType;\r\n index: number;\r\n};\r\n\r\nexport type SvgSymbolProps = {\r\n svg: string;\r\n symbol: SvgPointSymbol;\r\n size?: number;\r\n title?: string;\r\n text?: string;\r\n bg?: SvgSymbolBg;\r\n skipOffset?: boolean;\r\n fontSettings?: PointLabelSymbolDc;\r\n onClick?: (svg: string, symbol: SvgPointSymbol) => void;\r\n};\r\n\r\nexport enum SvgSymbolBg {\r\n Rect = \"rect\",\r\n Circle = \"circle\",\r\n}\r\n\r\nexport type SGisSymbol =\r\n | MaskedImage\r\n | SvgPointSymbolDc\r\n | SGisPolylineSymbol\r\n | SGisPolygonSymbol\r\n | SGisImageFill\r\n | SGisBrushFill\r\n | H3Symbol;\r\n/* | sPointSymbol\r\n | sSquareSymbol\r\n | sStaticImageSymbol\r\n | SGisMiterSymbol*/\r\n\r\nexport type SvgEditorField = Pick<SvgPointSymbol, \"size\" | \"offset\" | \"angle\"> & {\r\n \"background.fillColor\": string;\r\n \"background.strokeColor\": string;\r\n \"background.strokeWidth\": string;\r\n \"figure.fillColor\": string;\r\n};\r\n\r\nexport type MinimizedLegendProps = {\r\n title?: string | ReactNode;\r\n defaultValue: string;\r\n values: LegendValueType[];\r\n parameter: ClassificationParameterExtended;\r\n hiddenLegends?: string[];\r\n attributeType?: AttributeType;\r\n}\r\n\r\nexport type MapLegendItemProps = {\r\n value?: string | number;\r\n parameter?: ClassificationParameterExtended;\r\n isHidden?: boolean;\r\n}\r\n","import { Gradient, Svg } from \"@svgdotjs/svg.js\";\r\nimport { SvgParameterDc } from \"@evergis/api\";\r\n\r\nimport {\r\n DEFAULT_SYMBOL_FILL_COLOR,\r\n DEFAULT_SYMBOL_SIZE,\r\n DEFAULT_SYMBOL_STROKE_COLOR,\r\n DEFAULT_SYMBOL_WITH_BG_SIZE,\r\n} from \"../components/Legend/constants\";\r\nimport { SvgSymbolBg } from \"../components/Legend/types\";\r\nimport {\r\n getParameterValue,\r\n isParameterByAttribute,\r\n ParameterByAttribute,\r\n ParameterByAttributeValue,\r\n ParameterValue,\r\n SvgPointSymbol\r\n} from \"../core\";\r\n\r\nexport const convertSvgToBase64 = (svg: string) => `data:image/svg+xml;base64,${window.btoa(svg)}`;\r\n\r\nexport const createSvgGradient = (svg: Svg, values: ParameterByAttributeValue<string>[]) =>\r\n svg\r\n .gradient(\"linear\", (add: Gradient) => {\r\n values?.forEach(({ value }, index) => {\r\n add.stop(index / (values?.length - 1), value);\r\n });\r\n })\r\n .from(0, 0)\r\n .to(1, 1);\r\n\r\n// eslint-disable-next-line max-lines-per-function\r\nexport const manipulateSvgSymbol = (SVGContainer: Svg, symbol: SvgPointSymbol, svg?: string, bg?: SvgSymbolBg): Svg => {\r\n if (!symbol) return SVGContainer;\r\n\r\n const symbolData = svg || symbol.data;\r\n\r\n if (!symbolData) return SVGContainer;\r\n\r\n SVGContainer.clear();\r\n\r\n const { size, angle, background, figure } = symbol;\r\n const isUploadedFile = !bg && !symbolData.includes(\"symbol-bg\") && !symbolData.includes(\"symbol-figure\");\r\n const innerSvg = symbolData.replace(/<\\?xml[^?]*\\?>|<svg[^>]*>|<\\/svg>/g, \"\");\r\n\r\n if (isUploadedFile) {\r\n SVGContainer.svg(innerSvg);\r\n\r\n const uploadedViewBox = /viewBox=\"([^\"]+)\"/g.exec(symbolData)?.[1];\r\n\r\n if (uploadedViewBox?.[1]) {\r\n SVGContainer.viewbox(uploadedViewBox);\r\n }\r\n\r\n SVGContainer.size(size as number);\r\n } else {\r\n const hasBg = bg || innerSvg?.includes(\"symbol-bg\");\r\n let defaultSize = hasBg ? DEFAULT_SYMBOL_WITH_BG_SIZE : DEFAULT_SYMBOL_SIZE;\r\n const currentSize = size || defaultSize;\r\n let viewBox = [0, 0, defaultSize, defaultSize];\r\n const strokeWidth =\r\n getParameterValue((background as SvgParameterDc)?.strokeWidth as number) ||\r\n (typeof (background as SvgParameterDc)?.strokeColor === \"object\" ? 1 : 0);\r\n\r\n if (strokeWidth) {\r\n defaultSize += strokeWidth as number;\r\n viewBox = [-strokeWidth / 2, -strokeWidth / 2, defaultSize, defaultSize];\r\n }\r\n\r\n if (hasBg) {\r\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(viewBox.join(\" \"));\r\n\r\n const currentBg = bg || (background as SvgParameterDc)?.type;\r\n\r\n if (currentBg) {\r\n const strokeColor = getParameterValue((background as SvgParameterDc)?.strokeColor as ParameterValue);\r\n const fillColor = getParameterValue((background as SvgParameterDc)?.fillColor as ParameterValue);\r\n\r\n SVGContainer.svg(\r\n currentBg === SvgSymbolBg.Circle\r\n ? `<circle\r\n id=\"symbol-bg\"\r\n cx=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\r\n cy=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\r\n r=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\r\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\r\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\r\n stroke-width=\"${strokeWidth}\"\r\n />`\r\n : `<rect\r\n id=\"symbol-bg\"\r\n width=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\r\n height=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\r\n rx=\"4\"\r\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\r\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\r\n stroke-width=\"${strokeWidth}\"\r\n />`,\r\n );\r\n SVGContainer.svg(innerSvg);\r\n SVGContainer.find(\"#symbol-bg:not(:first-child)\").each((item: any) => item.remove());\r\n SVGContainer.find(\":not(#symbol-bg)\").each((item: any) =>\r\n item.center(DEFAULT_SYMBOL_WITH_BG_SIZE / 2, DEFAULT_SYMBOL_WITH_BG_SIZE / 2).fill(\"white\"),\r\n );\r\n\r\n // eslint-disable-next-line max-depth\r\n if (isParameterByAttribute((background as SvgParameterDc)?.fillColor as ParameterValue)) {\r\n const gradient = createSvgGradient(\r\n SVGContainer,\r\n ((background as SvgParameterDc)?.fillColor as ParameterByAttribute<string>)?.values,\r\n );\r\n\r\n SVGContainer.find(\"#symbol-bg\")[0]?.fill(gradient);\r\n }\r\n } else {\r\n SVGContainer.svg(innerSvg);\r\n }\r\n } else {\r\n const fillColor = getParameterValue((figure as SvgParameterDc)?.fillColor as string);\r\n\r\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(viewBox.join(\" \"));\r\n SVGContainer.svg(innerSvg);\r\n SVGContainer.find(\"#symbol-figure\").each(item => {\r\n item.center(DEFAULT_SYMBOL_SIZE / 2, DEFAULT_SYMBOL_SIZE / 2).fill(fillColor || DEFAULT_SYMBOL_FILL_COLOR);\r\n });\r\n }\r\n }\r\n\r\n const rootTransform = /<svg[^>]*transform=\"([^\"]+)\"/g.exec(symbolData)?.[1];\r\n\r\n if (rootTransform) {\r\n const transformParts = rootTransform.slice(0, -1).split(\"(\");\r\n\r\n SVGContainer.transform({ [transformParts[0]]: transformParts[1].split(\",\") });\r\n }\r\n\r\n const rotatedAngle = SVGContainer.transform(\"rotate\");\r\n\r\n if (rotatedAngle) {\r\n SVGContainer.rotate(-rotatedAngle, 0, 0);\r\n }\r\n if (angle !== undefined) {\r\n SVGContainer.rotate((angle as number) * (180 / Math.PI), 0, 0);\r\n }\r\n\r\n return SVGContainer;\r\n};\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { polygonCircleFromPoint } from '../../';\r\nimport { LineMiterRender } from './LineMiterRender';\r\nimport { LineMiterKind } from '../../core';\r\n\r\nexport class CircleLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth * 3;\r\n }\r\n\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [[[x + (this.miterSize / 2 + this.strokeWidth) * xMultiplier, y]]];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineMiterKind.FilledCircle;\r\n\r\n return new PolyRender(\r\n polygonCircleFromPoint(miterRings[0][0], this.miterSize),\r\n {\r\n fillColor: isFilled ? this.color : 'transparent',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n enclosed: true,\r\n }\r\n );\r\n }\r\n}\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\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 {\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\nimport { ClusterSymbol } from \"@evergis/sgis/es/symbols/ClusterSymbol\";\r\nimport { ClusterSymbolDc } from \"@evergis/api\";\r\n\r\nimport {\r\n SGisImageSymbolType,\r\n SGisPointSymbolType,\r\n SGisPolygonSymbolType,\r\n SGisPolylineSymbolType,\r\n SGisSymbolType,\r\n} from './types';\r\n\r\nexport function isSGisPointSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPointSymbolType {\r\n return (\r\n symbol instanceof PointSymbol ||\r\n symbol instanceof StaticImageSymbol ||\r\n symbol instanceof SquareSymbol ||\r\n symbol instanceof MaskedImage\r\n );\r\n}\r\n\r\nexport function isSGisImageSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisImageSymbolType {\r\n return symbol instanceof StaticImageSymbol || symbol instanceof MaskedImage;\r\n}\r\n\r\nexport function isSGisPolygonSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPolygonSymbolType {\r\n return (\r\n symbol instanceof PolygonSymbol ||\r\n symbol instanceof BrushFill ||\r\n symbol instanceof ImageFill\r\n );\r\n}\r\n\r\nexport function isSGisPolylineSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPolylineSymbolType {\r\n return symbol instanceof PolylineSymbol;\r\n}\r\n\r\nexport function isSGisH3Symbol(\r\n symbol: SGisSymbolType\r\n): symbol is H3Symbol {\r\n return symbol instanceof H3Symbol;\r\n}\r\n\r\nexport function isSGisClusterSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is ClusterSymbol {\r\n return !!(symbol as ClusterSymbolDc).singleObjectSymbol;\r\n}\r\n","import { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { H3Feature } from \"@evergis/sgis/es/features/H3Feature\";\r\nimport { plain } from '@evergis/sgis/es/Crs';\r\n\r\n/**\r\n * Моки фич для отображения превью символа\r\n * http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217\r\n */\r\n\r\nexport const viewBoxSize = 100;\r\n\r\nexport const pointFeature = new PointFeature([50, -50], { crs: plain });\r\n\r\nexport const lineFeature = new Polyline(\r\n [\r\n [0, -57],\r\n [26, -57],\r\n [40, -35],\r\n [60, -65],\r\n [74, -43],\r\n [100, -43],\r\n ],\r\n {\r\n crs: plain,\r\n }\r\n);\r\nexport const polygonFeature = new Polygon(\r\n [\r\n [20, -20],\r\n [80, -20],\r\n [80, -80],\r\n [20, -80],\r\n ],\r\n { crs: plain }\r\n);\r\nexport const h3gridFeature = new H3Feature(\r\n [\r\n [50, -15],\r\n [80, -33],\r\n [80, -67],\r\n [50, -85],\r\n [20, -67],\r\n [20, -33],\r\n [50, -15],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const lineLegendFeature = new Polyline(\r\n [\r\n [0, -50],\r\n [100, -50],\r\n ],\r\n {\r\n crs: plain,\r\n }\r\n);\r\n\r\nexport const polygonLegendFeature = new Polygon(\r\n [\r\n [20, -20],\r\n [80, -20],\r\n [80, -80],\r\n [20, -80],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const polygonMapLegendFeature = new Polygon(\r\n [\r\n [50, 0],\r\n [100, -25],\r\n [100, -75],\r\n [50, -100],\r\n [0, -75],\r\n [0, -25],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const MAP_LEGEND_FEATURES = {\r\n polygon: polygonMapLegendFeature,\r\n};\r\n\r\nexport const LEGEND_FEATURES = {\r\n point: pointFeature,\r\n polyline: lineLegendFeature,\r\n polygon: polygonLegendFeature,\r\n h3grid: h3gridFeature,\r\n};\r\n\r\nexport const MOCK_FEATURES = {\r\n point: pointFeature,\r\n polyline: lineFeature,\r\n polygon: polygonFeature,\r\n h3grid: h3gridFeature,\r\n} as const;\r\n","import { plain } from '@evergis/sgis/es/Crs';\r\n\r\nimport { isSGisH3Symbol, isSGisPolygonSymbol, isSGisPolylineSymbol } from './guards';\r\nimport {\r\n LEGEND_FEATURES,\r\n MAP_LEGEND_FEATURES,\r\n MOCK_FEATURES,\r\n viewBoxSize,\r\n} from './mockFeatures';\r\nimport { SGisSymbolType } from './types';\r\n\r\nexport function getSymbolRenders(\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize,\r\n features: Partial<typeof MOCK_FEATURES> = {}\r\n) {\r\n const resolution = viewBoxSize / size;\r\n const featuresToRender = { ...MOCK_FEATURES, ...features };\r\n\r\n if (isSGisPolygonSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.polygon,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n if (isSGisPolylineSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.polyline,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n if (isSGisH3Symbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.h3grid,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n return symbol.renderFunctionAsync(featuresToRender.point, resolution, plain);\r\n}\r\n\r\nexport const getMapLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => getSymbolRenders(symbol, size, MAP_LEGEND_FEATURES);\r\n\r\nexport const getLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => getSymbolRenders(symbol, size, LEGEND_FEATURES);\r\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { RenderForCanvas } from \"@evergis/sgis/es/painters/DomPainter/types\";\r\n\r\nexport function renderSymbolToCanvas(renders: Render[], canvas: Canvas) {\r\n renders.forEach(render => {\r\n canvas.draw(<RenderForCanvas>render);\r\n });\r\n}\r\n","import { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\r\nimport { PointSymbol as SPointSymbol, PointSymbolConstructorParams } from '@evergis/sgis/es/symbols/point/Point';\r\nimport { SquareSymbol as SSquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\r\nimport { Color } from '@evergis/color';\r\nimport { StaticImageSymbol as SStaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { ClusterSymbolDc, SvgParameterDc } from \"@evergis/api\";\r\n\r\nimport { getParameterValue } from '../core/classification';\r\n\r\nimport {\r\n ClassifyAble,\r\n H3GridSymbol,\r\n isPolygonHasHatchBrush,\r\n isPolygonHasPatternBrush,\r\n MaskedImageSymbol,\r\n Offset,\r\n ParameterValue,\r\n PointSymbol,\r\n PolygonSymbol,\r\n PolylineSymbols,\r\n SimpleOffset,\r\n SquareSymbol,\r\n StaticImageSymbol,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n} from '../core/style';\r\n\r\nimport {\r\n SGisBrushFill,\r\n SGisImageFill,\r\n SGisPolygonSymbol,\r\n SGisPolylineSymbol,\r\n} from './Evergis';\r\n\r\nimport { SGisSymbolType } from './types';\r\n\r\n// TODO create classes from unClassified symbols only\r\nexport function deserializeSymbol(\r\n symbol: StyleSymbolType\r\n): SGisSymbolType | null {\r\n switch (symbol.type) {\r\n case \"h3grid\":\r\n return deserializeH3Symbol(symbol as H3Symbol);\r\n case \"svgPointSymbol\":\r\n return deserializeSvgPointSymbol(symbol as SvgPointSymbol);\r\n case 'circlePointSymbol':\r\n return deserializePointSymbol(symbol as PointSymbol);\r\n case 'squarePointSymbol':\r\n return deserializeSquareSymbol(symbol as SquareSymbol);\r\n case 'maskedImagePointSymbol':\r\n return deserializeMaskedImageSymbol(symbol as MaskedImageSymbol);\r\n case 'imagePointSymbol':\r\n return deserializeImagePointSymbol(symbol as StaticImageSymbol);\r\n case 'polygonSymbol':\r\n return deserializePolygonSymbol(symbol as PolygonSymbol);\r\n case 'simplePolylineSymbol':\r\n case 'polylineSymbol':\r\n return deserializePolylineSymbol(symbol as PolylineSymbols);\r\n case \"clusterSymbol\":\r\n return deserializeSymbol((symbol as ClusterSymbolDc).singleObjectSymbol as StyleSymbolType);\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nfunction deserializeH3Symbol(symbol: H3GridSymbol) {\r\n return new H3Symbol({\r\n ...symbol,\r\n cellSize: getParameterValue(symbol.cellSize as number),\r\n strokeWidth: getParameterValue(symbol?.stroke?.width as number),\r\n strokeColor: getParameterValue(symbol?.stroke?.color as string),\r\n fillColor: getParameterValue(symbol?.fill?.color as string),\r\n });\r\n}\r\n\r\nfunction deserializePointSymbol(symbol: PointSymbol) {\r\n // @ts-ignore\r\n return new SPointSymbol(deserializePointSymbolParams(symbol));\r\n}\r\n\r\nexport const getOffsetParameterValue = (offset: Offset): SimpleOffset => [\r\n getParameterValue(offset?.[0]),\r\n getParameterValue(offset?.[1]),\r\n];\r\n\r\nfunction deserializeSvgPointSymbolParams({ type, data, size, offset, angle, background, figure }: SvgPointSymbol) {\r\n return {\r\n type: getParameterValue(type as ParameterValue),\r\n data: getParameterValue(data as ParameterValue),\r\n size: getParameterValue(size as ParameterValue),\r\n offset: getOffsetParameterValue(offset as Offset),\r\n angle: getParameterValue(angle as ParameterValue),\r\n ...(background\r\n ? {\r\n background: {\r\n ...(background as SvgParameterDc),\r\n fillColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.fillColor as string)),\r\n strokeColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.strokeColor as string)),\r\n strokeWidth: getParameterValue((background as SvgParameterDc)?.strokeWidth as ParameterValue),\r\n },\r\n }\r\n : {}),\r\n ...(figure\r\n ? {\r\n figure: {\r\n ...(figure as SvgParameterDc),\r\n fillColor: deserializeColor(\r\n getParameterValue((figure as SvgParameterDc)?.fillColor as ParameterValue) as string,\r\n ),\r\n },\r\n }\r\n : {}),\r\n };\r\n}\r\n\r\nfunction deserializeSvgPointSymbol(symbol: SvgPointSymbol) {\r\n return new SPointSymbol(deserializeSvgPointSymbolParams(symbol) as PointSymbolConstructorParams);\r\n}\r\n\r\nfunction deserializeSquareSymbol(symbol: SquareSymbol) {\r\n return new SSquareSymbol({\r\n ...deserializePointSymbolParams(symbol),\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n });\r\n}\r\n\r\nfunction deserializeMaskedImageSymbol(symbol: MaskedImageSymbol) {\r\n return new MaskedImage({\r\n ...symbol,\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n // @ts-ignore\r\n width: getParameterValue(symbol.width),\r\n // @ts-ignore\r\n height: getParameterValue(symbol.height),\r\n // @ts-ignore\r\n anchorPoint: deserializeAnchor(symbol.offset),\r\n // @ts-ignore\r\n imageSource: deserializeBase64(symbol.image),\r\n // @ts-ignore\r\n maskSource: deserializeBase64(symbol.imageMask),\r\n // @ts-ignore\r\n maskColor: deserializeColor(getParameterValue(symbol.maskedColor)),\r\n });\r\n}\r\n\r\nfunction deserializeImagePointSymbol(symbol: StaticImageSymbol) {\r\n return new SStaticImageSymbol({\r\n ...symbol,\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n // @ts-ignore\r\n width: getParameterValue(symbol.width),\r\n // @ts-ignore\r\n height: getParameterValue(symbol.height),\r\n // @ts-ignore\r\n anchorPoint: deserializeAnchor(symbol.offset),\r\n // @ts-ignore\r\n source: deserializeBase64(symbol.image),\r\n });\r\n}\r\n\r\nfunction deserializePolygonSymbol(symbol: PolygonSymbol) {\r\n if (isPolygonHasPatternBrush(symbol)) {\r\n return new SGisImageFill(symbol);\r\n }\r\n\r\n if (isPolygonHasHatchBrush(symbol)) {\r\n return new SGisBrushFill(symbol);\r\n }\r\n\r\n return new SGisPolygonSymbol(symbol);\r\n}\r\n\r\nfunction deserializePolylineSymbol(symbol: PolylineSymbols) {\r\n return new SGisPolylineSymbol(symbol);\r\n}\r\n\r\nfunction deserializePointSymbolParams({\r\n size,\r\n offset,\r\n strokeColor,\r\n strokeWidth,\r\n fillColor,\r\n}: PointSymbol | SquareSymbol) {\r\n return {\r\n size: getParameterValue(size as ClassifyAble<number>),\r\n offset: deserializeAnchor(offset as Offset),\r\n strokeWidth: getParameterValue(strokeWidth as ClassifyAble<number>),\r\n strokeColor: deserializeColor(\r\n getParameterValue(strokeColor as ClassifyAble<string>)\r\n ),\r\n fillColor: deserializeColor(\r\n getParameterValue(fillColor as ClassifyAble<string>)\r\n ),\r\n };\r\n}\r\n\r\nfunction deserializeBase64(base: string) {\r\n return `data:image/png;base64,${base}`;\r\n}\r\n\r\nexport function deserializeAnchor(offset: Offset) {\r\n // @ts-ignore\r\n return offset.map(getParameterValue);\r\n}\r\n\r\nfunction deserializeColor(color: string): string | null {\r\n return color ? new Color(color).toString() : null;\r\n}\r\n","import { SGisSymbolType } from './types';\r\nimport { isSGisImageSymbol, isSGisPointSymbol } from './guards';\r\n\r\nimport { clamp } from '../utils/math';\r\n\r\nexport const clampSymbol = (\r\n symbol: SGisSymbolType,\r\n min: number,\r\n max: number\r\n): SGisSymbolType => {\r\n if (isSGisImageSymbol(symbol)) {\r\n symbol.width = clamp(symbol.width, min, max);\r\n symbol.height = clamp(symbol.height, min, max);\r\n } else if (isSGisPointSymbol(symbol)) {\r\n symbol.size = clamp(symbol.size, min, max);\r\n }\r\n\r\n return symbol;\r\n};\r\n\r\nexport function centerAlignSymbol(symbol: SGisSymbolType) {\r\n if (isSGisImageSymbol(symbol)) {\r\n symbol.anchorPoint = [symbol.width / 2, symbol.height / 2];\r\n } else if (isSGisPointSymbol(symbol)) {\r\n symbol.offset = [0, 0];\r\n }\r\n\r\n return symbol;\r\n}\r\n\r\nexport const adjustSymbol = (\r\n symbol: SGisSymbolType,\r\n { size }: { size: number }\r\n) => centerAlignSymbol(clampSymbol(symbol, 0, size));\r\n","import { FeatureDc, GeometryDc, GeometryType } from '@evergis/api';\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 { ClassificationParameterExtended } from \"../classification\";\r\n\r\nexport function isValidParameter(parameter: ClassificationParameterExtended) {\r\n return !parameter?.includes(\"labelSymbol\") && !parameter?.includes(\"singleObjectSymbol\");\r\n}\r\n","import { ClusterSymbolDc } from \"@evergis/api\";\r\n\r\nimport { createLegendItem } from './createLegendItem';\r\nimport { isValidParameter } from \"./isValidParameter\";\r\nimport { ClassificationParameterExtended, unClassify } from '../classification';\r\nimport { EvergisStyle, StyleSymbolType } from '../style';\r\nimport { LayerLegend, LegendConfig } from './types';\r\n\r\nexport function createStyleLegend(\r\n style: EvergisStyle,\r\n config: LegendConfig\r\n): LayerLegend | null {\r\n const { classificationManager, symbol } = style;\r\n\r\n const items = classificationManager.filter(({ parameter }) => {\r\n return config.parameters && parameter\r\n ? config.parameters.includes(parameter)\r\n : isValidParameter(parameter as ClassificationParameterExtended)\r\n });\r\n\r\n if (!items.length) {\r\n return null;\r\n }\r\n\r\n return {\r\n symbol: unClassify((symbol as ClusterSymbolDc).singleObjectSymbol || symbol) as StyleSymbolType,\r\n items: items.map(createLegendItem(config)),\r\n };\r\n}\r\n","import {\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';\r\n\r\nimport { useLayerLegend } from './useLayerLegend';\r\n\r\nimport { LegendConfig } from '../../core';\r\n\r\nexport const useMapLegend = (\r\n layer?: FeatureLayerServiceInfoDc,\r\n config?: LegendConfig\r\n) => {\r\n const legend = useLayerLegend(layer, config);\r\n\r\n if (!legend) {\r\n return null;\r\n }\r\n\r\n return {\r\n symbol: legend.symbol,\r\n items: legend.items,\r\n };\r\n};\r\n","import { useLegendContext } from '../../contexts';\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\nconst DEFAULT_SYMBOL_SIZE = 26;\r\n\r\nexport function useSymbol(\r\n {\r\n symbol,\r\n size = DEFAULT_SYMBOL_SIZE,\r\n render = getSymbolRenders,\r\n maxWidth,\r\n }: UseSymbolParams,\r\n canvasRef: MutableRefObject<Canvas | null>\r\n) {\r\n useEffect(() => {\r\n if (canvasRef.current !== null && symbol !== undefined) {\r\n const canvas = canvasRef.current;\r\n setCanvasSize(canvas, size, maxWidth);\r\n\r\n render(symbol, size).then(renders => {\r\n renderSymbolToCanvas(renders, canvas);\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [symbol, size, maxWidth]);\r\n}\r\n\r\nfunction setCanvasSize(canvas: Canvas, size: number, maxWidth?: number) {\r\n canvas.node.height = size;\r\n canvas.node.width = maxWidth ? Math.min(size, maxWidth) : size;\r\n}\r\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\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 { useMapContext } from '../contexts';\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\nimport { useLayerOpacity } from \"./useLayerOpacity\";\r\n\r\nimport { LayerProps } from './LayerProps';\r\n\r\nexport function useFeatureLayer({\r\n zIndex,\r\n isDisplayed = true,\r\n features,\r\n opacity,\r\n}: FeatureLayerProps) {\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new FeatureLayer({ features, opacity }),\r\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\r\n update: (layer, [features]) => {\r\n layer.features = features;\r\n },\r\n },\r\n [features]\r\n );\r\n\r\n useLayerOrder(layer, zIndex);\r\n useLayerVisibility(layer, isDisplayed);\r\n useLayerOpacity(layer, opacity);\r\n\r\n return layer;\r\n}\r\n\r\nexport type FeatureLayerProps = {\r\n features: Feature[];\r\n} & LayerProps;\r\n","import { useCallback, useEffect } from 'react';\r\nimport { BboxChangeEndEvent, BboxChangeEvent, Map } from '@evergis/sgis/es/Map';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapBboxChange(\r\n onBboxChange?: (mapState: MapState) => void,\r\n force?: boolean\r\n) {\r\n const { map } = useMapContext();\r\n\r\n const event = force ? BboxChangeEvent : BboxChangeEndEvent;\r\n\r\n const handleBboxChange = useCallback(() => {\r\n onBboxChange && onBboxChange(getMapState(map));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [onBboxChange, map, event]);\r\n\r\n useEffect(() => {\r\n map.on(event.type, handleBboxChange);\r\n\r\n return () => {\r\n map.off(event.type, handleBboxChange);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [handleBboxChange, event]);\r\n}\r\n\r\nexport type MapState = {\r\n position: Coordinates;\r\n resolution: number;\r\n};\r\n\r\nexport function getMapState(map: Map): MapState {\r\n return {\r\n position: map.position.slice(0) as Coordinates,\r\n resolution: map.resolution,\r\n };\r\n}\r\n","import { MapResize } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { useCallback, useEffect } from 'react';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapResize(onResize?: (size: number[]) => void) {\r\n const { painter } = useMapContext();\r\n\r\n const handleMapResize = useCallback(() => {\r\n onResize && onResize([painter.width, painter.height]);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [onResize, painter]);\r\n\r\n useEffect(() => {\r\n painter.on(MapResize.type, handleMapResize);\r\n\r\n return () => {\r\n painter.off(MapResize.type, handleMapResize);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [handleMapResize]);\r\n}\r\n","import { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\r\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\r\nimport {\r\n EvergisDynamicLayer,\r\n EvergisLayer,\r\n isEvergisDynamicLayer,\r\n} from '@evergis/api';\r\nimport { useCallback, useMemo, useState } from 'react';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMount } from './useMount';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\ntype BboxCoordinates = [number, number, number, number];\r\n\r\nexport type Envelopes = {\r\n [layerName: string]: BboxCoordinates;\r\n};\r\n\r\nexport type MapPickResult = {\r\n clickPoint: Coordinates;\r\n envelopes: Envelopes;\r\n imageRectangle: [number, number, number, number];\r\n extentSr: number;\r\n};\r\n\r\nexport const useMapPick = (): MapPickResult | undefined => {\r\n const { map, painter } = useMapContext();\r\n const [geometryParams, setGeometryParams] = useState<MapPickResult>();\r\n\r\n const evergisLayers = useMemo(() => map.layers as unknown as EvergisLayer[], [\r\n map.layers,\r\n ]);\r\n\r\n const pick = useCallback(\r\n (event: sGisEvent) => {\r\n if (!(event instanceof sGisClickEvent)) {\r\n return;\r\n }\r\n\r\n const imageRectangle = [0, 0, painter.width, painter.height];\r\n const [x, y] = painter.getPxPosition(event.point.position);\r\n\r\n setGeometryParams({\r\n clickPoint: [Math.round(x), Math.round(y)],\r\n envelopes: collectLayerEnvelopes(evergisLayers),\r\n imageRectangle,\r\n extentSr: map.crs.wkid,\r\n } as MapPickResult);\r\n },\r\n\r\n [painter, evergisLayers, map.crs.wkid]\r\n );\r\n\r\n useMount({\r\n onMount: () => map.on('click', pick),\r\n onUnmount: () => map.off('click', pick),\r\n });\r\n\r\n return geometryParams;\r\n};\r\n\r\nfunction getLayerBboxCoors(layer: EvergisDynamicLayer): BboxCoordinates {\r\n return (\r\n // @ts-ignore TODO _currentRender prop on DynamicLayer private\r\n layer._currentRender &&\r\n // @ts-ignore\r\n layer._currentRender.bbox &&\r\n // @ts-ignore\r\n layer._currentRender.bbox.coordinates\r\n );\r\n}\r\n\r\nfunction collectLayerEnvelopes(layers: EvergisLayer[]) {\r\n let envelopes: Envelopes = {};\r\n\r\n for (const layer of layers) {\r\n if (!isEvergisDynamicLayer(layer)) {\r\n continue;\r\n }\r\n\r\n envelopes[layer.name] = getLayerBboxCoors(layer);\r\n }\r\n\r\n return envelopes;\r\n}\r\n","import { useCallback, useReducer } from 'react';\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 { useCallback, useState } from \"react\";\r\n\r\nexport const useToggle = (initial?: boolean): [boolean, VoidFunction, (value: boolean) => void] => {\r\n const [state, setState] = useState(initial !== undefined ? initial : false);\r\n const toggle = useCallback(() => setState(!state), [state]);\r\n\r\n return [state, toggle, setState];\r\n};\r\n","import React from 'react';\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';\r\nimport styled from 'styled-components';\r\n\r\nexport type CompoundIconProps = {\r\n geometryType: GeometryType;\r\n icons: Record<GeometryType, string>;\r\n};\r\n\r\nexport const CompoundIcon = styled.div<CompoundIconProps>`\r\n background: ${({ geometryType, icons }) =>\r\n `url(${icons[geometryType]}) center center / ${\r\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\r\n } no-repeat`};\r\n height: 32px;\r\n width: 32px;\r\n`;\r\n\r\nexport const ClusterSymbol = styled.div<{ color?: string }>`\r\n position: relative;\r\n width: 32px;\r\n height: 32px;\r\n\r\n :before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: inherit;\r\n height: inherit;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n opacity: 0.28;\r\n }\r\n \r\n :after {\r\n content: \"99\";\r\n position: absolute;\r\n top: 4px;\r\n left: 4px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 24px;\r\n height: 24px;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n color: white;\r\n font-size: 0.75rem;\r\n line-height: 1;\r\n }\r\n`;\r\n","import React, { PropsWithChildren } from 'react';\r\nimport { SvgPointSymbolDc } from \"@evergis/api\";\r\n\r\nimport { Symbol } from './Symbol';\r\nimport { ClusterSymbol } from \"./styled\";\r\nimport { getParameterValue, StyleSymbolType } from '../../core';\r\nimport { deserializeSymbol, adjustSymbol, isSGisClusterSymbol, SGisSymbolType } from '../../symbols';\r\n\r\ntype StyleSymbolProps = PropsWithChildren<{\r\n symbol: StyleSymbolType;\r\n size?: number;\r\n}>;\r\n\r\nconst MAX_SIZE = 32;\r\n\r\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\r\n symbol,\r\n size = MAX_SIZE,\r\n children,\r\n}) => {\r\n if (children) {\r\n return <>{children}</>;\r\n }\r\n\r\n let sGisSymbol = null;\r\n\r\n try {\r\n sGisSymbol = deserializeSymbol(symbol);\r\n } catch (e) {\r\n // TODO generate Error symbol\r\n }\r\n\r\n if (!sGisSymbol) {\r\n return null;\r\n }\r\n\r\n if (isSGisClusterSymbol(symbol as SGisSymbolType)) {\r\n const color = getParameterValue((sGisSymbol as SvgPointSymbolDc).background?.fillColor as string) ||\r\n getParameterValue((sGisSymbol as SvgPointSymbolDc).figure?.fillColor as string) || \"rgb(0, 170, 255)\";\r\n\r\n return <ClusterSymbol color={color} />\r\n }\r\n\r\n return (\r\n <Symbol\r\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\r\n size={size}\r\n />\r\n );\r\n};\r\n","import { Icon } from '@evergis/icons';\r\nimport styled from 'styled-components';\r\n\r\nexport const EvergisCardContainer = styled.div`\r\n position: absolute;\r\n top: 2.25rem;\r\n right: 0.5rem;\r\n width: 22.5rem;\r\n margin-bottom: 1rem;\r\n max-height: 90%;\r\n min-height: 1rem;\r\n background: #fff;\r\n border-radius: 4px;\r\n z-index: 1;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n flex-grow: 1;\r\n overflow: initial;\r\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\r\n\r\n ${Icon} {\r\n color: rgba(0, 0, 0, 0.65);\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &:hover {\r\n color: #1fb3aa;\r\n }\r\n }\r\n`;\r\n\r\nexport const StickyHeader = styled.div`\r\n display: flex;\r\n position: sticky;\r\n top: 0;\r\n flex-direction: column;\r\n background: #fff;\r\n`;\r\n\r\nexport const CardHeader = styled.div`\r\n display: flex;\r\n padding: 1.5rem 1.5rem 1rem;\r\n align-items: center;\r\n`;\r\n\r\nexport const CardTitle = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin: 0 0.5rem;\r\n flex-grow: 1;\r\n`;\r\n\r\nexport const CardControls = styled.div`\r\n display: flex;\r\n\r\n ${Icon} {\r\n margin: 0 0.5rem;\r\n }\r\n`;\r\n\r\nexport const FeatureName = styled.div`\r\n font-size: 1.25rem;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const LayerName = styled.div`\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const CardPagination = styled.div`\r\n display: flex;\r\n height: 2.5rem;\r\n padding: 0 1.5rem;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n justify-content: space-between;\r\n background: linear-gradient(\r\n 0deg,\r\n rgba(161, 186, 208, 0.12),\r\n rgba(161, 186, 208, 0.12)\r\n );\r\n`;\r\n\r\nexport const PaginationDescription = styled.div`\r\n display: flex;\r\n`;\r\n\r\nexport const CurrentFeatureIndex = styled.div`\r\n cursor: pointer;\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n`;\r\n\r\nexport const CardAttributes = styled.div`\r\n padding: 1rem 1.5rem;\r\n overflow-y: scroll;\r\n`;\r\n\r\nexport const AttributeContainer = styled.div`\r\n padding-bottom: 0.5rem;\r\n`;\r\n\r\nexport const AttributeTitle = styled.div`\r\n margin: 0.25rem 0;\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const AttributeValueContainer = styled.div`\r\n flex-wrap: wrap;\r\n display: flex;\r\n`;\r\n\r\nexport const SimpleAttribute = styled.div``;\r\n\r\nexport const ValueLink = styled.a`\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n text-decoration: none;\r\n`;\r\n","import React from 'react';\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';\nimport {\n IconButton,\n EverCloudCloseIcon,\n EverCloudStatisticsIcon,\n EverCloudZoomtoIcon,\n EverCloudPlayPrevIcon,\n EverCloudPlayNextIcon,\n} from \"@evergis/icons\";\n\nimport { StyleSymbol } from '../Symbol';\nimport { EvergisCardAttribute } from './EvergisCardAttribute';\n\nimport {\n CardAttributes,\n CardControls,\n CardHeader,\n CardPagination,\n CardTitle,\n CurrentFeatureIndex,\n EvergisCardContainer,\n FeatureName,\n LayerName,\n PaginationDescription,\n StickyHeader,\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 && <IconButton onClick={() => onStatistics(feature)}><EverCloudStatisticsIcon /></IconButton>}\n {!hideZoom && <IconButton onClick={zoom}><EverCloudZoomtoIcon /></IconButton>}\n <IconButton onClick={reset}><EverCloudCloseIcon /></IconButton>\n </CardControls>\n </CardHeader>\n {features.length > 1 ? (\n <CardPagination>\n <IconButton onClick={prev}><EverCloudPlayPrevIcon /></IconButton>\n <PaginationDescription>\n <CurrentFeatureIndex onClick={zoom}>\n {current + 1}\n </CurrentFeatureIndex>\n объект из {features.length}\n </PaginationDescription>\n <IconButton onClick={next}><EverCloudPlayNextIcon /></IconButton>\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';\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 { 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/icons\";\r\n\r\nimport { Placement, placementMixin } from '../../ui/mixins/placementMixin';\r\n\r\nexport type MapControlsProps = {\r\n placement?: Placement;\r\n vertical?: boolean;\r\n};\r\n\r\nconst mapControlBtnMixin = css`\r\n width: 2rem;\r\n height: 2rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n color: #fff;\r\n`;\r\n\r\ntype MapControlBtnProps = {\r\n onClick?: () => void;\r\n};\r\n\r\nexport const ZoomInBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// ZoomInBtn.defaultProps = { kind: \"plus\" };\r\n\r\nexport const ZoomOutBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// ZoomOutBtn.defaultProps = { kind: \"minus\" };\r\n\r\nexport const SearchBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// SearchBtn.defaultProps = { kind: \"search\" };\r\n\r\n// TODO not exists in fonts\r\nexport const FullscreenBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// FullscreenBtn.defaultProps = { kind: \"maximize\" };\r\n\r\nexport const MeasureBtn = styled(Icon)<\r\n MapControlBtnProps\r\n>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// MeasureBtn.defaultProps = { kind: \"measure_length\" };\r\n\r\nexport const MapControl = styled.div`\r\n border-radius: 0.15rem;\r\n background: rgba(28, 33, 48, 0.8);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: #fff;\r\n font-size: 1.5rem;\r\n cursor: pointer;\r\n height: auto;\r\n width: auto;\r\n padding: 0.25rem;\r\n`;\r\n\r\nexport const MapControls = styled.div<MapControlsProps>`\r\n position: absolute;\r\n display: flex;\r\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\r\n\r\n ${({ placement }) => placementMixin(placement)}\r\n\r\n ${MapControl} {\r\n margin-bottom: ${({ vertical }) => (vertical ? '0.5rem' : '0')};\r\n margin-right: ${({ vertical }) => (vertical ? '0' : '0.5rem')};\r\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\r\n }\r\n`;\r\n","import React from 'react';\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 { MouseEventHandler } from \"react\";\r\nimport styled, { css } from \"styled-components\";\r\n\r\nimport { MapControl } from \"../MapControls\";\r\nimport { isParameterType } from \"../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended } from \"../../core\";\r\nimport { MapLegendItemProps } from \"./types\";\r\n\r\nexport const MapLegendDescription = styled.div`\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const ItemText = styled.div`\r\n max-width: calc(100% - 2rem);\r\n font: ${({ theme: { fonts } }) => fonts.description};\r\n`;\r\n\r\nexport const ItemSeparator = styled.div`\r\n :after {\r\n content: \"-\";\r\n margin: 0 0.5rem;\r\n font-size: 0.75rem;\r\n }\r\n`;\r\n\r\nexport const SymbolContainer = styled(\"span\")`\r\n display: flex;\r\n justify-content: center;\r\n min-width: 16px;\r\n margin-right: 0.5rem;\r\n`;\r\n\r\nexport const ClassifiedItem = styled.div<{ isHidden?: boolean; isClusterFillColor?: boolean }>`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n /* cursor: ${({ isClusterFillColor }) => (isClusterFillColor ? \"default\" : \"pointer\")};\r\n pointer-events: ${({ isClusterFillColor }) => (isClusterFillColor ? \"none\" : \"auto\")};*/\r\n\r\n :not(:last-of-type) {\r\n margin-bottom: 0.25rem;\r\n }\r\n\r\n ${ItemText}, ${SymbolContainer} {\r\n transition: opacity 150ms;\r\n }\r\n\r\n ${ItemText} {\r\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 0.65)};\r\n }\r\n\r\n ${SymbolContainer} {\r\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 1)};\r\n }\r\n\r\n /* :hover {\r\n ${ItemText}, ${SymbolContainer} {\r\n opacity: 1;\r\n }\r\n }*/\r\n`;\r\n\r\nconst SymbolButtonWithClick = css`\r\n width: 3.875rem;\r\n height: 3.875rem;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${({ theme: { palette } }) => palette.elementDeep};\r\n }\r\n`;\r\n\r\nexport const SymbolButton = styled.span<{ onClick?: MouseEventHandler<HTMLSpanElement> | null }>`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: background-color 150ms;\r\n ${({ onClick }) => !!onClick && SymbolButtonWithClick};\r\n\r\n svg {\r\n max-width: 4rem;\r\n max-height: 4rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendControl = styled(MapControl)`\r\n cursor: default;\r\n`;\r\n\r\nexport const MapLegendContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n width: 100%;\r\n padding-bottom: 1rem;\r\n box-sizing: border-box;\r\n\r\n canvas {\r\n height: 1.625rem;\r\n width: 1.625rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendHeader = styled.div`\r\n max-width: 15rem;\r\n margin-bottom: 0.25rem;\r\n font-size: 0.75rem;\r\n font-weight: bold;\r\n`;\r\n\r\nexport const MapLegendDescriptionContainer = styled.div`\r\n margin-bottom: 0.5rem;\r\n font-weight: 400;\r\n font-size: 0.625rem;\r\n color: rgba(48, 69, 79, 0.65);\r\n`;\r\n\r\nexport const MinimizedLegendContainer = styled.div`\r\n width: calc(100% - 1.5rem);\r\n padding-right: 1.5rem;\r\n`;\r\n\r\nexport const MapLegendSectionContainer = styled.div`\r\n width: 100%;\r\n \r\n :not(:last-child) {\r\n margin-bottom: 1rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendValueDescr = styled.div`\r\n min-height: 1rem;\r\n margin-bottom: 0.25rem;\r\n font-size: 0.75rem;\r\n font-weight: 600;\r\n line-height: 1rem;\r\n`;\r\n\r\nconst SizeLegendItemMixin = (value = 0) => css`\r\n position: absolute;\r\n top: 0;\r\n left: 50%;\r\n flex: none;\r\n height: inherit;\r\n width: inherit;\r\n margin: 0 auto;\r\n background: none;\r\n border: none;\r\n\r\n :after {\r\n content: \"\";\r\n display: flex;\r\n border: 1px rgba(48, 69, 79, 0.28) solid;\r\n border-radius: 50%;\r\n margin: 0 0 0 -${value / 2}px;\r\n width: ${value}px;\r\n height: ${value}px;\r\n }\r\n`;\r\n\r\nconst StrokeWidthLegendItemMixin = (value = 0) => css`\r\n position: relative;\r\n background: none;\r\n border: none;\r\n display: flex;\r\n align-items: center;\r\n flex: none;\r\n width: calc(100% - 2rem);\r\n height: ${value}px;\r\n margin: 0 0 0.25rem 0;\r\n padding-left: 2rem;\r\n font-size: 0.75rem;\r\n \r\n :first-child, :last-child {\r\n height: auto;\r\n }\r\n \r\n :after {\r\n content: \"\";\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 1.5rem;\r\n height: ${value}px;\r\n margin-top: -${Math.round(value / 2)}px;\r\n background: rgb(224, 224, 224);\r\n }\r\n`;\r\n\r\nconst StrokeColorLegendItemMixin = css`\r\n margin-right: 0.5rem;\r\n width: 1.5rem;\r\n`;\r\n\r\nexport const MapLegendItem = styled.div<MapLegendItemProps>`\r\n flex: 1;\r\n height: ${({ parameter }) =>\r\n isParameterType([\"strokeColor\", \"stroke.color\"], parameter as ClassificationParameterExtended) ? 0.25 : 1}rem;\r\n background: ${({ value }) => typeof value === \"number\" ? \"none\" : value};\r\n border: 1px rgba(48, 69, 79, 0.1) solid;\r\n margin-right: -1px;\r\n color: rgba(48, 69, 79, 0.65);\r\n opacity: ${({ isHidden }) => isHidden ? 0.28 : 1};\r\n\r\n ${({ value, parameter }) => isParameterType(\"size\", parameter as ClassificationParameterExtended)\r\n && SizeLegendItemMixin(value as number)}\r\n\r\n ${({ value, parameter }) => isParameterType(\r\n [\"strokeWidth\", \"stroke.width\"],\r\n parameter as ClassificationParameterExtended,\r\n) && StrokeWidthLegendItemMixin(value as number)}\r\n`;\r\n\r\nexport const MapLegendOther = styled(MapLegendItem)`\r\n display: flex;\r\n align-items: center;\r\n flex: none;\r\n position: relative;\r\n width: 1rem;\r\n margin-left: 0.25rem;\r\n border-radius: 0.125rem;\r\n`;\r\n\r\nconst SizeLegendItemsMixin = css`\r\n position: relative;\r\n width: 2rem;\r\n height: 2rem;\r\n margin: 0 auto;\r\n\r\n ${MapLegendOther} {\r\n width: auto;\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nconst StrokeWidthLegendItemsMixin = css`\r\n position: relative;\r\n flex-direction: column;\r\n width: auto;\r\n\r\n ${MapLegendOther} {\r\n width: calc(100% - 2rem);\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nexport const SizeMinimizedLegend = styled.div`\r\n display: flex;\r\n flex-wrap: nowrap;\r\n align-items: center;\r\n margin: 0.5rem 0 0.25rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendSymbol = styled.div`\r\n width: 4rem;\r\n margin-right: 0.75rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendLabel = styled.div`\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendDown = styled.div`\r\n color: rgba(48, 69, 79, 0.65);\r\n`;\r\n\r\nexport const SizeMinimizedLegendUp = styled(SizeMinimizedLegendDown)``;\r\n\r\nconst SingleSizeLegendItemsMixin = css`\r\n width: 4rem;\r\n margin-right: 0.75rem;\r\n\r\n ${MapLegendItem}:after {\r\n margin: 0 auto;\r\n }\r\n`;\r\n\r\nconst SingleLegendItemsMixin = css<{\r\n parameter: ClassificationParameterExtended;\r\n isSize?: boolean;\r\n}>`\r\n justify-content: center;\r\n width: 2rem;\r\n height: auto;\r\n margin: 0;\r\n ${({ isSize }) => isSize && SingleSizeLegendItemsMixin}\r\n \r\n ${MapLegendItem} {\r\n position: relative;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n align-content: center;\r\n justify-content: center;\r\n margin: 0;\r\n height: auto;\r\n width: auto;\r\n\r\n ${({ parameter }) => isParameterType(\r\n [\"strokeColor\", \"stroke.color\"],\r\n parameter as ClassificationParameterExtended,\r\n) && StrokeColorLegendItemMixin}\r\n }\r\n`;\r\n\r\nexport const MapLegendItems = styled.div<{\r\n parameter: ClassificationParameterExtended;\r\n isSize?: boolean;\r\n isStrokeWidth?: boolean;\r\n isStrokeColor?: boolean;\r\n isSingle?: boolean;\r\n}>`\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n border-radius: 0.125rem;\r\n\r\n ${({ isSize }) => isSize && SizeLegendItemsMixin};\r\n ${({ isStrokeWidth }) => isStrokeWidth && StrokeWidthLegendItemsMixin};\r\n ${({ isSingle }) => isSingle && SingleLegendItemsMixin};\r\n`;\r\n\r\nexport const MapLegendItemsContainer = styled.div`\r\n display: flex;\r\n width: 100%;\r\n \r\n ${MapLegendItem} {\r\n :first-child {\r\n border-top-left-radius: 0.125rem;\r\n border-bottom-left-radius: 0.125rem;\r\n }\r\n\r\n :last-child {\r\n border-top-right-radius: 0.125rem;\r\n border-bottom-right-radius: 0.125rem;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendValues = styled.div`\r\n display: flex;\r\n width: 100%;\r\n margin-top: 0.5rem;\r\n font-size: 0.75rem;\r\n color: rgba(48, 69, 79, 0.65);\r\n`;\r\n\r\nexport const MapLegendValuesRange = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n width: calc(100% - 1.25rem);\r\n \r\n div {\r\n flex: 1;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n\r\n :first-child {\r\n margin-right: 0.5rem;\r\n }\r\n\r\n :last-child {\r\n margin-left: 0.5rem;\r\n text-align: right;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendValuesOther = styled(MapLegendOther)`\r\n justify-content: center;\r\n border: 0;\r\n overflow: visible;\r\n`;\r\n\r\nexport const MapLegendExpandButton = styled.div`\r\n cursor: pointer;\r\n margin-top: 0.1rem;\r\n font-size: 0.625rem;\r\n color: #1FB3AA;\r\n`;\r\n","import React, { FC, useCallback } from \"react\";\r\n\r\nimport { isNumeric } from \"../../../utils/isNumeric\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\nimport {\r\n MapLegendItem,\r\n MapLegendItems,\r\n MapLegendItemsContainer,\r\n MapLegendOther,\r\n MapLegendValueDescr,\r\n MapLegendValues,\r\n MapLegendValuesOther,\r\n MapLegendValuesRange,\r\n MinimizedLegendContainer,\r\n SizeMinimizedLegend,\r\n SizeMinimizedLegendDown,\r\n SizeMinimizedLegendLabel,\r\n SizeMinimizedLegendSymbol,\r\n SizeMinimizedLegendUp\r\n} from \"../styled\";\r\nimport { MinimizedLegendProps } from \"../types\";\r\n\r\nconst getValueFromLegendTitle = (title: string, minOrMax: \"min\" | \"max\"): string => {\r\n if (title.includes(\" - \")) {\r\n const result = title?.split(\" - \");\r\n\r\n return minOrMax === \"min\" ? result?.[0] : result?.[1];\r\n }\r\n\r\n if (title.includes(\",\")) {\r\n const result = title?.split(\",\");\r\n\r\n return result.join(\", \");\r\n }\r\n\r\n return title.split(\" \").find(isNumeric) || title || \"\";\r\n};\r\n\r\nexport const MinimizedLegend: FC<MinimizedLegendProps> = ({\r\n values,\r\n title,\r\n parameter,\r\n hiddenLegends,\r\n}) => {\r\n const currentValues = [...values];\r\n const other = currentValues.pop();\r\n const isSize = isParameterType(\"size\", parameter);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\r\n const titleMax = getValueFromLegendTitle(currentValues[0]?.title, \"max\");\r\n const titleMin = getValueFromLegendTitle(currentValues[currentValues.length - 1]?.title, \"min\");\r\n\r\n const checkIsHidden = useCallback((hiddenCondition?: string) => hiddenCondition\r\n ? hiddenLegends?.some(condition => hiddenCondition.includes(condition))\r\n : false, [hiddenLegends]);\r\n\r\n return (\r\n <MinimizedLegendContainer>\r\n {!!title && <MapLegendValueDescr>{title}</MapLegendValueDescr>}\r\n {isSize ? (\r\n <>\r\n <SizeMinimizedLegend>\r\n <SizeMinimizedLegendSymbol>\r\n <MapLegendItems parameter={parameter} isSize>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n />\r\n ))}\r\n </MapLegendItems>\r\n </SizeMinimizedLegendSymbol>\r\n <SizeMinimizedLegendLabel>\r\n <SizeMinimizedLegendDown>{currentValues[0]?.title}</SizeMinimizedLegendDown>\r\n <SizeMinimizedLegendUp>{currentValues[currentValues.length - 1]?.title}</SizeMinimizedLegendUp>\r\n </SizeMinimizedLegendLabel>\r\n </SizeMinimizedLegend>\r\n <SizeMinimizedLegend>\r\n <SizeMinimizedLegendSymbol>\r\n <MapLegendItems parameter={parameter} isSize>\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n </SizeMinimizedLegendSymbol>\r\n <SizeMinimizedLegendLabel>\r\n <SizeMinimizedLegendUp>Другое</SizeMinimizedLegendUp>\r\n </SizeMinimizedLegendLabel>\r\n </SizeMinimizedLegend>\r\n </>\r\n ) : isStrokeWidth ? (\r\n <MapLegendItems parameter={parameter} isStrokeWidth>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n >\r\n {(!index || index === currentValues.length - 1) && value.title}\r\n </MapLegendItem>\r\n ))}\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n >\r\n Другое\r\n </MapLegendOther>\r\n </MapLegendItems>\r\n ) : (\r\n <MapLegendItems parameter={parameter}>\r\n <MapLegendItemsContainer>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n />\r\n ))}\r\n </MapLegendItemsContainer>\r\n <MapLegendOther\r\n title=\"Другое\"\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n )}\r\n {typeof other?.parameterValue === \"string\" && (titleMax || titleMin) && (\r\n <MapLegendValues>\r\n <MapLegendValuesRange>\r\n <div>{titleMax}</div>\r\n <div>{titleMin}</div>\r\n </MapLegendValuesRange>\r\n <MapLegendValuesOther>-</MapLegendValuesOther>\r\n </MapLegendValues>\r\n )}\r\n </MinimizedLegendContainer>\r\n )\r\n}\r\n","import { useCallback, useMemo, useRef } from \"react\";\r\nimport { SVG } from \"@svgdotjs/svg.js\";\r\nimport { Color } from \"@evergis/color/es/Color\";\r\n\r\nimport { DEFAULT_SYMBOL_OFFSET } from \"../constants\";\r\nimport { manipulateSvgSymbol } from \"../../../utils/svg\";\r\nimport { isSizeClassification } from \"../../../utils/legend\";\r\nimport { getOffsetParameterValue } from \"../../../symbols\";\r\nimport { SvgEditorField, SvgSymbolBg } from \"../types\";\r\nimport { Offset, SvgPointSymbol } from \"../../../core\";\r\n\r\nexport const useSvgSymbol = (symbol: SvgPointSymbol, skipOffset?: boolean) => {\r\n const SVGWrapperRefElement = useRef<HTMLElement | null>(null);\r\n const SVGContainer = useMemo(() => SVG(), []);\r\n\r\n const initSvg = useCallback(() => {\r\n SVGContainer.addTo(SVGWrapperRefElement.current as HTMLElement);\r\n }, [SVGContainer]);\r\n\r\n const getSvgData = useCallback(() => SVGContainer.svg(), [SVGContainer]);\r\n\r\n const manipulateSvg = useCallback(\r\n ({ svg, bg, newSymbol }: { svg: string; bg?: SvgSymbolBg; newSymbol?: SvgPointSymbol }) => {\r\n manipulateSvgSymbol(SVGContainer, newSymbol || symbol, svg, bg);\r\n },\r\n [SVGContainer, symbol],\r\n );\r\n\r\n const getUpdatedSvgSymbol = useCallback(\r\n (field: keyof SvgEditorField, value: Color | number | string) => {\r\n const { data, offset } = symbol;\r\n const newValue = value instanceof Color ? value.toString(\"rgba\") : value;\r\n\r\n const newSymbol = JSON.parse(\r\n JSON.stringify({\r\n ...symbol,\r\n offset: skipOffset\r\n ? DEFAULT_SYMBOL_OFFSET\r\n : isSizeClassification(field)\r\n ? getOffsetParameterValue(offset as Offset)\r\n : offset,\r\n }),\r\n );\r\n\r\n if (field.indexOf(\".\") !== -1) {\r\n const parts = field.split(\".\");\r\n\r\n if (newSymbol[parts[0]]?.[parts[1]]) {\r\n newSymbol[parts[0]][parts[1]] = newValue;\r\n } else {\r\n newSymbol[parts[0]] = {\r\n ...newSymbol[parts[0]],\r\n [parts[1]]: newValue,\r\n ...(parts[0] === \"background\"\r\n ? { type: newSymbol.background.type, id: \"symbol-bg\" }\r\n : parts[0] === \"figure\"\r\n ? { id: \"symbol-figure\" }\r\n : {}),\r\n };\r\n }\r\n } else {\r\n newSymbol[field] = newValue;\r\n }\r\n\r\n manipulateSvg({ svg: data as string, newSymbol, bg: newSymbol.background?.type });\r\n\r\n return { ...newSymbol, data: SVGContainer.svg() };\r\n },\r\n [SVGContainer, manipulateSvg, skipOffset, symbol],\r\n );\r\n\r\n return {\r\n svgRef: SVGWrapperRefElement,\r\n initSvg,\r\n getSvgData,\r\n manipulateSvg,\r\n getUpdatedSvgSymbol,\r\n };\r\n};\r\n","import React, { FC, memo, useCallback, useEffect, useMemo } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { SvgParameterDc, PointLabelSymbolDc } from \"@evergis/api\";\r\n\r\nimport { SymbolButton } from \"../styled\";\r\nimport { useSvgSymbol } from \"../hooks/useSvgSymbol\";\r\nimport { SvgPointSymbol } from \"../../../core\";\r\nimport { SvgSymbolProps } from \"../types\";\r\n\r\nconst SvgSymbolContainer = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst SvgSymbolLabel = styled.div<{ fontSettings?: PointLabelSymbolDc }>`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n color: #fff;\r\n ${({ fontSettings }) => !!fontSettings?.fontFamily && `font-family: ${fontSettings.fontFamily}`};\r\n ${({ fontSettings }) => !!fontSettings?.fontWeight && `font-weight: ${fontSettings.fontWeight}`};\r\n ${({ fontSettings }) => !!fontSettings?.fontStyle && `font-style: ${fontSettings.fontStyle}`};\r\n ${({ fontSettings }) => !!fontSettings?.fontColor && `color: ${fontSettings.fontColor}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontSize &&\r\n `font-size: ${typeof fontSettings.fontSize === \"string\" ? fontSettings.fontSize : `${fontSettings.fontSize}px`}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.haloColor &&\r\n !!fontSettings?.haloWidth &&\r\n `-webkit-text-stroke: ${fontSettings.haloWidth}px ${fontSettings.haloColor};`};\r\n`;\r\n\r\nexport const SvgSymbol: FC<SvgSymbolProps> = memo(\r\n ({ svg, bg, symbol, title, skipOffset, text, fontSettings, onClick }) => {\r\n const { svgRef, initSvg, getSvgData, manipulateSvg } = useSvgSymbol(symbol, skipOffset);\r\n\r\n const onSelectSymbol = useCallback(() => {\r\n onClick?.(getSvgData(), {\r\n ...symbol,\r\n ...(bg ? { background: { ...(symbol.background as SvgParameterDc), type: bg } } : {}),\r\n } as SvgPointSymbol);\r\n }, [bg, getSvgData, onClick, symbol]);\r\n\r\n const renderSymbol = useMemo(\r\n () => <SymbolButton ref={svgRef} title={title} onClick={onClick ? onSelectSymbol : undefined} />,\r\n [svgRef, title, onClick, onSelectSymbol],\r\n );\r\n\r\n useEffect(() => {\r\n initSvg();\r\n }, [initSvg]);\r\n\r\n useEffect(() => {\r\n manipulateSvg({ svg, bg, newSymbol: symbol });\r\n }, [svg, symbol, bg, manipulateSvg]);\r\n\r\n return text ? (\r\n <SvgSymbolContainer>\r\n {renderSymbol}\r\n <SvgSymbolLabel fontSettings={fontSettings}>{text}</SvgSymbolLabel>\r\n {!!fontSettings?.haloColor && !!fontSettings?.haloWidth && (\r\n <SvgSymbolLabel fontSettings={{ ...fontSettings, haloColor: undefined, haloWidth: undefined }}>\r\n {text}\r\n </SvgSymbolLabel>\r\n )}\r\n </SvgSymbolContainer>\r\n ) : (\r\n renderSymbol\r\n );\r\n },\r\n);\r\n","import React, { FC, useMemo } from \"react\";\r\n\r\nimport { SvgSymbol } from \"./SvgSymbol\";\r\nimport { Symbol, SGisSymbolType } from \"../../../\";\r\nimport { serializeSvgPointSymbol } from \"../../../utils/legend\";\r\nimport { SGisSymbol } from \"../types\";\r\nimport { SvgPointSymbol } from \"../../../core\";\r\n\r\nexport const SymbolByType: FC<{\r\n symbol?: SGisSymbol;\r\n size?: number;\r\n type?: string;\r\n svg?: string;\r\n skipOffset?: boolean;\r\n}> = ({ type, symbol, size, svg, skipOffset }) => {\r\n const defaultSymbol = useMemo(() => <Symbol symbol={symbol as SGisSymbolType} size={size} />, [symbol, size]);\r\n\r\n switch (type) {\r\n case \"svgPointSymbol\":\r\n return svg ? (\r\n <SvgSymbol\r\n svg={svg}\r\n size={size}\r\n skipOffset={skipOffset}\r\n symbol={serializeSvgPointSymbol(symbol as SvgPointSymbol) as unknown as SvgPointSymbol}\r\n />\r\n ) : (\r\n defaultSymbol\r\n );\r\n default:\r\n return defaultSymbol;\r\n }\r\n};\r\n","import React, { FC, memo } from \"react\";\r\n\r\nimport { SymbolByType } from \"./SymbolByType\";\r\nimport { DEFAULT_LEGEND_SYMBOL_SIZE } from \"../constants\";\r\nimport { getLegendSymbolSize } from \"../../../utils/legend\";\r\nimport { deserializeSymbol } from \"../../../symbols\";\r\nimport { StyleSymbolType, SvgPointSymbol } from \"../../../core\";\r\nimport { SGisSymbol } from \"../types\";\r\n\r\nexport const LegendSymbolRenderer: FC<{ symbol: StyleSymbolType }> = memo(({ symbol }) => {\r\n /* return isClusterSymbol(symbol) ? (\r\n <ClusterLegendContainer>\r\n <ClusterSymbolPreview symbol={symbol as ClusterSymbolDc} />\r\n </ClusterLegendContainer>\r\n ) : (\r\n <SymbolByType\r\n symbol={deserializeSymbol(symbol)}\r\n size={getLegendSymbolSize(symbol) || DEFAULT_LEGEND_SYMBOL_SIZE}\r\n type={symbol.type}\r\n svg={(symbol as SvgPointSymbol).data}\r\n skipOffset\r\n />\r\n );*/\r\n return (\r\n <SymbolByType\r\n symbol={deserializeSymbol(symbol) as SGisSymbol}\r\n size={getLegendSymbolSize(symbol) || DEFAULT_LEGEND_SYMBOL_SIZE}\r\n type={symbol.type}\r\n svg={(symbol as SvgPointSymbol).data}\r\n skipOffset\r\n />\r\n );\r\n});\r\n","import React, { FC, Fragment, useCallback, useMemo } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport get from \"lodash/get\";\r\n\r\nimport {\r\n ClassifiedItem,\r\n ItemSeparator,\r\n ItemText,\r\n MapLegendDescription,\r\n MapLegendItem,\r\n MapLegendItems,\r\n SymbolContainer\r\n} from \"../styled\";\r\nimport { LegendSymbolRenderer } from \"./LegendSymbolRenderer\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended, ParameterByAttribute, ParameterValue } from \"../../../core\";\r\nimport { MaximizedLegendProps } from \"../types\";\r\n\r\nexport const MaximizedLegend: FC<MaximizedLegendProps> = ({\r\n symbol: sectionSymbol,\r\n parameter,\r\n values,\r\n index: sectionIndex,\r\n attributeType,\r\n}) => {\r\n const { t } = useTranslation(\"common\");\r\n const isDate = attributeType === \"DateTime\";\r\n const isSize = isParameterType(\"size\", parameter as ClassificationParameterExtended);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter as ClassificationParameterExtended);\r\n const isStrokeColor = isParameterType([\"strokeColor\", \"stroke.color\"], parameter as ClassificationParameterExtended);\r\n\r\n const parameterValue = useMemo(\r\n () => get(sectionSymbol, parameter) as unknown as ParameterByAttribute<ParameterValue>,\r\n [sectionSymbol, parameter],\r\n );\r\n\r\n const renderColumn = useCallback((column: string, index?: number) => {\r\n const dateTime = column.split(\" \");\r\n\r\n return (\r\n <Fragment key={index}>\r\n <ItemText title={column}>\r\n {dateTime[0]}\r\n <MapLegendDescription>{dateTime[1]}</MapLegendDescription>\r\n </ItemText>\r\n {index === 0 && <ItemSeparator />}\r\n </Fragment>\r\n );\r\n }, []);\r\n\r\n const renderItemText = useCallback(\r\n (title: string, index: number) => {\r\n if (!title) {\r\n return <ItemText>{t(\"classification.other\")}</ItemText>;\r\n }\r\n\r\n const columns = title?.split(\" - \");\r\n const isSingleColumn = columns?.length === 1;\r\n\r\n if (!isDate || (index && isSingleColumn)) {\r\n return <ItemText title={title}>{title}</ItemText>;\r\n }\r\n\r\n if (!index && isSingleColumn) {\r\n return (\r\n <>\r\n <ItemText title=\"∞\">∞</ItemText>\r\n <ItemSeparator />\r\n {renderColumn(title)}\r\n </>\r\n );\r\n }\r\n\r\n return <>{columns.map(renderColumn)}</>;\r\n },\r\n [isDate, renderColumn, t],\r\n );\r\n\r\n const renderLegend = useCallback(\r\n ({ symbol, title /* , hiddenCondition*/ }, index: number) => {\r\n if (!symbol) return null;\r\n\r\n // const isClusterFillColor = checkIsClusterFillColor(symbol, parameter);\r\n\r\n return (\r\n <ClassifiedItem\r\n key={sectionIndex + title + index}\r\n /* isHidden={isHidden(hiddenCondition)}\r\n isClusterFillColor={isClusterFillColor}\r\n onClick={() => toggleHiddenLegend(hiddenCondition)}*/\r\n >\r\n {isSize || isStrokeWidth || isStrokeColor ? (\r\n <MapLegendItems\r\n parameter={parameter as ClassificationParameterExtended}\r\n isSize={isSize}\r\n isStrokeWidth={isStrokeWidth}\r\n isStrokeColor={isStrokeColor}\r\n isSingle\r\n >\r\n <MapLegendItem\r\n key={`${title}${index}`}\r\n title={title}\r\n value={(parameterValue?.values[index]?.value || parameterValue?.defaultValue) as string | number}\r\n parameter={parameter as ClassificationParameterExtended}\r\n />\r\n </MapLegendItems>\r\n ) : (\r\n <SymbolContainer>\r\n <LegendSymbolRenderer\r\n symbol={symbol /* isClusterFillColor ? symbol : getExtractedSymbol(symbol, true)*/}\r\n />\r\n </SymbolContainer>\r\n )}\r\n {renderItemText(title, index)}\r\n </ClassifiedItem>\r\n );\r\n },\r\n [\r\n isSize,\r\n isStrokeColor,\r\n isStrokeWidth,\r\n parameter,\r\n parameterValue?.defaultValue,\r\n parameterValue?.values,\r\n renderItemText,\r\n sectionIndex,\r\n ],\r\n );\r\n\r\n return <>{values.map(renderLegend)}</>;\r\n};\r\n","import React, { FC } from 'react';\r\n\r\nimport { MapLegendDescriptionContainer } from \"../styled\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended } from \"../../../core\";\r\n\r\nexport const LegendParameterDescription: FC<{ parameter: ClassificationParameterExtended }> = ({ parameter }) => {\r\n const isSize = isParameterType(\"size\", parameter);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\r\n const isStrokeColor = isParameterType([\"strokeColor\", \"stroke.color\"], parameter);\r\n\r\n return (\r\n <MapLegendDescriptionContainer>\r\n {isStrokeWidth || isStrokeColor\r\n ? (isStrokeWidth ? \"Толщина обводки\" : \"Цвет обводки\")\r\n : isSize ? \"Размер знака\" : \"Цвет символа\"}\r\n </MapLegendDescriptionContainer>\r\n );\r\n};\r\n","import React, { FC } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nimport { MinimizedLegend } from \"./MinimizedLegend\";\r\nimport { MaximizedLegend } from \"./MaximizedLegend\";\r\nimport { LegendParameterDescription } from \"./LegendParameterDescription\";\r\nimport { MapLegendExpandButton, MapLegendHeader, MapLegendSectionContainer } from \"../styled\";\r\nimport { getMaximizedLegendValues, getMinimizedLegendValues } from \"../../../utils/legend\";\r\nimport { useToggle } from \"../../../hooks\";\r\nimport { ClassificationParameterExtended } from \"../../../core\";\r\nimport { LegendSectionProps } from \"../types\";\r\n\r\nexport const LegendSection: FC<LegendSectionProps> = ({\r\n symbol,\r\n param,\r\n params,\r\n classified,\r\n attributeTitle,\r\n attributeType,\r\n index,\r\n}) => {\r\n const { t } = useTranslation(\"common\");\r\n const [isExpanded, toggleExpanded] = useToggle();\r\n\r\n return (\r\n <MapLegendSectionContainer>\r\n <MapLegendHeader>{attributeTitle}</MapLegendHeader>\r\n <LegendParameterDescription parameter={param} />\r\n {isExpanded ? (\r\n <MaximizedLegend\r\n key={param}\r\n symbol={symbol}\r\n parameter={param as ClassificationParameterExtended}\r\n attributeType={attributeType}\r\n index={index}\r\n values={getMaximizedLegendValues(\r\n attributeType,\r\n param as ClassificationParameterExtended,\r\n params,\r\n classified,\r\n symbol,\r\n index,\r\n t(\"classification.other\"),\r\n )}\r\n />\r\n ) : (\r\n <MinimizedLegend\r\n key={param}\r\n values={getMinimizedLegendValues(attributeType, classified, index)}\r\n defaultValue={classified.defaultValue as string}\r\n parameter={param as ClassificationParameterExtended}\r\n attributeType={attributeType}\r\n />\r\n )}\r\n <MapLegendExpandButton onClick={toggleExpanded}>\r\n {t(isExpanded ? \"toggleMenu\" : \"Развернуть\")}\r\n </MapLegendExpandButton>\r\n </MapLegendSectionContainer>\r\n );\r\n};\r\n","import React, { FC } from \"react\";\r\nimport { FeatureLayerServiceInfoDc } from \"@evergis/api\";\r\n\r\nimport { LegendSection } from \"./components\";\r\nimport { MapLegendContainer } from \"./styled\";\r\nimport { ClassifiedList, getAttributeType, getClassified } from \"../../utils/legend\";\r\nimport { ClassificationParameterExtended, getAttributeNameFromCondition } from \"../../core\";\r\nimport { getLayerAttributes } from \"../../core/attributes/utils\";\r\n\r\nexport const Legend: FC<{ layerInfo: FeatureLayerServiceInfoDc }> = ({ layerInfo }) => {\r\n const classified = getClassified(layerInfo);\r\n const params = Object.keys(classified) as ClassificationParameterExtended[];\r\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\r\n\r\n return (\r\n <MapLegendContainer>\r\n {Object.keys(classified).map((param, index) => {\r\n const attributeName = getAttributeNameFromCondition(\r\n classified[param as keyof ClassifiedList].values[0]?.condition\r\n ) as string;\r\n const attributeAlias = attributes.find(({ name }) => name === attributeName)?.alias;\r\n\r\n return (\r\n <LegendSection\r\n key={index}\r\n symbol={layerInfo.style?.symbol}\r\n attributeType={getAttributeType(layerInfo, attributeName)}\r\n attributeTitle={attributeAlias || attributeName}\r\n classified={classified[param as keyof ClassifiedList]}\r\n param={param as ClassificationParameterExtended}\r\n params={params}\r\n index={index}\r\n />\r\n );\r\n })}\r\n </MapLegendContainer>\r\n );\r\n};\r\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 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","NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","formatDate","dateFormat","ClientDefaultFormat","defaultValue","dateValue","format","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","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","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","isH3GridSymbol","isSvgPointSymbol","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","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","isNumeric","number","parseFloat","isFinite","isParameterType","types","toLowerCase","isLayerService","getAttributeFromCondition","parts","startsWith","getExprFromCondition","partIndex","expr","part","getSignFromConditionPart","getValueFromConditionPart","isRangeCondition","getSymbolParameterInfo","PARAMETER_INFOS","DEFAULT_PARAMETER_INFO","formatValue","calculatedParameter","serialize","formatUniqueClassValue","formatRangeClassValue","formattedFrom","formattedTo","checkLayerHasLegend","layerInfo","SYMBOL_CLASSIFICATION","geometryType","param","paramValue","get","getTitleFromCondition","createValueTitle","attributeType","sign","isFirstFrom","DEFAULT_LEGEND_STYLES","maskedColor","SYMBOL_SIZE_PARAMETERS","DEFAULT_LEGEND_SIZES","circlePointSymbol","squarePointSymbol","imagePointSymbol","maskedImagePointSymbol","svgPointSymbol","getNonClassifiedParamValue","baseSymbol","classificationsParams","defaultParameterValue","getParameterFromSymbol","updateSymbolParameter","createPointSymbol","getDimensions","ratio","createImagePointSymbol","createLineSymbol","createPolygonSymbol","createH3Symbol","createLegendSymbol","getMinimizedLegendValues","getMaximizedLegendValues","classified","sectionIndex","otherTitle","other","items","getClassified","classifyParams","getSymbolStrokeWidth","parameterFromSymbol","getLegendSymbolSize","cellSize","EXTRA_BORDER_SIZE","DEFAULT_LEGEND_SYMBOL_SIZE","serializeSvgPointSymbol","figureFillColor","figure","bgFillColor","angle","id","SvgSymbolBg","SIZE_PARAMETERS","isSizeClassification","getServiceConfiguration","emptyServiceConfiguration","configuration","GEOMETRY_ATTRIBUTE","DEFAULT_ID_ATTRIBUTE_NAME","getAttributesConfiguration","serviceConfiguration","emptyAttributesConfiguration","geometryAttribute","idAttribute","tableName","attributesConfiguration","getLayerDefinition","emptyLayerDefinition","GeometryType","titleAttribute","getAttributeType","metersToPixels","meters","zeroPoint","projectTo","maxWidthPoint","widthDistance","distance","pxK","polygonCircleFromPoint","diameter","coordinates","radius","endAngle","step","start","end","ang","cos","sin","DEFAULT_SYMBOL_SIZE","DEFAULT_SYMBOL_WITH_BG_SIZE","DEFAULT_SYMBOL_FILL_COLOR","DEFAULT_SYMBOL_STROKE_COLOR","DEFAULT_SYMBOL_OFFSET","Polyline","Point","SYMBOL_LIMITS","SIZE_MIN","SIZE_MAX","SIZE_STEP","GRID_SIZE_MIN","GRID_SIZE_MAX","MIN_OBJECTS_COUNT","MAX_OBJECTS_COUNT","MIN_CLUSTER_SIZE","MAX_CLUSTER_SIZE","STROKE_WIDTH_STEP","ANGLE_MIN","ANGLE_MAX","ANGLE_STEP","PREVIEW_SIZE_MAX","PREVIEW_SIZE_MAX_WIDTH","classifyAble","units","deserialize","convertSvgToBase64","svg","window","btoa","createSvgGradient","gradient","forEach","stop","manipulateSvgSymbol","SVGContainer","bg","symbolData","data","clear","isUploadedFile","innerSvg","uploadedViewBox","exec","viewbox","hasBg","defaultSize","currentSize","viewBox","currentBg","each","item","rootTransform","transformParts","transform","rotatedAngle","rotate","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","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","eventName","flag","listenDomEvent","Symbol","isSGisPointSymbol","StaticImageSymbol","SquareSymbol","MaskedImage","isSGisImageSymbol","isSGisPolygonSymbol","PolygonSymbol","BrushFill","ImageFill","isSGisPolylineSymbol","isSGisH3Symbol","H3Symbol","isSGisClusterSymbol","singleObjectSymbol","viewBoxSize","pointFeature","plain","lineFeature","polygonFeature","h3gridFeature","H3Feature","lineLegendFeature","polygonLegendFeature","polygonMapLegendFeature","MAP_LEGEND_FEATURES","LEGEND_FEATURES","polyline","h3grid","MOCK_FEATURES","getSymbolRenders","featuresToRender","renderFunctionAsync","getMapLegendSymbolRenders","getLegendSymbolRenders","renderSymbolToCanvas","draw","deserializeSymbol","deserializeH3Symbol","deserializeSvgPointSymbol","deserializePointSymbol","deserializeSquareSymbol","deserializeMaskedImageSymbol","deserializeImagePointSymbol","deserializePolygonSymbol","deserializePolylineSymbol","SPointSymbol","deserializePointSymbolParams","getOffsetParameterValue","deserializeSvgPointSymbolParams","deserializeColor","SSquareSymbol","anchorPoint","deserializeAnchor","imageSource","deserializeBase64","image","maskSource","imageMask","maskColor","SStaticImageSymbol","source","base","clampSymbol","centerAlignSymbol","adjustSymbol","EvergisFeature","displayName","geometry","layerName","layerAlias","sr","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","findFeatureLayer","evaluateFeature","featureLayer","OTHERS_TITLE","createLegendItem","renderTitle","skipDefaultValue","defaultLegendValue","legendValues","withDefault","reversedValues","isValidParameter","createStyleLegend","config","parameters","formatArea","measure","perimiter","coords","firstPoint","lastPoint","softEquals","getScale","scale","scales","pow","useLegend","DEFAULT_LEGEND_CONFIG","useLayerLegend","styleProxy","useMapLegend","legend","LEGEND_SYMBOL_MAX_SIZE","useLegendValueSymbol","valueSymbol","sGisSymbol","e","useSymbol","canvasRef","maxWidth","setCanvasSize","then","useCanvas","useRef","ref","Canvas","useMount","onMount","onUnmount","useProperty","deps","factory","destructor","propRef","newProp","useUpdate","onUpdate","shouldUpdate","useLayerOrder","insertLayer","useLayerVisibility","isDisplayed","useLayerOpacity","opacity","useEvergisDynamicLayer","dataFilterId","onLoadStart","onLoadEnd","EvergisDynamicLayer","indexOf","removeLayer","useEvergisTileLayer","sourceUrl","subDomains","EvergisTileLayer","useFeatureLayer","useMapBboxChange","onBboxChange","force","BboxChangeEvent","BboxChangeEndEvent","handleBboxChange","getMapState","off","useMapResize","onResize","handleMapResize","MapResize","useMapPick","geometryParams","setGeometryParams","evergisLayers","pick","sGisClickEvent","imageRectangle","getPxPosition","clickPoint","envelopes","collectLayerEnvelopes","extentSr","wkid","getLayerBboxCoors","_currentRender","isEvergisDynamicLayer","useMapState","dispatch","useReducer","mapStateReducer","mapState","useMapView","getLevel","useMapLevel","useMapWrapper","wrapperRef","byScale","useMaxMinScale","minScale","maxScale","currentPosition","currentResolution","updateMapResolution","newResolution","Number","MAX_VALUE","pow10","floor","d","useCorrectedResolution","segmentLength","useScale","minLength","correctedResolution","currentScale","useUpdateMapView","shouldUpdateMapState","shouldUpdatePosition","shouldUpdateResolution","useTooltip","targetFeatures","labelFeature","events","onClickMap","currentFeatureEvents","onMouseOver","onMouseMove","onMouseOut","onClick","hasListener","onSetLabelFeature","clickMode","onRemoveLabelFeature","doNotBubbleToMap","stopPropagation","has","tooltipParams","target","isMap","featureEvents","useClusterLayer","onChangeGrid","clusterSymbol","currentFeatures","gridClusterProvider","GridClusterProvider","clusterLayer","ClusterLayer","INIT_FEATURES","useEvergisSelect","onPick","onFeatures","mapPickResult","setFeatures","resetSelection","useCrs","none","useDraggableMarker","onChange","pointEditor","PointEditor","isActive","activeLayer","onMapClick","addLayer","hasMapClick","useMetersToPixels","useMetersToPixelsCb","useDebouncedCallback","interval","debounce","cb","useToggle","state","setState","toggle","CompoundIcon","styled","div","icons","ClusterSymbol","MAX_SIZE","StyleSymbol","EvergisCardContainer","Icon","StickyHeader","CardHeader","CardTitle","CardControls","FeatureName","LayerName","CardPagination","PaginationDescription","CurrentFeatureIndex","CardAttributes","AttributeContainer","AttributeTitle","AttributeValueContainer","SimpleAttribute","ValueLink","MailValue","rel","href","PhoneValue","phone","UrlValue","AttributeValue","key","punycodeDecode","domains","punycode","toUnicode","error","EvergisCardAttribute","StyledCard","onAttributes","onStatistics","onFeatureChange","headerExtra","hideZoom","IconButton","EverCloudStatisticsIcon","EverCloudZoomtoIcon","EverCloudCloseIcon","EverCloudPlayPrevIcon","EverCloudPlayNextIcon","EvergisCard","renderCard","hookProps","cardProps","truthly","setSelected","toSgis","useSGisFeatures","currentIndex","EvergisSelectLayer","sGisFeatures","useTileLayer","maskUrl","tileLayerParams","TileLayer","defaultZIndex","EvergisSelect","topLeft","css","topRight","bottomLeft","bottomRight","placementMixin","placement","mapControlBtnMixin","ZoomInBtn","ZoomOutBtn","SearchBtn","FullscreenBtn","MeasureBtn","MapControl","MapControls","vertical","Measure","Search","Fullscreen","MapLegendDescription","ItemText","theme","fonts","description","ItemSeparator","SymbolContainer","ClassifiedItem","isClusterFillColor","isHidden","SymbolButtonWithClick","palette","elementDeep","SymbolButton","span","MapLegendControl","MapLegendContainer","MapLegendHeader","MapLegendDescriptionContainer","MinimizedLegendContainer","MapLegendSectionContainer","MapLegendValueDescr","SizeLegendItemMixin","StrokeWidthLegendItemMixin","StrokeColorLegendItemMixin","MapLegendItem","MapLegendOther","SizeLegendItemsMixin","StrokeWidthLegendItemsMixin","SizeMinimizedLegend","SizeMinimizedLegendSymbol","SizeMinimizedLegendLabel","SizeMinimizedLegendDown","SizeMinimizedLegendUp","SingleSizeLegendItemsMixin","SingleLegendItemsMixin","isSize","MapLegendItems","isStrokeWidth","isSingle","MapLegendItemsContainer","MapLegendValues","MapLegendValuesRange","MapLegendValuesOther","MapLegendExpandButton","getValueFromLegendTitle","minOrMax","MinimizedLegend","hiddenLegends","currentValues","pop","titleMax","titleMin","checkIsHidden","hiddenCondition","useSvgSymbol","skipOffset","SVGWrapperRefElement","SVG","initSvg","addTo","getSvgData","manipulateSvg","newSymbol","getUpdatedSvgSymbol","field","newValue","JSON","parse","stringify","svgRef","SvgSymbolContainer","SvgSymbolLabel","fontSettings","fontFamily","fontWeight","fontStyle","fontColor","fontSize","haloColor","haloWidth","SvgSymbol","memo","text","onSelectSymbol","renderSymbol","SymbolByType","defaultSymbol","LegendSymbolRenderer","MaximizedLegend","sectionSymbol","t","useTranslation","isStrokeColor","renderColumn","column","dateTime","Fragment","renderItemText","columns","isSingleColumn","renderLegend","LegendParameterDescription","LegendSection","attributeTitle","isExpanded","toggleExpanded","Legend","attributeAlias","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"],"mappings":"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"}
|