@evergis/react 2.0.182 → 2.0.184
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/core/style/types/miters.d.ts +9 -17
- package/dist/core/style/types/utils.d.ts +4 -4
- package/dist/react.cjs.development.js +14 -24
- 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 +16 -28
- package/dist/react.esm.js.map +1 -1
- package/dist/symbols/LineMiters/LineMiterRender.d.ts +4 -3
- package/dist/symbols/LineMiters/miterStyle.d.ts +3 -2
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.cjs.development.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/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/compositeSymbol.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/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/utils/date.ts","../src/utils/format.ts","../src/utils/url.ts","../src/core/attributes/format.ts","../src/core/crs/index.ts","../src/core/attributes/utils.ts","../src/core/feature/EvergisFeature.ts","../src/core/feature/evaluateCondition.ts","../src/core/feature/getFeatureSymbol.ts","../src/core/layer/EvergisLayer.ts","../src/core/legend/createValueTitle.ts","../src/core/legend/isValidParameter.ts","../src/core/legend/types.ts","../src/core/measurer.ts","../src/core/scale.ts","../src/controls/MeasureToolFormatters.ts","../src/controls/BaseMeasureToolCreator.ts","../src/controls/BaseMeasureToolEditor.ts","../src/utils/isNumeric.ts","../src/utils/isParameterType.ts","../src/core/legend/createCondition.ts","../src/core/legend/FilterCondition.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/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/hooks/useNode.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 { 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 { 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 {\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 { extractSymbol } from \"../compositeSymbol\";\r\nimport { CalculatedAble } from './parameterValue';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\nimport { FillBrushType, StrokeBrushType } from './brush';\r\nimport { ClassificationParameterExtended } from \"../../classification\";\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 ClusterSymbolType = ClientSymbol<\"cluster\", ClusterSymbolDc>;\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\r\nexport const isClusterSymbol = symbolTypeGuard<ClusterSymbolType>(\"cluster\");\r\n\r\nexport const isClusterFillColor = (symbol: StyleSymbolType, parameter: ClassificationParameterExtended) => {\r\n return isClusterSymbol(symbol) && parameter === \"fillColor\";\r\n};\r\n\r\nexport const getExtractedSymbol = (symbol: StyleSymbolType, extractCluster = false): StyleSymbolType => {\r\n const extracted = isCompositeSymbol(symbol as CompositeSymbolType) ? extractSymbol(symbol)?.symbol : symbol;\r\n\r\n return extractCluster && isClusterSymbol(extracted as ClusterSymbolType)\r\n ? ((extracted as ClusterSymbolType).singleObjectSymbol as StyleSymbolType)\r\n : extracted;\r\n};\r\n","import {\n DashedBrushDc,\n HatchBrushDc,\n PatternBrushDc,\n SolidStrokeBrushDc,\n TextBackgroundDc,\n} from '@evergis/api';\n\nimport { ClientSymbol, symbolTypeGuard, Unclassify } from './utils';\nimport { isPolygonSymbol, PolygonSymbol, UnknownSymbol } from './symbol';\n\nexport type SolidBrush = ClientSymbol<'solid', SolidStrokeBrushDc>;\nexport type DashedBrush = ClientSymbol<'dashed', DashedBrushDc>;\nexport type HatchBrush = ClientSymbol<'hatch', HatchBrushDc>;\nexport type PatternBrush = ClientSymbol<'pattern', PatternBrushDc>;\nexport type StrokeBrushType = SolidBrush | DashedBrush;\nexport type FillBrushType = SolidBrush | HatchBrush | PatternBrush;\n\nexport const isHatchBrush = symbolTypeGuard<HatchBrush>('hatch');\nexport const isPatternBrush = symbolTypeGuard<PatternBrush>('pattern');\nexport const isDashedBrush = symbolTypeGuard<DashedBrush>('dashed');\nexport const isSolidBrush = symbolTypeGuard<SolidBrush>('solid');\n\nexport const isPolygonHasPatternBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<PatternBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isPatternBrush(symbol.fill));\n\nexport const isPolygonHasHatchBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<HatchBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isHatchBrush(symbol.fill));\n\nexport type TextBackgroundType = Omit<TextBackgroundDc, 'fill' | 'stroke'> & {\n fill: Unclassify<FillBrushType>;\n stroke: Unclassify<StrokeBrushType>;\n};\n","import { ClassifyAble } from './parameterValue';\r\n\r\nexport const enum LineMiterSize {\r\n Small = 'small',\r\n Large = 'large',\r\n}\r\n\r\nexport enum LineMiterKind {\r\n None = 'none',\r\n Arrow = 'arrow',\r\n FilledArrow = 'filledArrow',\r\n Square = 'square',\r\n FilledSquare = 'filledSquare',\r\n Circle = 'circle',\r\n FilledCircle = 'filledCircle',\r\n}\r\n\r\nexport type NoLineMiterType = {\r\n type: LineMiterKind.None;\r\n};\r\n\r\ntype LineMiterBase<T extends LineMiterKind> = {\r\n type: T;\r\n color?: ClassifyAble<string>;\r\n};\r\n\r\nexport type ArrowLineType = LineMiterBase<LineMiterKind.Arrow> & {\r\n strokeWidth?: number;\r\n arrowLength?: number;\r\n arrowWidth?: number;\r\n};\r\nexport type FilledArrowLineMiterType = LineMiterBase<\r\n LineMiterKind.FilledArrow\r\n> & {\r\n arrowLength?: number;\r\n arrowWidth?: number;\r\n};\r\nexport type SquareLineMiterType = LineMiterBase<LineMiterKind.Square> & {\r\n size?: number;\r\n strokeWidth?: number;\r\n};\r\nexport type FilledSquareLineMiterType = LineMiterBase<\r\n LineMiterKind.FilledSquare\r\n> & {\r\n size?: number;\r\n};\r\nexport type CircleLineMiterType = LineMiterBase<LineMiterKind.Circle> & {\r\n size?: number;\r\n strokeWidth?: number;\r\n};\r\nexport type FilledCircleLineMiterType = LineMiterBase<\r\n LineMiterKind.FilledCircle\r\n> & {\r\n size?: number;\r\n};\r\n\r\nexport type FilledLineMitters =\r\n | FilledArrowLineMiterType\r\n | FilledSquareLineMiterType\r\n | FilledCircleLineMiterType;\r\nexport type ArrowLineMiters = ArrowLineType | FilledArrowLineMiterType;\r\nexport type SquareLineMiters = SquareLineMiterType | FilledSquareLineMiterType;\r\nexport type CircleLineMiters = CircleLineMiterType | FilledCircleLineMiterType;\r\nexport type LineMiterType =\r\n | NoLineMiterType\r\n | ArrowLineMiters\r\n | SquareLineMiters\r\n | CircleLineMiters;\r\n\r\nexport const isMiterExist = (\r\n miter?: undefined | LineMiterType\r\n): miter is Exclude<LineMiterType, NoLineMiterType> =>\r\n Boolean(miter && miter.type !== LineMiterKind.None);\r\n\r\nexport const isFilledLineMitter = (\r\n miter: LineMiterType\r\n): miter is FilledLineMitters =>\r\n miter.type === LineMiterKind.FilledCircle ||\r\n miter.type === LineMiterKind.FilledArrow ||\r\n miter.type === LineMiterKind.FilledSquare;\r\n\r\nexport const isArrowLineMiter = (\r\n miter: LineMiterType\r\n): miter is ArrowLineMiters =>\r\n miter.type === LineMiterKind.Arrow ||\r\n miter.type === LineMiterKind.FilledArrow;\r\n\r\nexport const isSquareLineMiter = (\r\n miter: LineMiterType\r\n): miter is SquareLineMiters =>\r\n miter.type === LineMiterKind.Square ||\r\n miter.type === LineMiterKind.FilledSquare;\r\n\r\nexport const isCircleLineMiter = (\r\n miter: LineMiterType\r\n): miter is CircleLineMiters =>\r\n miter.type === LineMiterKind.Circle ||\r\n miter.type === LineMiterKind.FilledCircle;\r\n","import { PointSymbolType, UnknownSymbol } from './symbol';\nimport { ParameterByAttribute } from './parameterValue';\n\nimport { isParameterByAttribute } from '../../classification/parameterValue';\n\nexport type SimpleOffset = [number, number];\n\nexport type ClassifiedOffset = [\n ParameterByAttribute<number>,\n ParameterByAttribute<number>\n];\n\nexport type Offset = SimpleOffset | ClassifiedOffset;\n\nexport const isSimpleOffset = (offset: Offset): offset is SimpleOffset =>\n offset &&\n !isParameterByAttribute(offset[0]) &&\n !isParameterByAttribute(offset[1]);\n\nexport const isSymbolWithOffset = (\n symbol: UnknownSymbol\n): symbol is PointSymbolType => Boolean(symbol && 'offset' in symbol);\n","import { StyleSymbolType } from './symbol';\r\n\r\nexport type ParameterByAttributeValue<Value> = {\r\n condition: string;\r\n value: Value;\r\n title: string | null;\r\n};\r\n\r\nexport type ParameterByAttribute<Value> = {\r\n type: 'byAttribute';\r\n defaultValue: Value;\r\n title: string | null;\r\n values: ParameterByAttributeValue<Value>[];\r\n};\r\n\r\nexport type CalculatedParameter<Value> = {\r\n type: 'calculated';\r\n expression: string;\r\n defaultValue: Value;\r\n title?: string | null;\r\n};\r\n\r\nexport type ClassifyAble<Value> = Value | ParameterByAttribute<Value>;\r\n\r\nexport type CalculatedAble<Value> = Value | CalculatedParameter<Value>;\r\n\r\nexport type ParameterValue = string | number | 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 { 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 { 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.toString();\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 {\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 { FeatureDc, GeometryDc, GeometryType } from '@evergis/api';\r\nimport { MultiPoint } from '@evergis/sgis/es/features/MultiPoint';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\n\r\nimport { CRS_MAP, SrId } from '../crs';\r\n\r\nimport { FeatureAttribute } from '../attributes';\r\nimport { getFeatureAttributes } from '../attributes/utils';\r\n\r\nimport { StyleSymbolType } from '../style';\r\n\r\nimport {\r\n selectedPoint,\r\n selectedPolygon,\r\n selectedPolyline,\r\n} from '../../symbols';\r\n\r\nexport type FeatureDCExtened = FeatureDc & {\r\n layer?: string;\r\n};\r\n\r\nexport class EvergisFeature {\r\n public id?: string | null = null;\r\n public displayName?: string | null = null;\r\n public geometry?: GeometryDc | null = null;\r\n\r\n public layerName?: string | null = null;\r\n public layerAlias?: string | null = null;\r\n public attributes?: FeatureAttribute[] | null = null;\r\n public symbol?: StyleSymbolType | null = null;\r\n\r\n constructor(feature: FeatureDCExtened) {\r\n this.id = feature.id;\r\n this.displayName = feature.id;\r\n this.geometry = feature.geometry;\r\n\r\n this.layerName = feature.layer;\r\n this.layerAlias = feature.layer;\r\n this.attributes = getFeatureAttributes(feature.attributes);\r\n }\r\n\r\n public sGisFeature() {\r\n if (!this.geometry || !this.symbol) {\r\n return null;\r\n }\r\n\r\n // @ts-ignore\r\n const { type, coordinates, sr } = this.geometry;\r\n const crs = CRS_MAP[sr as SrId];\r\n\r\n if (!crs) {\r\n return null;\r\n }\r\n\r\n switch (type) {\r\n case GeometryType.Point:\r\n return new PointFeature(coordinates, {\r\n symbol: selectedPoint,\r\n crs,\r\n });\r\n case GeometryType.Multipoint:\r\n return new MultiPoint(coordinates, {\r\n symbol: selectedPoint,\r\n crs,\r\n });\r\n case GeometryType.Polyline:\r\n return new Polyline(coordinates, {\r\n symbol: selectedPolyline,\r\n crs,\r\n });\r\n case GeometryType.Polygon:\r\n return new Polygon(coordinates, {\r\n symbol: selectedPolygon,\r\n crs,\r\n });\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n public extent() {\r\n const feature = this.sGisFeature();\r\n\r\n return feature && feature.bbox;\r\n }\r\n}\r\n","import { ConditionAttributes, ConditionEvaluator } from '@evergis/condition';\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 {\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 { 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 { AttributeType, FeatureLayerServiceInfoDc } from '@evergis/api';\r\n\r\nimport { ClassificationAttribute } from '../attributes';\r\nimport { ClassificationClass, ClassificationParameterExtended } from '../classification';\r\nimport { LayerAttributes } from '../layer';\r\nimport {\r\n CompositeSymbolType,\r\n ParameterValueWithSymbol,\r\n StyleSymbolType,\r\n Unclassify,\r\n} from '../style';\r\n\r\nexport type LegendValueType = {\r\n title: string;\r\n parameterValue: ParameterValueWithSymbol;\r\n hiddenCondition?: string;\r\n};\r\n\r\nexport type LegendItem = {\r\n attribute?: ClassificationAttribute;\r\n title: string;\r\n parameter: ClassificationParameterExtended;\r\n values: LegendValueType[];\r\n};\r\n\r\nexport type LayerLegend = {\r\n symbol: Unclassify<Exclude<StyleSymbolType, CompositeSymbolType>>;\r\n items: LegendItem[];\r\n};\r\n\r\nexport type LegendConfig = {\r\n attributes?: LayerAttributes;\r\n skipDefaultValue?: boolean;\r\n reverse?: boolean;\r\n searchable?: boolean;\r\n renderLegendTitle?: (item: React.ReactNode | LegendItem) => React.ReactNode;\r\n renderTitle?: (value: ClassificationClass, index: number) => string;\r\n renderCustomLegend?: (layer: FeatureLayerServiceInfoDc) => React.ReactNode;\r\n searchLayer?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n parameters?: ClassificationParameterExtended[];\r\n};\r\n\r\nexport enum FilterConditionOperation {\r\n AND = \"&&\",\r\n OR = \"||\",\r\n}\r\n\r\nexport enum ComparisonOperator {\r\n /** `==` */\r\n Equals = \"Equals\",\r\n /** `!=` */\r\n NotEquals = \"NotEquals\",\r\n /** `>` */\r\n GreaterThan = \"GreaterThan\",\r\n /** `<` */\r\n LessThan = \"LessThan\",\r\n /** `>=` */\r\n GreaterOrEquals = \"GreaterOrEquals\",\r\n /** `<=` */\r\n LessOrEquals = \"LessOrEquals\",\r\n Filled = \"Filled\",\r\n Empty = \"Empty\",\r\n /** `==` */\r\n Contains = \"Contains\",\r\n /** `!=` */\r\n NotContains = \"NotContains\",\r\n StartsWith = \"StartsWith\",\r\n NotStartsWith = \"NotStartsWith\",\r\n EndsWith = \"EndsWith\",\r\n NotEndsWith = \"NotEndsWith\",\r\n Between = \"Between\",\r\n Outside = \"Outside\",\r\n}\r\n\r\nexport interface FilterCondition<Value> {\r\n id?: string;\r\n attribute: string | null;\r\n type?: AttributeType;\r\n comparisonOperator: ComparisonOperator | null;\r\n value: Value | string[] | null;\r\n}\r\n\r\nexport type FilterConditionType = FilterCondition<string | number>;\r\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 { 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","import { Char, Expression, TokenType } from \"@evergis/condition\";\r\nimport { AttributeType } from \"@evergis/api\";\r\nimport { isNil } from \"lodash\";\r\n\r\nimport { DateFormat, formatDate } from \"../../utils/date\";\r\nimport { ComparisonOperator, FilterConditionType } from \"./types\";\r\nimport {\r\n BETWEEN_OPERATORS,\r\n CONTAINS_OPERATORS,\r\n ENDS_WITH_OPERATORS,\r\n OPERATOR_CONDITION_REMAP,\r\n STARTS_WITH_OPERATORS\r\n} from \"../../components\";\r\n\r\nexport const comparisonOperatorMapReversed: Record<string, ComparisonOperator> = {\r\n [TokenType.ArEq]: ComparisonOperator.Equals,\r\n [TokenType.ArNotEq]: ComparisonOperator.NotEquals,\r\n [TokenType.ArGr]: ComparisonOperator.GreaterThan,\r\n [TokenType.ArLs]: ComparisonOperator.LessThan,\r\n [TokenType.ArGre]: ComparisonOperator.GreaterOrEquals,\r\n [TokenType.ArLse]: ComparisonOperator.LessOrEquals,\r\n [TokenType.Between]: ComparisonOperator.Between,\r\n [TokenType.Outside]: ComparisonOperator.Outside,\r\n};\r\n\r\nexport const NUMERIC_ATTRIBUTE_TYPES: AttributeType[] = [\r\n AttributeType.Int32,\r\n AttributeType.Int64,\r\n AttributeType.DateTime,\r\n AttributeType.Double,\r\n];\r\n\r\nconst formatValue = (value: string | number, isDate?: boolean) => {\r\n return isDate\r\n ? `#'${formatDate(value, {\r\n dateFormat: DateFormat.UTC,\r\n defaultValue: value,\r\n })}'`\r\n : value\r\n ? value.toString()\r\n : 0;\r\n};\r\n\r\nexport function formatCondition(condition: FilterConditionType) {\r\n const { comparisonOperator, value, type, attribute } = condition;\r\n const operator = OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator] || comparisonOperator;\r\n\r\n const preparedValue = typeof value === \"string\" && value.includes(\" - \") ? value.split(\" - \") : value;\r\n const isDate = type === AttributeType.DateTime;\r\n const isBetweenOutside = BETWEEN_OPERATORS.includes(comparisonOperator as ComparisonOperator);\r\n const escapeValue = !NUMERIC_ATTRIBUTE_TYPES.includes(type as AttributeType) && preparedValue !== null;\r\n\r\n if (isBetweenOutside && Array.isArray(preparedValue) && preparedValue[0] !== undefined) {\r\n return `${OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator]}(${attribute}, ${formatValue(\r\n preparedValue[0],\r\n isDate,\r\n )}, ${formatValue(preparedValue[1], isDate)})`;\r\n }\r\n\r\n const formattedValue = Array.isArray(preparedValue)\r\n ? preparedValue.map(val => formatValue(val, isDate))\r\n : formatValue(preparedValue as string | number, isDate);\r\n\r\n const nulledValue = isNil(preparedValue) ? \"{null}\" : formattedValue;\r\n\r\n const valueEscaped =\r\n escapeValue && typeof nulledValue === \"string\"\r\n ? `'${Char.escapeSpecChars(addOperationToValue(nulledValue, comparisonOperator as ComparisonOperator))}'`\r\n : nulledValue;\r\n\r\n return `${attribute} ${operator} ${valueEscaped}`;\r\n}\r\n\r\nexport function createConditionString(condition: FilterConditionType) {\r\n if (Array.isArray(condition)) {\r\n return `( ${formatCondition(condition[0])} ${condition[0].operation} ${formatCondition(condition[1])} )`;\r\n }\r\n\r\n return formatCondition(condition);\r\n}\r\n\r\nexport function createCondition({ attribute, operation, value }: Expression) {\r\n const comparisonOperator = comparisonOperatorMapReversed[operation];\r\n const convertedResult = convertOperatorValue(value as string | number | boolean, comparisonOperator);\r\n\r\n return {\r\n attribute,\r\n ...convertedResult,\r\n } as FilterConditionType;\r\n}\r\n\r\nfunction convertOperatorValue(value: string | number | boolean, comparisonOperator: ComparisonOperator) {\r\n if (typeof value === \"string\") {\r\n const operatorIndex = +(comparisonOperator === ComparisonOperator.NotEquals);\r\n\r\n if (value.startsWith(Char.PERCENTAGE) && value.endsWith(Char.PERCENTAGE)) {\r\n return {\r\n value: value.slice(1, -1),\r\n comparisonOperator: CONTAINS_OPERATORS[operatorIndex],\r\n };\r\n }\r\n\r\n if (value.startsWith(Char.PERCENTAGE)) {\r\n return {\r\n value: value.slice(1),\r\n comparisonOperator: ENDS_WITH_OPERATORS[operatorIndex],\r\n };\r\n }\r\n\r\n if (value.endsWith(Char.PERCENTAGE)) {\r\n return {\r\n value: value.slice(0, -1),\r\n comparisonOperator: STARTS_WITH_OPERATORS[operatorIndex],\r\n };\r\n }\r\n }\r\n\r\n return { value, comparisonOperator };\r\n}\r\n\r\nconst addContains = (value: string | number) => `%${value}%`;\r\nconst addStartsWith = (value: string | number) => `${value}%`;\r\nconst addEndsWith = (value: string | number) => `%${value}`;\r\n\r\nfunction addOperationToValue(value: string, operator: ComparisonOperator) {\r\n switch (operator) {\r\n case ComparisonOperator.Contains:\r\n case ComparisonOperator.NotContains:\r\n return addContains(value);\r\n case ComparisonOperator.StartsWith:\r\n case ComparisonOperator.NotStartsWith:\r\n return addStartsWith(value);\r\n case ComparisonOperator.EndsWith:\r\n case ComparisonOperator.NotEndsWith:\r\n return addEndsWith(value);\r\n case ComparisonOperator.Between:\r\n return Char.BETWEEN;\r\n case ComparisonOperator.Outside:\r\n return Char.OUTSIDE;\r\n default:\r\n return value;\r\n }\r\n}\r\n","import { ConditionInterpreter, TokenType } from \"@evergis/condition\";\r\n\r\nimport { FilterConditionOperation, FilterConditionType } from \"./index\";\r\nimport { createCondition, createConditionString } from \"./createCondition\";\r\n\r\nexport class FilterCondition {\r\n private readonly conditionInterpreter: ConditionInterpreter;\r\n\r\n constructor(private condition: string | null = null) {\r\n this.conditionInterpreter = new ConditionInterpreter(condition as string);\r\n }\r\n\r\n static from(conditions: FilterConditionType[], operation: FilterConditionOperation) {\r\n const condition = conditions?.map(createConditionString).join(` ${operation} `) || null;\r\n\r\n return new FilterCondition(condition);\r\n }\r\n\r\n get conditions(): FilterConditionType[] {\r\n const { value } = this.conditionInterpreter;\r\n\r\n if (value instanceof Error) {\r\n // TODO handle errors in client notifications\r\n console.warn(value.message);\r\n }\r\n\r\n return value instanceof Error ? [] : value.expressions.map(createCondition);\r\n }\r\n\r\n get conditionOperation() {\r\n const { value } = this.conditionInterpreter;\r\n\r\n if (value instanceof Error) {\r\n return null;\r\n }\r\n\r\n const isOrCondition = value.boolOperations.includes(TokenType.BoolOr);\r\n const isAndCondition = value.boolOperations.includes(TokenType.BoolAnd);\r\n\r\n if (isOrCondition && isAndCondition) {\r\n return null;\r\n }\r\n\r\n return isOrCondition ? FilterConditionOperation.OR : isAndCondition ? FilterConditionOperation.AND : null;\r\n }\r\n\r\n public isParsingError() {\r\n return this.conditionInterpreter.value instanceof Error;\r\n }\r\n\r\n public toString() {\r\n return this.condition;\r\n }\r\n}\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 ClassifyParameter,\r\n DEFAULT_LEGEND_SYMBOL_SIZE,\r\n DEFAULT_PARAMETER_INFO,\r\n EXTRA_BORDER_SIZE,\r\n LegendProps,\r\n LegendSectionItem,\r\n PARAMETER_INFOS,\r\n ParameterInfo,\r\n SvgSymbolBg,\r\n SYMBOL_CLASSIFICATION,\r\n} from \"../components\";\r\nimport { formatDate } from \"./date\";\r\nimport {\r\n ClassificationClass,\r\n ClassificationCondition,\r\n ClassificationParameter,\r\n ClassificationParameterExtended,\r\n ClassifyAble,\r\n ComparisonOperator,\r\n FilterConditionOperation,\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 LayerAttribute,\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\nimport { createConditionString } from \"../core/legend/createCondition\";\r\nimport { FilterCondition } from \"../core/legend/FilterCondition\";\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 formatUniqueClassValue = (value: UniqueClass, formatValue?: LegendProps[\"formatValue\"]): string => {\r\n const { attribute, uniqueValue } = value;\r\n\r\n return attribute && formatValue\r\n ? formatValue(attribute.type, uniqueValue, attribute.stringFormat) as string\r\n : 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 = (\r\n value: RangeClass,\r\n formatValue: LegendProps[\"formatValue\"],\r\n index: number,\r\n): 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 = formatValue ? formatValue(\r\n value.attribute?.type as AttributeType,\r\n from as string | number | Date,\r\n value.attribute?.stringFormat,\r\n ) : from;\r\n const formattedTo = formatValue ? formatValue(\r\n value.attribute?.type as AttributeType,\r\n to as string | number | Date,\r\n value.attribute?.stringFormat,\r\n ) : 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: Pick<FeatureLayerServiceInfoDc, \"geometryType\" | \"style\">): 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 attribute: LayerAttribute,\r\n formatValue: LegendProps[\"formatValue\"],\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,\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, formatValue, index);\r\n if (isUniqueClass(value)) return formatUniqueClassValue(value as UniqueClass, formatValue);\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(\r\n baseSymbol,\r\n \"width\",\r\n classificationsParams,\r\n LegendSymbolTypes.ImagePoint,\r\n ) 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 function createHiddenCondition(attributeName: string, attributeType: AttributeType, value: ClassificationClass) {\r\n let newValue;\r\n let comparisonOperator;\r\n\r\n if (isRangeClass(value)) {\r\n if (value.from && value.to) {\r\n newValue = [value.from as string, value.to as string];\r\n comparisonOperator = ComparisonOperator.Outside;\r\n } else if (value.from) {\r\n newValue = value.from;\r\n comparisonOperator = ComparisonOperator.LessThan;\r\n } else if (value.to) {\r\n newValue = value.to;\r\n comparisonOperator = ComparisonOperator.GreaterThan;\r\n }\r\n } else {\r\n newValue = value.uniqueValue;\r\n comparisonOperator = ComparisonOperator.NotEquals;\r\n }\r\n\r\n return new FilterCondition(\r\n createConditionString({\r\n attribute: attributeName,\r\n type: attributeType,\r\n comparisonOperator: comparisonOperator as ComparisonOperator,\r\n value: newValue as string,\r\n }),\r\n ).toString();\r\n}\r\n\r\nexport const createOtherHiddenCondition = (\r\n values: ClassificationClass[],\r\n attributeName: string,\r\n attributeType: AttributeType,\r\n) => {\r\n const value = values[values.length - 1];\r\n let hiddenCondition;\r\n\r\n if (isRangeClass(value)) {\r\n hiddenCondition = new FilterCondition(\r\n createConditionString({\r\n attribute: attributeName,\r\n type: attributeType,\r\n comparisonOperator: ComparisonOperator.LessOrEquals,\r\n value: (value as RangeClass).to || (value as RangeClass).from,\r\n }),\r\n ).toString();\r\n } else {\r\n const conditions = values.map(val =>\r\n new FilterCondition(\r\n createConditionString({\r\n attribute: attributeName,\r\n type: attributeType,\r\n comparisonOperator: ComparisonOperator.Equals,\r\n value: (val as UniqueClass).uniqueValue,\r\n }),\r\n ).toString(),\r\n );\r\n\r\n hiddenCondition = `( ${conditions.filter(Boolean).join(` ${FilterConditionOperation.OR} `)} )`;\r\n }\r\n\r\n return hiddenCondition;\r\n}\r\n\r\nexport const getMinimizedLegendValues = (\r\n attribute: LayerAttribute,\r\n classified: ParameterByAttribute<ParameterValue>,\r\n formatValue: LegendProps[\"formatValue\"],\r\n index: number,\r\n otherTitle: string,\r\n): LegendValueType[] => {\r\n const other = {\r\n title: otherTitle,\r\n parameterValue: classified.defaultValue,\r\n hiddenCondition: createOtherHiddenCondition(classified.values.map(val => getClassificationValue(\r\n val.value,\r\n otherTitle,\r\n new ClassificationCondition(val.condition),\r\n )), attribute.name as string, attribute.type),\r\n } as LegendValueType;\r\n\r\n const items = classified.values.map(paramValue => {\r\n const parameterValue = getParameterValue(paramValue.value);\r\n const result = { parameterValue, attribute } as Partial<LegendValueType>;\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, attribute, formatValue, index);\r\n\r\n return result;\r\n }\r\n\r\n (result as UniqueClass).uniqueValue = formatValue ? formatValue(\r\n attribute.type,\r\n paramValue.value,\r\n attribute.stringFormat,\r\n ) as string : paramValue.value.toString();\r\n result.title = getTitleFromCondition(paramValue.condition);\r\n result.hiddenCondition = createHiddenCondition(attribute.name as string, attribute.type, getClassificationValue(\r\n paramValue.value,\r\n result.title,\r\n new ClassificationCondition(paramValue.condition),\r\n )) as string;\r\n\r\n return result;\r\n }) as LegendValueType[];\r\n\r\n if (attribute.type !== AttributeType.String) {\r\n items.reverse();\r\n }\r\n\r\n return [...items, other] as LegendValueType[];\r\n};\r\n\r\nexport const getMaximizedLegendValues = (\r\n attribute: LayerAttribute,\r\n param: ClassificationParameterExtended,\r\n params: ClassificationParameterExtended[],\r\n classified: ParameterByAttribute<ParameterValue>,\r\n symbol: StyleDc[\"symbol\"],\r\n formatValue: LegendProps[\"formatValue\"],\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 hiddenCondition: createOtherHiddenCondition(classified.values.map(val => getClassificationValue(\r\n val.value,\r\n otherTitle,\r\n new ClassificationCondition(val.condition),\r\n )), attribute.name as string, attribute.type),\r\n };\r\n\r\n const items = classified.values.map((paramValue, index) => {\r\n const result = {\r\n symbol: createLegendSymbol(paramValue.value, param, params, symbol as StyleSymbolType),\r\n } as LegendSectionItem;\r\n\r\n result.title = isRangeCondition(paramValue.condition)\r\n ? createValueTitle(paramValue, attribute, formatValue, sectionIndex)\r\n : getTitleFromCondition(paramValue.condition);\r\n\r\n result.hiddenCondition = createHiddenCondition(\r\n attribute.name as string,\r\n attribute.type,\r\n getClassificationValue(\r\n paramValue.value,\r\n result.title,\r\n new ClassificationCondition(classified.values[index].condition),\r\n ),\r\n ) as string;\r\n\r\n return result;\r\n });\r\n\r\n if (attribute.type !== AttributeType.String) {\r\n items.reverse();\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\r\nconst getClassificationValue = (\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","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, ComparisonOperator } 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\r\nexport const OPERATOR_CONDITION_REMAP: Record<ComparisonOperator, string> = {\r\n [ComparisonOperator.Equals]: \"==\",\r\n [ComparisonOperator.NotEquals]: \"!=\",\r\n [ComparisonOperator.GreaterThan]: \">\",\r\n [ComparisonOperator.GreaterOrEquals]: \">=\",\r\n [ComparisonOperator.LessThan]: \"<\",\r\n [ComparisonOperator.LessOrEquals]: \"<=\",\r\n [ComparisonOperator.Filled]: \"!=\",\r\n [ComparisonOperator.Empty]: \"==\",\r\n [ComparisonOperator.Contains]: \"==\",\r\n [ComparisonOperator.NotContains]: \"!=\",\r\n [ComparisonOperator.StartsWith]: \"==\",\r\n [ComparisonOperator.NotStartsWith]: \"!=\",\r\n [ComparisonOperator.EndsWith]: \"==\",\r\n [ComparisonOperator.NotEndsWith]: \"!=\",\r\n [ComparisonOperator.Between]: \"between\",\r\n [ComparisonOperator.Outside]: \"!between\",\r\n};\r\n\r\nexport const BASE_OPERATORS = [ComparisonOperator.Equals, ComparisonOperator.NotEquals];\r\n\r\nexport const CONTAINS_OPERATORS = [ComparisonOperator.Contains, ComparisonOperator.NotContains];\r\n\r\nexport const FILLED_OPERATORS = [ComparisonOperator.Filled, ComparisonOperator.Empty];\r\n\r\nexport const STARTS_WITH_OPERATORS = [ComparisonOperator.StartsWith, ComparisonOperator.NotStartsWith];\r\n\r\nexport const ENDS_WITH_OPERATORS = [ComparisonOperator.EndsWith, ComparisonOperator.NotEndsWith];\r\n\r\nexport const RANGE_OPERATORS = [\r\n ComparisonOperator.LessThan,\r\n ComparisonOperator.LessOrEquals,\r\n ComparisonOperator.GreaterThan,\r\n ComparisonOperator.GreaterOrEquals,\r\n];\r\n\r\nexport const BETWEEN_OPERATORS = [ComparisonOperator.Between, ComparisonOperator.Outside];\r\n\r\nexport const numberComparisonOperators = [\r\n ...BASE_OPERATORS,\r\n ...RANGE_OPERATORS,\r\n ...FILLED_OPERATORS,\r\n ...BETWEEN_OPERATORS,\r\n];\r\n\r\nexport const dateComparisonOperators = [\r\n ...BASE_OPERATORS,\r\n ...RANGE_OPERATORS,\r\n ...FILLED_OPERATORS,\r\n ...BETWEEN_OPERATORS,\r\n];\r\n\r\nexport const textComparisonOperators = [\r\n ...BASE_OPERATORS,\r\n ...CONTAINS_OPERATORS,\r\n ...STARTS_WITH_OPERATORS,\r\n ...ENDS_WITH_OPERATORS,\r\n ...FILLED_OPERATORS,\r\n];\r\n","import { ReactNode, RefObject } from \"react\";\r\nimport {\r\n AttributeType,\r\n PointLabelSymbolDc,\r\n SvgPointSymbolDc,\r\n StyleDc,\r\n FeatureLayerServiceInfoDc,\r\n AttributeFormatDc,\r\n FeatureDc\r\n} from \"@evergis/api\";\r\nimport { MaskedImage } from \"@evergis/sgis/es/symbols/point/MaskedImage\";\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { Coordinates } from \"@evergis/sgis/es/baseTypes\";\r\n\r\nimport {\r\n ClassificationParameterExtended,\r\n LayerAttribute,\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 Positions = Coordinates | Coordinates[] | Coordinates[][];\r\n\r\nexport type FeaturedDcExtendedGeometry = Omit<FeatureDc[\"geometry\"], \"coordinates\"> & {\r\n coordinates?: Positions;\r\n};\r\n\r\nexport type LegendProps = {\r\n layerInfo: FeatureLayerServiceInfoDc;\r\n formatValue?: (\r\n type: AttributeType,\r\n value: string | number | Date | FeaturedDcExtendedGeometry,\r\n stringFormat?: AttributeFormatDc,\r\n ) => string;\r\n hiddenLegends?: Record<string, string[]>;\r\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\r\n};\r\n\r\nexport type LegendSectionProps = Pick<LegendProps, \"hiddenLegends\" | \"toggleHiddenLegend\" | \"formatValue\"> & {\r\n layerName: string;\r\n symbol: StyleDc[\"symbol\"];\r\n parameter: ClassificationParameterExtended;\r\n parameters: ClassificationParameterExtended[];\r\n classified: ParameterByAttribute<ParameterValue>;\r\n attribute: LayerAttribute;\r\n index: number;\r\n};\r\n\r\nexport type LegendSectionItem = Pick<LegendProps, \"hiddenLegends\" | \"toggleHiddenLegend\"> & {\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 innerRef?: RefObject<HTMLDivElement> | undefined;\r\n isShown?: boolean;\r\n layerName: string;\r\n symbol: StyleDc[\"symbol\"];\r\n parameter: ClassificationParameterExtended;\r\n values: LegendSectionItem[];\r\n attributeType: AttributeType;\r\n index: number;\r\n hiddenLegends?: string[];\r\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\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 innerRef?: RefObject<HTMLDivElement> | undefined;\r\n isShown?: boolean;\r\n title?: string | ReactNode;\r\n values: LegendValueType[];\r\n parameter: ClassificationParameterExtended;\r\n hiddenLegends?: string[];\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';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { getLineMiterRender } from '../LineMiters/getLineMiterRender';\r\nimport { updateRingsForMiter } from '../LineMiters/updateRingsForMiter';\r\n\r\nimport { getParameterValue } from '../../core/classification';\r\n\r\nimport {\r\n isDashedBrush,\r\n isSimplePolylineSymbol,\r\n PolylineSymbols,\r\n} from '../../core/style';\r\n\r\nimport { getHexColor } from '../../utils/color';\r\nimport { clamp } from '../../utils/math';\r\nimport { PREVIEW_LIMITS } from '../previewLimits';\r\nimport { getLineDash } from '../strokeStyle';\r\n\r\nexport const copyRings = (rings: Coordinates[][]): Coordinates[][] =>\r\n rings.map(ring =>\r\n ring.map(coordinates => coordinates.slice() as Coordinates)\r\n );\r\n\r\nexport class SGisPolylineSymbol extends sPolylineSymbol {\r\n constructor(public originalSymbol: PolylineSymbols) {\r\n super({\r\n // @ts-ignore\r\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\r\n strokeWidth: clamp(\r\n // @ts-ignore\r\n getParameterValue(originalSymbol.stroke?.width),\r\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\r\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\r\n ),\r\n // @ts-ignore\r\n lineDash: getLineDash(originalSymbol.stroke),\r\n // @ts-ignore\r\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\r\n });\r\n }\r\n\r\n renderFunction(feature: Polyline, resolution: number, crs: Crs): Render[] {\r\n if (!isSimplePolylineSymbol(this.originalSymbol))\r\n return super.renderFunction(feature, resolution, crs);\r\n\r\n const {\r\n ending,\r\n beginning,\r\n } = this.originalSymbol;\r\n const renders: Render[] = [];\r\n\r\n const featureCopy = feature.clone();\r\n\r\n const beginningMiterRender = getLineMiterRender({\r\n color: this.strokeColor,\r\n // @ts-ignore\r\n kind: beginning.type,\r\n position: 'left',\r\n // @ts-ignore\r\n size: beginning.size,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n const endingMiterRender = getLineMiterRender({\r\n color: this.strokeColor,\r\n // @ts-ignore\r\n kind: ending.type,\r\n position: 'right',\r\n // @ts-ignore\r\n size: ending.size,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n\r\n if (beginningMiterRender) {\r\n const updatedRings = updateRingsForMiter(\r\n featureCopy.rings,\r\n 'left',\r\n beginningMiterRender.usageSize\r\n );\r\n const render = beginningMiterRender.getRender(\r\n updatedRings,\r\n feature.crs,\r\n resolution,\r\n crs\r\n );\r\n\r\n featureCopy.rings = updatedRings;\r\n renders.push(render);\r\n }\r\n\r\n if (endingMiterRender) {\r\n const updatedRings = updateRingsForMiter(\r\n featureCopy.rings,\r\n 'right',\r\n endingMiterRender.usageSize\r\n );\r\n const render = endingMiterRender.getRender(\r\n updatedRings,\r\n feature.crs,\r\n resolution,\r\n crs\r\n );\r\n\r\n featureCopy.rings = updatedRings;\r\n renders.push(render);\r\n }\r\n\r\n // NOTE: линия должна быть в начале чтобы быть под митерами\r\n renders.unshift(...super.renderFunction(featureCopy, resolution, crs));\r\n\r\n return renders;\r\n }\r\n\r\n clone() {\r\n return new SGisPolylineSymbol(this.originalSymbol);\r\n }\r\n}\r\n","import React, { ComponentType } from 'react';\nimport ReactDOM from 'react-dom';\nimport { DynamicPointSymbol } from '@evergis/sgis/es/symbols/Symbol';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nexport type LabelSymbolComponent =\n | ComponentType<{ content: string }>\n | ComponentType;\n\ntype LabelSymbolParams = {\n offset?: Offset;\n component?: LabelSymbolComponent;\n};\n\nexport class LabelSymbol extends DynamicPointSymbol {\n public component?: LabelSymbolComponent;\n\n constructor({ component, offset }: LabelSymbolParams = {}) {\n super({ offset });\n this.component = component;\n }\n\n protected _getFeatureNode(feature: LabelFeature): HTMLElement {\n const node = document.createElement('div');\n\n this.renderDom(feature.content, node);\n\n return node;\n }\n\n protected _updateFeatureNode(feature: LabelFeature): void {\n this.renderDom(feature.content, this.getNode(feature));\n }\n\n private renderDom(content: string, node: HTMLElement): void {\n if (!node) {\n return;\n }\n\n const Component = this.component;\n\n if (Component) {\n ReactDOM.render(<Component content={content} />, node);\n } else {\n node.innerText = content;\n }\n }\n}\n","import React from 'react';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nimport { renderLabelSymbolType } from '../../components';\nimport { LabelSymbol } from './LabelSymbol';\n\nexport const defaultOffset: Offset = [8, -16];\n\ntype createLabelSymbolParams = {\n offset?: Offset;\n onClose?: VoidFunction;\n renderLabel: renderLabelSymbolType;\n};\n\nexport const createLabelSymbol = (props: createLabelSymbolParams) => {\n const {\n offset = defaultOffset,\n renderLabel = ({ content }: { content: string }) => <div>{content}</div>,\n onClose = undefined,\n } = props || {};\n\n return new LabelSymbol({\n offset,\n component: ({ content }: { content: string }) =>\n renderLabel({ content, onClose }),\n });\n};\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { polygonCircleFromPoint } from '../../';\nimport { EditorPointSymbolParams } from './ShadowedPointSymbol';\n\nexport function createShadowRender(\n position: Coordinates,\n {\n strokeWidth = 2,\n shadowColor,\n shadowSize,\n size = 6,\n }: EditorPointSymbolParams\n) {\n const shadowDiameter = size + strokeWidth + shadowSize;\n\n return new PolyRender(polygonCircleFromPoint(position, shadowDiameter), {\n fillColor: 'transparent',\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n enclosed: true,\n });\n}\n\nexport function getEditorPointRenderer(\n position: Coordinates,\n {\n strokeColor,\n strokeWidth,\n shadowColor,\n fillColor,\n shadowSize,\n size = 0,\n }: EditorPointSymbolParams\n) {\n return [\n createShadowRender(position, {\n strokeWidth,\n strokeColor,\n shadowSize,\n shadowColor,\n size,\n }),\n new PolyRender(polygonCircleFromPoint(position, size), {\n fillColor,\n strokeColor,\n strokeWidth,\n enclosed: true,\n }),\n ];\n}\n","import {\n PointSymbol,\n PointSymbolConstructorParams,\n} from '@evergis/sgis/es/symbols/point/Point';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Feature } from '@evergis/sgis';\n\nimport { polygonCircleFromPoint } from '../..';\n\nexport type EditorPointSymbolParams = {\n shadowColor: string;\n shadowSize: number;\n} & PointSymbolConstructorParams;\n\nexport class ShadowedPointSymbol extends PointSymbol {\n shadowColor!: string;\n shadowSize!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options: EditorPointSymbolParams) {\n super(options);\n }\n\n static getShadowArc(\n position: Coordinates,\n {\n strokeWidth = 2,\n shadowColor,\n shadowSize,\n size = 6,\n }: EditorPointSymbolParams\n ): PolyRender {\n return new PolyRender(\n polygonCircleFromPoint(position, size + strokeWidth + shadowSize),\n {\n fillColor: 'transparent',\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n enclosed: true,\n }\n );\n }\n\n static getPointArc(\n position: Coordinates,\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams\n ): PolyRender {\n return new PolyRender(polygonCircleFromPoint(position, size), {\n fillColor,\n strokeColor,\n strokeWidth,\n enclosed: true,\n });\n }\n\n static getArcs(\n position: Coordinates,\n params: EditorPointSymbolParams\n ): PolyRender[] {\n const shadowRender = ShadowedPointSymbol.getShadowArc(position, params);\n const pointRender = ShadowedPointSymbol.getPointArc(position, params);\n\n return shadowRender ? [shadowRender, pointRender] : [pointRender];\n }\n\n public renderFunction(\n feature: PointFeature,\n resolution: number,\n crs: Crs\n ): Render[] {\n if (!(feature instanceof PointFeature)) return [];\n const { position } = feature.projectTo(crs);\n\n const pxPosition: Coordinates = [\n position[0] / resolution + (this.offset[0] || 0),\n -position[1] / resolution + (this.offset[1] || 0),\n ];\n\n const shadowRender = this.getShadow(pxPosition, feature);\n const pointArc = this.getPoint(pxPosition, feature);\n\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\n }\n\n protected getShadow(\n position: Coordinates,\n _feature?: Feature\n ): PolyRender | void {\n return ShadowedPointSymbol.getShadowArc(position, this);\n }\n\n protected getPoint(position: Coordinates, _feature?: Feature): PolyRender {\n return ShadowedPointSymbol.getPointArc(position, this);\n }\n}\n","import {\r\n PolylineSymbol,\r\n PolylineSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { getEditorPointRenderer } from './getEditorPointRenderer';\r\nimport { ShadowedPointSymbol } from './ShadowedPointSymbol';\r\n\r\nexport type EditorPolySymbolParams = {\r\n shadowColor: string;\r\n shadowSize: number;\r\n fillColor?: string;\r\n enclose?: boolean;\r\n showVertex?: boolean;\r\n vertexShadowSize?: number;\r\n} & PolylineSymbolConstructorParams;\r\n\r\nexport class ShadowedPolySymbol extends PolylineSymbol {\r\n shadowColor!: string;\r\n shadowSize!: number;\r\n fillColor?: string;\r\n enclose?: boolean;\r\n showVertex?: boolean;\r\n vertexShadowSize?: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(options: EditorPolySymbolParams) {\r\n super(options);\r\n }\r\n\r\n public renderFunction(\r\n feature: Polygon,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n if (!(feature instanceof Poly)) return [];\r\n\r\n const coordinates = super.getRenderedCoordinates(\r\n feature,\r\n resolution,\r\n crs\r\n );\r\n const polyRender = this.getPolyRender(coordinates, feature);\r\n const shadowRender = this.getShadow(coordinates, feature);\r\n const vertexRenders = this.getVertexRenders(coordinates);\r\n let renders: Render[] = [polyRender];\r\n\r\n if (shadowRender) {\r\n renders = [shadowRender, polyRender];\r\n }\r\n\r\n if (vertexRenders) {\r\n renders = renders.concat(vertexRenders);\r\n }\r\n\r\n return renders;\r\n }\r\n\r\n protected getShadow(\r\n coordinates: Coordinates[][],\r\n _feature?: Feature\r\n ): PolyRender | void {\r\n return new PolyRender(coordinates, {\r\n fillStyle: FillStyle.None,\r\n enclosed: this.enclose,\r\n strokeColor: this.shadowColor,\r\n strokeWidth: this.shadowSize,\r\n lineDash: this.lineDash,\r\n });\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n _feature?: Feature\r\n ): PolyRender {\r\n return new PolyRender(coordinates, {\r\n fillStyle: this.enclose ? FillStyle.Color : FillStyle.None,\r\n enclosed: this.enclose,\r\n fillColor: this.fillColor,\r\n strokeColor: this.strokeColor,\r\n strokeWidth: this.strokeWidth,\r\n lineDash: this.lineDash,\r\n });\r\n }\r\n\r\n protected getVertexRenders(\r\n coordinates: Coordinates[][]\r\n ): PolyRender[] | void {\r\n if (!this.showVertex) return;\r\n\r\n const vertexCoordinates = coordinates.reduce((acc, curr) => {\r\n return acc.concat(curr);\r\n }, []);\r\n\r\n return vertexCoordinates\r\n .map(coord =>\r\n getEditorPointRenderer(coord, {\r\n size: 6,\r\n strokeWidth: 2,\r\n shadowColor: this.shadowColor,\r\n strokeColor: this.strokeColor,\r\n shadowSize:\r\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\r\n fillColor: '#ffffff',\r\n })\r\n )\r\n .reduce((acc, curr) => acc.concat(curr), []);\r\n }\r\n}\r\n\r\nconst polySymbolParams = {\r\n strokeWidth: 2,\r\n strokeColor: '#e33600',\r\n shadowSize: 8,\r\n shadowColor: 'rgba(227, 54, 0, 0.3)',\r\n};\r\n\r\nconst measureSymbolParams = {\r\n strokeColor: '#ff6933',\r\n shadowSize: 0,\r\n vertexShadowSize: 0,\r\n};\r\n\r\nexport const measureLengthSymbol = new ShadowedPolySymbol({\r\n ...polySymbolParams,\r\n ...measureSymbolParams,\r\n enclose: false,\r\n showVertex: true,\r\n});\r\n\r\nexport const measureAreaSymbol = new ShadowedPolySymbol({\r\n ...polySymbolParams,\r\n ...measureSymbolParams,\r\n fillColor: 'rgba(255, 105, 51, 0.25)',\r\n enclose: true,\r\n showVertex: true,\r\n});\r\n\r\nconst snapSymbolParams = {\r\n size: 10,\r\n strokeWidth: 2,\r\n strokeColor: '#e33600',\r\n fillColor: '#ffffff',\r\n shadowColor: 'rgba(227, 54, 0, 0.3)',\r\n shadowSize: 3,\r\n};\r\n\r\nexport const measurePolygonSnapSymbol = new ShadowedPointSymbol({\r\n ...snapSymbolParams,\r\n strokeColor: '#ff6933',\r\n shadowSize: 0,\r\n});\r\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\n\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\n\ntype SelectedFeature = PointFeature & {\n isSelected: boolean;\n};\n\nexport type SelectedPointSymbolParams = {\n selectedStrokeColor: string;\n selectedFillColor: string;\n} & EditorPointSymbolParams;\n\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\n selectedStrokeColor!: string;\n selectedFillColor!: string;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPointSymbolParams) {\n super(props);\n }\n\n protected getShadow(\n position: [number, number],\n feature: SelectedFeature\n ): PolyRender | void {\n if (feature.isSelected) {\n return super.getShadow(position, feature);\n }\n }\n\n protected getPoint(\n position: [number, number],\n feature: SelectedFeature\n ): PolyRender {\n const pointRender = super.getPoint(position, feature);\n\n if (feature.isSelected) {\n pointRender.strokeColor = this.selectedStrokeColor;\n pointRender.fillColor = this.selectedFillColor;\n }\n\n return pointRender;\n }\n}\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\n\nimport {\n EditorPolySymbolParams,\n ShadowedPolySymbol,\n} from '../Shadowed/ShadowedPolySymbol';\n\ntype SelectedFeature = Polygon & {\n isSelected: boolean;\n};\n\nexport type SelectedPolySymbolParams = {\n selectedFillColor?: string;\n selectedStrokeColor: string;\n selectedStrokeWidth?: number;\n} & EditorPolySymbolParams;\n\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\n selectedFillColor!: string;\n selectedStrokeColor!: string;\n selectedStrokeWidth!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPolySymbolParams) {\n super(props);\n }\n\n protected getShadow(\n coordinates: Coordinates[][],\n feature: SelectedFeature\n ): PolyRender | void {\n if (feature.isSelected) {\n return super.getShadow(coordinates, feature);\n }\n }\n\n protected getPolyRender(\n coordinates: Coordinates[][],\n feature: SelectedFeature\n ): PolyRender {\n const polyRender = super.getPolyRender(coordinates, feature);\n if (feature.isSelected) {\n polyRender.fillColor = this.selectedFillColor;\n polyRender.strokeColor = this.selectedStrokeColor;\n if (this.selectedStrokeWidth !== void 0) {\n polyRender.strokeWidth = this.selectedStrokeWidth;\n }\n }\n\n return polyRender;\n }\n}\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\nimport { SelectedPointSymbol } from './SelectedPointSymbol';\n\nexport const selectedPoint = new SelectedPointSymbol({\n size: 8,\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.65)',\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 3,\n\n selectedStrokeColor: '#ff5722',\n selectedFillColor: 'rgba(255, 255, 255, 0.65)',\n});\n\nexport const selectedPolyline = new SelectedPolySymbol({\n strokeWidth: 6,\n strokeColor: 'rgba(255, 87, 34, 0.2)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n selectedStrokeColor: '#ff5722',\n selectedStrokeWidth: 2,\n});\n\nexport const selectedPolygon = new SelectedPolySymbol({\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.36)',\n enclose: true,\n selectedFillColor: 'rgba(255, 255, 255, 0.56)',\n selectedStrokeColor: '#ff5722',\n});\n","import { Symbol } from '@evergis/sgis/es/symbols/Symbol';\r\nimport { Render, DynamicRender } from '@evergis/sgis/es/renders/Render';\r\nimport { SvgRender } from '@evergis/sgis/es/painters/DomPainter/SvgRender';\r\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { Bbox } from '@evergis/sgis/es/Bbox';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { FillStyle } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { listenDomEvent } from '@evergis/sgis/es/utils/domEvent';\r\nimport {\r\n MouseEventFlags,\r\n mouseEvents,\r\n Handler,\r\n} from '@evergis/sgis/es/EventHandler';\r\n\r\nimport { metersToPixels } from '../../utils/metersToPixels';\r\n\r\nimport { SVGPolyProps, SVGFeaturePoly, SvgPolyPathStyles } from './types';\r\n\r\nconst defaultPathStyles: SvgPolyPathStyles = {\r\n strokeWidth: 2,\r\n strokeColor: 'rgb(0, 163, 245)',\r\n fillStyle: FillStyle.None,\r\n};\r\n\r\nexport class SVGPoly extends Symbol<SVGFeaturePoly> {\r\n container: HTMLDivElement = document.createElement('div');\r\n redrawFeatureNode: SVGPolyProps['redrawFeatureNode'];\r\n pathStyles?: SvgPolyPathStyles;\r\n circle?: SVGPolyProps['circle'];\r\n className?: string;\r\n appendToSvg?: SVGPolyProps['appendToSvg'];\r\n\r\n constructor({\r\n redrawFeatureNode,\r\n pathStyles,\r\n circle,\r\n className,\r\n appendToSvg,\r\n }: SVGPolyProps = {}) {\r\n super();\r\n this.container.style.position = 'absolute';\r\n this.redrawFeatureNode = redrawFeatureNode;\r\n this.pathStyles = { center: [0, 0], fillColor: 'none', ...pathStyles };\r\n this.circle = circle;\r\n this.className = className;\r\n this.appendToSvg = appendToSvg;\r\n }\r\n\r\n renderFunction(\r\n feature: SVGFeaturePoly,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n const coordinates =\r\n feature instanceof Poly\r\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\r\n : feature.centroid;\r\n\r\n this.setCirclePxRaius(crs);\r\n this.container.innerHTML = '';\r\n const svg = this.setSvg(coordinates);\r\n svg && this.container.append(svg);\r\n\r\n feature.__dynamicSymbolRender = new DynamicRender({\r\n node: this.container,\r\n update: (bbox, resolution) =>\r\n this.update({ bbox, resolution, feature, crs }),\r\n redraw: () => {\r\n this.redrawFeatureNode && this.redrawFeatureNode(feature);\r\n },\r\n });\r\n\r\n this._setEventListeners(feature);\r\n\r\n return [feature.__dynamicSymbolRender];\r\n }\r\n\r\n setCirclePxRaius(crs: Crs) {\r\n if (this.circle && this.pathStyles) {\r\n this.pathStyles.radius =\r\n metersToPixels(this.circle.radius, {\r\n painter: this.circle.painter,\r\n crs,\r\n }) + (this.circle?.pxOffset || 0);\r\n }\r\n }\r\n\r\n update({\r\n bbox,\r\n resolution,\r\n feature,\r\n crs,\r\n }: {\r\n bbox?: Bbox;\r\n resolution?: number;\r\n feature: SVGFeaturePoly;\r\n crs: Crs;\r\n }) {\r\n if (!feature) return;\r\n\r\n if (!bbox) bbox = feature.__lastBbox;\r\n if (!resolution) resolution = feature.__lastResolution;\r\n\r\n if (!bbox || !resolution || !feature.crs.canProjectTo(bbox.crs)) return;\r\n\r\n if (feature.__lastResolution && resolution !== feature.__lastResolution) {\r\n const newCoordinates =\r\n feature instanceof Poly\r\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\r\n : feature.centroid;\r\n\r\n this.setCirclePxRaius(crs);\r\n this.container.innerHTML = '';\r\n const svg = this.setSvg(newCoordinates);\r\n svg && this.container.append(svg);\r\n }\r\n\r\n const polygon = feature.projectTo(bbox.crs);\r\n const radiusOffset = this.pathStyles?.radius\r\n ? this.pathStyles?.radius +\r\n (this.pathStyles?.strokeWidth ? this.pathStyles?.strokeWidth / 2 : 0)\r\n : 0;\r\n const dx =\r\n Math.round((polygon.bbox.xMin - bbox.xMin) / resolution) - radiusOffset;\r\n const dy =\r\n Math.round((bbox.yMax - polygon.bbox.yMax) / resolution) - radiusOffset;\r\n\r\n this.container.style.left = `${dx.toString()}px`;\r\n this.container.style.top = `${dy.toString()}px`;\r\n\r\n feature.__lastBbox = bbox;\r\n feature.__lastResolution = resolution;\r\n }\r\n\r\n setSvg(\r\n coordinates: [number, number][][] | Coordinates\r\n ): SVGElement | undefined {\r\n const { lineCap, lineJoin, miterLimit, lineDash, dashOffset } =\r\n this.pathStyles || {};\r\n const svgRender = new SvgRender({\r\n coordinates,\r\n ...defaultPathStyles,\r\n appendToSvg: this.appendToSvg,\r\n ...this.pathStyles,\r\n });\r\n\r\n if (this.circle) {\r\n svgRender._setArcNode();\r\n } else {\r\n svgRender._setPolyNode();\r\n }\r\n\r\n let svgElement;\r\n svgRender.getNode((_: null, svg: SVGElement) => {\r\n svgElement = svg;\r\n this.className && svgElement.classList.add(this.className);\r\n const path =\r\n svgElement && svgElement.querySelector(this.circle ? 'circle' : 'path');\r\n\r\n if (path) {\r\n path.setAttribute('stroke-linecap', lineCap || 'round');\r\n path.setAttribute('stroke-linejoin', lineJoin || 'round');\r\n path.setAttribute('stroke-miterlimit', (miterLimit || 10).toString());\r\n path.setAttribute('stroke-dashoffset', (dashOffset || 0).toString());\r\n\r\n if (this.circle) {\r\n path.setAttribute(\r\n 'stroke-dasharray',\r\n lineDash && lineDash.length > 0 ? lineDash.join(',') : ''\r\n );\r\n }\r\n }\r\n });\r\n\r\n return svgElement;\r\n }\r\n\r\n private _setEventListeners(dynamicFeature: SVGFeaturePoly): void {\r\n if (dynamicFeature.eventFlags === MouseEventFlags.None) return;\r\n\r\n const svgNode = dynamicFeature?.__dynamicSymbolRender?.node.querySelector(\r\n this.circle ? 'circle' : 'path'\r\n );\r\n\r\n Object.keys(mouseEvents).forEach(eventName => {\r\n if (dynamicFeature.eventFlags & mouseEvents[eventName].flag) {\r\n listenDomEvent(\r\n svgNode,\r\n mouseEvents[eventName].type,\r\n (event: Handler) => {\r\n dynamicFeature.fire(mouseEvents[eventName].type, {\r\n node: svgNode,\r\n browserEvent: event,\r\n });\r\n }\r\n );\r\n }\r\n });\r\n }\r\n}\r\n","import { BrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\r\nimport { ImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\r\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { SquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\r\nimport { PolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\r\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\r\nimport { PointSymbol } from '@evergis/sgis/es/symbols/point/Point';\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\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 isSGisCombinedPolylineSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is CombinedPolylineSymbol {\r\n return symbol instanceof CombinedPolylineSymbol\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\nimport { CombinedPolyline } from \"@evergis/sgis/es/features/CombinedPolyline\";\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 combinedLineFeature = new CombinedPolyline(\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 combinedPolyline: combinedLineFeature,\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 combinedPolyline: combinedLineFeature,\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 { isSGisCombinedPolylineSymbol, 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 if (isSGisCombinedPolylineSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.combinedPolyline,\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) => {\r\n return getSymbolRenders(symbol, size, MAP_LEGEND_FEATURES);\r\n}\r\n\r\nexport const getLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => {\r\n return getSymbolRenders(symbol, size, LEGEND_FEATURES);\r\n}\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 { 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 { PropsWithRef, useCallback, useState } from 'react';\r\n\r\nexport function useNode(): [PropsWithRef<any>, HTMLElement | null] {\r\n const [node, onSetNode] = useState<HTMLElement | null>(null);\r\n\r\n const ref = useCallback(onSetNode, [onSetNode]);\r\n\r\n return [ref, node];\r\n}\r\n","import React from 'react';\r\n\r\nimport { useCanvas, useSymbol, UseSymbolParams } from '../../hooks';\r\n\r\ninterface Props extends UseSymbolParams {}\r\n\r\nexport const Symbol: React.FC<Props> = ({ symbol, size, render }) => {\r\n const { canvas, ref } = useCanvas();\r\n useSymbol({ symbol, size, render }, canvas);\r\n\r\n return <canvas ref={ref} />;\r\n};\r\n","import { GeometryType } from '@evergis/api';\r\nimport styled from 'styled-components';\r\n\r\nexport type CompoundIconProps = {\r\n geometryType: GeometryType;\r\n icons: Record<GeometryType, string>;\r\n};\r\n\r\nexport const CompoundIcon = styled.div<CompoundIconProps>`\r\n background: ${({ geometryType, icons }) =>\r\n `url(${icons[geometryType]}) center center / ${\r\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\r\n } no-repeat`};\r\n height: 32px;\r\n width: 32px;\r\n`;\r\n\r\nexport const ClusterSymbol = styled.div<{ color?: string }>`\r\n position: relative;\r\n width: 32px;\r\n height: 32px;\r\n\r\n :before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: inherit;\r\n height: inherit;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n opacity: 0.28;\r\n }\r\n \r\n :after {\r\n content: \"99\";\r\n position: absolute;\r\n top: 4px;\r\n left: 4px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 24px;\r\n height: 24px;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n color: white;\r\n font-size: 0.75rem;\r\n line-height: 1;\r\n }\r\n`;\r\n","import React, { PropsWithChildren } from 'react';\r\nimport { SvgPointSymbolDc } from \"@evergis/api\";\r\n\r\nimport { Symbol } from './Symbol';\r\nimport { ClusterSymbol } from \"./styled\";\r\nimport { getParameterValue, StyleSymbolType } from '../../core';\r\nimport { deserializeSymbol, adjustSymbol, isSGisClusterSymbol, SGisSymbolType } from '../../symbols';\r\n\r\ntype StyleSymbolProps = PropsWithChildren<{\r\n symbol: StyleSymbolType;\r\n size?: number;\r\n}>;\r\n\r\nconst MAX_SIZE = 32;\r\n\r\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\r\n symbol,\r\n size = MAX_SIZE,\r\n children,\r\n}) => {\r\n if (children) {\r\n return <>{children}</>;\r\n }\r\n\r\n let sGisSymbol = null;\r\n\r\n try {\r\n sGisSymbol = deserializeSymbol(symbol);\r\n } catch (e) {\r\n // TODO generate Error symbol\r\n }\r\n\r\n if (!sGisSymbol) {\r\n return null;\r\n }\r\n\r\n if (isSGisClusterSymbol(symbol as SGisSymbolType)) {\r\n const color = getParameterValue((sGisSymbol as SvgPointSymbolDc).background?.fillColor as string) ||\r\n getParameterValue((sGisSymbol as SvgPointSymbolDc).figure?.fillColor as string) || \"rgb(0, 170, 255)\";\r\n\r\n return <ClusterSymbol color={color} />\r\n }\r\n\r\n return (\r\n <Symbol\r\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\r\n size={size}\r\n />\r\n );\r\n};\r\n","import { Icon } from '@evergis/icons';\r\nimport styled from 'styled-components';\r\n\r\nexport const EvergisCardContainer = styled.div`\r\n position: absolute;\r\n top: 2.25rem;\r\n right: 0.5rem;\r\n width: 22.5rem;\r\n margin-bottom: 1rem;\r\n max-height: 90%;\r\n min-height: 1rem;\r\n background: #fff;\r\n border-radius: 4px;\r\n z-index: 1;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n flex-grow: 1;\r\n overflow: initial;\r\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\r\n\r\n ${Icon} {\r\n color: rgba(0, 0, 0, 0.65);\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &:hover {\r\n color: #1fb3aa;\r\n }\r\n }\r\n`;\r\n\r\nexport const StickyHeader = styled.div`\r\n display: flex;\r\n position: sticky;\r\n top: 0;\r\n flex-direction: column;\r\n background: #fff;\r\n`;\r\n\r\nexport const CardHeader = styled.div`\r\n display: flex;\r\n padding: 1.5rem 1.5rem 1rem;\r\n align-items: center;\r\n`;\r\n\r\nexport const CardTitle = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin: 0 0.5rem;\r\n flex-grow: 1;\r\n`;\r\n\r\nexport const CardControls = styled.div`\r\n display: flex;\r\n\r\n ${Icon} {\r\n margin: 0 0.5rem;\r\n }\r\n`;\r\n\r\nexport const FeatureName = styled.div`\r\n font-size: 1.25rem;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const LayerName = styled.div`\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const CardPagination = styled.div`\r\n display: flex;\r\n height: 2.5rem;\r\n padding: 0 1.5rem;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n justify-content: space-between;\r\n background: linear-gradient(\r\n 0deg,\r\n rgba(161, 186, 208, 0.12),\r\n rgba(161, 186, 208, 0.12)\r\n );\r\n`;\r\n\r\nexport const PaginationDescription = styled.div`\r\n display: flex;\r\n`;\r\n\r\nexport const CurrentFeatureIndex = styled.div`\r\n cursor: pointer;\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n`;\r\n\r\nexport const CardAttributes = styled.div`\r\n padding: 1rem 1.5rem;\r\n overflow-y: scroll;\r\n`;\r\n\r\nexport const AttributeContainer = styled.div`\r\n padding-bottom: 0.5rem;\r\n`;\r\n\r\nexport const AttributeTitle = styled.div`\r\n margin: 0.25rem 0;\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const AttributeValueContainer = styled.div`\r\n flex-wrap: wrap;\r\n display: flex;\r\n`;\r\n\r\nexport const SimpleAttribute = styled.div``;\r\n\r\nexport const ValueLink = styled.a`\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n text-decoration: none;\r\n`;\r\n","import React from 'react';\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 MaximizedLegendContainer = styled.div<{ isShown?: boolean }>`\r\n position: ${({ isShown }) => isShown ? \"relative\" : \"absolute\"};\r\n top: 0;\r\n opacity: ${({ isShown }) => isShown ? 1 : 0};\r\n visibility: ${({ isShown }) => isShown ? \"visible\" : \"hidden\"};\r\n overflow: hidden;\r\n transition: opacity 0.5s, visibility 0.5s;\r\n`;\r\n\r\nexport const MinimizedLegendContainer = styled(MaximizedLegendContainer)`\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 MapLegendSectionItems = styled.div<{ height?: number }>`\r\n position: relative;\r\n height: ${({ height }) => height}px;\r\n overflow: hidden;\r\n transition: height 0.5s;\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 bottom: 0;\r\n left: 50%;\r\n display: flex;\r\n align-items: flex-end;\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 innerRef,\r\n isShown,\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 ref={innerRef} isShown={isShown}>\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 MaximizedLegendContainer,\r\n SymbolContainer\r\n} from \"../styled\";\r\nimport { LegendSymbolRenderer } from \"./LegendSymbolRenderer\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\nimport {\r\n ClassificationParameterExtended,\r\n getExtractedSymbol,\r\n isClusterFillColor as isClusterFillColorAction,\r\n ParameterByAttribute,\r\n ParameterValue\r\n} from \"../../../core\";\r\nimport { MaximizedLegendProps } from \"../types\";\r\n\r\nexport const MaximizedLegend: FC<MaximizedLegendProps> = ({\r\n innerRef,\r\n isShown,\r\n layerName,\r\n symbol: sectionSymbol,\r\n parameter,\r\n values,\r\n index: sectionIndex,\r\n attributeType,\r\n hiddenLegends,\r\n toggleHiddenLegend,\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 isHidden = useCallback(\r\n (hiddenCondition: string) => !!hiddenLegends?.includes(hiddenCondition),\r\n [hiddenLegends],\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 = isClusterFillColorAction(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?.(layerName, 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[parameterValue?.values.length - index - 1]?.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={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 hiddenLegends,\r\n toggleHiddenLegend,\r\n ],\r\n );\r\n\r\n return (\r\n <MaximizedLegendContainer ref={innerRef} isShown={isShown}>\r\n {values.map(renderLegend)}\r\n </MaximizedLegendContainer>\r\n );\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, MapLegendSectionItems } from \"../styled\";\r\nimport { getMaximizedLegendValues, getMinimizedLegendValues } from \"../../../utils/legend\";\r\nimport { useNode, useToggle } from \"../../../hooks\";\r\nimport { LegendSectionProps } from \"../types\";\r\n\r\nexport const LegendSection: FC<LegendSectionProps> = ({\r\n layerName,\r\n symbol,\r\n parameter,\r\n parameters,\r\n classified,\r\n hiddenLegends,\r\n toggleHiddenLegend,\r\n attribute,\r\n formatValue,\r\n index,\r\n}) => {\r\n const { t } = useTranslation(\"common\");\r\n const [isExpanded, toggleExpanded] = useToggle();\r\n const [maxRef, maxNode] = useNode();\r\n const [minRef, minNode] = useNode();\r\n\r\n return (\r\n <MapLegendSectionContainer>\r\n <MapLegendHeader>{attribute.alias || attribute.name}</MapLegendHeader>\r\n <LegendParameterDescription parameter={parameter} />\r\n <MapLegendSectionItems height={isExpanded ? (maxNode?.offsetHeight || 0) + 4 : minNode?.offsetHeight}>\r\n <MaximizedLegend\r\n innerRef={maxRef}\r\n isShown={isExpanded}\r\n layerName={layerName}\r\n symbol={symbol}\r\n hiddenLegends={hiddenLegends?.[layerName]}\r\n toggleHiddenLegend={toggleHiddenLegend}\r\n parameter={parameter}\r\n attributeType={attribute.type}\r\n index={index}\r\n values={getMaximizedLegendValues(\r\n attribute,\r\n parameter,\r\n parameters,\r\n classified,\r\n symbol,\r\n formatValue,\r\n index,\r\n t(\"classification.other\"),\r\n )}\r\n />\r\n <MinimizedLegend\r\n innerRef={minRef}\r\n isShown={!isExpanded}\r\n hiddenLegends={hiddenLegends?.[layerName]}\r\n parameter={parameter}\r\n values={getMinimizedLegendValues(\r\n attribute,\r\n classified,\r\n formatValue,\r\n index,\r\n t(\"classification.other\"),\r\n )}\r\n />\r\n </MapLegendSectionItems>\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, memo } from \"react\";\r\n\r\nimport { LegendSection } from \"./components\";\r\nimport { MapLegendContainer } from \"./styled\";\r\nimport { getLayerAttributes } from \"../../core/attributes/utils\";\r\nimport { ClassifiedList, getClassified } from \"../../utils/legend\";\r\nimport { ClassificationParameterExtended, getAttributeNameFromCondition, LayerAttribute } from \"../../core\";\r\nimport { LegendProps } from \"./types\";\r\n\r\nexport const Legend: FC<LegendProps> = memo(({ layerInfo, ...rest }) => {\r\n const classified = getClassified(layerInfo);\r\n\r\n if (!classified) return null;\r\n\r\n const parameters = 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\r\n return (\r\n <LegendSection\r\n key={index}\r\n layerName={layerInfo.name}\r\n symbol={layerInfo.style?.symbol}\r\n attribute={attributes.find(({ name }) => name === attributeName) as LayerAttribute}\r\n classified={classified[param as keyof ClassifiedList]}\r\n parameter={param as ClassificationParameterExtended}\r\n parameters={parameters}\r\n index={index}\r\n {...rest}\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","isRangeClass","Boolean","isUniqueClass","NULL_EXPRESSION","attribute","operation","ClassificationCondition","condition","conditionResult","ConditionInterpreter","expressions","Error","leftExpression","isUnique","console","warn","isRange","from","to","rightExpression","isFrom","TokenType","ArGr","ArEq","ArGre","ArLs","ArLse","includes","PARAMETER_SEPARATOR","parameterToPaths","parameter","split","pathsToParameter","paths","join","isObject","Array","isArray","isParameterByAttribute","type","isCalculatedParameter","getParameterValue","defaultValue","symbolParameterWalker","valueModifier","firstKey","restKeys","symbolPart","goDeeper","setDefaultParameterValue","setParameterValue","path","applyParameterValue","symbolTypeGuard","isPointLabelSymbol","isPolygonLabelSymbol","isPolylineLabelSymbol","isLabelSymbol","createCompositeSymbol","childSymbols","getChildSymbols","isCompositeSymbol","extractSymbol","isSimpleSymbol","label","raster","isRasterSymbol","extractStyle","style","packStyle","ignoreLabel","styleDc","filter","childStyle","isPointSymbol","isSquareSymbol","isMaskedImageSymbol","isStaticImageSymbol","isPolygonSymbol","isPolylineSymbol","isSimplePolylineSymbol","isPolylineSymbols","isImageSymbol","isTwoDimensionalSymbol","isSizableSymbol","isStrokeStyledSymbol","isScalablePolylineSymbol","beginning","ending","stroke","isH3GridSymbol","isSvgPointSymbol","isClusterSymbol","isClusterFillColor","getExtractedSymbol","extractCluster","extracted","singleObjectSymbol","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","collectClassifications","predicate","callback","initial","unClassify","flatSymbol","result","printRangeClass","index","isDouble","isDate","getRangeValues","EvergisStyle","classificationManager","some","minResolution","maxResolution","getHexColor","colorString","Color","toString","undefined","PREVIEW_LIMITS","STROKE_WIDTH_MIN","STROKE_WIDTH_MAX","clamp","num","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","toFixed","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","NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","formatDate","dateFormat","ClientDefaultFormat","dateValue","format","numberWithSpaces","fractionDigits","delim","frac","numWithSpaces","replace","matchPhone","phoneRegexp","isStringAsInn","match","innRegexp","test","isStringAsKpp","kppRegexp","isStringAsOgrn","ogrnRegexp","isStringContainsDate","dateRegexp","isRequisiteNumbers","isStringAsPhone","isStringAsMail","isStringAsUrl","isValidUrl","urlRegexp","urlKind","URL","_","mailHref","mail","phoneHref","urlHref","stringAttribute","urlAttribute","mailAttribute","phoneAttribute","convertStringAttribute","formatStringAttribute","phones","attributeValues","every","isNaN","formatDateTimeAttribute","formatIntAttribute","DOUBLE_FRACTIONS","formatDoubleAttribute","isNullOrUndefined","NO_CONTENT_ATTRIBUTE","formatAttributeValue","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","mergeAttributes","attributes1","attributes2","EvergisFeature","id","displayName","geometry","layerName","layerAlias","coordinates","sr","GeometryType","Point","PointFeature","selectedPoint","Multipoint","MultiPoint","Polyline","selectedPolyline","Polygon","selectedPolygon","sGisFeature","evaluateCondition","evaluator","ConditionEvaluator","evaluate","getAttributeValue","attributeMeta","getAttributeNameFromCondition","getAttributeNameFromClassified","findFeatureValue","parameterValues","extractValuesAttribute","evaluateFeatureSymbol","calc","parameterName","newParameterValue","featureValue","findChildFeatureStyle","childStyles","findChildFeatureSymbol","featureStyle","getFeatureSymbol","EvergisLayer","service","evergisService","alias","titleAttribute","findFeatureLayer","evaluateFeature","featureLayer","createValueTitle","isValidParameter","FilterConditionOperation","ComparisonOperator","formatArea","measure","formatLength","formatPolygonMeasure","area","perimiter","isPolylineLikePolygon","coords","firstPoint","lastPoint","distance","softEquals","getScale","scale","scales","pow","DEFAULT_FORMATTERS","polygon","COORD_FRACTION","DEFAULT_LABEL_POSITION","Infinity","BaseMeasureToolCreator","params","fire","renderLabelSymbol","formatters","areaSymbol","on","handlePointAdd","updateDistance","drawPointOnMouseMove","addTempLabel","setCursor","removeCoordLabel","removeTempLabel","removeMeasureLabel","removeTempPolygon","activeFeature","finishDrawing","DrawingFinishEvent","MouseEvent","projection","projectionTo","lat","long","addMeasureResultLabel","addCoordLabel","tempPolygon","_tempLayer","remove","polygonRings","shift","measureAreaSymbol","hide","add","ringIndex","pointIndex","calcLength","content","polygonPreview","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","comparisonOperatorMapReversed","Equals","ArNotEq","NotEquals","GreaterThan","LessThan","GreaterOrEquals","LessOrEquals","Between","Outside","NUMERIC_ATTRIBUTE_TYPES","Int32","Double","formatValue","UTC","formatCondition","comparisonOperator","operator","OPERATOR_CONDITION_REMAP","preparedValue","isBetweenOutside","BETWEEN_OPERATORS","escapeValue","formattedValue","val","nulledValue","isNil","valueEscaped","Char","escapeSpecChars","addOperationToValue","createConditionString","createCondition","convertedResult","convertOperatorValue","operatorIndex","startsWith","PERCENTAGE","endsWith","CONTAINS_OPERATORS","ENDS_WITH_OPERATORS","STARTS_WITH_OPERATORS","addContains","addStartsWith","addEndsWith","Contains","NotContains","StartsWith","NotStartsWith","EndsWith","NotEndsWith","BETWEEN","OUTSIDE","FilterCondition","conditionInterpreter","message","isOrCondition","boolOperations","BoolOr","isAndCondition","BoolAnd","OR","AND","conditions","isLayerService","getAttributeFromCondition","parts","getExprFromCondition","partIndex","expr","part","getSignFromConditionPart","getValueFromConditionPart","isRangeCondition","getSymbolParameterInfo","PARAMETER_INFOS","DEFAULT_PARAMETER_INFO","formatUniqueClassValue","stringFormat","formatRangeClassValue","formattedFrom","formattedTo","checkLayerHasLegend","layerInfo","SYMBOL_CLASSIFICATION","geometryType","param","paramValue","get","getTitleFromCondition","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","createHiddenCondition","attributeType","newValue","createOtherHiddenCondition","hiddenCondition","getMinimizedLegendValues","classified","otherTitle","other","getClassificationValue","items","reverse","getMaximizedLegendValues","sectionIndex","getClassified","classifyParams","getSymbolStrokeWidth","parameterFromSymbol","getLegendSymbolSize","cellSize","EXTRA_BORDER_SIZE","DEFAULT_LEGEND_SYMBOL_SIZE","serializeSvgPointSymbol","figureFillColor","figure","bgFillColor","angle","SvgSymbolBg","SIZE_PARAMETERS","isSizeClassification","getServiceConfiguration","emptyServiceConfiguration","configuration","GEOMETRY_ATTRIBUTE","DEFAULT_ID_ATTRIBUTE_NAME","getAttributesConfiguration","serviceConfiguration","emptyAttributesConfiguration","geometryAttribute","idAttribute","tableName","attributesConfiguration","getLayerDefinition","emptyLayerDefinition","getAttributeType","metersToPixels","meters","zeroPoint","projectTo","maxWidthPoint","widthDistance","pxK","polygonCircleFromPoint","diameter","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","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","serialize","deserialize","Filled","Empty","BASE_OPERATORS","FILLED_OPERATORS","RANGE_OPERATORS","numberComparisonOperators","dateComparisonOperators","textComparisonOperators","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","nextCoordinates","abs","updateRingForLeftMiter","isFirstRing","newRing","prevCoordinates","updateRingsForMiter","copyRings","SGisPolylineSymbol","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","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","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","isSGisCombinedPolylineSymbol","CombinedPolylineSymbol","isSGisClusterSymbol","viewBoxSize","pointFeature","plain","lineFeature","combinedLineFeature","CombinedPolyline","polygonFeature","h3gridFeature","H3Feature","lineLegendFeature","polygonLegendFeature","polygonMapLegendFeature","MAP_LEGEND_FEATURES","LEGEND_FEATURES","polyline","combinedPolyline","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","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","useNode","onSetNode","CompoundIcon","styled","div","icons","ClusterSymbol","MAX_SIZE","StyleSymbol","sGisSymbol","e","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","isHidden","SymbolButtonWithClick","palette","elementDeep","SymbolButton","span","MapLegendControl","MapLegendContainer","MapLegendHeader","MapLegendDescriptionContainer","MaximizedLegendContainer","isShown","MinimizedLegendContainer","MapLegendSectionContainer","MapLegendSectionItems","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","innerRef","hiddenLegends","currentValues","pop","titleMax","titleMin","checkIsHidden","useSvgSymbol","skipOffset","SVGWrapperRefElement","SVG","initSvg","addTo","getSvgData","manipulateSvg","newSymbol","getUpdatedSvgSymbol","field","JSON","parse","stringify","svgRef","SvgSymbolContainer","SvgSymbolLabel","fontSettings","fontFamily","fontWeight","fontStyle","fontColor","fontSize","haloColor","haloWidth","SvgSymbol","memo","text","onSelectSymbol","renderSymbol","SymbolByType","defaultSymbol","LegendSymbolRenderer","MaximizedLegend","sectionSymbol","toggleHiddenLegend","t","useTranslation","isStrokeColor","renderColumn","column","dateTime","Fragment","renderItemText","columns","isSingleColumn","renderLegend","isClusterFillColorAction","LegendParameterDescription","LegendSection","parameters","isExpanded","toggleExpanded","maxRef","maxNode","minRef","minNode","offsetHeight","Legend","rest","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.cjs.development.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/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/compositeSymbol.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/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/utils/date.ts","../src/utils/format.ts","../src/utils/url.ts","../src/core/attributes/format.ts","../src/core/crs/index.ts","../src/core/attributes/utils.ts","../src/core/feature/EvergisFeature.ts","../src/core/feature/evaluateCondition.ts","../src/core/feature/getFeatureSymbol.ts","../src/core/layer/EvergisLayer.ts","../src/core/legend/createValueTitle.ts","../src/core/legend/isValidParameter.ts","../src/core/legend/types.ts","../src/core/measurer.ts","../src/core/scale.ts","../src/controls/MeasureToolFormatters.ts","../src/controls/BaseMeasureToolCreator.ts","../src/controls/BaseMeasureToolEditor.ts","../src/utils/isNumeric.ts","../src/utils/isParameterType.ts","../src/core/legend/createCondition.ts","../src/core/legend/FilterCondition.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/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/hooks/useNode.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 { 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 { LineEndingType, ParameterDcColor, ParameterDcDouble } from '@evergis/api';\r\n\r\nimport { CalculatedAble, ClassifyAble } from './parameterValue';\r\nimport { Offset } from './offset';\r\nimport { 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 | LineEndingType;\r\n beginningSize: LineMiterSize;\r\n ending: null | LineEndingType;\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 { 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 {\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 { extractSymbol } from \"../compositeSymbol\";\r\nimport { CalculatedAble } from './parameterValue';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\nimport { FillBrushType, StrokeBrushType } from './brush';\r\nimport { ClassificationParameterExtended } from \"../../classification\";\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 ClusterSymbolType = ClientSymbol<\"cluster\", ClusterSymbolDc>;\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\r\nexport const isClusterSymbol = symbolTypeGuard<ClusterSymbolType>(\"cluster\");\r\n\r\nexport const isClusterFillColor = (symbol: StyleSymbolType, parameter: ClassificationParameterExtended) => {\r\n return isClusterSymbol(symbol) && parameter === \"fillColor\";\r\n};\r\n\r\nexport const getExtractedSymbol = (symbol: StyleSymbolType, extractCluster = false): StyleSymbolType => {\r\n const extracted = isCompositeSymbol(symbol as CompositeSymbolType) ? extractSymbol(symbol)?.symbol : symbol;\r\n\r\n return extractCluster && isClusterSymbol(extracted as ClusterSymbolType)\r\n ? ((extracted as ClusterSymbolType).singleObjectSymbol as StyleSymbolType)\r\n : extracted;\r\n};\r\n","import {\n DashedBrushDc,\n HatchBrushDc,\n PatternBrushDc,\n SolidStrokeBrushDc,\n TextBackgroundDc,\n} from '@evergis/api';\n\nimport { ClientSymbol, symbolTypeGuard, Unclassify } from './utils';\nimport { isPolygonSymbol, PolygonSymbol, UnknownSymbol } from './symbol';\n\nexport type SolidBrush = ClientSymbol<'solid', SolidStrokeBrushDc>;\nexport type DashedBrush = ClientSymbol<'dashed', DashedBrushDc>;\nexport type HatchBrush = ClientSymbol<'hatch', HatchBrushDc>;\nexport type PatternBrush = ClientSymbol<'pattern', PatternBrushDc>;\nexport type StrokeBrushType = SolidBrush | DashedBrush;\nexport type FillBrushType = SolidBrush | HatchBrush | PatternBrush;\n\nexport const isHatchBrush = symbolTypeGuard<HatchBrush>('hatch');\nexport const isPatternBrush = symbolTypeGuard<PatternBrush>('pattern');\nexport const isDashedBrush = symbolTypeGuard<DashedBrush>('dashed');\nexport const isSolidBrush = symbolTypeGuard<SolidBrush>('solid');\n\nexport const isPolygonHasPatternBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<PatternBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isPatternBrush(symbol.fill));\n\nexport const isPolygonHasHatchBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<HatchBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isHatchBrush(symbol.fill));\n\nexport type TextBackgroundType = Omit<TextBackgroundDc, 'fill' | 'stroke'> & {\n fill: Unclassify<FillBrushType>;\n stroke: Unclassify<StrokeBrushType>;\n};\n","import { LineEndingType } from \"@evergis/api\";\r\n\r\nimport { ClassifyAble } from './parameterValue';\r\n\r\nexport const enum LineMiterSize {\r\n Small = 'small',\r\n Large = 'large',\r\n}\r\n\r\nexport type NoLineMiterType = {\r\n type: LineEndingType.None;\r\n};\r\n\r\ntype LineMiterBase<T extends LineEndingType> = {\r\n type: T;\r\n color?: ClassifyAble<string>;\r\n};\r\n\r\nexport type ArrowLineType = LineMiterBase<LineEndingType.Arrow> & {\r\n strokeWidth?: number;\r\n arrowLength?: number;\r\n arrowWidth?: number;\r\n};\r\nexport type FilledArrowLineMiterType = LineMiterBase<\r\n LineEndingType.FilledArrow\r\n> & {\r\n arrowLength?: number;\r\n arrowWidth?: number;\r\n};\r\nexport type SquareLineMiterType = LineMiterBase<LineEndingType.Square> & {\r\n size?: number;\r\n strokeWidth?: number;\r\n};\r\nexport type FilledSquareLineMiterType = LineMiterBase<\r\n LineEndingType.FilledSquare\r\n> & {\r\n size?: number;\r\n};\r\nexport type CircleLineMiterType = LineMiterBase<LineEndingType.Circle> & {\r\n size?: number;\r\n strokeWidth?: number;\r\n};\r\nexport type FilledCircleLineMiterType = LineMiterBase<\r\n LineEndingType.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 !== LineEndingType.None);\r\n\r\nexport const isFilledLineMitter = (\r\n miter: LineMiterType\r\n): miter is FilledLineMitters =>\r\n miter.type === LineEndingType.FilledCircle ||\r\n miter.type === LineEndingType.FilledArrow ||\r\n miter.type === LineEndingType.FilledSquare;\r\n\r\nexport const isArrowLineMiter = (\r\n miter: LineMiterType\r\n): miter is ArrowLineMiters =>\r\n miter.type === LineEndingType.Arrow ||\r\n miter.type === LineEndingType.FilledArrow;\r\n\r\nexport const isSquareLineMiter = (\r\n miter: LineMiterType\r\n): miter is SquareLineMiters =>\r\n miter.type === LineEndingType.Square ||\r\n miter.type === LineEndingType.FilledSquare;\r\n\r\nexport const isCircleLineMiter = (\r\n miter: LineMiterType\r\n): miter is CircleLineMiters =>\r\n miter.type === LineEndingType.Circle ||\r\n miter.type === LineEndingType.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 { 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 { LineEndingType } from \"@evergis/api\";\r\nimport { 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 { 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: LineEndingType;\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: LineEndingType;\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 { LineEndingType } from \"@evergis/api\";\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { LineMiterRender } from './LineMiterRender';\r\n\r\nexport class ArrowLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth;\r\n }\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [\r\n [\r\n [x, y + this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y],\r\n [x, y - this.miterSize / 2],\r\n ],\r\n ];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineEndingType.FilledArrow;\r\n\r\n return new PolyRender(miterRings, {\r\n enclosed: isFilled,\r\n fillColor: isFilled ? this.color : void 0,\r\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\r\n lineCap: 'square',\r\n lineJoin: 'miter',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n }\r\n}\r\n","import { 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.toString();\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 {\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 { FeatureDc, GeometryDc, GeometryType } from '@evergis/api';\r\nimport { MultiPoint } from '@evergis/sgis/es/features/MultiPoint';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\n\r\nimport { CRS_MAP, SrId } from '../crs';\r\n\r\nimport { FeatureAttribute } from '../attributes';\r\nimport { getFeatureAttributes } from '../attributes/utils';\r\n\r\nimport { StyleSymbolType } from '../style';\r\n\r\nimport {\r\n selectedPoint,\r\n selectedPolygon,\r\n selectedPolyline,\r\n} from '../../symbols';\r\n\r\nexport type FeatureDCExtened = FeatureDc & {\r\n layer?: string;\r\n};\r\n\r\nexport class EvergisFeature {\r\n public id?: string | null = null;\r\n public displayName?: string | null = null;\r\n public geometry?: GeometryDc | null = null;\r\n\r\n public layerName?: string | null = null;\r\n public layerAlias?: string | null = null;\r\n public attributes?: FeatureAttribute[] | null = null;\r\n public symbol?: StyleSymbolType | null = null;\r\n\r\n constructor(feature: FeatureDCExtened) {\r\n this.id = feature.id;\r\n this.displayName = feature.id;\r\n this.geometry = feature.geometry;\r\n\r\n this.layerName = feature.layer;\r\n this.layerAlias = feature.layer;\r\n this.attributes = getFeatureAttributes(feature.attributes);\r\n }\r\n\r\n public sGisFeature() {\r\n if (!this.geometry || !this.symbol) {\r\n return null;\r\n }\r\n\r\n // @ts-ignore\r\n const { type, coordinates, sr } = this.geometry;\r\n const crs = CRS_MAP[sr as SrId];\r\n\r\n if (!crs) {\r\n return null;\r\n }\r\n\r\n switch (type) {\r\n case GeometryType.Point:\r\n return new PointFeature(coordinates, {\r\n symbol: selectedPoint,\r\n crs,\r\n });\r\n case GeometryType.Multipoint:\r\n return new MultiPoint(coordinates, {\r\n symbol: selectedPoint,\r\n crs,\r\n });\r\n case GeometryType.Polyline:\r\n return new Polyline(coordinates, {\r\n symbol: selectedPolyline,\r\n crs,\r\n });\r\n case GeometryType.Polygon:\r\n return new Polygon(coordinates, {\r\n symbol: selectedPolygon,\r\n crs,\r\n });\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n public extent() {\r\n const feature = this.sGisFeature();\r\n\r\n return feature && feature.bbox;\r\n }\r\n}\r\n","import { ConditionAttributes, ConditionEvaluator } from '@evergis/condition';\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 {\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 { 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 { AttributeType, FeatureLayerServiceInfoDc } from '@evergis/api';\r\n\r\nimport { ClassificationAttribute } from '../attributes';\r\nimport { ClassificationClass, ClassificationParameterExtended } from '../classification';\r\nimport { LayerAttributes } from '../layer';\r\nimport {\r\n CompositeSymbolType,\r\n ParameterValueWithSymbol,\r\n StyleSymbolType,\r\n Unclassify,\r\n} from '../style';\r\n\r\nexport type LegendValueType = {\r\n title: string;\r\n parameterValue: ParameterValueWithSymbol;\r\n hiddenCondition?: string;\r\n};\r\n\r\nexport type LegendItem = {\r\n attribute?: ClassificationAttribute;\r\n title: string;\r\n parameter: ClassificationParameterExtended;\r\n values: LegendValueType[];\r\n};\r\n\r\nexport type LayerLegend = {\r\n symbol: Unclassify<Exclude<StyleSymbolType, CompositeSymbolType>>;\r\n items: LegendItem[];\r\n};\r\n\r\nexport type LegendConfig = {\r\n attributes?: LayerAttributes;\r\n skipDefaultValue?: boolean;\r\n reverse?: boolean;\r\n searchable?: boolean;\r\n renderLegendTitle?: (item: React.ReactNode | LegendItem) => React.ReactNode;\r\n renderTitle?: (value: ClassificationClass, index: number) => string;\r\n renderCustomLegend?: (layer: FeatureLayerServiceInfoDc) => React.ReactNode;\r\n searchLayer?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n parameters?: ClassificationParameterExtended[];\r\n};\r\n\r\nexport enum FilterConditionOperation {\r\n AND = \"&&\",\r\n OR = \"||\",\r\n}\r\n\r\nexport enum ComparisonOperator {\r\n /** `==` */\r\n Equals = \"Equals\",\r\n /** `!=` */\r\n NotEquals = \"NotEquals\",\r\n /** `>` */\r\n GreaterThan = \"GreaterThan\",\r\n /** `<` */\r\n LessThan = \"LessThan\",\r\n /** `>=` */\r\n GreaterOrEquals = \"GreaterOrEquals\",\r\n /** `<=` */\r\n LessOrEquals = \"LessOrEquals\",\r\n Filled = \"Filled\",\r\n Empty = \"Empty\",\r\n /** `==` */\r\n Contains = \"Contains\",\r\n /** `!=` */\r\n NotContains = \"NotContains\",\r\n StartsWith = \"StartsWith\",\r\n NotStartsWith = \"NotStartsWith\",\r\n EndsWith = \"EndsWith\",\r\n NotEndsWith = \"NotEndsWith\",\r\n Between = \"Between\",\r\n Outside = \"Outside\",\r\n}\r\n\r\nexport interface FilterCondition<Value> {\r\n id?: string;\r\n attribute: string | null;\r\n type?: AttributeType;\r\n comparisonOperator: ComparisonOperator | null;\r\n value: Value | string[] | null;\r\n}\r\n\r\nexport type FilterConditionType = FilterCondition<string | number>;\r\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 { 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","import { Char, Expression, TokenType } from \"@evergis/condition\";\r\nimport { AttributeType } from \"@evergis/api\";\r\nimport { isNil } from \"lodash\";\r\n\r\nimport { DateFormat, formatDate } from \"../../utils/date\";\r\nimport { ComparisonOperator, FilterConditionType } from \"./types\";\r\nimport {\r\n BETWEEN_OPERATORS,\r\n CONTAINS_OPERATORS,\r\n ENDS_WITH_OPERATORS,\r\n OPERATOR_CONDITION_REMAP,\r\n STARTS_WITH_OPERATORS\r\n} from \"../../components\";\r\n\r\nexport const comparisonOperatorMapReversed: Record<string, ComparisonOperator> = {\r\n [TokenType.ArEq]: ComparisonOperator.Equals,\r\n [TokenType.ArNotEq]: ComparisonOperator.NotEquals,\r\n [TokenType.ArGr]: ComparisonOperator.GreaterThan,\r\n [TokenType.ArLs]: ComparisonOperator.LessThan,\r\n [TokenType.ArGre]: ComparisonOperator.GreaterOrEquals,\r\n [TokenType.ArLse]: ComparisonOperator.LessOrEquals,\r\n [TokenType.Between]: ComparisonOperator.Between,\r\n [TokenType.Outside]: ComparisonOperator.Outside,\r\n};\r\n\r\nexport const NUMERIC_ATTRIBUTE_TYPES: AttributeType[] = [\r\n AttributeType.Int32,\r\n AttributeType.Int64,\r\n AttributeType.DateTime,\r\n AttributeType.Double,\r\n];\r\n\r\nconst formatValue = (value: string | number, isDate?: boolean) => {\r\n return isDate\r\n ? `#'${formatDate(value, {\r\n dateFormat: DateFormat.UTC,\r\n defaultValue: value,\r\n })}'`\r\n : value\r\n ? value.toString()\r\n : 0;\r\n};\r\n\r\nexport function formatCondition(condition: FilterConditionType) {\r\n const { comparisonOperator, value, type, attribute } = condition;\r\n const operator = OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator] || comparisonOperator;\r\n\r\n const preparedValue = typeof value === \"string\" && value.includes(\" - \") ? value.split(\" - \") : value;\r\n const isDate = type === AttributeType.DateTime;\r\n const isBetweenOutside = BETWEEN_OPERATORS.includes(comparisonOperator as ComparisonOperator);\r\n const escapeValue = !NUMERIC_ATTRIBUTE_TYPES.includes(type as AttributeType) && preparedValue !== null;\r\n\r\n if (isBetweenOutside && Array.isArray(preparedValue) && preparedValue[0] !== undefined) {\r\n return `${OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator]}(${attribute}, ${formatValue(\r\n preparedValue[0],\r\n isDate,\r\n )}, ${formatValue(preparedValue[1], isDate)})`;\r\n }\r\n\r\n const formattedValue = Array.isArray(preparedValue)\r\n ? preparedValue.map(val => formatValue(val, isDate))\r\n : formatValue(preparedValue as string | number, isDate);\r\n\r\n const nulledValue = isNil(preparedValue) ? \"{null}\" : formattedValue;\r\n\r\n const valueEscaped =\r\n escapeValue && typeof nulledValue === \"string\"\r\n ? `'${Char.escapeSpecChars(addOperationToValue(nulledValue, comparisonOperator as ComparisonOperator))}'`\r\n : nulledValue;\r\n\r\n return `${attribute} ${operator} ${valueEscaped}`;\r\n}\r\n\r\nexport function createConditionString(condition: FilterConditionType) {\r\n if (Array.isArray(condition)) {\r\n return `( ${formatCondition(condition[0])} ${condition[0].operation} ${formatCondition(condition[1])} )`;\r\n }\r\n\r\n return formatCondition(condition);\r\n}\r\n\r\nexport function createCondition({ attribute, operation, value }: Expression) {\r\n const comparisonOperator = comparisonOperatorMapReversed[operation];\r\n const convertedResult = convertOperatorValue(value as string | number | boolean, comparisonOperator);\r\n\r\n return {\r\n attribute,\r\n ...convertedResult,\r\n } as FilterConditionType;\r\n}\r\n\r\nfunction convertOperatorValue(value: string | number | boolean, comparisonOperator: ComparisonOperator) {\r\n if (typeof value === \"string\") {\r\n const operatorIndex = +(comparisonOperator === ComparisonOperator.NotEquals);\r\n\r\n if (value.startsWith(Char.PERCENTAGE) && value.endsWith(Char.PERCENTAGE)) {\r\n return {\r\n value: value.slice(1, -1),\r\n comparisonOperator: CONTAINS_OPERATORS[operatorIndex],\r\n };\r\n }\r\n\r\n if (value.startsWith(Char.PERCENTAGE)) {\r\n return {\r\n value: value.slice(1),\r\n comparisonOperator: ENDS_WITH_OPERATORS[operatorIndex],\r\n };\r\n }\r\n\r\n if (value.endsWith(Char.PERCENTAGE)) {\r\n return {\r\n value: value.slice(0, -1),\r\n comparisonOperator: STARTS_WITH_OPERATORS[operatorIndex],\r\n };\r\n }\r\n }\r\n\r\n return { value, comparisonOperator };\r\n}\r\n\r\nconst addContains = (value: string | number) => `%${value}%`;\r\nconst addStartsWith = (value: string | number) => `${value}%`;\r\nconst addEndsWith = (value: string | number) => `%${value}`;\r\n\r\nfunction addOperationToValue(value: string, operator: ComparisonOperator) {\r\n switch (operator) {\r\n case ComparisonOperator.Contains:\r\n case ComparisonOperator.NotContains:\r\n return addContains(value);\r\n case ComparisonOperator.StartsWith:\r\n case ComparisonOperator.NotStartsWith:\r\n return addStartsWith(value);\r\n case ComparisonOperator.EndsWith:\r\n case ComparisonOperator.NotEndsWith:\r\n return addEndsWith(value);\r\n case ComparisonOperator.Between:\r\n return Char.BETWEEN;\r\n case ComparisonOperator.Outside:\r\n return Char.OUTSIDE;\r\n default:\r\n return value;\r\n }\r\n}\r\n","import { ConditionInterpreter, TokenType } from \"@evergis/condition\";\r\n\r\nimport { FilterConditionOperation, FilterConditionType } from \"./index\";\r\nimport { createCondition, createConditionString } from \"./createCondition\";\r\n\r\nexport class FilterCondition {\r\n private readonly conditionInterpreter: ConditionInterpreter;\r\n\r\n constructor(private condition: string | null = null) {\r\n this.conditionInterpreter = new ConditionInterpreter(condition as string);\r\n }\r\n\r\n static from(conditions: FilterConditionType[], operation: FilterConditionOperation) {\r\n const condition = conditions?.map(createConditionString).join(` ${operation} `) || null;\r\n\r\n return new FilterCondition(condition);\r\n }\r\n\r\n get conditions(): FilterConditionType[] {\r\n const { value } = this.conditionInterpreter;\r\n\r\n if (value instanceof Error) {\r\n // TODO handle errors in client notifications\r\n console.warn(value.message);\r\n }\r\n\r\n return value instanceof Error ? [] : value.expressions.map(createCondition);\r\n }\r\n\r\n get conditionOperation() {\r\n const { value } = this.conditionInterpreter;\r\n\r\n if (value instanceof Error) {\r\n return null;\r\n }\r\n\r\n const isOrCondition = value.boolOperations.includes(TokenType.BoolOr);\r\n const isAndCondition = value.boolOperations.includes(TokenType.BoolAnd);\r\n\r\n if (isOrCondition && isAndCondition) {\r\n return null;\r\n }\r\n\r\n return isOrCondition ? FilterConditionOperation.OR : isAndCondition ? FilterConditionOperation.AND : null;\r\n }\r\n\r\n public isParsingError() {\r\n return this.conditionInterpreter.value instanceof Error;\r\n }\r\n\r\n public toString() {\r\n return this.condition;\r\n }\r\n}\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 ClassifyParameter,\r\n DEFAULT_LEGEND_SYMBOL_SIZE,\r\n DEFAULT_PARAMETER_INFO,\r\n EXTRA_BORDER_SIZE,\r\n LegendProps,\r\n LegendSectionItem,\r\n PARAMETER_INFOS,\r\n ParameterInfo,\r\n SvgSymbolBg,\r\n SYMBOL_CLASSIFICATION,\r\n} from \"../components\";\r\nimport { formatDate } from \"./date\";\r\nimport {\r\n ClassificationClass,\r\n ClassificationCondition,\r\n ClassificationParameter,\r\n ClassificationParameterExtended,\r\n ClassifyAble,\r\n ComparisonOperator,\r\n FilterConditionOperation,\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 LayerAttribute,\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\nimport { createConditionString } from \"../core/legend/createCondition\";\r\nimport { FilterCondition } from \"../core/legend/FilterCondition\";\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 formatUniqueClassValue = (value: UniqueClass, formatValue?: LegendProps[\"formatValue\"]): string => {\r\n const { attribute, uniqueValue } = value;\r\n\r\n return attribute && formatValue\r\n ? formatValue(attribute.type, uniqueValue, attribute.stringFormat) as string\r\n : 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 = (\r\n value: RangeClass,\r\n formatValue: LegendProps[\"formatValue\"],\r\n index: number,\r\n): 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 = formatValue ? formatValue(\r\n value.attribute?.type as AttributeType,\r\n from as string | number | Date,\r\n value.attribute?.stringFormat,\r\n ) : from;\r\n const formattedTo = formatValue ? formatValue(\r\n value.attribute?.type as AttributeType,\r\n to as string | number | Date,\r\n value.attribute?.stringFormat,\r\n ) : 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: Pick<FeatureLayerServiceInfoDc, \"geometryType\" | \"style\">): 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 attribute: LayerAttribute,\r\n formatValue: LegendProps[\"formatValue\"],\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,\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, formatValue, index);\r\n if (isUniqueClass(value)) return formatUniqueClassValue(value as UniqueClass, formatValue);\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(\r\n baseSymbol,\r\n \"width\",\r\n classificationsParams,\r\n LegendSymbolTypes.ImagePoint,\r\n ) 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 function createHiddenCondition(attributeName: string, attributeType: AttributeType, value: ClassificationClass) {\r\n let newValue;\r\n let comparisonOperator;\r\n\r\n if (isRangeClass(value)) {\r\n if (value.from && value.to) {\r\n newValue = [value.from as string, value.to as string];\r\n comparisonOperator = ComparisonOperator.Outside;\r\n } else if (value.from) {\r\n newValue = value.from;\r\n comparisonOperator = ComparisonOperator.LessThan;\r\n } else if (value.to) {\r\n newValue = value.to;\r\n comparisonOperator = ComparisonOperator.GreaterThan;\r\n }\r\n } else {\r\n newValue = value.uniqueValue;\r\n comparisonOperator = ComparisonOperator.NotEquals;\r\n }\r\n\r\n return new FilterCondition(\r\n createConditionString({\r\n attribute: attributeName,\r\n type: attributeType,\r\n comparisonOperator: comparisonOperator as ComparisonOperator,\r\n value: newValue as string,\r\n }),\r\n ).toString();\r\n}\r\n\r\nexport const createOtherHiddenCondition = (\r\n values: ClassificationClass[],\r\n attributeName: string,\r\n attributeType: AttributeType,\r\n) => {\r\n const value = values[values.length - 1];\r\n let hiddenCondition;\r\n\r\n if (isRangeClass(value)) {\r\n hiddenCondition = new FilterCondition(\r\n createConditionString({\r\n attribute: attributeName,\r\n type: attributeType,\r\n comparisonOperator: ComparisonOperator.LessOrEquals,\r\n value: (value as RangeClass).to || (value as RangeClass).from,\r\n }),\r\n ).toString();\r\n } else {\r\n const conditions = values.map(val =>\r\n new FilterCondition(\r\n createConditionString({\r\n attribute: attributeName,\r\n type: attributeType,\r\n comparisonOperator: ComparisonOperator.Equals,\r\n value: (val as UniqueClass).uniqueValue,\r\n }),\r\n ).toString(),\r\n );\r\n\r\n hiddenCondition = `( ${conditions.filter(Boolean).join(` ${FilterConditionOperation.OR} `)} )`;\r\n }\r\n\r\n return hiddenCondition;\r\n}\r\n\r\nexport const getMinimizedLegendValues = (\r\n attribute: LayerAttribute,\r\n classified: ParameterByAttribute<ParameterValue>,\r\n formatValue: LegendProps[\"formatValue\"],\r\n index: number,\r\n otherTitle: string,\r\n): LegendValueType[] => {\r\n const other = {\r\n title: otherTitle,\r\n parameterValue: classified.defaultValue,\r\n hiddenCondition: createOtherHiddenCondition(classified.values.map(val => getClassificationValue(\r\n val.value,\r\n otherTitle,\r\n new ClassificationCondition(val.condition),\r\n )), attribute.name as string, attribute.type),\r\n } as LegendValueType;\r\n\r\n const items = classified.values.map(paramValue => {\r\n const parameterValue = getParameterValue(paramValue.value);\r\n const result = { parameterValue, attribute } as Partial<LegendValueType>;\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, attribute, formatValue, index);\r\n\r\n return result;\r\n }\r\n\r\n (result as UniqueClass).uniqueValue = formatValue ? formatValue(\r\n attribute.type,\r\n paramValue.value,\r\n attribute.stringFormat,\r\n ) as string : paramValue.value.toString();\r\n result.title = getTitleFromCondition(paramValue.condition);\r\n result.hiddenCondition = createHiddenCondition(attribute.name as string, attribute.type, getClassificationValue(\r\n paramValue.value,\r\n result.title,\r\n new ClassificationCondition(paramValue.condition),\r\n )) as string;\r\n\r\n return result;\r\n }) as LegendValueType[];\r\n\r\n if (attribute.type !== AttributeType.String) {\r\n items.reverse();\r\n }\r\n\r\n return [...items, other] as LegendValueType[];\r\n};\r\n\r\nexport const getMaximizedLegendValues = (\r\n attribute: LayerAttribute,\r\n param: ClassificationParameterExtended,\r\n params: ClassificationParameterExtended[],\r\n classified: ParameterByAttribute<ParameterValue>,\r\n symbol: StyleDc[\"symbol\"],\r\n formatValue: LegendProps[\"formatValue\"],\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 hiddenCondition: createOtherHiddenCondition(classified.values.map(val => getClassificationValue(\r\n val.value,\r\n otherTitle,\r\n new ClassificationCondition(val.condition),\r\n )), attribute.name as string, attribute.type),\r\n };\r\n\r\n const items = classified.values.map((paramValue, index) => {\r\n const result = {\r\n symbol: createLegendSymbol(paramValue.value, param, params, symbol as StyleSymbolType),\r\n } as LegendSectionItem;\r\n\r\n result.title = isRangeCondition(paramValue.condition)\r\n ? createValueTitle(paramValue, attribute, formatValue, sectionIndex)\r\n : getTitleFromCondition(paramValue.condition);\r\n\r\n result.hiddenCondition = createHiddenCondition(\r\n attribute.name as string,\r\n attribute.type,\r\n getClassificationValue(\r\n paramValue.value,\r\n result.title,\r\n new ClassificationCondition(classified.values[index].condition),\r\n ),\r\n ) as string;\r\n\r\n return result;\r\n });\r\n\r\n if (attribute.type !== AttributeType.String) {\r\n items.reverse();\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\r\nconst getClassificationValue = (\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","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, ComparisonOperator } 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\r\nexport const OPERATOR_CONDITION_REMAP: Record<ComparisonOperator, string> = {\r\n [ComparisonOperator.Equals]: \"==\",\r\n [ComparisonOperator.NotEquals]: \"!=\",\r\n [ComparisonOperator.GreaterThan]: \">\",\r\n [ComparisonOperator.GreaterOrEquals]: \">=\",\r\n [ComparisonOperator.LessThan]: \"<\",\r\n [ComparisonOperator.LessOrEquals]: \"<=\",\r\n [ComparisonOperator.Filled]: \"!=\",\r\n [ComparisonOperator.Empty]: \"==\",\r\n [ComparisonOperator.Contains]: \"==\",\r\n [ComparisonOperator.NotContains]: \"!=\",\r\n [ComparisonOperator.StartsWith]: \"==\",\r\n [ComparisonOperator.NotStartsWith]: \"!=\",\r\n [ComparisonOperator.EndsWith]: \"==\",\r\n [ComparisonOperator.NotEndsWith]: \"!=\",\r\n [ComparisonOperator.Between]: \"between\",\r\n [ComparisonOperator.Outside]: \"!between\",\r\n};\r\n\r\nexport const BASE_OPERATORS = [ComparisonOperator.Equals, ComparisonOperator.NotEquals];\r\n\r\nexport const CONTAINS_OPERATORS = [ComparisonOperator.Contains, ComparisonOperator.NotContains];\r\n\r\nexport const FILLED_OPERATORS = [ComparisonOperator.Filled, ComparisonOperator.Empty];\r\n\r\nexport const STARTS_WITH_OPERATORS = [ComparisonOperator.StartsWith, ComparisonOperator.NotStartsWith];\r\n\r\nexport const ENDS_WITH_OPERATORS = [ComparisonOperator.EndsWith, ComparisonOperator.NotEndsWith];\r\n\r\nexport const RANGE_OPERATORS = [\r\n ComparisonOperator.LessThan,\r\n ComparisonOperator.LessOrEquals,\r\n ComparisonOperator.GreaterThan,\r\n ComparisonOperator.GreaterOrEquals,\r\n];\r\n\r\nexport const BETWEEN_OPERATORS = [ComparisonOperator.Between, ComparisonOperator.Outside];\r\n\r\nexport const numberComparisonOperators = [\r\n ...BASE_OPERATORS,\r\n ...RANGE_OPERATORS,\r\n ...FILLED_OPERATORS,\r\n ...BETWEEN_OPERATORS,\r\n];\r\n\r\nexport const dateComparisonOperators = [\r\n ...BASE_OPERATORS,\r\n ...RANGE_OPERATORS,\r\n ...FILLED_OPERATORS,\r\n ...BETWEEN_OPERATORS,\r\n];\r\n\r\nexport const textComparisonOperators = [\r\n ...BASE_OPERATORS,\r\n ...CONTAINS_OPERATORS,\r\n ...STARTS_WITH_OPERATORS,\r\n ...ENDS_WITH_OPERATORS,\r\n ...FILLED_OPERATORS,\r\n];\r\n","import { ReactNode, RefObject } from \"react\";\r\nimport {\r\n AttributeType,\r\n PointLabelSymbolDc,\r\n SvgPointSymbolDc,\r\n StyleDc,\r\n FeatureLayerServiceInfoDc,\r\n AttributeFormatDc,\r\n FeatureDc\r\n} from \"@evergis/api\";\r\nimport { MaskedImage } from \"@evergis/sgis/es/symbols/point/MaskedImage\";\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { Coordinates } from \"@evergis/sgis/es/baseTypes\";\r\n\r\nimport {\r\n ClassificationParameterExtended,\r\n LayerAttribute,\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 Positions = Coordinates | Coordinates[] | Coordinates[][];\r\n\r\nexport type FeaturedDcExtendedGeometry = Omit<FeatureDc[\"geometry\"], \"coordinates\"> & {\r\n coordinates?: Positions;\r\n};\r\n\r\nexport type LegendProps = {\r\n layerInfo: FeatureLayerServiceInfoDc;\r\n formatValue?: (\r\n type: AttributeType,\r\n value: string | number | Date | FeaturedDcExtendedGeometry,\r\n stringFormat?: AttributeFormatDc,\r\n ) => string;\r\n hiddenLegends?: Record<string, string[]>;\r\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\r\n};\r\n\r\nexport type LegendSectionProps = Pick<LegendProps, \"hiddenLegends\" | \"toggleHiddenLegend\" | \"formatValue\"> & {\r\n layerName: string;\r\n symbol: StyleDc[\"symbol\"];\r\n parameter: ClassificationParameterExtended;\r\n parameters: ClassificationParameterExtended[];\r\n classified: ParameterByAttribute<ParameterValue>;\r\n attribute: LayerAttribute;\r\n index: number;\r\n};\r\n\r\nexport type LegendSectionItem = Pick<LegendProps, \"hiddenLegends\" | \"toggleHiddenLegend\"> & {\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 innerRef?: RefObject<HTMLDivElement> | undefined;\r\n isShown?: boolean;\r\n layerName: string;\r\n symbol: StyleDc[\"symbol\"];\r\n parameter: ClassificationParameterExtended;\r\n values: LegendSectionItem[];\r\n attributeType: AttributeType;\r\n index: number;\r\n hiddenLegends?: string[];\r\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\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 innerRef?: RefObject<HTMLDivElement> | undefined;\r\n isShown?: boolean;\r\n title?: string | ReactNode;\r\n values: LegendValueType[];\r\n parameter: ClassificationParameterExtended;\r\n hiddenLegends?: string[];\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 { LineEndingType } from \"@evergis/api\";\r\nimport { 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\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 === LineEndingType.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 { LineEndingType } from \"@evergis/api\";\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { LineMiterRender } from './LineMiterRender';\r\n\r\nexport class SquareLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth;\r\n }\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [\r\n [\r\n [x, y + this.miterSize / 2],\r\n [x, y - this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y - this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y + this.miterSize / 2],\r\n ],\r\n ];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineEndingType.FilledSquare;\r\n\r\n return new PolyRender(miterRings, {\r\n enclosed: true,\r\n fillColor: isFilled ? this.color : void 0,\r\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\r\n lineCap: 'square',\r\n lineJoin: 'miter',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n }\r\n}\r\n","import { LineEndingType } from \"@evergis/api\";\r\n\r\nimport { ArrowLineMiterRender } from './ArrowLineMiterRender';\r\nimport { CircleLineMiterRender } from './CircleLineMiterRender';\r\nimport { LineMiterRenderBaseInfo, LineMiterRender } from './LineMiterRender';\r\nimport { SquareLineMiterRender } from './SquareLineMiterRender';\r\n\r\nexport const getLineMiterRender = (\r\n options: LineMiterRenderBaseInfo\r\n): LineMiterRender | null => {\r\n switch (options.kind) {\r\n case LineEndingType.Arrow:\r\n case LineEndingType.FilledArrow:\r\n return new ArrowLineMiterRender(options);\r\n case LineEndingType.Square:\r\n case LineEndingType.FilledSquare:\r\n return new SquareLineMiterRender(options);\r\n case LineEndingType.Circle:\r\n case LineEndingType.FilledCircle:\r\n return new CircleLineMiterRender(options);\r\n default:\r\n return null;\r\n }\r\n};\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { MiterPosition } from './LineMiterRender';\n\nconst updateRingForRightMiter = (\n ring: Coordinates[],\n miterSize: number,\n isLastRing: boolean\n): Coordinates[] => {\n const reversedRing = ring.slice().reverse();\n\n for (let i = 0; i < reversedRing.length; i++) {\n const coordinates = reversedRing[i];\n\n if (isLastRing && i === 0) {\n reversedRing[i] = [coordinates[0] - miterSize, coordinates[1]];\n }\n\n const nextCoordinates = reversedRing[i - 1];\n\n if (nextCoordinates && nextCoordinates[0] < coordinates[0]) {\n reversedRing[i] = [\n nextCoordinates[0] - Math.abs(nextCoordinates[0] - coordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return reversedRing.reverse();\n};\n\nconst updateRingForLeftMiter = (\n ring: Coordinates[],\n miterSize: number,\n isFirstRing: boolean\n): Coordinates[] => {\n const newRing = ring.slice();\n\n for (let i = 0; i < newRing.length; i++) {\n const coordinates = newRing[i];\n\n if (i === 0 && isFirstRing) {\n newRing[i] = [coordinates[0] + miterSize, coordinates[1]];\n }\n\n const prevCoordinates = newRing[i - 1];\n\n if (prevCoordinates && prevCoordinates[0] > coordinates[0]) {\n newRing[i] = [\n prevCoordinates[0] + Math.abs(coordinates[0] - prevCoordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return newRing;\n};\n\nexport const updateRingsForMiter = (\n rings: Coordinates[][],\n position: MiterPosition,\n miterSize: number\n): Coordinates[][] => {\n return rings.map((ring, ringIndex) => {\n switch (position) {\n case 'right':\n return updateRingForRightMiter(\n ring,\n miterSize,\n ringIndex === rings.length - 1\n );\n default:\n return updateRingForLeftMiter(ring, miterSize, ringIndex === 0);\n }\n });\n};\n","import { PolylineSymbol as sPolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { getLineMiterRender } from '../LineMiters/getLineMiterRender';\r\nimport { updateRingsForMiter } from '../LineMiters/updateRingsForMiter';\r\n\r\nimport { getParameterValue } from '../../core/classification';\r\n\r\nimport {\r\n isDashedBrush,\r\n isSimplePolylineSymbol,\r\n PolylineSymbols,\r\n} from '../../core/style';\r\n\r\nimport { getHexColor } from '../../utils/color';\r\nimport { clamp } from '../../utils/math';\r\nimport { PREVIEW_LIMITS } from '../previewLimits';\r\nimport { getLineDash } from '../strokeStyle';\r\n\r\nexport const copyRings = (rings: Coordinates[][]): Coordinates[][] =>\r\n rings.map(ring =>\r\n ring.map(coordinates => coordinates.slice() as Coordinates)\r\n );\r\n\r\nexport class SGisPolylineSymbol extends sPolylineSymbol {\r\n constructor(public originalSymbol: PolylineSymbols) {\r\n super({\r\n // @ts-ignore\r\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\r\n strokeWidth: clamp(\r\n // @ts-ignore\r\n getParameterValue(originalSymbol.stroke?.width),\r\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\r\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\r\n ),\r\n // @ts-ignore\r\n lineDash: getLineDash(originalSymbol.stroke),\r\n // @ts-ignore\r\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\r\n });\r\n }\r\n\r\n renderFunction(feature: Polyline, resolution: number, crs: Crs): Render[] {\r\n if (!isSimplePolylineSymbol(this.originalSymbol))\r\n return super.renderFunction(feature, resolution, crs);\r\n\r\n const {\r\n ending,\r\n beginning,\r\n } = this.originalSymbol;\r\n const renders: Render[] = [];\r\n\r\n const featureCopy = feature.clone();\r\n\r\n const beginningMiterRender = getLineMiterRender({\r\n color: this.strokeColor,\r\n // @ts-ignore\r\n kind: beginning.type,\r\n position: 'left',\r\n // @ts-ignore\r\n size: beginning.size,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n const endingMiterRender = getLineMiterRender({\r\n color: this.strokeColor,\r\n // @ts-ignore\r\n kind: ending.type,\r\n position: 'right',\r\n // @ts-ignore\r\n size: ending.size,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n\r\n if (beginningMiterRender) {\r\n const updatedRings = updateRingsForMiter(\r\n featureCopy.rings,\r\n 'left',\r\n beginningMiterRender.usageSize\r\n );\r\n const render = beginningMiterRender.getRender(\r\n updatedRings,\r\n feature.crs,\r\n resolution,\r\n crs\r\n );\r\n\r\n featureCopy.rings = updatedRings;\r\n renders.push(render);\r\n }\r\n\r\n if (endingMiterRender) {\r\n const updatedRings = updateRingsForMiter(\r\n featureCopy.rings,\r\n 'right',\r\n endingMiterRender.usageSize\r\n );\r\n const render = endingMiterRender.getRender(\r\n updatedRings,\r\n feature.crs,\r\n resolution,\r\n crs\r\n );\r\n\r\n featureCopy.rings = updatedRings;\r\n renders.push(render);\r\n }\r\n\r\n // NOTE: линия должна быть в начале чтобы быть под митерами\r\n renders.unshift(...super.renderFunction(featureCopy, resolution, crs));\r\n\r\n return renders;\r\n }\r\n\r\n clone() {\r\n return new SGisPolylineSymbol(this.originalSymbol);\r\n }\r\n}\r\n","import React, { ComponentType } from 'react';\nimport ReactDOM from 'react-dom';\nimport { DynamicPointSymbol } from '@evergis/sgis/es/symbols/Symbol';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nexport type LabelSymbolComponent =\n | ComponentType<{ content: string }>\n | ComponentType;\n\ntype LabelSymbolParams = {\n offset?: Offset;\n component?: LabelSymbolComponent;\n};\n\nexport class LabelSymbol extends DynamicPointSymbol {\n public component?: LabelSymbolComponent;\n\n constructor({ component, offset }: LabelSymbolParams = {}) {\n super({ offset });\n this.component = component;\n }\n\n protected _getFeatureNode(feature: LabelFeature): HTMLElement {\n const node = document.createElement('div');\n\n this.renderDom(feature.content, node);\n\n return node;\n }\n\n protected _updateFeatureNode(feature: LabelFeature): void {\n this.renderDom(feature.content, this.getNode(feature));\n }\n\n private renderDom(content: string, node: HTMLElement): void {\n if (!node) {\n return;\n }\n\n const Component = this.component;\n\n if (Component) {\n ReactDOM.render(<Component content={content} />, node);\n } else {\n node.innerText = content;\n }\n }\n}\n","import React from 'react';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nimport { renderLabelSymbolType } from '../../components';\nimport { LabelSymbol } from './LabelSymbol';\n\nexport const defaultOffset: Offset = [8, -16];\n\ntype createLabelSymbolParams = {\n offset?: Offset;\n onClose?: VoidFunction;\n renderLabel: renderLabelSymbolType;\n};\n\nexport const createLabelSymbol = (props: createLabelSymbolParams) => {\n const {\n offset = defaultOffset,\n renderLabel = ({ content }: { content: string }) => <div>{content}</div>,\n onClose = undefined,\n } = props || {};\n\n return new LabelSymbol({\n offset,\n component: ({ content }: { content: string }) =>\n renderLabel({ content, onClose }),\n });\n};\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { polygonCircleFromPoint } from '../../';\nimport { EditorPointSymbolParams } from './ShadowedPointSymbol';\n\nexport function createShadowRender(\n position: Coordinates,\n {\n strokeWidth = 2,\n shadowColor,\n shadowSize,\n size = 6,\n }: EditorPointSymbolParams\n) {\n const shadowDiameter = size + strokeWidth + shadowSize;\n\n return new PolyRender(polygonCircleFromPoint(position, shadowDiameter), {\n fillColor: 'transparent',\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n enclosed: true,\n });\n}\n\nexport function getEditorPointRenderer(\n position: Coordinates,\n {\n strokeColor,\n strokeWidth,\n shadowColor,\n fillColor,\n shadowSize,\n size = 0,\n }: EditorPointSymbolParams\n) {\n return [\n createShadowRender(position, {\n strokeWidth,\n strokeColor,\n shadowSize,\n shadowColor,\n size,\n }),\n new PolyRender(polygonCircleFromPoint(position, size), {\n fillColor,\n strokeColor,\n strokeWidth,\n enclosed: true,\n }),\n ];\n}\n","import {\n PointSymbol,\n PointSymbolConstructorParams,\n} from '@evergis/sgis/es/symbols/point/Point';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Feature } from '@evergis/sgis';\n\nimport { polygonCircleFromPoint } from '../..';\n\nexport type EditorPointSymbolParams = {\n shadowColor: string;\n shadowSize: number;\n} & PointSymbolConstructorParams;\n\nexport class ShadowedPointSymbol extends PointSymbol {\n shadowColor!: string;\n shadowSize!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options: EditorPointSymbolParams) {\n super(options);\n }\n\n static getShadowArc(\n position: Coordinates,\n {\n strokeWidth = 2,\n shadowColor,\n shadowSize,\n size = 6,\n }: EditorPointSymbolParams\n ): PolyRender {\n return new PolyRender(\n polygonCircleFromPoint(position, size + strokeWidth + shadowSize),\n {\n fillColor: 'transparent',\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n enclosed: true,\n }\n );\n }\n\n static getPointArc(\n position: Coordinates,\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams\n ): PolyRender {\n return new PolyRender(polygonCircleFromPoint(position, size), {\n fillColor,\n strokeColor,\n strokeWidth,\n enclosed: true,\n });\n }\n\n static getArcs(\n position: Coordinates,\n params: EditorPointSymbolParams\n ): PolyRender[] {\n const shadowRender = ShadowedPointSymbol.getShadowArc(position, params);\n const pointRender = ShadowedPointSymbol.getPointArc(position, params);\n\n return shadowRender ? [shadowRender, pointRender] : [pointRender];\n }\n\n public renderFunction(\n feature: PointFeature,\n resolution: number,\n crs: Crs\n ): Render[] {\n if (!(feature instanceof PointFeature)) return [];\n const { position } = feature.projectTo(crs);\n\n const pxPosition: Coordinates = [\n position[0] / resolution + (this.offset[0] || 0),\n -position[1] / resolution + (this.offset[1] || 0),\n ];\n\n const shadowRender = this.getShadow(pxPosition, feature);\n const pointArc = this.getPoint(pxPosition, feature);\n\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\n }\n\n protected getShadow(\n position: Coordinates,\n _feature?: Feature\n ): PolyRender | void {\n return ShadowedPointSymbol.getShadowArc(position, this);\n }\n\n protected getPoint(position: Coordinates, _feature?: Feature): PolyRender {\n return ShadowedPointSymbol.getPointArc(position, this);\n }\n}\n","import {\r\n PolylineSymbol,\r\n PolylineSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { getEditorPointRenderer } from './getEditorPointRenderer';\r\nimport { ShadowedPointSymbol } from './ShadowedPointSymbol';\r\n\r\nexport type EditorPolySymbolParams = {\r\n shadowColor: string;\r\n shadowSize: number;\r\n fillColor?: string;\r\n enclose?: boolean;\r\n showVertex?: boolean;\r\n vertexShadowSize?: number;\r\n} & PolylineSymbolConstructorParams;\r\n\r\nexport class ShadowedPolySymbol extends PolylineSymbol {\r\n shadowColor!: string;\r\n shadowSize!: number;\r\n fillColor?: string;\r\n enclose?: boolean;\r\n showVertex?: boolean;\r\n vertexShadowSize?: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(options: EditorPolySymbolParams) {\r\n super(options);\r\n }\r\n\r\n public renderFunction(\r\n feature: Polygon,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n if (!(feature instanceof Poly)) return [];\r\n\r\n const coordinates = super.getRenderedCoordinates(\r\n feature,\r\n resolution,\r\n crs\r\n );\r\n const polyRender = this.getPolyRender(coordinates, feature);\r\n const shadowRender = this.getShadow(coordinates, feature);\r\n const vertexRenders = this.getVertexRenders(coordinates);\r\n let renders: Render[] = [polyRender];\r\n\r\n if (shadowRender) {\r\n renders = [shadowRender, polyRender];\r\n }\r\n\r\n if (vertexRenders) {\r\n renders = renders.concat(vertexRenders);\r\n }\r\n\r\n return renders;\r\n }\r\n\r\n protected getShadow(\r\n coordinates: Coordinates[][],\r\n _feature?: Feature\r\n ): PolyRender | void {\r\n return new PolyRender(coordinates, {\r\n fillStyle: FillStyle.None,\r\n enclosed: this.enclose,\r\n strokeColor: this.shadowColor,\r\n strokeWidth: this.shadowSize,\r\n lineDash: this.lineDash,\r\n });\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n _feature?: Feature\r\n ): PolyRender {\r\n return new PolyRender(coordinates, {\r\n fillStyle: this.enclose ? FillStyle.Color : FillStyle.None,\r\n enclosed: this.enclose,\r\n fillColor: this.fillColor,\r\n strokeColor: this.strokeColor,\r\n strokeWidth: this.strokeWidth,\r\n lineDash: this.lineDash,\r\n });\r\n }\r\n\r\n protected getVertexRenders(\r\n coordinates: Coordinates[][]\r\n ): PolyRender[] | void {\r\n if (!this.showVertex) return;\r\n\r\n const vertexCoordinates = coordinates.reduce((acc, curr) => {\r\n return acc.concat(curr);\r\n }, []);\r\n\r\n return vertexCoordinates\r\n .map(coord =>\r\n getEditorPointRenderer(coord, {\r\n size: 6,\r\n strokeWidth: 2,\r\n shadowColor: this.shadowColor,\r\n strokeColor: this.strokeColor,\r\n shadowSize:\r\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\r\n fillColor: '#ffffff',\r\n })\r\n )\r\n .reduce((acc, curr) => acc.concat(curr), []);\r\n }\r\n}\r\n\r\nconst polySymbolParams = {\r\n strokeWidth: 2,\r\n strokeColor: '#e33600',\r\n shadowSize: 8,\r\n shadowColor: 'rgba(227, 54, 0, 0.3)',\r\n};\r\n\r\nconst measureSymbolParams = {\r\n strokeColor: '#ff6933',\r\n shadowSize: 0,\r\n vertexShadowSize: 0,\r\n};\r\n\r\nexport const measureLengthSymbol = new ShadowedPolySymbol({\r\n ...polySymbolParams,\r\n ...measureSymbolParams,\r\n enclose: false,\r\n showVertex: true,\r\n});\r\n\r\nexport const measureAreaSymbol = new ShadowedPolySymbol({\r\n ...polySymbolParams,\r\n ...measureSymbolParams,\r\n fillColor: 'rgba(255, 105, 51, 0.25)',\r\n enclose: true,\r\n showVertex: true,\r\n});\r\n\r\nconst snapSymbolParams = {\r\n size: 10,\r\n strokeWidth: 2,\r\n strokeColor: '#e33600',\r\n fillColor: '#ffffff',\r\n shadowColor: 'rgba(227, 54, 0, 0.3)',\r\n shadowSize: 3,\r\n};\r\n\r\nexport const measurePolygonSnapSymbol = new ShadowedPointSymbol({\r\n ...snapSymbolParams,\r\n strokeColor: '#ff6933',\r\n shadowSize: 0,\r\n});\r\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\n\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\n\ntype SelectedFeature = PointFeature & {\n isSelected: boolean;\n};\n\nexport type SelectedPointSymbolParams = {\n selectedStrokeColor: string;\n selectedFillColor: string;\n} & EditorPointSymbolParams;\n\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\n selectedStrokeColor!: string;\n selectedFillColor!: string;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPointSymbolParams) {\n super(props);\n }\n\n protected getShadow(\n position: [number, number],\n feature: SelectedFeature\n ): PolyRender | void {\n if (feature.isSelected) {\n return super.getShadow(position, feature);\n }\n }\n\n protected getPoint(\n position: [number, number],\n feature: SelectedFeature\n ): PolyRender {\n const pointRender = super.getPoint(position, feature);\n\n if (feature.isSelected) {\n pointRender.strokeColor = this.selectedStrokeColor;\n pointRender.fillColor = this.selectedFillColor;\n }\n\n return pointRender;\n }\n}\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\n\nimport {\n EditorPolySymbolParams,\n ShadowedPolySymbol,\n} from '../Shadowed/ShadowedPolySymbol';\n\ntype SelectedFeature = Polygon & {\n isSelected: boolean;\n};\n\nexport type SelectedPolySymbolParams = {\n selectedFillColor?: string;\n selectedStrokeColor: string;\n selectedStrokeWidth?: number;\n} & EditorPolySymbolParams;\n\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\n selectedFillColor!: string;\n selectedStrokeColor!: string;\n selectedStrokeWidth!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPolySymbolParams) {\n super(props);\n }\n\n protected getShadow(\n coordinates: Coordinates[][],\n feature: SelectedFeature\n ): PolyRender | void {\n if (feature.isSelected) {\n return super.getShadow(coordinates, feature);\n }\n }\n\n protected getPolyRender(\n coordinates: Coordinates[][],\n feature: SelectedFeature\n ): PolyRender {\n const polyRender = super.getPolyRender(coordinates, feature);\n if (feature.isSelected) {\n polyRender.fillColor = this.selectedFillColor;\n polyRender.strokeColor = this.selectedStrokeColor;\n if (this.selectedStrokeWidth !== void 0) {\n polyRender.strokeWidth = this.selectedStrokeWidth;\n }\n }\n\n return polyRender;\n }\n}\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\nimport { SelectedPointSymbol } from './SelectedPointSymbol';\n\nexport const selectedPoint = new SelectedPointSymbol({\n size: 8,\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.65)',\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 3,\n\n selectedStrokeColor: '#ff5722',\n selectedFillColor: 'rgba(255, 255, 255, 0.65)',\n});\n\nexport const selectedPolyline = new SelectedPolySymbol({\n strokeWidth: 6,\n strokeColor: 'rgba(255, 87, 34, 0.2)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n selectedStrokeColor: '#ff5722',\n selectedStrokeWidth: 2,\n});\n\nexport const selectedPolygon = new SelectedPolySymbol({\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.36)',\n enclose: true,\n selectedFillColor: 'rgba(255, 255, 255, 0.56)',\n selectedStrokeColor: '#ff5722',\n});\n","import { Symbol } from '@evergis/sgis/es/symbols/Symbol';\r\nimport { Render, DynamicRender } from '@evergis/sgis/es/renders/Render';\r\nimport { SvgRender } from '@evergis/sgis/es/painters/DomPainter/SvgRender';\r\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { Bbox } from '@evergis/sgis/es/Bbox';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { FillStyle } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { listenDomEvent } from '@evergis/sgis/es/utils/domEvent';\r\nimport {\r\n MouseEventFlags,\r\n mouseEvents,\r\n Handler,\r\n} from '@evergis/sgis/es/EventHandler';\r\n\r\nimport { metersToPixels } from '../../utils/metersToPixels';\r\n\r\nimport { SVGPolyProps, SVGFeaturePoly, SvgPolyPathStyles } from './types';\r\n\r\nconst defaultPathStyles: SvgPolyPathStyles = {\r\n strokeWidth: 2,\r\n strokeColor: 'rgb(0, 163, 245)',\r\n fillStyle: FillStyle.None,\r\n};\r\n\r\nexport class SVGPoly extends Symbol<SVGFeaturePoly> {\r\n container: HTMLDivElement = document.createElement('div');\r\n redrawFeatureNode: SVGPolyProps['redrawFeatureNode'];\r\n pathStyles?: SvgPolyPathStyles;\r\n circle?: SVGPolyProps['circle'];\r\n className?: string;\r\n appendToSvg?: SVGPolyProps['appendToSvg'];\r\n\r\n constructor({\r\n redrawFeatureNode,\r\n pathStyles,\r\n circle,\r\n className,\r\n appendToSvg,\r\n }: SVGPolyProps = {}) {\r\n super();\r\n this.container.style.position = 'absolute';\r\n this.redrawFeatureNode = redrawFeatureNode;\r\n this.pathStyles = { center: [0, 0], fillColor: 'none', ...pathStyles };\r\n this.circle = circle;\r\n this.className = className;\r\n this.appendToSvg = appendToSvg;\r\n }\r\n\r\n renderFunction(\r\n feature: SVGFeaturePoly,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n const coordinates =\r\n feature instanceof Poly\r\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\r\n : feature.centroid;\r\n\r\n this.setCirclePxRaius(crs);\r\n this.container.innerHTML = '';\r\n const svg = this.setSvg(coordinates);\r\n svg && this.container.append(svg);\r\n\r\n feature.__dynamicSymbolRender = new DynamicRender({\r\n node: this.container,\r\n update: (bbox, resolution) =>\r\n this.update({ bbox, resolution, feature, crs }),\r\n redraw: () => {\r\n this.redrawFeatureNode && this.redrawFeatureNode(feature);\r\n },\r\n });\r\n\r\n this._setEventListeners(feature);\r\n\r\n return [feature.__dynamicSymbolRender];\r\n }\r\n\r\n setCirclePxRaius(crs: Crs) {\r\n if (this.circle && this.pathStyles) {\r\n this.pathStyles.radius =\r\n metersToPixels(this.circle.radius, {\r\n painter: this.circle.painter,\r\n crs,\r\n }) + (this.circle?.pxOffset || 0);\r\n }\r\n }\r\n\r\n update({\r\n bbox,\r\n resolution,\r\n feature,\r\n crs,\r\n }: {\r\n bbox?: Bbox;\r\n resolution?: number;\r\n feature: SVGFeaturePoly;\r\n crs: Crs;\r\n }) {\r\n if (!feature) return;\r\n\r\n if (!bbox) bbox = feature.__lastBbox;\r\n if (!resolution) resolution = feature.__lastResolution;\r\n\r\n if (!bbox || !resolution || !feature.crs.canProjectTo(bbox.crs)) return;\r\n\r\n if (feature.__lastResolution && resolution !== feature.__lastResolution) {\r\n const newCoordinates =\r\n feature instanceof Poly\r\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\r\n : feature.centroid;\r\n\r\n this.setCirclePxRaius(crs);\r\n this.container.innerHTML = '';\r\n const svg = this.setSvg(newCoordinates);\r\n svg && this.container.append(svg);\r\n }\r\n\r\n const polygon = feature.projectTo(bbox.crs);\r\n const radiusOffset = this.pathStyles?.radius\r\n ? this.pathStyles?.radius +\r\n (this.pathStyles?.strokeWidth ? this.pathStyles?.strokeWidth / 2 : 0)\r\n : 0;\r\n const dx =\r\n Math.round((polygon.bbox.xMin - bbox.xMin) / resolution) - radiusOffset;\r\n const dy =\r\n Math.round((bbox.yMax - polygon.bbox.yMax) / resolution) - radiusOffset;\r\n\r\n this.container.style.left = `${dx.toString()}px`;\r\n this.container.style.top = `${dy.toString()}px`;\r\n\r\n feature.__lastBbox = bbox;\r\n feature.__lastResolution = resolution;\r\n }\r\n\r\n setSvg(\r\n coordinates: [number, number][][] | Coordinates\r\n ): SVGElement | undefined {\r\n const { lineCap, lineJoin, miterLimit, lineDash, dashOffset } =\r\n this.pathStyles || {};\r\n const svgRender = new SvgRender({\r\n coordinates,\r\n ...defaultPathStyles,\r\n appendToSvg: this.appendToSvg,\r\n ...this.pathStyles,\r\n });\r\n\r\n if (this.circle) {\r\n svgRender._setArcNode();\r\n } else {\r\n svgRender._setPolyNode();\r\n }\r\n\r\n let svgElement;\r\n svgRender.getNode((_: null, svg: SVGElement) => {\r\n svgElement = svg;\r\n this.className && svgElement.classList.add(this.className);\r\n const path =\r\n svgElement && svgElement.querySelector(this.circle ? 'circle' : 'path');\r\n\r\n if (path) {\r\n path.setAttribute('stroke-linecap', lineCap || 'round');\r\n path.setAttribute('stroke-linejoin', lineJoin || 'round');\r\n path.setAttribute('stroke-miterlimit', (miterLimit || 10).toString());\r\n path.setAttribute('stroke-dashoffset', (dashOffset || 0).toString());\r\n\r\n if (this.circle) {\r\n path.setAttribute(\r\n 'stroke-dasharray',\r\n lineDash && lineDash.length > 0 ? lineDash.join(',') : ''\r\n );\r\n }\r\n }\r\n });\r\n\r\n return svgElement;\r\n }\r\n\r\n private _setEventListeners(dynamicFeature: SVGFeaturePoly): void {\r\n if (dynamicFeature.eventFlags === MouseEventFlags.None) return;\r\n\r\n const svgNode = dynamicFeature?.__dynamicSymbolRender?.node.querySelector(\r\n this.circle ? 'circle' : 'path'\r\n );\r\n\r\n Object.keys(mouseEvents).forEach(eventName => {\r\n if (dynamicFeature.eventFlags & mouseEvents[eventName].flag) {\r\n listenDomEvent(\r\n svgNode,\r\n mouseEvents[eventName].type,\r\n (event: Handler) => {\r\n dynamicFeature.fire(mouseEvents[eventName].type, {\r\n node: svgNode,\r\n browserEvent: event,\r\n });\r\n }\r\n );\r\n }\r\n });\r\n }\r\n}\r\n","import { BrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\r\nimport { ImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\r\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { SquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\r\nimport { PolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\r\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\r\nimport { PointSymbol } from '@evergis/sgis/es/symbols/point/Point';\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\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 isSGisCombinedPolylineSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is CombinedPolylineSymbol {\r\n return symbol instanceof CombinedPolylineSymbol\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\nimport { CombinedPolyline } from \"@evergis/sgis/es/features/CombinedPolyline\";\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 combinedLineFeature = new CombinedPolyline(\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 combinedPolyline: combinedLineFeature,\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 combinedPolyline: combinedLineFeature,\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 { isSGisCombinedPolylineSymbol, 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 if (isSGisCombinedPolylineSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.combinedPolyline,\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) => {\r\n return getSymbolRenders(symbol, size, MAP_LEGEND_FEATURES);\r\n}\r\n\r\nexport const getLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => {\r\n return getSymbolRenders(symbol, size, LEGEND_FEATURES);\r\n}\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 { 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 { PropsWithRef, useCallback, useState } from 'react';\r\n\r\nexport function useNode(): [PropsWithRef<any>, HTMLElement | null] {\r\n const [node, onSetNode] = useState<HTMLElement | null>(null);\r\n\r\n const ref = useCallback(onSetNode, [onSetNode]);\r\n\r\n return [ref, node];\r\n}\r\n","import React from 'react';\r\n\r\nimport { useCanvas, useSymbol, UseSymbolParams } from '../../hooks';\r\n\r\ninterface Props extends UseSymbolParams {}\r\n\r\nexport const Symbol: React.FC<Props> = ({ symbol, size, render }) => {\r\n const { canvas, ref } = useCanvas();\r\n useSymbol({ symbol, size, render }, canvas);\r\n\r\n return <canvas ref={ref} />;\r\n};\r\n","import { GeometryType } from '@evergis/api';\r\nimport styled from 'styled-components';\r\n\r\nexport type CompoundIconProps = {\r\n geometryType: GeometryType;\r\n icons: Record<GeometryType, string>;\r\n};\r\n\r\nexport const CompoundIcon = styled.div<CompoundIconProps>`\r\n background: ${({ geometryType, icons }) =>\r\n `url(${icons[geometryType]}) center center / ${\r\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\r\n } no-repeat`};\r\n height: 32px;\r\n width: 32px;\r\n`;\r\n\r\nexport const ClusterSymbol = styled.div<{ color?: string }>`\r\n position: relative;\r\n width: 32px;\r\n height: 32px;\r\n\r\n :before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: inherit;\r\n height: inherit;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n opacity: 0.28;\r\n }\r\n \r\n :after {\r\n content: \"99\";\r\n position: absolute;\r\n top: 4px;\r\n left: 4px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 24px;\r\n height: 24px;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n color: white;\r\n font-size: 0.75rem;\r\n line-height: 1;\r\n }\r\n`;\r\n","import React, { PropsWithChildren } from 'react';\r\nimport { SvgPointSymbolDc } from \"@evergis/api\";\r\n\r\nimport { Symbol } from './Symbol';\r\nimport { ClusterSymbol } from \"./styled\";\r\nimport { getParameterValue, StyleSymbolType } from '../../core';\r\nimport { deserializeSymbol, adjustSymbol, isSGisClusterSymbol, SGisSymbolType } from '../../symbols';\r\n\r\ntype StyleSymbolProps = PropsWithChildren<{\r\n symbol: StyleSymbolType;\r\n size?: number;\r\n}>;\r\n\r\nconst MAX_SIZE = 32;\r\n\r\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\r\n symbol,\r\n size = MAX_SIZE,\r\n children,\r\n}) => {\r\n if (children) {\r\n return <>{children}</>;\r\n }\r\n\r\n let sGisSymbol = null;\r\n\r\n try {\r\n sGisSymbol = deserializeSymbol(symbol);\r\n } catch (e) {\r\n // TODO generate Error symbol\r\n }\r\n\r\n if (!sGisSymbol) {\r\n return null;\r\n }\r\n\r\n if (isSGisClusterSymbol(symbol as SGisSymbolType)) {\r\n const color = getParameterValue((sGisSymbol as SvgPointSymbolDc).background?.fillColor as string) ||\r\n getParameterValue((sGisSymbol as SvgPointSymbolDc).figure?.fillColor as string) || \"rgb(0, 170, 255)\";\r\n\r\n return <ClusterSymbol color={color} />\r\n }\r\n\r\n return (\r\n <Symbol\r\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\r\n size={size}\r\n />\r\n );\r\n};\r\n","import { Icon } from '@evergis/icons';\r\nimport styled from 'styled-components';\r\n\r\nexport const EvergisCardContainer = styled.div`\r\n position: absolute;\r\n top: 2.25rem;\r\n right: 0.5rem;\r\n width: 22.5rem;\r\n margin-bottom: 1rem;\r\n max-height: 90%;\r\n min-height: 1rem;\r\n background: #fff;\r\n border-radius: 4px;\r\n z-index: 1;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n flex-grow: 1;\r\n overflow: initial;\r\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\r\n\r\n ${Icon} {\r\n color: rgba(0, 0, 0, 0.65);\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &:hover {\r\n color: #1fb3aa;\r\n }\r\n }\r\n`;\r\n\r\nexport const StickyHeader = styled.div`\r\n display: flex;\r\n position: sticky;\r\n top: 0;\r\n flex-direction: column;\r\n background: #fff;\r\n`;\r\n\r\nexport const CardHeader = styled.div`\r\n display: flex;\r\n padding: 1.5rem 1.5rem 1rem;\r\n align-items: center;\r\n`;\r\n\r\nexport const CardTitle = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin: 0 0.5rem;\r\n flex-grow: 1;\r\n`;\r\n\r\nexport const CardControls = styled.div`\r\n display: flex;\r\n\r\n ${Icon} {\r\n margin: 0 0.5rem;\r\n }\r\n`;\r\n\r\nexport const FeatureName = styled.div`\r\n font-size: 1.25rem;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const LayerName = styled.div`\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const CardPagination = styled.div`\r\n display: flex;\r\n height: 2.5rem;\r\n padding: 0 1.5rem;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n justify-content: space-between;\r\n background: linear-gradient(\r\n 0deg,\r\n rgba(161, 186, 208, 0.12),\r\n rgba(161, 186, 208, 0.12)\r\n );\r\n`;\r\n\r\nexport const PaginationDescription = styled.div`\r\n display: flex;\r\n`;\r\n\r\nexport const CurrentFeatureIndex = styled.div`\r\n cursor: pointer;\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n`;\r\n\r\nexport const CardAttributes = styled.div`\r\n padding: 1rem 1.5rem;\r\n overflow-y: scroll;\r\n`;\r\n\r\nexport const AttributeContainer = styled.div`\r\n padding-bottom: 0.5rem;\r\n`;\r\n\r\nexport const AttributeTitle = styled.div`\r\n margin: 0.25rem 0;\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const AttributeValueContainer = styled.div`\r\n flex-wrap: wrap;\r\n display: flex;\r\n`;\r\n\r\nexport const SimpleAttribute = styled.div``;\r\n\r\nexport const ValueLink = styled.a`\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n text-decoration: none;\r\n`;\r\n","import React from 'react';\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 MaximizedLegendContainer = styled.div<{ isShown?: boolean }>`\r\n position: ${({ isShown }) => isShown ? \"relative\" : \"absolute\"};\r\n top: 0;\r\n opacity: ${({ isShown }) => isShown ? 1 : 0};\r\n visibility: ${({ isShown }) => isShown ? \"visible\" : \"hidden\"};\r\n overflow: hidden;\r\n transition: opacity 0.5s, visibility 0.5s;\r\n`;\r\n\r\nexport const MinimizedLegendContainer = styled(MaximizedLegendContainer)`\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 MapLegendSectionItems = styled.div<{ height?: number }>`\r\n position: relative;\r\n height: ${({ height }) => height}px;\r\n overflow: hidden;\r\n transition: height 0.5s;\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 bottom: 0;\r\n left: 50%;\r\n display: flex;\r\n align-items: flex-end;\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 innerRef,\r\n isShown,\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 ref={innerRef} isShown={isShown}>\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 MaximizedLegendContainer,\r\n SymbolContainer\r\n} from \"../styled\";\r\nimport { LegendSymbolRenderer } from \"./LegendSymbolRenderer\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\nimport {\r\n ClassificationParameterExtended,\r\n getExtractedSymbol,\r\n isClusterFillColor as isClusterFillColorAction,\r\n ParameterByAttribute,\r\n ParameterValue\r\n} from \"../../../core\";\r\nimport { MaximizedLegendProps } from \"../types\";\r\n\r\nexport const MaximizedLegend: FC<MaximizedLegendProps> = ({\r\n innerRef,\r\n isShown,\r\n layerName,\r\n symbol: sectionSymbol,\r\n parameter,\r\n values,\r\n index: sectionIndex,\r\n attributeType,\r\n hiddenLegends,\r\n toggleHiddenLegend,\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 isHidden = useCallback(\r\n (hiddenCondition: string) => !!hiddenLegends?.includes(hiddenCondition),\r\n [hiddenLegends],\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 = isClusterFillColorAction(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?.(layerName, 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[parameterValue?.values.length - index - 1]?.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={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 hiddenLegends,\r\n toggleHiddenLegend,\r\n ],\r\n );\r\n\r\n return (\r\n <MaximizedLegendContainer ref={innerRef} isShown={isShown}>\r\n {values.map(renderLegend)}\r\n </MaximizedLegendContainer>\r\n );\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, MapLegendSectionItems } from \"../styled\";\r\nimport { getMaximizedLegendValues, getMinimizedLegendValues } from \"../../../utils/legend\";\r\nimport { useNode, useToggle } from \"../../../hooks\";\r\nimport { LegendSectionProps } from \"../types\";\r\n\r\nexport const LegendSection: FC<LegendSectionProps> = ({\r\n layerName,\r\n symbol,\r\n parameter,\r\n parameters,\r\n classified,\r\n hiddenLegends,\r\n toggleHiddenLegend,\r\n attribute,\r\n formatValue,\r\n index,\r\n}) => {\r\n const { t } = useTranslation(\"common\");\r\n const [isExpanded, toggleExpanded] = useToggle();\r\n const [maxRef, maxNode] = useNode();\r\n const [minRef, minNode] = useNode();\r\n\r\n return (\r\n <MapLegendSectionContainer>\r\n <MapLegendHeader>{attribute.alias || attribute.name}</MapLegendHeader>\r\n <LegendParameterDescription parameter={parameter} />\r\n <MapLegendSectionItems height={isExpanded ? (maxNode?.offsetHeight || 0) + 4 : minNode?.offsetHeight}>\r\n <MaximizedLegend\r\n innerRef={maxRef}\r\n isShown={isExpanded}\r\n layerName={layerName}\r\n symbol={symbol}\r\n hiddenLegends={hiddenLegends?.[layerName]}\r\n toggleHiddenLegend={toggleHiddenLegend}\r\n parameter={parameter}\r\n attributeType={attribute.type}\r\n index={index}\r\n values={getMaximizedLegendValues(\r\n attribute,\r\n parameter,\r\n parameters,\r\n classified,\r\n symbol,\r\n formatValue,\r\n index,\r\n t(\"classification.other\"),\r\n )}\r\n />\r\n <MinimizedLegend\r\n innerRef={minRef}\r\n isShown={!isExpanded}\r\n hiddenLegends={hiddenLegends?.[layerName]}\r\n parameter={parameter}\r\n values={getMinimizedLegendValues(\r\n attribute,\r\n classified,\r\n formatValue,\r\n index,\r\n t(\"classification.other\"),\r\n )}\r\n />\r\n </MapLegendSectionItems>\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, memo } from \"react\";\r\n\r\nimport { LegendSection } from \"./components\";\r\nimport { MapLegendContainer } from \"./styled\";\r\nimport { getLayerAttributes } from \"../../core/attributes/utils\";\r\nimport { ClassifiedList, getClassified } from \"../../utils/legend\";\r\nimport { ClassificationParameterExtended, getAttributeNameFromCondition, LayerAttribute } from \"../../core\";\r\nimport { LegendProps } from \"./types\";\r\n\r\nexport const Legend: FC<LegendProps> = memo(({ layerInfo, ...rest }) => {\r\n const classified = getClassified(layerInfo);\r\n\r\n if (!classified) return null;\r\n\r\n const parameters = 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\r\n return (\r\n <LegendSection\r\n key={index}\r\n layerName={layerInfo.name}\r\n symbol={layerInfo.style?.symbol}\r\n attribute={attributes.find(({ name }) => name === attributeName) as LayerAttribute}\r\n classified={classified[param as keyof ClassifiedList]}\r\n parameter={param as ClassificationParameterExtended}\r\n parameters={parameters}\r\n index={index}\r\n {...rest}\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","isRangeClass","Boolean","isUniqueClass","NULL_EXPRESSION","attribute","operation","ClassificationCondition","condition","conditionResult","ConditionInterpreter","expressions","Error","leftExpression","isUnique","console","warn","isRange","from","to","rightExpression","isFrom","TokenType","ArGr","ArEq","ArGre","ArLs","ArLse","includes","PARAMETER_SEPARATOR","parameterToPaths","parameter","split","pathsToParameter","paths","join","isObject","Array","isArray","isParameterByAttribute","type","isCalculatedParameter","getParameterValue","defaultValue","symbolParameterWalker","valueModifier","firstKey","restKeys","symbolPart","goDeeper","setDefaultParameterValue","setParameterValue","path","applyParameterValue","symbolTypeGuard","isPointLabelSymbol","isPolygonLabelSymbol","isPolylineLabelSymbol","isLabelSymbol","createCompositeSymbol","childSymbols","getChildSymbols","isCompositeSymbol","extractSymbol","isSimpleSymbol","label","raster","isRasterSymbol","extractStyle","style","packStyle","ignoreLabel","styleDc","filter","childStyle","isPointSymbol","isSquareSymbol","isMaskedImageSymbol","isStaticImageSymbol","isPolygonSymbol","isPolylineSymbol","isSimplePolylineSymbol","isPolylineSymbols","isImageSymbol","isTwoDimensionalSymbol","isSizableSymbol","isStrokeStyledSymbol","isScalablePolylineSymbol","beginning","ending","stroke","isH3GridSymbol","isSvgPointSymbol","isClusterSymbol","isClusterFillColor","getExtractedSymbol","extractCluster","extracted","singleObjectSymbol","isHatchBrush","isPatternBrush","isDashedBrush","isSolidBrush","isPolygonHasPatternBrush","fill","isPolygonHasHatchBrush","isMiterExist","miter","LineEndingType","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","collectClassifications","predicate","callback","initial","unClassify","flatSymbol","result","printRangeClass","index","isDouble","isDate","getRangeValues","EvergisStyle","classificationManager","some","minResolution","maxResolution","getHexColor","colorString","Color","toString","undefined","PREVIEW_LIMITS","STROKE_WIDTH_MIN","STROKE_WIDTH_MAX","clamp","num","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","toFixed","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","NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","formatDate","dateFormat","ClientDefaultFormat","dateValue","format","numberWithSpaces","fractionDigits","delim","frac","numWithSpaces","replace","matchPhone","phoneRegexp","isStringAsInn","match","innRegexp","test","isStringAsKpp","kppRegexp","isStringAsOgrn","ogrnRegexp","isStringContainsDate","dateRegexp","isRequisiteNumbers","isStringAsPhone","isStringAsMail","isStringAsUrl","isValidUrl","urlRegexp","urlKind","URL","_","mailHref","mail","phoneHref","urlHref","stringAttribute","urlAttribute","mailAttribute","phoneAttribute","convertStringAttribute","formatStringAttribute","phones","attributeValues","every","isNaN","formatDateTimeAttribute","formatIntAttribute","DOUBLE_FRACTIONS","formatDoubleAttribute","isNullOrUndefined","NO_CONTENT_ATTRIBUTE","formatAttributeValue","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","mergeAttributes","attributes1","attributes2","EvergisFeature","id","displayName","geometry","layerName","layerAlias","coordinates","sr","GeometryType","Point","PointFeature","selectedPoint","Multipoint","MultiPoint","Polyline","selectedPolyline","Polygon","selectedPolygon","sGisFeature","evaluateCondition","evaluator","ConditionEvaluator","evaluate","getAttributeValue","attributeMeta","getAttributeNameFromCondition","getAttributeNameFromClassified","findFeatureValue","parameterValues","extractValuesAttribute","evaluateFeatureSymbol","calc","parameterName","newParameterValue","featureValue","findChildFeatureStyle","childStyles","findChildFeatureSymbol","featureStyle","getFeatureSymbol","EvergisLayer","service","evergisService","alias","titleAttribute","findFeatureLayer","evaluateFeature","featureLayer","createValueTitle","isValidParameter","FilterConditionOperation","ComparisonOperator","formatArea","measure","formatLength","formatPolygonMeasure","area","perimiter","isPolylineLikePolygon","coords","firstPoint","lastPoint","distance","softEquals","getScale","scale","scales","pow","DEFAULT_FORMATTERS","polygon","COORD_FRACTION","DEFAULT_LABEL_POSITION","Infinity","BaseMeasureToolCreator","params","fire","renderLabelSymbol","formatters","areaSymbol","on","handlePointAdd","updateDistance","drawPointOnMouseMove","addTempLabel","setCursor","removeCoordLabel","removeTempLabel","removeMeasureLabel","removeTempPolygon","activeFeature","finishDrawing","DrawingFinishEvent","MouseEvent","projection","projectionTo","lat","long","addMeasureResultLabel","addCoordLabel","tempPolygon","_tempLayer","remove","polygonRings","shift","measureAreaSymbol","hide","add","ringIndex","pointIndex","calcLength","content","polygonPreview","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","comparisonOperatorMapReversed","Equals","ArNotEq","NotEquals","GreaterThan","LessThan","GreaterOrEquals","LessOrEquals","Between","Outside","NUMERIC_ATTRIBUTE_TYPES","Int32","Double","formatValue","UTC","formatCondition","comparisonOperator","operator","OPERATOR_CONDITION_REMAP","preparedValue","isBetweenOutside","BETWEEN_OPERATORS","escapeValue","formattedValue","val","nulledValue","isNil","valueEscaped","Char","escapeSpecChars","addOperationToValue","createConditionString","createCondition","convertedResult","convertOperatorValue","operatorIndex","startsWith","PERCENTAGE","endsWith","CONTAINS_OPERATORS","ENDS_WITH_OPERATORS","STARTS_WITH_OPERATORS","addContains","addStartsWith","addEndsWith","Contains","NotContains","StartsWith","NotStartsWith","EndsWith","NotEndsWith","BETWEEN","OUTSIDE","FilterCondition","conditionInterpreter","message","isOrCondition","boolOperations","BoolOr","isAndCondition","BoolAnd","OR","AND","conditions","isLayerService","getAttributeFromCondition","parts","getExprFromCondition","partIndex","expr","part","getSignFromConditionPart","getValueFromConditionPart","isRangeCondition","getSymbolParameterInfo","PARAMETER_INFOS","DEFAULT_PARAMETER_INFO","formatUniqueClassValue","stringFormat","formatRangeClassValue","formattedFrom","formattedTo","checkLayerHasLegend","layerInfo","SYMBOL_CLASSIFICATION","geometryType","param","paramValue","get","getTitleFromCondition","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","createHiddenCondition","attributeType","newValue","createOtherHiddenCondition","hiddenCondition","getMinimizedLegendValues","classified","otherTitle","other","getClassificationValue","items","reverse","getMaximizedLegendValues","sectionIndex","getClassified","classifyParams","getSymbolStrokeWidth","parameterFromSymbol","getLegendSymbolSize","cellSize","EXTRA_BORDER_SIZE","DEFAULT_LEGEND_SYMBOL_SIZE","serializeSvgPointSymbol","figureFillColor","figure","bgFillColor","angle","SvgSymbolBg","SIZE_PARAMETERS","isSizeClassification","getServiceConfiguration","emptyServiceConfiguration","configuration","GEOMETRY_ATTRIBUTE","DEFAULT_ID_ATTRIBUTE_NAME","getAttributesConfiguration","serviceConfiguration","emptyAttributesConfiguration","geometryAttribute","idAttribute","tableName","attributesConfiguration","getLayerDefinition","emptyLayerDefinition","getAttributeType","metersToPixels","meters","zeroPoint","projectTo","maxWidthPoint","widthDistance","pxK","polygonCircleFromPoint","diameter","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","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","serialize","deserialize","Filled","Empty","BASE_OPERATORS","FILLED_OPERATORS","RANGE_OPERATORS","numberComparisonOperators","dateComparisonOperators","textComparisonOperators","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","nextCoordinates","abs","updateRingForLeftMiter","isFirstRing","newRing","prevCoordinates","updateRingsForMiter","copyRings","SGisPolylineSymbol","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","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","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","isSGisCombinedPolylineSymbol","CombinedPolylineSymbol","isSGisClusterSymbol","viewBoxSize","pointFeature","plain","lineFeature","combinedLineFeature","CombinedPolyline","polygonFeature","h3gridFeature","H3Feature","lineLegendFeature","polygonLegendFeature","polygonMapLegendFeature","MAP_LEGEND_FEATURES","LEGEND_FEATURES","polyline","combinedPolyline","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","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","useNode","onSetNode","CompoundIcon","styled","div","icons","ClusterSymbol","MAX_SIZE","StyleSymbol","sGisSymbol","e","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","isHidden","SymbolButtonWithClick","palette","elementDeep","SymbolButton","span","MapLegendControl","MapLegendContainer","MapLegendHeader","MapLegendDescriptionContainer","MaximizedLegendContainer","isShown","MinimizedLegendContainer","MapLegendSectionContainer","MapLegendSectionItems","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","innerRef","hiddenLegends","currentValues","pop","titleMax","titleMin","checkIsHidden","useSvgSymbol","skipOffset","SVGWrapperRefElement","SVG","initSvg","addTo","getSvgData","manipulateSvg","newSymbol","getUpdatedSvgSymbol","field","JSON","parse","stringify","svgRef","SvgSymbolContainer","SvgSymbolLabel","fontSettings","fontFamily","fontWeight","fontStyle","fontColor","fontSize","haloColor","haloWidth","SvgSymbol","memo","text","onSelectSymbol","renderSymbol","SymbolByType","defaultSymbol","LegendSymbolRenderer","MaximizedLegend","sectionSymbol","toggleHiddenLegend","t","useTranslation","isStrokeColor","renderColumn","column","dateTime","Fragment","renderItemText","columns","isSingleColumn","renderLegend","isClusterFillColorAction","LegendParameterDescription","LegendSection","parameters","isExpanded","toggleExpanded","maxRef","maxNode","minRef","minNode","offsetHeight","Legend","rest","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAMA,aAAa,GAAIC,MAAD;AAC3B,QAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBC,cAAQ,CAAC,CAAD,CAAtC;AAEA,QAAMC,IAAI,GAAGC,iBAAW,CACtB,MAAMH,UAAU,CAACI,KAAK,IAAKA,KAAK,GAAGN,MAAM,GAAG,CAAjB,GAAqBM,KAAK,GAAG,CAA7B,GAAiCA,KAA5C,CADM,EAEtB,CAACN,MAAD,EAASE,UAAT,CAFsB,CAAxB;AAKA,QAAMK,IAAI,GAAGF,iBAAW,CACtB,MAAMH,UAAU,CAACI,KAAK,IAAKA,KAAK,KAAK,CAAV,GAAcA,KAAd,GAAsBA,KAAK,GAAG,CAAzC,CADM,EAEtB,CAACJ,UAAD,CAFsB,CAAxB;AAKA,QAAMM,KAAK,GAAGH,iBAAW,CAAC,MAAMH,UAAU,CAAC,CAAD,CAAjB,EAAsB,CAACA,UAAD,CAAtB,CAAzB;AAEA,SAAO,CAACD,OAAD,EAAU;AAAEM,IAAAA,IAAF;AAAQH,IAAAA,IAAR;AAAcI,IAAAA;AAAd,GAAV,CAAP;AACD,CAhBM;;ACJP,MAAMC,QAAQ,GAAG,GAAjB;AAEA,MAAMC,UAAU,gBAAG,IAAIC,OAAJ,CAAQ;AACzBC,EAAAA,GAAG,EAAEH;AADoB,CAAR,CAAnB;AAIA,MAAMI,cAAc,gBAAGC,mBAAa,CAAMJ,UAAN,CAApC;AAMA,MAAaK,eAAe,GAAmC;MAAC;AAC9DC,IAAAA,GAD8D;AAE9DC,IAAAA;AAF8D;AAI9D,QAAMX,KAAK,GAAGY,aAAO,CAAC,MAAMF,GAAG,IAAIN,UAAd,EAA0B,CAACM,GAAD,CAA1B,CAArB;AACA,SACEG,4BAAA,CAACN,cAAc,CAACO,QAAhB;AAAyBd,IAAAA,KAAK,EAAEA;GAAhC,EAAwCW,QAAxC,CADF;AAGD,CARM;AAUP,MAAaI,iBAAiB,GAAG,MAAMC,gBAAU,CAACT,cAAD,CAA1C;;AChBP,MAAMU,UAAU,gBAAG,IAAIC,QAAJ,EAAnB;AACA,MAAMC,cAAc,gBAAG,IAAIC,qBAAJ,CAAeH,UAAf,CAAvB;AAEA,MAAMI,UAAU,gBAAGb,mBAAa,CAAa;AAC3Cc,EAAAA,GAAG,EAAEL,UADsC;AAE3CM,EAAAA,OAAO,EAAEJ;AAFkC,CAAb,CAAhC;AAUA,MAAaK,WAAW,GAA+B;MAAC;AACtDF,IAAAA,GADsD;AAEtDC,IAAAA,OAFsD;AAGtDZ,IAAAA;AAHsD;AAKtD,QAAMX,KAAK,GAAGY,aAAO,CACnB,OAAO;AACLU,IAAAA,GAAG,EAAEA,GAAG,IAAIL,UADP;AAELM,IAAAA,OAAO,EAAEA,OAAO,KAAKD,GAAG,GAAG,IAAIF,qBAAJ,CAAeE,GAAf,CAAH,GAAyBH,cAAjC;AAFX,GAAP,CADmB,EAKnB,CAACG,GAAD,EAAMC,OAAN,CALmB,CAArB;AAOA,SAAOV,4BAAA,CAACQ,UAAU,CAACP,QAAZ;AAAqBd,IAAAA,KAAK,EAAEA;GAA5B,EAAoCW,QAApC,CAAP;AACD,CAbM;AAeP,MAAac,aAAa,GAAG,MAAMT,gBAAU,CAACK,UAAD,CAAtC;;AC7BP,MAAMK,YAAY,gBAAG,IAAIC,2BAAJ,EAArB;AAEA,MAAMC,iBAAiB,gBAAG,IAAID,2BAAJ,EAA1B;AAEA,MAAME,cAAc,gBAAGrB,mBAAa,CAAiB;AACnDsB,EAAAA,KAAK,EAAEJ,YAD4C;AAEnDK,EAAAA,UAAU,EAAEH;AAFuC,CAAjB,CAApC;AAWA,MAAaI,eAAe,GAAmC;MAAC;AAC9DF,IAAAA,KAD8D;AAE9DC,IAAAA,UAF8D;AAG9DpB,IAAAA;AAH8D;AAK9D,QAAMX,KAAK,GAAGY,aAAO,CACnB,OAAO;AACLkB,IAAAA,KAAK,EAAEA,KAAK,IAAIJ,YADX;AAELK,IAAAA,UAAU,EAAEA,UAAU,IAAIH;AAFrB,GAAP,CADmB,EAKnB,CAACE,KAAD,EAAQC,UAAR,CALmB,CAArB;AAQA,SACElB,4BAAA,CAACgB,cAAc,CAACf,QAAhB;AAAyBd,IAAAA,KAAK,EAAEA;GAAhC,EAAwCW,QAAxC,CADF;AAGD,CAhBM;AAkBP,MAAasB,iBAAiB,GAAG,MAAMjB,gBAAU,CAACa,cAAD,CAA1C;;ACtCP,MAAMK,aAAa,gBAAG1B,mBAAa,CAAyB,IAAzB,CAAnC;AAMA,MAAa2B,cAAc,GAAkC;MAAC;AAC5DC,IAAAA,MAD4D;AAE5DzB,IAAAA;AAF4D;AAI5D,SACEE,4BAAA,CAACqB,aAAa,CAACpB,QAAf;AAAwBd,IAAAA,KAAK,EAAEoC,MAAM,IAAI;GAAzC,EACGzB,QADH,CADF;AAKD,CATM;AAWP,MAAa0B,gBAAgB,GAAG,MAAMrB,gBAAU,CAACkB,aAAD,CAAzC;;ACjBP,MAAMI,oBAAoB,gBAAG9B,mBAAa,CAAiB,EAAjB,CAA1C;AAMA,MAAa+B,qBAAqB,GAAyC;AAAA,MAAC;AAC1EC,IAAAA,MAD0E;AAE1E7B,IAAAA;AAF0E,GAAD;AAAA,SAIzEE,4BAAA,CAACyB,oBAAoB,CAACxB,QAAtB;AAA+Bd,IAAAA,KAAK,EAAEwC;GAAtC,EACG7B,QADH,CAJyE;AAAA,CAApE;AAQP,MAAa8B,uBAAuB,GAAG,MAAMzB,gBAAU,CAACsB,oBAAD,CAAhD;;MCVMI,aAAa,GAAG;AAC3B,QAAM;AAAEnB,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AAEA,SAAO1B,iBAAW,CACf4C,KAAD;AACE,QAAI,WAAWA,KAAf,EAAsB;AACpB,aAAOA,KAAK,CAACC,KAAb;AACD;;AAED,UAAMC,YAAY,GAChB,kBAAkBF,KAAlB,GAA0BA,KAAK,CAAC,cAAD,CAA/B,GAAkDA,KADpD;AAGA,UAAMG,OAAO,GAAGvB,OAAO,CAACuB,OAAxB;AACA,UAAM;AAAEC,MAAAA,CAAF;AAAKC,MAAAA;AAAL,QAAWC,uBAAc,CAC7BH,OAD6B,EAE7B,aAAaD,YAAb,GACI;AACEK,MAAAA,KAAK,EAAEL,YAAY,CAACM,OAAb,CAAqB,CAArB,EAAwBD,KADjC;AAEEE,MAAAA,KAAK,EAAEP,YAAY,CAACM,OAAb,CAAqB,CAArB,EAAwBC;AAFjC,KADJ,GAKIP,YAPyB,CAA/B;AASA,UAAMQ,aAAa,GAAG9B,OAAO,CAAC+B,sBAAR,CAA+BP,CAA/B,EAAkCC,CAAlC,CAAtB;AAEA,WAAOK,aAAP;AACD,GAtBe,EAuBhB,CAAC9B,OAAD,CAvBgB,CAAlB;AAyBD,CA5BM;;SCESgC;AACd,QAAM;AAAEjC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAM+B,aAAa,GAAGd,aAAa,EAAnC;AAEA,QAAMe,MAAM,GAAG1D,iBAAW,CACvB2D,CAAD;AACEpC,IAAAA,GAAG,CAACqC,IAAJ,CAASD,CAAT,EAAYpC,GAAG,CAACsC,QAAhB;AACD,GAHuB,EAIxB,CAACtC,GAAD,CAJwB,CAA1B;AAOA,QAAMuC,MAAM,GAAG9D,iBAAW,CAAC,MAAM0D,MAAM,CAAC,CAAD,CAAb,EAAkB,CAACA,MAAD,CAAlB,CAA1B;AACA,QAAMK,OAAO,GAAG/D,iBAAW,CAAC,MAAM0D,MAAM,CAAC,CAAC,CAAF,CAAb,EAAmB,CAACA,MAAD,CAAnB,CAA3B;AAEA,QAAMM,SAAS,GAAGhE,iBAAW,CAC3B;QAAC;AAAE6D,MAAAA,QAAF;AAAYI,MAAAA,UAAZ;AAAwBC,MAAAA;AAAxB;;AACC,QAAIL,QAAQ,IAAII,UAAhB,EAA4B;AAC1B,YAAME,YAAY,GAAGN,QAAQ,GACxBA,QAAQ,CAACO,KAAT,CAAe,CAAf,CADwB,GAEzB7C,GAAG,CAACsC,QAFR;AAGAtC,MAAAA,GAAG,CAACyC,SAAJ,CAAcG,YAAd,EAA4BF,UAAU,IAAI1C,GAAG,CAAC0C,UAA9C;AACD;;AAED,QAAIC,MAAJ,EAAY;AACV,YAAM;AAAEG,QAAAA,IAAF;AAAQC,QAAAA,IAAR;AAAcC,QAAAA,IAAd;AAAoBC,QAAAA;AAApB,UAA6BN,MAAnC;AACA,YAAMO,IAAI,GAAG,IAAIC,SAAJ,CAAS,CAACJ,IAAD,EAAOC,IAAP,CAAT,EAAuB,CAACF,IAAD,EAAOG,IAAP,CAAvB,EAAqCjD,GAAG,CAACoD,GAAzC,CAAb;AACAnD,MAAAA,OAAO,IAAIA,OAAO,CAACoD,IAAR,CAAaH,IAAb,EAAmB,IAAnB,CAAX;AACD;AACF,GAd0B,EAe3B,CAAClD,GAAD,EAAMC,OAAN,CAf2B,CAA7B;AAkBA,QAAMqD,UAAU,GAAG7E,iBAAW,CAC3B4C,KAAD;AACErB,IAAAA,GAAG,CAACqC,IAAJ,CAAS,CAAT,EAAYH,aAAa,CAACb,KAAD,CAAzB;AACD,GAH2B,EAI5B,CAACa,aAAD,EAAgBlC,GAAhB,CAJ4B,CAA9B;AAOA,QAAMuD,eAAe,GAAG9E,iBAAW,CAChC+E,KAAD;AACE,UAAM;AAAEC,MAAAA;AAAF,QAAiBzD,GAAvB;AACA,QAAI0D,SAAS,GAAGD,UAAU,CAACE,MAAX,CAAkBC,IAAlB,CAAuB;AAAA,UAAC;AAAEC,QAAAA;AAAF,OAAD;AAAA,aAAgBA,MAAM,KAAKL,KAA3B;AAAA,KAAvB,CAAhB;AACA,UAAMd,UAAU,GAAGgB,SAAS,GAAGA,SAAS,CAAChB,UAAb,GAA0B1C,GAAG,CAAC0C,UAA1D;AAEA1C,IAAAA,GAAG,CAAC8D,oBAAJ,CAAyBpB,UAAzB,EAAqC1C,GAAG,CAACsC,QAAzC;AACD,GAPgC,EAQjC,CAACtC,GAAD,CARiC,CAAnC;AAWA,SAAO;AACLmC,IAAAA,MADK;AAELI,IAAAA,MAFK;AAGLC,IAAAA,OAHK;AAILc,IAAAA,UAJK;AAKLb,IAAAA,SALK;AAMLc,IAAAA;AANK,GAAP;AAQD;;AC7DM,MAAMQ,gBAAgB,GAAG;AAC9B,QAAM;AAAEtB,IAAAA;AAAF,MAAgBR,iBAAiB,EAAvC;AAEA,SAAOxD,iBAAW,CACfuF,OAAD;AACE,UAAMrB,MAAM,GAAGqB,OAAO,CAACrB,MAAR,EAAf;;AAEA,QAAIA,MAAJ,EAAY;AACVF,MAAAA,SAAS,CAAC;AAAEE,QAAAA;AAAF,OAAD,CAAT;AACD;AACF,GAPe,EAQhB,CAACF,SAAD,CARgB,CAAlB;AAUD,CAbM;;ACSA,MAAMwB,cAAc,GAAIC,QAAD;AAC5B,QAAM,CAAC7F,OAAD,EAAU;AAAEM,IAAAA,IAAF;AAAQH,IAAAA,IAAR;AAAcI,IAAAA;AAAd,GAAV,IAAmCT,aAAa,CAAC+F,QAAQ,CAAC9F,MAAV,CAAtD;AAEA,QAAM4F,OAAO,GAAGE,QAAQ,CAAC7F,OAAD,CAAxB;AAEA,QAAM8F,aAAa,GAAGJ,gBAAgB,EAAtC;AAEA,QAAM1B,IAAI,GAAG5D,iBAAW,CAAC,MAAM0F,aAAa,CAACH,OAAD,CAApB,EAA+B,CACrDG,aADqD,EAErDH,OAFqD,CAA/B,CAAxB;AAKAI,EAAAA,eAAS,CAAC;AACRxF,IAAAA,KAAK;AAEN,GAHQ,EAGN,CAACsF,QAAQ,CAAC9F,MAAV,CAHM,CAAT;AAKA,SAAO;AAAE4F,IAAAA,OAAF;AAAW3F,IAAAA,OAAX;AAAoBM,IAAAA,IAApB;AAA0BH,IAAAA,IAA1B;AAAgC6D,IAAAA;AAAhC,GAAP;AACD,CAlBM;;SCsESgC,aAAa3F;AAC3B,SAAO4F,OAAO,CAAC5F,KAAK,IAAI,UAAUA,KAApB,CAAd;AACD;AAED,SAAgB6F,cACd7F;AAEA,SAAO4F,OAAO,CAAC5F,KAAK,IAAI,iBAAiBA,KAA3B,CAAd;AACD;;ACrFD,MAAM8F,eAAe,GAAe;AAClC;AACAC,EAAAA,SAAS,EAAE,IAFuB;AAGlC;AACAC,EAAAA,SAAS,EAAE,IAJuB;AAKlChG,EAAAA,KAAK,EAAE;AAL2B,CAApC;AAQA,IAAaiG,uBAAb;AAIE,mCAAYC,WAAZ;;;AAFiB,oBAAA,GAA4B,EAA5B;AAGf,SAAKA,SAAL,GAAiBA,WAAjB;AACA,UAAMC,eAAe,GAAG,IAAIC,8BAAJ,CAAyBF,WAAzB,EAAoClG,KAA5D;AAEA,SAAKqG,WAAL,GACEF,eAAe,YAAYG,KAA3B,GAAmC,EAAnC,GAAwCH,eAAe,CAACE,WAD1D;AAED;;AAVH;AAAA;AAAA,SAYE;AACE,aAAO,KAAKE,cAAL,CAAoBR,SAA3B;AACD;AAdH;AAAA;AAAA,SAgBE;AACE,UAAI,KAAKS,QAAL,EAAJ,EAAqB;AACnB,cAAM;AAAExG,UAAAA;AAAF,YAAY,KAAKuG,cAAvB;AAEA,eAAO,OAAOvG,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoC,EAA3C;AACD;;AAEDyG,MAAAA,OAAO,CAACC,IAAR,gDAA0D,KAAKR,SAA/D;AAEA,aAAO,EAAP;AACD;AA1BH;AAAA;AAAA,SA4BE;AACE,UAAI,CAAC,KAAKS,OAAL,EAAL,EAAqB;AACnBF,QAAAA,OAAO,CAACC,IAAR,gDAC+C,KAAKR,SADpD;AAIA,eAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACD;;AAED,UAAI,KAAKG,WAAL,CAAiB3G,MAAjB,KAA4B,CAAhC,EAAmC;AACjC,cAAM;AAAEM,UAAAA,KAAK,EAAE4G;AAAT,YAAkB,KAAKL,cAA7B;AACA,cAAM;AAAEvG,UAAAA,KAAK,EAAE6G;AAAT,YAAgB,KAAKC,eAA3B;AAEA,eAAO,CAACF,IAAD,EAAOC,EAAP,CAAP;AACD;;AAED,UAAI,KAAKR,WAAL,CAAiB3G,MAAjB,KAA4B,CAAhC,EAAmC;AACjC,cAAM;AAAEsG,UAAAA,SAAF;AAAahG,UAAAA;AAAb,YAAuB,KAAKuG,cAAlC;AACA,cAAMQ,MAAM,GAAGf,SAAS,KAAKgB,mBAAS,CAACC,IAAvC;AAEA,eAAO,CAACF,MAAM,GAAG/G,KAAH,GAAW,IAAlB,EAAwB+G,MAAM,GAAG,IAAH,GAAU/G,KAAxC,CAAP;AACD;;AAED,aAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACD;AApDH;AAAA;AAAA,SAsDE;AACE,aAAO,KAAKwG,QAAL;;AAAA;;AAAP;AAGD;AA1DH;AAAA;AAAA,WA4DS;AACL,aAAO,KAAKD,cAAL,CAAoBP,SAApB,KAAkCgB,mBAAS,CAACE,IAAnD;AACD;AA9DH;AAAA;AAAA,WAgES;AACL,aAAO,CACLF,mBAAS,CAACC,IADL,EAELD,mBAAS,CAACG,KAFL,EAGLH,mBAAS,CAACI,IAHL,EAILJ,mBAAS,CAACK,KAJL,EAKLC,QALK,CAKI,KAAKf,cAAL,CAAoBP,SALxB,CAAP;AAMD;AAvEH;AAAA;AAAA,WAyES;AACL,aAAO,KAAKE,SAAZ;AACD;AA3EH;AAAA;AAAA,SA6EE;AACE,aAAO,KAAKG,WAAL,CAAiB3G,MAAjB,GAA0B,CAA1B,GAA8B,KAAK2G,WAAL,CAAiB,CAAjB,CAA9B,GAAoDP,eAA3D;AACD;AA/EH;AAAA;AAAA,SAiFE;AACE,aAAO,KAAKO,WAAL,CAAiB3G,MAAjB,GAA0B,CAA1B,GAA8B,KAAK2G,WAAL,CAAiB,CAAjB,CAA9B,GAAoDP,eAA3D;AACD;AAnFH;;AAAA;AAAA;;ACdO,MAAMyB,mBAAmB,GAAG,GAA5B;AAEP,AAAO,MAAMC,gBAAgB,GAC3BC,SAD8B,IAG9BA,SAAS,CAACC,KAAV,CAAgBH,mBAAhB,CAHK;AAKP,AAAO,MAAMI,gBAAgB,GAC3BC,KAD8B,IAG9BA,KAAK,CAACC,IAAN,CAAWN,mBAAX,CAHK;;SCTSO,SAAY9H;AAC1B,SAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAAvC,IAA+C,CAAC+H,KAAK,CAACC,OAAN,CAAchI,KAAd,CAAvD;AACD;;MCaYiI,sBAAsB,GACjCjI,KADoC,IAGpC4F,OAAO,CAACkC,QAAQ,CAAC9H,KAAD,CAAR,IAAoB,CAAAA,KAA8C,QAA9C,YAAAA,KAA8C,CAAEkI,IAAhD,MAAyD,aAA9E,CAHF;AAKP,MAAaC,qBAAqB,GAChCnI,KADmC,IAGnC4F,OAAO,CAACkC,QAAQ,CAAC9H,KAAD,CAAR,IAAoB,CAAAA,KAA6C,QAA7C,YAAAA,KAA6C,CAAEkI,IAA/C,MAAwD,YAA7E,CAHF;AAKP,MAAaE,iBAAiB,GAC5BpI,KAD+B;AAG/B,MAAIiI,sBAAsB,CAACjI,KAAD,CAAtB,IAAiCmI,qBAAqB,CAACnI,KAAD,CAA1D,EAAmE;AACjE,WAAOA,KAAK,CAACqI,YAAb;AACD;;AAED,SAAOrI,KAAP;AACD,CARM;AAUP,MAAasI,qBAAqB,GAChCC,aADmC,IAEhC,CACHnG,MADG,EAEHqF,SAFG;AAIH,QAAMG,KAAK,GAAGG,KAAK,CAACC,OAAN,CAAcP,SAAd,IACVA,SADU,GAEVD,gBAAgB,CAACC,SAAD,CAFpB;AAGA,QAAM,CAACe,QAAD,EAAW,GAAGC,QAAd,IAA0Bb,KAAhC;;AAGA,QAAMc,UAAU,GAAGtG,MAAM,CAACoG,QAAD,CAAzB;;AAEA,MAAIC,QAAQ,CAAC/I,MAAb,EAAqB;AACnB,UAAMiJ,QAAQ,GAAGL,qBAAqB,CAACC,aAAD,CAAtC;AAEA,wBACKnG,MADL;AAEE,OAACoG,QAAD,GAAYG,QAAQ,CAACD,UAAD,EAAaD,QAAb,CAAR,IAAkCC;AAFhD;AAID;;AAED,sBACKtG,MADL;AAEE,KAACoG,QAAD,GAAYD,aAAa,CAACG,UAAD,CAAb,IAA6BA;AAF3C;AAID,CA3BM;AA6BP,MAAaE,wBAAwB,gBAAGN,qBAAqB,CAC3DF,iBAD2D,CAAtD;AAIP,MAAaS,iBAAiB,GAAG,CAC/BzG,MAD+B,EAE/B0G,IAF+B,EAG/B9I,KAH+B,KAIzBsI,qBAAqB,CAAC,MAAMtI,KAAP,CAArB,CAAmCoC,MAAnC,EAA2C0G,IAA3C,CAJD;AAMP,SAAgBC,oBACd3G,QACA0G,MACA9I;AAEA,MAAI8I,IAAI,KAAK,QAAb,EAAuB;AACrB,WAAO9I,KAAP;AACD;;AAED,SAAO6I,iBAAiB,CAACzG,MAAD,EAAS0G,IAAT,EAAe9I,KAAf,CAAxB;AACD;;MCjCYgJ,eAAe,GAC1Bd,IAD6B,IAEzB9F,MAAD,IACHA,MAAM,IAAIA,MAAM,CAAC8F,IAAP,KAAgBA,IAHrB;;MCxBMe,kBAAkB,gBAAGD,eAAe,CAC/C,kBAD+C,CAA1C;AAGP,MAAaE,oBAAoB,gBAAGF,eAAe,CACjD,oBADiD,CAA5C;AAGP,MAAaG,qBAAqB,gBAAGH,eAAe,CAClD,qBADkD,CAA7C;AAIP,MAAaI,aAAa,GAAIhH,MAAD,IAC3BwD,OAAO,CACLxD,MAAM,KACH6G,kBAAkB,CAAC7G,MAAD,CAAlB,IACC8G,oBAAoB,CAAC9G,MAAD,CADrB,IAEC+G,qBAAqB,CAAC/G,MAAD,CAHnB,CADD,CADF;;;ACnCP,MAWaiH,qBAAqB,GAChCC,YADmC,KAEV;AACzBpB,EAAAA,IAAI,EAAE,iBADmB;AAEzBoB,EAAAA;AAFyB,CAFU,CAA9B;AAOP,MAAaC,eAAe,GAAInH,MAAD;AAC7B,MAAI,CAACA,MAAD,IAAW,CAACoH,iBAAiB,CAACpH,MAAD,CAAjC,EAA2C,OAAO,EAAP;AAE3C,SAAOA,MAAM,CAACkH,YAAP,IAAuB,EAA9B;AACD,CAJM;AAMP,MAAaG,aAAa,GACxBrH,MAD2B;AAG3B,QAAMkH,YAAY,GAAGC,eAAe,CAACnH,MAAD,CAApC;AAEA,SAAO;AACL;AACAA,IAAAA,MAAM,EAAEkH,YAAY,CAACpE,IAAb,CAAkBwE,cAAlB,CAFH;AAGLC,IAAAA,KAAK,EAAEL,YAAY,CAACpE,IAAb,CAAkBkE,aAAlB,KAAoC,IAHtC;AAILQ,IAAAA,MAAM,EAAEN,YAAY,CAACpE,IAAb,CAAkB2E,cAAlB,KAAqC;AAJxC,GAAP;AAMD,CAXM;AAaP,MAAaC,YAAY,GAAIC,KAAD;AAC1B;AACA,MAAIP,iBAAiB,CAACO,KAAK,CAAC3H,MAAP,CAArB,EAAqC;AACnC,wBACK2H,KADL,EAEKN,aAAa,CAACM,KAAK,CAAC3H,MAAP,CAFlB;AAGE;AACAzB,MAAAA,QAAQ,EAAEoJ,KAAK,CAACpJ,QAAN,IAAkBoJ,KAAK,CAACpJ,QAAN,CAAeW,GAAf,CAAmBwI,YAAnB;AAJ9B;AAMD;;;AAGD,SAAQC,KAAK,IAAI,EAAjB;AACD,CAbM;AAeP,MAAaC,SAAS,GAAID,KAAD;AACvB,QAAM;AAAEE,IAAAA,WAAF;AAAeN,IAAAA,KAAf;AAAsBvH,IAAAA,MAAtB;AAA8BwH,IAAAA,MAA9B;AAAsCjJ,IAAAA;AAAtC,MAA+DoJ,KAArE;AAAA,QAAyDG,OAAzD,iCAAqEH,KAArE;;AACA,QAAMT,YAAY,GAAG,CAAC,CAACW,WAAD,IAAgBN,KAAjB,EAAwBC,MAAxB,EAAgCO,MAAhC,CAAuCvE,OAAvC,CAArB;AAEA,sBACKsE,OADL;AAEE9H,IAAAA,MAAM,EAAEkH,YAAY,CAAC5J,MAAb;AAEJ2J,IAAAA,qBAAqB,CAAC,CAACjH,MAAD,EAAS,GAAGkH,YAAZ,CAAD,CAFjB,GAGJlH,MALN;AAME;AACAzB,IAAAA,QAAQ,EAAEA,QAAQ;AAEdA,IAAAA,QAAQ,CAACW,GAAT,CAAa8I,UAAU,IACrBJ,SAAS,cAAMI,UAAN;AAAkBH,MAAAA,WAAlB;AAA+BN,MAAAA;AAA/B,OADX,CAFc,GAKdhJ;AAZN;AAcD,CAlBM;;MCqDM0J,aAAa,gBAAGrB,eAAe,CAAc,mBAAd,CAArC;AAEP,MAAasB,cAAc,gBAAGtB,eAAe,CAC3C,mBAD2C,CAAtC;AAIP,MAAauB,mBAAmB,gBAAGvB,eAAe,CAChD,wBADgD,CAA3C;AAIP,MAAawB,mBAAmB,gBAAGxB,eAAe,CAChD,kBADgD,CAA3C;AAIP,MAAayB,eAAe,gBAAGzB,eAAe,CAAgB,eAAhB,CAAvC;AAEP,MAAa0B,gBAAgB,gBAAG1B,eAAe,CAC7C,gBAD6C,CAAxC;AAIP,MAAa2B,sBAAsB,gBAAG3B,eAAe,CACnD,sBADmD,CAA9C;AAIP,MAAa4B,iBAAiB,GAC5BxI,MAD+B,IAG/BwD,OAAO,CACLxD,MAAM,KAAKsI,gBAAgB,CAACtI,MAAD,CAAhB,IAA4BuI,sBAAsB,CAACvI,MAAD,CAAvD,CADD,CAHF;AAOP,MAAaoH,iBAAiB,gBAAGR,eAAe,CAC9C,iBAD8C,CAAzC;AAGP,MAAaa,cAAc,gBAAGb,eAAe,CAAe,cAAf,CAAtC;AAEP,MAAa6B,aAAa,GAAIzI,MAAD,IAC3BwD,OAAO,CACLxD,MAAM,KAAKmI,mBAAmB,CAACnI,MAAD,CAAnB,IAA+BoI,mBAAmB,CAACpI,MAAD,CAAvD,CADD,CADF;AAKP,MAAa0I,sBAAsB,GACjC1I,MADoC,IAEVwD,OAAO,CAACxD,MAAM,IAAI,WAAWA,MAAtB,CAF5B;AAIP,MAAa2I,eAAe,GAC1B3I,MAD6B,IAEGwD,OAAO,CAACxD,MAAM,IAAI,UAAUA,MAArB,CAFlC;AAIP,MAAa4I,oBAAoB,GAC/B5I,MADkC,IAGlCwD,OAAO,CAACxD,MAAM,KAAKqI,eAAe,CAACrI,MAAD,CAAf,IAA2BwI,iBAAiB,CAACxI,MAAD,CAAjD,CAAP,CAHF;AAKP,MAAa6I,wBAAwB,GACnC7I,MADsC,IAGrCA,MAAM,CAAC8I,SAAP,KAAqB,IAArB,IAA6B9I,MAAM,CAAC+I,MAAP,KAAkB,IAAhD,IACC/I,MAAM,CAACgJ,MAAP,IAAiBhJ,MAAM,CAACgJ,MAAP,CAAclD,IAAd,KAAuB,OAJpC;AAMP,MAAawB,cAAc,GACzBtH,MAD4B,IAG5BwD,OAAO,CACLxD,MAAM,IACJ,CAACgH,aAAa,CAAChH,MAAD,CADhB,IAEE,CAACoH,iBAAiB,CAACpH,MAAD,CAFpB,IAGE,CAACyH,cAAc,CAACzH,MAAD,CAJZ,CAHF;AAUP,MAAaiJ,cAAc,gBAAGrC,eAAe,CAAiB,QAAjB,CAAtC;AAEP,MAAasC,gBAAgB,gBAAGtC,eAAe,CAAiB,gBAAjB,CAAxC;AAEP,MAAauC,eAAe,gBAAGvC,eAAe,CAAoB,SAApB,CAAvC;AAEP,MAAawC,kBAAkB,GAAG,CAACpJ,MAAD,EAA0BqF,SAA1B;AAChC,SAAO8D,eAAe,CAACnJ,MAAD,CAAf,IAA2BqF,SAAS,KAAK,WAAhD;AACD,CAFM;AAIP,MAAagE,kBAAkB,GAAG,SAArBA,kBAAqB,CAACrJ,MAAD,EAA0BsJ,cAA1B;;;MAA0BA;AAAAA,IAAAA,iBAAiB;;;AAC3E,QAAMC,SAAS,GAAGnC,iBAAiB,CAACpH,MAAD,CAAjB,qBAAmDqH,aAAa,CAACrH,MAAD,CAAhE,qBAAmD,eAAuBA,MAA1E,GAAmFA,MAArG;AAEA,SAAOsJ,cAAc,IAAIH,eAAe,CAACI,SAAD,CAAjC,GACDA,SAA+B,CAACC,kBAD/B,GAEHD,SAFJ;AAGD,CANM;;MCzKME,YAAY,gBAAG7C,eAAe,CAAa,OAAb,CAApC;AACP,MAAa8C,cAAc,gBAAG9C,eAAe,CAAe,SAAf,CAAtC;AACP,MAAa+C,aAAa,gBAAG/C,eAAe,CAAc,QAAd,CAArC;AACP,MAAagD,YAAY,gBAAGhD,eAAe,CAAa,OAAb,CAApC;AAEP,MAAaiD,wBAAwB,GACnC7J,MADsC,IAGtCwD,OAAO,CAACxD,MAAM,IAAIqI,eAAe,CAACrI,MAAD,CAAzB,IAAqC0J,cAAc,CAAC1J,MAAM,CAAC8J,IAAR,CAApD,CAHF;AAKP,MAAaC,sBAAsB,GACjC/J,MADoC,IAGpCwD,OAAO,CAACxD,MAAM,IAAIqI,eAAe,CAACrI,MAAD,CAAzB,IAAqCyJ,YAAY,CAACzJ,MAAM,CAAC8J,IAAR,CAAlD,CAHF;;MCiCME,YAAY,GACvBC,KAD0B,IAG1BzG,OAAO,CAACyG,KAAK,IAAIA,KAAK,CAACnE,IAAN,KAAeoE,kBAAc,CAACC,IAAxC,CAHF;AAKP,MAAaC,kBAAkB,GAC7BH,KADgC,IAGhCA,KAAK,CAACnE,IAAN,KAAeoE,kBAAc,CAACG,YAA9B,IACAJ,KAAK,CAACnE,IAAN,KAAeoE,kBAAc,CAACI,WAD9B,IAEAL,KAAK,CAACnE,IAAN,KAAeoE,kBAAc,CAACK,YALzB;AAOP,MAAaC,gBAAgB,GAC3BP,KAD8B,IAG9BA,KAAK,CAACnE,IAAN,KAAeoE,kBAAc,CAACO,KAA9B,IACAR,KAAK,CAACnE,IAAN,KAAeoE,kBAAc,CAACI,WAJzB;AAMP,MAAaI,iBAAiB,GAC5BT,KAD+B,IAG/BA,KAAK,CAACnE,IAAN,KAAeoE,kBAAc,CAACS,MAA9B,IACAV,KAAK,CAACnE,IAAN,KAAeoE,kBAAc,CAACK,YAJzB;AAMP,MAAaK,iBAAiB,GAC5BX,KAD+B,IAG/BA,KAAK,CAACnE,IAAN,KAAeoE,kBAAc,CAACW,MAA9B,IACAZ,KAAK,CAACnE,IAAN,KAAeoE,kBAAc,CAACG,YAJzB;;MCvEMS,cAAc,GAAIC,MAAD,IAC5BA,MAAM,IACN,CAAClF,sBAAsB,CAACkF,MAAM,CAAC,CAAD,CAAP,CADvB,IAEA,CAAClF,sBAAsB,CAACkF,MAAM,CAAC,CAAD,CAAP,CAHlB;AAKP,MAAaC,kBAAkB,GAC7BhL,MADgC,IAEFwD,OAAO,CAACxD,MAAM,IAAI,YAAYA,MAAvB,CAFhC;;MCwBMiL,sBAAsB,GACjCC,cADoC,IAEP,OAAOA,cAAP,KAA0B,QAFlD;AAIP,MAAaC,sBAAsB,GACjCD,cADoC,IAGpC,OAAOA,cAAP,KAA0B,QAA1B,IAAsC,OAAOA,cAAP,KAA0B,QAH3D;AAKP,MAAaE,sBAAsB,GACjCF,cADoC,IAEE,CAACC,sBAAsB,CAACD,cAAD,CAFxD;;MCvCMG,OAAO,GAAIzN,KAAD,IAAmC,YAAYA,KAA/D;;ACSP,MAAM0N,qBAAqB,GAAG,CAC5BJ,cAD4B,EAE5BK,KAF4B,EAG5BzH,SAH4B;AAK5BoH,EAAAA,cAL4B;AAM5BK,EAAAA;AAN4B,GAOxBzH,SAAS,CAACM,QAAV,KACA;AACEoH,EAAAA,WAAW,EAAE1H,SAAS,CAAC0H;AADzB,CADA,GAIA;AACEhH,EAAAA,IAAI,EAAEV,SAAS,CAAC2H,KAAV,CAAgB,CAAhB,CADR;AAEEhH,EAAAA,EAAE,EAAEX,SAAS,CAAC2H,KAAV,CAAgB,CAAhB;AAFN,CAXwB,CAA9B;;AAiBA,MAAMC,cAAc,GAAyB;AAC3CC,EAAAA,YAAY,EAAE,EAD6B;AAE3C;AACA1F,EAAAA,YAAY,EAAE;AAH6B,CAA7C;AAMA,AAAO,MAAM2F,gBAAgB,GAAG,SAAnBA,gBAAmB,CAC9BC,MAD8B,EAE9BxG,SAF8B,EAG9ByG,MAH8B;AAAA,MAG9BA,MAH8B;AAG9BA,IAAAA,MAH8B,GAGCJ,cAHD;AAAA;;AAAA;AAM9BG,IAAAA,MAAM,CAACE,MAAP;AAEE,KAACC,cAAD,EAAyCpO,KAAzC;AACE,YAAMqO,uBAAuB,GAAG,IAAIpI,uBAAJ,CAC9BjG,KAAK,CAACkG,SAAN,IAAmB,EADW,CAAhC;AAGA,YAAMoI,mBAAmB,GAAGZ,qBAAqB,CAC/CD,OAAO,CAACzN,KAAD,CAAP,GAAiBA,KAAK,CAACoC,MAAvB,GAAgCpC,KAAK,CAACA,KADS;AAG/CA,MAAAA,KAAK,CAAC2N,KAHyC,EAI/CU,uBAJ+C,CAAjD;AAOAD,MAAAA,cAAc,CAACH,MAAf,CAAsBM,IAAtB,CAA2BD,mBAA3B;AAEA,0BACKF,cADL;AAEElG,QAAAA,IAAI,EAAEkG,cAAc,CAAClG,IAAf,IAAuBmG,uBAAuB,CAACnG,IAFvD;AAGEnC,QAAAA,SAAS,EACPqI,cAAc,CAACrI,SAAf,IAA4BsI,uBAAuB,CAACG;AAJxD;AAMD,KArBH,eAuBON,MAvBP;AAwBInI,MAAAA,SAAS,EAAE,IAxBf;AAyBI0B,MAAAA,SAzBJ;AA0BIS,MAAAA,IAAI,EAAE,IA1BV;AA2BI+F,MAAAA,MAAM,EAAE;AA3BZ;AAN8B;AAAA,CAAzB;AAqCP,AAAO,MAAMQ,kBAAkB,GAAG,SAArBA,kBAAqB,CAChCrM,MADgC,EAEhCsM,WAFgC;AAAA,MAEhCA,WAFgC;AAEhCA,IAAAA,WAFgC,GAEiB,EAFjB;AAAA;;AAAA,SAIhCC,MAAM,CAACC,OAAP,CAAexM,MAAf,EAAuB+L,MAAvB,CACE,CAACU,eAAD;QAAkB,CAACpH,SAAD,EAAY6F,cAAZ;AAChB,UAAMwB,UAAU,GACdhE,sBAAsB,CAAC1I,MAAD,CAAtB,IAAkCqF,SAAS,KAAK,QADlD;AAEA,UAAMsH,IAAI,GAAG,CAACjH,QAAQ,CAACwF,cAAD,CAAT,IAA6BwB,UAA1C;;AAEA,QAAIC,IAAJ,EAAU;AACR,aAAOF,eAAP;AACD;;AAED,QAAI,CAAC5G,sBAAsB,CAACqF,cAAD,CAA3B,EAA6C;AAC3C,aAAO,CACL,GAAGuB,eADE;AAGL,SAAGJ,kBAAkB,CAACrM,MAAM,CAACqF,SAAD,CAAP,EAAoB,CACvC,GAAGiH,WADoC,EAEvCjH,SAFuC,CAApB,CAHhB,CAAP;AAQD;;AAED,UAAM2G,cAAc,GAAGJ,gBAAgB,CACrCV,cAAc,CAACW,MADsB,EAErCtG,gBAAgB,CAAC,CACf,GAAG+G,WADY,EAEfjH,SAFe,CAAD,CAFqB,EAMrC;AACE;AACAsG,MAAAA,YAAY,EAAET,cAAc,CAACK,KAF/B;AAGEtF,MAAAA,YAAY,EAAEiF,cAAc,CAACjF;AAH/B,KANqC,CAAvC;AAaA,WAAO,CAAC,GAAGwG,eAAJ,EAAqBT,cAArB,CAAP;AACD,GAnCH,EAoCE,EApCF,CAJgC;AAAA,CAA3B;;IC7EMY,qBAAb;AAGE,iCAAoBjF,KAApB;;;AAAoB,cAAA,GAAAA,KAAA;AAFZ,wBAAA,GAA4C,EAA5C;AAGN,SAAKkF,sBAAL;AACD;;AALH;AAAA;AAAA,SAOE;AACE,aAAO,KAAKJ,eAAZ;AACD;AATH;AAAA;AAAA,WAWS,cAAKK,SAAL;AACL,WAAK,MAAMd,cAAX,IAA6B,KAAKS,eAAlC,EAAmD;AACjD,YAAIK,SAAS,CAACd,cAAD,CAAb,EAA+B;AAC7B,iBAAOA,cAAP;AACD;AACF;;AAED,aAAO,IAAP;AACD;AAnBH;AAAA;AAAA,WAqBS,gBAAOe,QAAP;AACL,aAAO,KAAKN,eAAL,CAAqB1E,MAArB,CAA4BgF,QAA5B,CAAP;AACD;AAvBH;AAAA;AAAA,WAyBS,aACLA,QADK;AAGL,aAAO,KAAKN,eAAL,CAAqBvN,GAArB,CAAyB6N,QAAzB,CAAP;AACD;AA7BH;AAAA;AAAA,WA+BS,gBACLA,QADK,EAELC,OAFK;AAIL,aAAO,KAAKP,eAAL,CAAqBV,MAArB,CAA4BgB,QAA5B,EAAsCC,OAAtC,CAAP;AACD;AApCH;AAAA;AAAA,WAsCS;AACL,aAAO,KAAKP,eAAL,CAAqBnP,MAArB,GAA8B,CAArC;AACD;AAxCH;AAAA;AAAA,WA0CU;AACN,UAAI,KAAKqK,KAAL,CAAWpJ,QAAX,IAAuB,KAAKoJ,KAAL,CAAWpJ,QAAX,CAAoBjB,MAA/C,EAAuD;AACrD,aAAKmP,eAAL,CAAqBN,IAArB,CACEP,gBAAgB,CAAC,KAAKjE,KAAL,CAAWpJ,QAAZ,EAAsB,QAAtB,CADlB;AAGD;;AAED,UAAI,KAAKoJ,KAAL,CAAW3H,MAAf,EAAuB;AACrB,aAAKyM,eAAL,CAAqBN,IAArB,CAA0B,GAAGE,kBAAkB,CAAC,KAAK1E,KAAL,CAAW3H,MAAZ,CAA/C;AACD;AACF;AApDH;;AAAA;AAAA;;MCCaiN,UAAU,GACrBjN,MADwB,IAGxBuM,MAAM,CAACC,OAAP,CAAexM,MAAf,EAAuB+L,MAAvB,CAA8B,CAACmB,UAAD;MAAa,CAAC7H,SAAD,EAAY6F,cAAZ;AACzC,MAAIiC,MAAM,GAAGxH,KAAK,CAACC,OAAN,CAAcsF,cAAd,IACTA,cAAc,CAAChM,GAAf,CAAmB8G,iBAAnB,CADS,GAETA,iBAAiB,CAACkF,cAAD,CAFrB;;AAIA,MAAIxF,QAAQ,CAACyH,MAAD,CAAZ,EAAsB;AACpB,wBACKD,UADL;AAEE,OAAC7H,SAAD,GAAa4H,UAAU,CAAC/B,cAAD;AAFzB;AAID;;AAED,sBACKgC,UADL;AAEE,KAAC7H,SAAD,GAAa8H;AAFf;AAID,CAhBD,EAgBG,EAhBH,CAHK;;MCJMC,eAAe,GAAG,CAACxP,KAAD,EAAoByP,KAApB;;;AAC7B,QAAMC,QAAQ,GAAG9J,OAAO,CAAC,qBAAA5F,KAAK,CAAC+F,SAAN,sCAAiBmC,IAAjB,MAA0B,QAA3B,CAAxB;AACA,QAAMyH,MAAM,GAAG/J,OAAO,CAAC,sBAAA5F,KAAK,CAAC+F,SAAN,uCAAiBmC,IAAjB,MAA0B,UAA3B,CAAtB;AACA,QAAM;AAAEtB,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAe+I,cAAc,CAAC5P,KAAD,EAAQ0P,QAAR,EAAkBC,MAAlB,EAA0BF,KAA1B,CAAnC;;AAEA,MAAI7I,IAAI,KAAK,IAAb,EAAmB;AACjB,WAAUC,EAAV,UAAgB8I,MAAM,GAAG,MAAH,GAAY,SAAlC;AACD;;AAED,MAAI9I,EAAE,KAAK,IAAX,EAAiB;AACf,YAAU8I,MAAM,GAAG,OAAH,GAAa,OAA7B,UAAwC/I,IAAxC;AACD;;AAED,SAAOA,IAAI,KAAKC,EAAT,QAAiBD,IAAjB,GAA6BA,IAA7B,WAAuCC,EAA9C;AACD,CAdM;;AAgBP,SAAS+I,cAAT,OAEEF,QAFF,EAGEC,MAHF,EAIEF,KAJF;MACE;AAAE7I,IAAAA,IAAF;AAAQC,IAAAA;AAAR;AAKA,SAAO;AACLD,IAAAA,IAAI,EAAEA,IAAI,KAAK,IAAT,IAAiB6I,KAAK,KAAK,CAA3B,GACHE,MAAM,GAAG/I,IAAH,GAAW8I,QAAQ,GAAG,CAAC9I,IAAJ,GAAW,CAACA,IAAD,GAAQ,CADzC,GAC+CA,IAFhD;AAGLC,IAAAA;AAHK,GAAP;AAKD;;ICtBYgJ,YAAb;AAIE,wBAAY9F,KAAZ;;;AACE,SAAKA,KAAL,GAAaD,YAAY,CAACC,KAAD,CAAzB;AACA,SAAK+F,qBAAL,GAA6B,IAAId,qBAAJ,CAA0B,KAAKjF,KAA/B,CAA7B;AACD;;AAPH;AAAA;AAAA,WASS;AACL,aAAOC,SAAS,CAAC,KAAKD,KAAN,CAAhB;AACD;AAXH;AAAA;AAAA,WAaS;AACL,aAAO,CAAC,EACN,KAAKA,KAAL,CAAWH,MAAX,IACA,CAAC,KAAKG,KAAL,CAAWpJ,QAAX,IAAuB,EAAxB,EAA4BoP,IAA5B,CAAiChG,KAAK,IAAIA,KAAK,CAACH,MAAhD,CAFM,CAAR;AAID;AAlBH;AAAA;AAAA,SAoBE;AACE,aAAO,KAAKG,KAAL,CAAW3H,MAAlB;AACD;AAtBH;AAAA;AAAA,SAwBE;AACE,aAAO,KAAK2H,KAAL,CAAWH,MAAlB;AACD;AA1BH;AAAA;AAAA,SA2BE;AACE,aAAO,KAAKG,KAAL,CAAWJ,KAAlB;AACD;AA7BH;AAAA;AAAA,SA+BE;AACE,aAAO,KAAKI,KAAL,CAAWpJ,QAAlB;AACD;AAjCH;AAAA;AAAA,SAmCE;AACE,aAAO,KAAKoJ,KAAL,CAAW4D,KAAlB;AACD;AArCH;AAAA;AAAA,SAuCE;AACE,aAAO,KAAK5D,KAAL,CAAW7D,SAAlB;AACD;AAzCH;AAAA;AAAA,SA2CE;AACE,aAAO,KAAK6D,KAAL,CAAWE,WAAlB;AACD;AA7CH;AAAA;AAAA,SA+CE;AACE,YAAM;AAAE+F,QAAAA,aAAF;AAAiBC,QAAAA;AAAjB,UAAmC,KAAKlG,KAA9C;AAEA,aAAOiG,aAAa,KAAK,KAAK,CAAvB,IAA4BC,aAAa,KAAK,KAAK,CAAnD,GACH,IADG,GAEH,CAACD,aAAD,EAAgBC,aAAhB,CAFJ;AAGD;AArDH;;AAAA;AAAA;;MCLaC,WAAW,GAAIC,WAAD,IACzBA,WAAW,GAAG,IAAIC,WAAJ,CAAUD,WAAV,EAAuBE,QAAvB,CAAgC,KAAhC,CAAH,GAA4CC,SADlD;;ACFP;AACA,MAAaC,cAAc,GAAG;AAC5BC,EAAAA,gBAAgB,EAAE,IADU;AAE5BC,EAAAA,gBAAgB,EAAE;AAFU,CAAvB;;SCDSC,MAAMC,KAAaC,KAAaC;AAC9C,SAAOC,IAAI,CAACF,GAAL,CAASE,IAAI,CAACD,GAAL,CAASF,GAAT,EAAcC,GAAd,CAAT,EAA6BC,GAA7B,CAAP;AACD;;ACFD;AACA,MAyBaE,eAAe,GAAa,EAAlC;AAEP,MAAaC,sBAAsB,GAAsB;AACvDjH,EAAAA,KAAK;;AADkD;AAEvD7B,EAAAA,IAAI,EAAE,OAFiD;AAGvD+I,EAAAA,SAAS,EAAEF;AAH4C,CAAlD;AAKP,MAAaG,kBAAkB,GAAwB,CACrDF,sBADqD,EAErD;AACEjH,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+I,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ;AAHb,CAFqD,EAOrD;AACElH,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+I,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;AAHb,CAPqD,EAYrD;AACElH,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+I,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;AAHb,CAZqD,EAiBrD;AACElH,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+I,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB;AAHb,CAjBqD,EAsBrD;AACElH,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+I,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ;AAHb,CAtBqD,CAAhD;;AA6BP,MAAME,kBAAkB,GAAG,CACzBC,OADyB,EAEzBjE,MAFyB,EAGzBkE,MAHyB;AAKzB,MAAI,CAACD,OAAD,IAAY,CAACA,OAAO,CAAC1R,MAAzB,EAAiC,OAAO,EAAP;AAEjC,QAAM4R,UAAU,GAAG,EAAnB;;AAEA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,OAAO,CAAC1R,MAA5B,EAAoC6R,CAAC,EAArC,EAAyC;AACvC,QAAIA,CAAC,GAAG,CAAR,EAAW;AACTD,MAAAA,UAAU,CAAC/C,IAAX,CAAgB,GAAG8C,MAAM,CAAC,CAACD,OAAO,CAACG,CAAC,GAAG,CAAL,CAAR,EAAiBH,OAAO,CAACG,CAAD,CAAxB,CAAD,EAA+BpE,MAA/B,CAAzB;AACD;AACF;;AAED,SAAOmE,UAAP;AACD,CAhBD;;AAkBA,MAAaE,WAAW,GAAG,CAACJ,OAAD,EAAoBK,KAApB,KACzBN,kBAAkB,CAChBC,OADgB,EAEhBV,KAAK,CACHtI,iBAAiB,CAACqJ,KAAD,CADd,EAEHlB,cAAc,CAACC,gBAFZ,EAGHD,cAAc,CAACE,gBAHZ,CAFW,EAOhB,OAAgBtD,MAAhB;AAAA,MAAC,CAACzN,MAAD,EAASgS,GAAT,CAAD;AAAA,SAA2B,CAAChS,MAAM,GAAGyN,MAAV,EAAkBuE,GAAG,GAAGvE,MAAxB,CAA3B;AAAA,CAPgB,CADb;AAWP,MAAawE,UAAU,GAAG,CAACP,OAAD,EAAoBK,KAApB,KACxBN,kBAAkB,CAChBC,OADgB,EAEhBV,KAAK,CACHtI,iBAAiB,CAACqJ,KAAD,CADd,EAEHlB,cAAc,CAACC,gBAFZ,EAGHD,cAAc,CAACE,gBAHZ,CAFW,EAOhB,QAAgBtD,MAAhB;AAAA,MAAC,CAACzN,MAAD,EAASgS,GAAT,CAAD;AAAA,SAA2B,CACzBZ,IAAI,CAACc,KAAL,CAAWlS,MAAM,GAAGoR,IAAI,CAACD,GAAL,CAAS,CAAT,EAAYC,IAAI,CAACF,GAAL,CAASzD,MAAT,EAAiB,EAAjB,IAAuB,CAAnC,CAApB,CADyB,EAEzB2D,IAAI,CAACc,KAAL,CAAWF,GAAG,GAAG,CAAN,GAAUZ,IAAI,CAACD,GAAL,CAAS,CAAT,EAAYC,IAAI,CAACF,GAAL,CAASzD,MAAT,EAAiB,EAAjB,IAAuB,CAAnC,CAArB,CAFyB,CAA3B;AAAA,CAPgB,CADb;AAcP,MAAa0E,WAAW,GAAIC,KAAD;AACzB,MAAI,CAACA,KAAD,IAAUA,KAAK,CAAC5J,IAAN,KAAe,OAA7B,EAAsC,OAAO,EAAP;;AAGtC,SAAOyJ,UAAU,CAACG,KAAK,CAACb,SAAP,EAAkBa,KAAK,CAACL,KAAxB,CAAjB;AACD,CALM;AAOP,MAAaM,uBAAuB,GAAId,SAAD;AACrC,MAAI,CAACA,SAAS,CAACvR,MAAf,EAAuB,OAAOsR,sBAAP;AAEvB,SAAOE,kBAAkB,CAAChM,IAAnB,CAAwB8M,MAAM;AACnC,QAAIA,MAAM,CAACf,SAAP,CAAiBvR,MAAjB,KAA4BuR,SAAS,CAACvR,MAA1C,EAAkD,OAAO,KAAP;AAElD,UAAMuS,kBAAkB,GAAGD,MAAM,CAACf,SAAP,CACxB3P,GADwB,CACpB,CAAC4Q,cAAD,EAAiBX,CAAjB,KAAuBN,SAAS,CAACM,CAAD,CAAT,GAAeW,cADlB,EAExB/H,MAFwB,CAEjBgI,UAFiB,CAA3B;AAIA,WAAOF,kBAAkB,CAACvS,MAAnB,KAA8B,CAArC;AACD,GARM,CAAP;AASD,CAZM;AAcP,MAAa0S,kBAAkB,GAC7BC,SADgC,IAGhCnB,kBAAkB,CAAChM,IAAnB,CAAwB8M,MAAM,IAAIA,MAAM,CAACjI,KAAP,KAAiBsI,SAAnD,CAHK;;AC/GP,MAAMC,gBAAgB,GAAG,KAAzB;;AAEA,MAAMC,GAAG,GAAInB,OAAD,IACVA,OAAO,CAACjD,MAAR,CAAe,CAACoB,MAAD,EAASoB,GAAT,KAAiBpB,MAAM,GAAGoB,GAAzC,EAA8C,CAA9C,CADF;;AAGA,MAAM6B,oBAAoB,GAAG,CAC3BC,UAD2B,EAE3BC,UAF2B,EAG3B3P,CAH2B,EAI3BC,CAJ2B;AAM3B,QAAM2P,MAAM,GAAG7B,IAAI,CAACc,KAAL,CAAWa,UAAU,GAAG,CAAxB,CAAf;;AAEA,MAAI,CAACC,UAAU,KAAK,CAAf,IAAoBA,UAAU,KAAK5B,IAAI,CAAC8B,EAAzC,KAAgD7P,CAAC,KAAK4P,MAA1D,EAAkE;AAChE,WAAO,IAAP;AACD;;AACD,MAAID,UAAU,KAAK5B,IAAI,CAAC8B,EAAL,GAAU,CAAzB,IAA8B5P,CAAC,KAAKD,CAAxC,EAA2C;AACzC,WAAO,IAAP;AACD;;AACD,MAAI2P,UAAU,KAAK5B,IAAI,CAAC8B,EAAL,GAAU,CAAzB,IAA8B5P,CAAC,KAAK2P,MAAxC,EAAgD;AAC9C,WAAO,IAAP;AACD;;AAED,SAAOD,UAAU,KAAM,IAAI5B,IAAI,CAAC8B,EAAV,GAAgB,CAA/B,IAAoCH,UAAU,GAAG,CAAb,GAAiBzP,CAAjB,KAAuBD,CAAlE;AACD,CAnBD;;AAqBA,MAAM8P,iBAAiB,GAAIC,IAAD,IACxB/K,KAAK,CAAC+K,IAAD,CAAL,CACG5G,IADH,CACQ,IADR,EAEG5K,GAFH,CAEO,MAAMyG,KAAK,CAAC+K,IAAD,CAFlB,CADF;;AAKA,MAAMC,UAAU,GAAG,CACjBC,MADiB,EAEjBC,MAFiB;AAIjB,QAAMR,UAAU,GAAGO,MAAM,CAACtT,MAA1B;;AAEA,OAAK,IAAIqD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0P,UAApB,EAAgC1P,CAAC,EAAjC,EAAqC;AACnC,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyP,UAApB,EAAgCzP,CAAC,EAAjC,EAAqC;AACnCgQ,MAAAA,MAAM,CAACjQ,CAAD,CAAN,CAAUC,CAAV,IAAeiQ,MAAM,CAAClQ,CAAD,EAAIC,CAAJ,EAAOyP,UAAP,CAArB;AACD;AACF;AACF,CAXD;;AAaA,MAAMS,qBAAqB,GAAG,CAC5BR,UAD4B,EAE5BS,UAF4B,EAG5BC,aAH4B;AAK5B,QAAMX,UAAU,GAAG3B,IAAI,CAACD,GAAL,CACjBC,IAAI,CAACc,KAAL,CAAWW,GAAG,CAAC,CAACzB,IAAI,CAACD,GAAL,CAAS,GAAGuC,aAAZ,CAAD,EAA6BD,UAA7B,CAAD,CAAd,CADiB,EAEjBA,UAFiB,CAAnB;AAIA,QAAMH,MAAM,GAAGH,iBAAiB,CAACJ,UAAD,CAAhC;AAEAM,EAAAA,UAAU,CAACC,MAAD,EAAS,CAACjQ,CAAD,EAAIC,CAAJ,EAAO8P,IAAP,KACjBN,oBAAoB,CAACM,IAAD,EAAOJ,UAAP,EAAmB3P,CAAnB,EAAsBC,CAAtB,CAApB,GAA+C,GAA/C,GAAqD,CAD7C,CAAV;AAIA,SAAOgQ,MAAP;AACD,CAhBD;;AAkBA,MAAMK,qBAAqB,GACzBC,SAD4B;AAG5B,MAAIA,SAAS,CAACpL,IAAV,KAAmB,OAAvB,EAAgC,OAAOoI,SAAP;AAEhC,SAAO4C,qBAAqB;AAE1B9K,EAAAA,iBAAiB,CAACkL,SAAS,CAACZ,UAAX,CAFS;AAI1B5B,EAAAA,IAAI,CAACc,KAAL,CAAW0B,SAAS,CAACH,UAArB,CAJ0B,EAK1BG,SAAS,CAACF,aALgB,CAA5B;AAOD,CAZD;;AAcA,IAAaG,aAAb;AAAA;;AAAA;;AACE,yBAAmBC,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9H,iBAAiB,0BAACoL,cAAc,CAACpI,MAAhB,qBAAC,sBAAuBsI,KAAxB,CAAlB,CAFpB;AAGJ;AACAC,MAAAA,WAAW,EAAEvL,iBAAiB,2BAACoL,cAAc,CAACpI,MAAhB,qBAAC,uBAAuBqG,KAAxB,CAJ1B;AAKJmC,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACpI,MAAhB,CALjB;AAMJyI,MAAAA,cAAc,EAAE3D,WAAW;AAEzB9H,MAAAA,iBAAiB,yBAACoL,cAAc,CAACtH,IAAhB,qBAAC,qBAAqBwH,KAAtB,CAFQ,CANvB;AAUJI,MAAAA,cAAc,EAAEjI,YAAY,CAAC2H,cAAc,CAACtH,IAAhB,CAAZ;AAEZgE,MAAAA,WAAW,CAAC9H,iBAAiB,0BAACoL,cAAc,CAACtH,IAAhB,qBAAC,sBAAqB6H,UAAtB,CAAlB,CAFC,GAGZ,KAAK,CAbL;AAcJT,MAAAA,SAAS,EAAED,qBAAqB,CAACG,cAAc,CAACtH,IAAhB,CAd5B;AAeJ8H,MAAAA,OAAO,EAAE;AAfL,KAAN;AADiB,wBAAA,GAAAR,cAAA;;AAkBlB;;AAnBH;AAAA;AAAA,WAqBE;AACE;AACA,UAAI,CAAC,KAAKS,YAAV,EAAwB;AAExB,YAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;AACA,YAAMC,GAAG,GAAGH,MAAM,CAACI,UAAP,CAAkB,IAAlB,CAAZ;;AAEA,UAAI,CAACD,GAAL,EAAU;AACR;AACD;;AAED,YAAMvC,KAAK,GAAG,KAAKwB,SAAnB;AACA,YAAMiB,SAAS,GAAGzC,KAAK,CAACpS,MAAxB;AACA,YAAM8U,UAAU,GAAG,IAAIpE,WAAJ,CAAU,KAAK0D,cAAf,CAAnB;AACA,YAAMW,UAAU,GAAG,IAAIrE,WAAJ,CAAU,KAAKyD,cAAf,CAAnB;AAEAK,MAAAA,MAAM,CAACQ,MAAP,GAAgBH,SAAhB;AACAL,MAAAA,MAAM,CAACzC,KAAP,GAAe8C,SAAf;;AACA,WAAK,IAAIhD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgD,SAApB,EAA+BhD,CAAC,EAAhC,EAAoC;AAClC;AACA,aAAK,IAAIoD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG7C,KAAK,CAACP,CAAD,CAAL,CAAS7R,MAA7B,EAAqCiV,CAAC,EAAtC,EAA0C;AACxC,gBAAMC,IAAI,GAAI9C,KAAK,CAACP,CAAD,CAAL,CAASoD,CAAT,IAAcH,UAAU,CAACK,CAA1B,GAA+BvC,gBAA5C;AACA,gBAAMwC,IAAI,GAAIL,UAAU,CAACI,CAAX,GAAe,GAAhB,IAAwB,IAAID,IAA5B,CAAb;AACA,gBAAMG,KAAK,GAAG,CAACjE,IAAI,CAACF,GAAL,CAAS,CAAT,EAAYgE,IAAI,GAAGE,IAAnB,EAAyBE,OAAzB,CAAiC,CAAjC,CAAf;AACA,gBAAMC,GAAG,GAAGnE,IAAI,CAACc,KAAL,CACVd,IAAI,CAACF,GAAL,CAAS,GAAT,EAAc6D,UAAU,CAACS,CAAX,GAAeJ,IAAf,GAAsBN,UAAU,CAACU,CAAX,GAAeN,IAAnD,CADU,CAAZ;AAGA,gBAAMO,KAAK,GAAGrE,IAAI,CAACc,KAAL,CACZd,IAAI,CAACF,GAAL,CAAS,GAAT,EAAc6D,UAAU,CAACW,CAAX,GAAeN,IAAf,GAAsBN,UAAU,CAACY,CAAX,GAAeR,IAAnD,CADY,CAAd;AAGA,gBAAMS,IAAI,GAAGvE,IAAI,CAACc,KAAL,CACXd,IAAI,CAACF,GAAL,CAAS,GAAT,EAAc6D,UAAU,CAACa,CAAX,GAAeR,IAAf,GAAsBN,UAAU,CAACc,CAAX,GAAeV,IAAnD,CADW,CAAb;AAIAP,UAAAA,GAAG,CAACkB,SAAJ,aAAwBN,GAAxB,SAA+BE,KAA/B,SAAwCE,IAAxC,SAAgDN,KAAhD;AACAV,UAAAA,GAAG,CAACmB,QAAJ,CAAab,CAAb,EAAgBpD,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB;AACD;AACF;;AACD,WAAKkE,MAAL,GAAc,IAAIC,KAAJ,EAAd;AACA,WAAKD,MAAL,CAAYE,GAAZ,GAAkBzB,MAAM,CAAC0B,SAAP,EAAlB;AACD;AA7DH;AAAA;AAAA,WA+DE;AACE,aAAO,IAAIrC,aAAJ,CAAkB,KAAKC,cAAvB,CAAP;AACD;AAjEH;;AAAA;AAAA,EAAmCqC,mBAAnC;;IClFaC,aAAb;AAAA;;AAAA;;AACE,yBAAmBtC,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9H,iBAAiB,0BAACoL,cAAc,CAACpI,MAAhB,qBAAC,sBAAuBsI,KAAxB,CAAlB,CAFpB;AAGJ;AACAC,MAAAA,WAAW,EAAEvL,iBAAiB,2BAACoL,cAAc,CAACpI,MAAhB,qBAAC,uBAAuBqG,KAAxB,CAJ1B;AAKJmC,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACpI,MAAhB,CALjB;AAMJuK,MAAAA,GAAG,6BAA2BnC,cAAc,CAACtH,IAAf,CAAoB6J,OAN9C;AAOJ/B,MAAAA,OAAO,EAAEjI,aAAa,CAACyH,cAAc,CAACpI,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AAPvD,KAAN;AADiB,wBAAA,GAAAoI,cAAA;;AAUlB;;AAXH;AAAA;AAAA,WAaE;AACE,aAAO,IAAIsC,aAAJ,CAAkB,KAAKtC,cAAvB,CAAP;AACD;AAfH;;AAAA;AAAA,EAAmCwC,mBAAnC;;ICAaC,iBAAb;AAAA;;AAAA;;AACE,6BAAmBzC,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9H,iBAAiB,0BAACoL,cAAc,CAACpI,MAAhB,qBAAC,sBAAuBsI,KAAxB,CAAlB,CAFpB;AAGJ;AACAC,MAAAA,WAAW,EAAEvL,iBAAiB,2BAACoL,cAAc,CAACpI,MAAhB,qBAAC,uBAAuBqG,KAAxB,CAJ1B;AAKJmC,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACpI,MAAhB,CALjB;AAMJ;AACA8K,MAAAA,SAAS,EAAEhG,WAAW,CAAC9H,iBAAiB,yBAACoL,cAAc,CAACtH,IAAhB,qBAAC,qBAAqBwH,KAAtB,CAAlB,CAPlB;AAQJ;AACAM,MAAAA,OAAO,EAAEjI,aAAa,CAACyH,cAAc,CAACpI,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AATvD,KAAN;AADiB,wBAAA,GAAAoI,cAAA;;AAYlB;;AAbH;AAAA;AAAA,WAeE;AACE,aAAO,IAAIyC,iBAAJ,CAAsB,KAAKzC,cAA3B,CAAP;AACD;AAjBH;;AAAA;AAAA,EAAuC2C,oBAAvC;;ACUA,MAAMC,eAAe,GAAG,CACtBC,KADsB,EAEtBrS,UAFsB,EAGtBsS,OAHsB,EAItBC,KAJsB;AAMtB,QAAMC,SAAS,GAAGC,qBAAY,CAACJ,KAAD,EAAQC,OAAR,EAAiBC,KAAjB,CAA9B;AAEA,SAAOG,wBAAmB,CACxBF,SAAS,CAAClV,GAAV,CAAcqV,IAAI;AAEhBA,EAAAA,IAAI,CAACrV,GAAL,CAAS;AAAA,QAAC,CAACyB,CAAD,EAAIC,CAAJ,CAAD;AAAA,WAAY,CAACD,CAAC,GAAGiB,UAAL,EAAiBhB,CAAC,GAAG,CAACgB,UAAtB,CAAZ;AAAA,GAAT,CAFF,CADwB,EAKxB,CALwB,CAA1B;AAOD,CAfD;;AAiBA,MAAM4S,cAAc,GAA2D;AAC7E;;AAAA,KAAuBjD,WAAW,IAAI,CAACA,WAAW,GAAG,CAAf,IAAoB,CAApB,GAAwB,CADe;AAE7E;;AAAA,KAAuBA,WAAW,IAAI,CAACA,WAAW,GAAG,CAAf,IAAoB,CAApB,GAAwB;AAFe,CAA/E;AAKA,IAAsBkD,eAAtB;AAYE,2BAAYC,QAAZ;;;AAIA,kBAAA,GAAaT,KAAD;AACV,UAAI,KAAKzS,QAAL,KAAkB,OAAtB,EAA+B;AAC7B,cAAMmT,QAAQ,GAAGV,KAAK,CAACA,KAAK,CAAC3W,MAAN,GAAe,CAAhB,CAAtB;AAEA,eAAQqX,QAAQ,IAAIA,QAAQ,CAACA,QAAQ,CAACrX,MAAT,GAAkB,CAAnB,CAArB,IAA+C,IAAtD;AACD;;AAED,YAAMsX,SAAS,GAAGX,KAAK,CAAC,CAAD,CAAvB;AAEA,aAAQW,SAAS,IAAIA,SAAS,CAAC,CAAD,CAAvB,IAA+B,IAAtC;AACD,KAVD;;AAHErI,IAAAA,MAAM,CAACsI,MAAP,CAAc,IAAd,EAAoBH,QAApB;AACD;;AAdH;AAAA;AAAA,WA4BE,mBACEI,WADF,EAEEC,SAFF,EAGEnT,UAHF,EAIEoT,UAJF;AAME,YAAMC,WAAW,GAAG,KAAKzT,QAAL,KAAkB,OAAlB,GAA4B,CAA5B,GAAgC,CAAC,CAArD;AACA,YAAM0T,WAAW,GAAG,KAAKC,SAAL,CAAeL,WAAf,CAApB;AACA,YAAMM,UAAU,GAAG,KAAKC,WAAL,CAAiBH,WAAjB,EAA8BD,WAA9B,CAAnB;AACA,YAAMK,mBAAmB,GAAGtB,eAAe,CACzCoB,UADyC,EAEzCxT,UAFyC,EAGzCmT,SAHyC,EAIzCC,UAJyC,CAA3C;AAOA,aAAO,KAAKO,YAAL,CAAkBD,mBAAlB,CAAP;AACD;AA7CH;AAAA;AAAA,SA+CE;AACE,YAAME,aAAa,GAAGhB,cAAc,CAAC,KAAK9D,IAAN,CAApC;AAEA,aAAO8E,aAAa,GAAGA,aAAa,CAAC,KAAKjE,WAAN,CAAhB,GAAqC,CAAzD;AACD;AAnDH;;AAAA;AAAA;;ICnCakE,oBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAKC,SAAL,GAAiB,KAAKnE,WAA7B;AACD;AAHH;AAAA;AAAA,WAIE,2BAAiC0D,WAAjC;UAAY,CAACtU,CAAD,EAAIC,CAAJ;AACV,aAAO,CACL,CACE,CAACD,CAAD,EAAIC,CAAC,GAAG,KAAK8U,SAAL,GAAiB,CAAzB,CADF,EAEE,CAAC/U,CAAC,GAAG,KAAK+U,SAAL,GAAiBT,WAAtB,EAAmCrU,CAAnC,CAFF,EAGE,CAACD,CAAD,EAAIC,CAAC,GAAG,KAAK8U,SAAL,GAAiB,CAAzB,CAHF,CADK,CAAP;AAOD;AAZH;AAAA;AAAA,WAcE,sBAAaN,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAc1L,kBAAc,CAACI,WAA9C;AAEA,aAAO,IAAIuL,eAAJ,CAAeT,UAAf,EAA2B;AAChCU,QAAAA,QAAQ,EAAEH,QADsB;AAEhC7B,QAAAA,SAAS,EAAE6B,QAAQ,GAAG,KAAKrE,KAAR,GAAgB,KAAK,CAFR;AAGhC6B,QAAAA,SAAS,EAAEwC,QAAQ,GAAGI,cAAS,CAAC/H,KAAb,GAAqB+H,cAAS,CAAC5L,IAHlB;AAIhCyH,QAAAA,OAAO,EAAE,QAJuB;AAKhCoE,QAAAA,QAAQ,EAAE,OALsB;AAMhC3E,QAAAA,WAAW,EAAE,KAAKC,KANc;AAOhCC,QAAAA,WAAW,EAAE,KAAKA;AAPc,OAA3B,CAAP;AASD;AA1BH;;AAAA;AAAA,EAA0CkD,eAA1C;;MCJawB,gBAAgB,GAAG,GAAzB;AAKP;AAAA,WAAYC;AACVA,EAAAA,iCAAA,qBAAA;AACAA,EAAAA,sBAAA,wBAAA;AACAA,EAAAA,iBAAA,iCAAA;AACAA,EAAAA,yBAAA,gBAAA;AACD,CALD,EAAYA,kBAAU,KAAVA,kBAAU,KAAA,CAAtB;;AAYA,MAAMC,iBAAiB,GAAmC,CAACC,iBAAD,EAAYC,gBAAZ,EAAsBC,OAAO,IAAI,IAAIC,IAAJ,CAASD,OAAT,CAAjC,CAA1D;AAEA,MAAaE,OAAO,GAAIF,OAAD;AACrB,MAAI,CAACA,OAAL,EAAc,OAAO,IAAP;;AAEd,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,SAAK,MAAMG,MAAX,IAAqBN,iBAArB,EAAwC;AACtC,YAAMO,IAAI,GAAGD,MAAM,CAACH,OAAD,CAAnB;;AAEA,UAAIK,eAAO,CAACD,IAAD,CAAX,EAAmB;AACjB,eAAOE,cAAM,CAACF,IAAD,CAAb;AACD;AACF;;AAED,WAAO,IAAP;AACD;;AAED,QAAMG,UAAU,GAAGD,cAAM,CAACN,OAAD,CAAzB;AAEA,SAAOK,eAAO,CAACE,UAAD,CAAP,GAAsBA,UAAtB,GAAmC,IAA1C;AACD,CAlBM;AAoBP,MAAaC,UAAU,GAAG,SAAbA,UAAa,CACxBJ,IADwB;MAExB;AAAEK,IAAAA,UAAU,GAAGb,kBAAU,CAACc,mBAA1B;AAA+C/Q,IAAAA,YAAY,GAAGgQ;AAA9D,yBAAsG;AAEtG,QAAMgB,SAAS,GAAGP,IAAI,GAAGF,OAAO,CAACE,IAAD,CAAV,GAAmB,IAAzC;;AAEA,MAAIC,eAAO,CAACM,SAAD,CAAX,EAAwB;AACtB,WAAOC,cAAM,CAACD,SAAD,EAAoBF,UAApB,CAAb;AACD;;AAED,SAAO9Q,YAAY,CAACgI,QAAb,EAAP;AACD,CAXM;;SCzCSkJ,iBACdxW,GACAyW,gBACAC;MADAD;AAAAA,IAAAA,iBAAiB;;;MACjBC;AAAAA,IAAAA,QAAwB;;;AAExB,QAAM,CAAC9I,GAAD,EAAM+I,IAAN,IAAc3W,CAAC,CAACiS,OAAF,CAAUwE,cAAV,EAA0B9R,KAA1B,CAAgC,GAAhC,CAApB;AACA,QAAMiS,aAAa,GAAGhJ,GAAG,CAACiJ,OAAJ,CAAY,uBAAZ,EAAqC,GAArC,CAAtB;AAEA,SAAO,CAACD,aAAD,EAAgBD,IAAhB,EAAsB7R,IAAtB,CAA2B4R,KAA3B,CAAP;AACD;;SCTeI,WAAW7Z;AACzB,QAAM8Z,WAAW,GAAG,oDAApB;AAEA,SAAO,CAACC,aAAa,CAAC/Z,KAAD,CAAd,IAAyBA,KAAK,CAACga,KAAN,CAAYF,WAAZ,CAAhC;AACD;AAED,SAAgBC,cAAc/Z;AAC5B,QAAMia,SAAS,GAAG,6BAAlB;AAEA,SAAOA,SAAS,CAACC,IAAV,CAAela,KAAf,CAAP;AACD;AAED,SAAgBma,cAAcna;AAC5B,QAAMoa,SAAS,GAAG,gBAAlB;AAEA,SAAOA,SAAS,CAACF,IAAV,CAAela,KAAf,CAAP;AACD;AAED,SAAgBqa,eAAera;AAC7B,QAAMsa,UAAU,GAAG,gBAAnB;AAEA,SAAOA,UAAU,CAACJ,IAAX,CAAgB,CAAC,CAACla,KAAF,EAASqQ,QAAT,EAAhB,CAAP;AACD;AAED,SAAgBkK,qBAAqBva;AACnC,QAAMwa,UAAU,GAAG,8BAAnB;AACA,SAAOA,UAAU,CAACN,IAAX,CAAgBla,KAAhB,CAAP;AACD;AAED,SAAgBya,mBAAmBza;AACjC,SAAO+Z,aAAa,CAAC/Z,KAAD,CAAb,IAAwBma,aAAa,CAACna,KAAD,CAArC,IAAgDqa,cAAc,CAACra,KAAD,CAArE;AACD;AAED,SAAgB0a,gBAAgB1a;AAC9B,QAAM8Z,WAAW,GAAG,oDAApB;AAEA,SACE,CAACW,kBAAkB,CAACza,KAAD,CAAnB,IACA,CAACua,oBAAoB,CAACva,KAAD,CADrB,IAEA8Z,WAAW,CAACI,IAAZ,CAAiBla,KAAjB,CAHF;AAKD;AAED,SAAgB2a,eAAe3a;AAC7B,SAAO4a,aAAa,CAAC5a,KAAD,CAAb,IAAwBA,KAAK,CAACsH,QAAN,CAAe,GAAf,CAA/B;AACD;AAED,SAAgBsT,cAAc5a;AAC5B,MAAI6a,UAAU,CAAC7a,KAAD,CAAd,EAAuB;AACrB,WAAO,IAAP;AACD;;AAED,QAAM8a,SAAS,GAAG,kGAAlB;AAEA,QAAMC,OAAO,GAAG/a,KAAK,CAACga,KAAN,CAAYc,SAAZ,CAAhB;AAEA,SAAOC,OAAO,KAAK,IAAnB;AACD;AAED,SAAgBF,WAAW7a;AACzB,MAAI;AACF,QAAIgb,GAAJ,CAAQhb,KAAR;AACD,GAFD,CAEE,OAAOib,CAAP,EAAU;AACV,WAAO,KAAP;AACD;;AAED,SAAO,IAAP;AACD;AAED,MAAaC,QAAQ,GAAIC,IAAD,gBAA4BA,IAA7C;AAEP,MAAaC,SAAS,GAAID,IAAD,aAAyBA,IAA3C;AAEP,MAAaE,OAAO,GAAI/a,GAAD,IAAkBua,UAAU,CAACva,GAAD,CAAV,GAAkBA,GAAlB,UAA6BA,GAA/D;;AC3DP,MAAMgb,eAAe,GAAItb,KAAD,KAAoB;AAC1CkI,EAAAA,IAAI;;AADsC;AAE1ClI,EAAAA;AAF0C,CAApB,CAAxB;;AAKA,MAAMub,YAAY,GAAIvb,KAAD,KAAoB;AACvCkI,EAAAA,IAAI;;AADmC;AAEvClI,EAAAA;AAFuC,CAApB,CAArB;;AAKA,MAAMwb,aAAa,GAAIxb,KAAD,KAAoB;AACxCkI,EAAAA,IAAI;;AADoC;AAExClI,EAAAA;AAFwC,CAApB,CAAtB;;AAKA,MAAMyb,cAAc,GAAIzb,KAAD,KAAoB;AACzCkI,EAAAA,IAAI;;AADqC;AAEzClI,EAAAA;AAFyC,CAApB,CAAvB;;AAKA,MAAM0b,sBAAsB,GAAI1b,KAAD;AAC7B,MAAI2a,cAAc,CAAC3a,KAAD,CAAlB,EAA2B;AACzB,WAAOwb,aAAa,CAACxb,KAAD,CAApB;AACD;;AAED,MAAI4a,aAAa,CAAC5a,KAAD,CAAjB,EAA0B;AACxB,WAAOub,YAAY,CAACvb,KAAD,CAAnB;AACD;;AAED,MAAI0a,eAAe,CAAC1a,KAAD,CAAnB,EAA4B;AAC1B,WAAOyb,cAAc,CAACzb,KAAD,CAArB;AACD;;AAED,SAAOsb,eAAe,CAACtb,KAAD,CAAtB;AACD,CAdD;;AAgBA,MAAM2b,qBAAqB,GAAI3b,KAAD;AAC5B,QAAM4b,MAAM,GAAG/B,UAAU,CAAC7Z,KAAD,CAAzB;;AAEA,MACE,CAACya,kBAAkB,CAACza,KAAD,CAAnB,IACA,CAACua,oBAAoB,CAACva,KAAD,CADrB,IAEA4b,MAFA,IAGAA,MAAM,CAAClc,MAJT,EAKE;AACA,WAAOkc,MAAM,CAACta,GAAP,CAAWma,cAAX,CAAP;AACD;;AAED,QAAMI,eAAe,GAAG7b,KAAK,CAAC0H,KAAN,CAAY,OAAZ,EAAqBpG,GAArB,CAAyBoa,sBAAzB,CAAxB;;AAEA,MAAIG,eAAe,CAACC,KAAhB,CAAsB;AAAA,QAAC;AAAE5T,MAAAA;AAAF,KAAD;AAAA,WAAcA,IAAI,MAAlB;AAAA;;AAAtB,GAAJ,EAA6E;AAC3E,WAAO,CACLoT,eAAe,CACbO,eAAe,CACZva,GADH,CACO;AAAA,UAAC;AAAEtB,QAAAA;AAAF,OAAD;AAAA,aACH+b,KAAK,CAAC,CAAC/b,KAAF,CAAL,IAAiBya,kBAAkB,CAACza,KAAD,CAAnC,GACIqa,cAAc,CAACra,KAAD,CAAd,GACE,CAACA,KADH,GAEEA,KAHN,GAIIuZ,gBAAgB,CAAC,CAACvZ,KAAF,EAAS,CAAT,EAAY,EAAZ,CALjB;AAAA,KADP,EAQG6H,IARH,CAQQ,GARR,CADa,CADV,CAAP;AAaD;;AAED,SAAOgU,eAAP;AACD,CA/BD;;AAiCA,MAAMG,uBAAuB,GAAIhc,KAAD,IAC9Bsb,eAAe,CAACtb,KAAK,CAACqQ,QAAN,EAAD,CADjB;;AAGA,MAAM4L,kBAAkB,GAAIjc,KAAD,IACzBsb,eAAe,CAAC/B,gBAAgB,CAACvZ,KAAD,EAAQ,CAAR,EAAW,EAAX,CAAjB,CADjB;;AAGA,MAAMkc,gBAAgB,GAAG,CAAzB;;AAEA,MAAMC,qBAAqB,GAAInc,KAAD,IAC5Bsb,eAAe,CAAC/B,gBAAgB,CAACvZ,KAAD,EAAQkc,gBAAR,EAA0B,GAA1B,CAAjB,CADjB;;AAGA,MAAME,iBAAiB,GACrBpc,KADwB,IAEMA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKsQ,SAF5D;;AAIA,MAAM+L,oBAAoB,GAAG;AAC3BnU,EAAAA,IAAI;;AADuB;AAE3BlI,EAAAA,KAAK,EAAEqY;AAFoB,CAA7B;AAKA,MAAaiE,oBAAoB,GAC/BvW,SADkC;AAGlC,MAAIqW,iBAAiB,CAACrW,SAAS,CAAC/F,KAAX,CAArB,EAAwC;AACtC,WAAO,CAACqc,oBAAD,CAAP;AACD;;AAED,UAAQtW,SAAS,CAACmC,IAAlB;AACE,SAAK,QAAL;AACE,aAAOyT,qBAAqB,CAAC5V,SAAS,CAAC/F,KAAX,CAA5B;;AACF,SAAK,UAAL;AACE,aAAO,CAACgc,uBAAuB,CAACjW,SAAS,CAAC/F,KAAX,CAAxB,CAAP;;AACF,SAAK,OAAL;AACA,SAAK,OAAL;AACE,aAAO,CAACic,kBAAkB,CAAClW,SAAS,CAAC/F,KAAX,CAAnB,CAAP;;AACF,SAAK,QAAL;AACE,aAAO,CAACmc,qBAAqB,CAACpW,SAAS,CAAC/F,KAAX,CAAtB,CAAP;;AACF;AACE,aAAO,CAACqc,oBAAD,CAAP;AAXJ;AAaD,CApBM;;AC9FP,WAAYE;AACV;AACAA,EAAAA,gCAAA,gBAAA;AACA;;AACAA,EAAAA,wBAAA,QAAA;AACA;;AACAA,EAAAA,wBAAA,UAAA;AACA;;AACAA,EAAAA,uCAAA,uBAAA;AACD,CATD,EAAYA,YAAI,KAAJA,YAAI,KAAA,CAAhB;;AAWA,MAAaC,OAAO,GAAsB;AACxC,GAACD,YAAI,CAACE,WAAN,GAAoBC,eADoB;AAExC,GAACH,YAAI,CAACI,GAAN,GAAYC,OAF4B;AAGxC,GAACL,YAAI,CAACM,KAAN,GAAcC,SAH0B;AAIxC,GAACP,YAAI,CAACQ,kBAAN,GAA2BC;AAJa,CAAnC;AAOP,MAAaC,YAAY,GAAGV,YAAI,CAACE,WAA1B;AAEP,MAAaS,WAAW,GAAGV,OAAO,CAACS,YAAD,CAA3B;AAEP,MAAaE,MAAM,GAAIC,IAAD,IAAuBZ,OAAO,CAACY,IAAD,CAA7C;;ACnBA,MAAMC,uBAAuB,GAClCC,cADqC;AAGrC,MAAIA,cAAc,YAAY3E,IAA9B,EAAoC;AAClC,WAAO4E,iBAAa,CAACC,QAArB;AACD;;AAED,MAAI,OAAOF,cAAP,KAA0B,QAA9B,EAAwC;AACtC,WAAOC,iBAAa,CAACE,MAArB;AACD;;AAED,MAAI,OAAOH,cAAP,KAA0B,QAA9B,EAAwC;AACtC,WAAOC,iBAAa,CAACG,KAArB;AACD;;AAED,SAAOH,iBAAa,CAACI,OAArB;AACD,CAhBM;AAkBP,AAAO,MAAMC,kBAAkB,GAC7BC,eADgC;AAGhC,QAAMC,UAAU,GAAID,eAAe,IAAIA,eAAe,CAACC,UAApC,IAAmD,EAAtE;AAEA,SAAOnP,MAAM,CAACC,OAAP,CAAekP,UAAf,EAA2Bxc,GAA3B,CAA+B;AAAA,QAAC,CAACyc,IAAD,EAAOC,UAAP,CAAD;AAAA;AACpCD,MAAAA;AADoC,OAEjCC,UAFiC;AAAA,GAA/B,CAAP;AAID,CATM;AAWP,AAAO,MAAMC,oBAAoB,GAC/BH,UADkC;AAGlC,SAAOA,UAAU,GACbnP,MAAM,CAACC,OAAP,CAAekP,UAAf,EAA2Bxc,GAA3B,CAA+B;AAAA,QAAC,CAACyc,IAAD,EAAO/d,KAAP,CAAD;AAAA,WAAoB;AACjD+d,MAAAA,IADiD;AAEjD/d,MAAAA,KAFiD;AAGjDkI,MAAAA,IAAI,EAAEmV,uBAAuB,CAACrd,KAAD;AAHoB,KAApB;AAAA,GAA/B,CADa,GAMb,EANJ;AAOD,CAVM;AAYP,AAaO,MAAMke,eAAe,GAAG,CAC7BC,WAD6B,EAE7BC,WAF6B;AAI7B,SAAOD,WAAW,CAAC7c,GAAZ,CAAgByE,SAAS,iBAC3BA,SAD2B,EAE1BqY,WAAW,CAAClZ,IAAZ,CAAiB;AAAA,QAAC;AAAE6Y,MAAAA;AAAF,KAAD;AAAA,WAAchY,SAAS,CAACgY,IAAV,KAAmBA,IAAjC;AAAA,GAAjB,KAA2D,EAFjC,CAAzB,CAAP;AAID,CARM;;IC3CMM,cAAb;AAUE,0BAAY/Y,OAAZ;;;AATO,WAAA,GAAqB,IAArB;AACA,oBAAA,GAA8B,IAA9B;AACA,iBAAA,GAA+B,IAA/B;AAEA,kBAAA,GAA4B,IAA5B;AACA,mBAAA,GAA6B,IAA7B;AACA,mBAAA,GAAyC,IAAzC;AACA,eAAA,GAAkC,IAAlC;AAGL,SAAKgZ,EAAL,GAAUhZ,OAAO,CAACgZ,EAAlB;AACA,SAAKC,WAAL,GAAmBjZ,OAAO,CAACgZ,EAA3B;AACA,SAAKE,QAAL,GAAgBlZ,OAAO,CAACkZ,QAAxB;AAEA,SAAKC,SAAL,GAAiBnZ,OAAO,CAACxD,KAAzB;AACA,SAAK4c,UAAL,GAAkBpZ,OAAO,CAACxD,KAA1B;AACA,SAAKgc,UAAL,GAAkBG,oBAAoB,CAAC3Y,OAAO,CAACwY,UAAT,CAAtC;AACD;;AAlBH;AAAA;AAAA,WAoBS;AACL,UAAI,CAAC,KAAKU,QAAN,IAAkB,CAAC,KAAKpc,MAA5B,EAAoC;AAClC,eAAO,IAAP;AACD;;;AAGD,YAAM;AAAE8F,QAAAA,IAAF;AAAQyW,QAAAA,WAAR;AAAqBC,QAAAA;AAArB,UAA4B,KAAKJ,QAAvC;AACA,YAAM9Z,GAAG,GAAG8X,OAAO,CAACoC,EAAD,CAAnB;;AAEA,UAAI,CAACla,GAAL,EAAU;AACR,eAAO,IAAP;AACD;;AAED,cAAQwD,IAAR;AACE,aAAK2W,gBAAY,CAACC,KAAlB;AACE,iBAAO,IAAIC,yBAAJ,CAAiBJ,WAAjB,EAA8B;AACnCvc,YAAAA,MAAM,EAAE4c,aAD2B;AAEnCta,YAAAA;AAFmC,WAA9B,CAAP;;AAIF,aAAKma,gBAAY,CAACI,UAAlB;AACE,iBAAO,IAAIC,qBAAJ,CAAeP,WAAf,EAA4B;AACjCvc,YAAAA,MAAM,EAAE4c,aADyB;AAEjCta,YAAAA;AAFiC,WAA5B,CAAP;;AAIF,aAAKma,gBAAY,CAACM,QAAlB;AACE,iBAAO,IAAIA,iBAAJ,CAAaR,WAAb,EAA0B;AAC/Bvc,YAAAA,MAAM,EAAEgd,gBADuB;AAE/B1a,YAAAA;AAF+B,WAA1B,CAAP;;AAIF,aAAKma,gBAAY,CAACQ,OAAlB;AACE,iBAAO,IAAIA,eAAJ,CAAYV,WAAZ,EAAyB;AAC9Bvc,YAAAA,MAAM,EAAEkd,eADsB;AAE9B5a,YAAAA;AAF8B,WAAzB,CAAP;;AAIF;AACE,iBAAO,IAAP;AAtBJ;AAwBD;AAzDH;AAAA;AAAA,WA2DS;AACL,YAAMY,OAAO,GAAG,KAAKia,WAAL,EAAhB;AAEA,aAAOja,OAAO,IAAIA,OAAO,CAACd,IAA1B;AACD;AA/DH;;AAAA;AAAA;;SCrBgBgb,kBACdtZ,aACA4X;AAEA,MAAI;AACF,UAAM2B,SAAS,GAAG,IAAIC,4BAAJ,CAAuB5B,UAAvB,CAAlB;AACA,UAAMvO,MAAM,GAAGkQ,SAAS,CAACE,QAAV,CAAmBzZ,WAAnB,CAAf;;AAEA,QAAIqJ,MAAM,YAAYjJ,KAAtB,EAA6B;AAC3B,aAAO,IAAP;AACD;;AAED,WAAOiJ,MAAP;AACD,GATD,CASE,gBAAM;AACN,WAAO,IAAP;AACD;AACF;;ACGD,SAASqQ,iBAAT,CACE9B,UADF,EAEEtP,aAFF;AAIE,QAAMqR,aAAa,GAAG/B,UAAU,CAAC5Y,IAAX,CAAgB;AAAA,QAAC;AAAE6Y,MAAAA;AAAF,KAAD;AAAA,WAAcA,IAAI,KAAKvP,aAAvB;AAAA,GAAhB,CAAtB;AAEA,SAAOqR,aAAa,GAAGA,aAAa,CAAC7f,KAAjB,GAAyB,IAA7C;AACD;;AAED,MAAa8f,6BAA6B,GACxC5Z,SAD2C,IAEzB,IAAID,uBAAJ,CAA4BC,SAA5B,EAAuCsI,aAFpD;AAIP,MAAauR,8BAA8B,GACzC9R,MAD4C,IAG5CA,MAAM,CAACvO,MAAP,GAAgB,CAAhB,GAAoBogB,6BAA6B,CAAC7R,MAAM,CAAC,CAAD,CAAN,CAAU/H,SAAX,CAAjD,GAAyE,IAHpE;;AAKP,SAAS8Z,gBAAT,CACEC,eADF;MAEE,CAAClC,IAAD,EAAO/d,KAAP;AAEA,SAAOA,KAAK,KAAK,IAAV,GACHigB,eAAe,CAAC/a,IAAhB,CACE;AAAA,QAAC;AAAEgB,MAAAA;AAAF,KAAD;AAAA,WACElG,KAAK,KAAKsQ,SAAV,IAAuBkP,iBAAiB,CAACtZ,SAAD,EAAY;AAAE,OAAC6X,IAAD,GAAQ/d;AAAV,KAAZ,CAD1C;AAAA,GADF,CADG,GAKH,IALJ;AAMD;;AAED,SAASkgB,sBAAT,CACED,eADF,EAEEnC,UAFF;AAIE,QAAMC,IAAI,GAAGgC,8BAA8B,CAACE,eAAD,CAA9B,IAAmD,EAAhE;AACA,QAAMjgB,KAAK,GAAG+d,IAAI,IAAI6B,iBAAiB,CAAC9B,UAAD,EAAaC,IAAb,CAAvC;AAEA,SAAO,CAACA,IAAD,EAAO/d,KAAP,CAAP;AACD;;AAED,SAASmgB,qBAAT,CAA+BrC,UAA/B;AACE;AACA,WAASsC,IAAT,CACE7Q,MADF;QAEE,CAAC8Q,aAAD,EAAgB/S,cAAhB;AAEA,QAAIgT,iBAAJ;;AAEA,QAAIrY,sBAAsB,CAACqF,cAAD,CAA1B,EAA4C;AAC1C,YAAM,CAACkB,aAAD,EAAgB8O,cAAhB,IAAkC4C,sBAAsB,CAC5D5S,cAAc,CAACW,MAD6C,EAE5D6P,UAF4D,CAA9D;AAIA,YAAMyC,YAAY,GAAGP,gBAAgB,CAAC1S,cAAc,CAACW,MAAhB,EAAwB,CAC3DO,aAD2D,EAE3D8O,cAF2D,CAAxB,CAArC;AAKAgD,MAAAA,iBAAiB,GAAGC,YAAY,GAC5BA,YAAY,CAACvgB,KADe,GAE5BsN,cAAc,CAACjF,YAFnB;AAGD,KAbD,MAaO,IAAIP,QAAQ,CAACwF,cAAD,CAAZ,EAA8B;AACnC;AACAgT,MAAAA,iBAAiB,GAAG3R,MAAM,CAACC,OAAP,CAAetB,cAAf,EAA+Ba,MAA/B,CAClBiS,IADkB,EAElB9S,cAFkB,CAApB;AAID;;AAED,WAAOgT,iBAAiB,KAAKhQ,SAAtB,gBAEEf,MAFF;AAGD,OAAC8Q,aAAD,GAAiBC;AAHhB,SAKH/Q,MALJ;AAMD;;AAED,SAAO6Q,IAAP;AACD;;AAED,SAAgBI,sBACdC,aACA3C;AAEA,SACE,CAAC2C,WAAW,IAAI,EAAhB,EAAoBvb,IAApB,CAAyB;QAAC;AAAEgB,MAAAA;AAAF;AACxB,UAAMsI,aAAa,GACjBtI,SAAS,IAAI4Z,6BAA6B,CAAC5Z,SAAD,CAD5C;AAEA,UAAMoX,cAAc,GAClB9O,aAAa,IAAIoR,iBAAiB,CAAC9B,UAAD,EAAatP,aAAb,CADpC;;AAGA,QAAItI,SAAS,IAAIsI,aAAb,IAA8B8O,cAAc,KAAKhN,SAArD,EAAgE;AAC9D,aAAOkP,iBAAiB,CAACtZ,SAAD,EAAY;AAClC,SAACsI,aAAD,GAAiB8O;AADiB,OAAZ,CAAxB;AAGD;;AAED,WAAO,KAAP;AACD,GAbD,KAaM,IAdR;AAgBD;AAED,SAAgBoD,uBACdD,aACA3C;AAEA,QAAM6C,YAAY,GAAGH,qBAAqB,CAACC,WAAD,EAAc3C,UAAd,CAA1C;AAEA,SAAO6C,YAAY,GAAGA,YAAY,CAACve,MAAhB,GAAyB,IAA5C;AACD;AAED,SAAgBwe,iBACd7W,OACA+T;AAEA,MAAI,CAAC/T,KAAD,IAAU,CAACA,KAAK,CAAC3H,MAArB,EAA6B;AAC3B,WAAO,IAAP;AACD;;AAED,MAAI2H,KAAK,CAACpJ,QAAN,KAAmB,IAAvB,EAA6B;AAC3B,WAAO+f,sBAAsB,CAAC3W,KAAK,CAACpJ,QAAP,EAAiBmd,UAAjB,CAAtB,IAAsD/T,KAAK,CAAC3H,MAAnE;AACD;;AAED,SAAOuM,MAAM,CAACC,OAAP,CAAe7E,KAAK,CAAC3H,MAArB,EAA6B+L,MAA7B,CACLgS,qBAAqB,CAACrC,UAAD,CADhB,EAEL/T,KAAK,CAAC3H,MAFD,CAAP;AAID;;IC3IYye,YAAb;AAOE,wBAAYC,OAAZ;;;AANgB,aAAA,GAAsB,IAAtB;AACC,uBAAA,GAAgC,IAAhC;AACA,cAAA,GAAuB,IAAvB;AACA,mBAAA,GAAsC,IAAtC;AACA,cAAA,GAA6B,IAA7B;AAGf,UAAMC,cAAc,GAAGD,OAAvB;AACA,UAAM;AAAE/C,MAAAA,IAAF;AAAQiD,MAAAA,KAAR;AAAejX,MAAAA,KAAf;AAAsB8T,MAAAA;AAAtB,QAA0CkD,cAAhD;AAEA,SAAKhD,IAAL,GAAYA,IAAZ;AACA,SAAKiD,KAAL,GAAaA,KAAK,IAAIjD,IAAtB;AACA,SAAKD,UAAL,GAAkBF,kBAAkB,CAACC,eAAD,CAApC;AACA,SAAK9T,KAAL,GAAcA,KAAK,IAAI,IAAI8F,YAAJ,CAAiB9F,KAAjB,CAAV,IAAsC,IAAnD;AACA,SAAKkX,cAAL,GACGpD,eAAe,IAAIA,eAAe,CAACoD,cAApC,IAAuD,IADzD;AAED;;AAjBH;AAAA;AAAA,WAmBS,yBAAgB3b,OAAhB;AACLA,MAAAA,OAAO,CAACwY,UAAR,GAAqBI,eAAe,CAClC5Y,OAAO,CAACwY,UAAR,IAAsB,EADY,EAElC,KAAKA,UAAL,IAAmB,EAFe,CAApC;AAKAxY,MAAAA,OAAO,CAAClD,MAAR,GACE,KAAK2H,KAAL,IAAc6W,gBAAgB,CAAC,KAAK7W,KAAN,EAAazE,OAAO,CAACwY,UAArB,CADhC;AAGAxY,MAAAA,OAAO,CAACoZ,UAAR,GAAqB,KAAKsC,KAA1B;AAEA,YAAMC,cAAc,GAAG,CAAC3b,OAAO,CAACwY,UAAR,IAAsB,EAAvB,EAA2B5Y,IAA3B,CACrB;AAAA,YAAC;AAAE6Y,UAAAA;AAAF,SAAD;AAAA,eAAcA,IAAI,KAAK,KAAKkD,cAA5B;AAAA,OADqB,CAAvB;AAIA,YAAM1C,WAAW,GACd0C,cAAc,IAAI3E,oBAAoB,CAAC2E,cAAD,CAApB,CAAqC,CAArC,EAAwCjhB,KAA3D,IACAsF,OAAO,CAACgZ,EAFV;AAIAhZ,MAAAA,OAAO,CAACiZ,WAAR,GAAsBA,WAAW,QAAMA,WAAN,GAAsBjZ,OAAO,CAACgZ,EAA/D;AAEA,aAAOhZ,OAAP;AACD;AAzCH;;AAAA;AAAA;;AA4CA,MAAM4b,gBAAgB,GAAI5b,OAAD,IAA8BxD,KAAD,IACpDA,KAAK,CAACic,IAAN,KAAezY,OAAO,CAACmZ,SADzB;;AAGA,MAAa0C,eAAe,GAAI3e,MAAD,IAC7B8C,OADyD;AAGzD,QAAM8b,YAAY,GAAG5e,MAAM,CAAC0C,IAAP,CAAYgc,gBAAgB,CAAC5b,OAAD,CAA5B,CAArB;AAEA,SAAO8b,YAAY,GAAGA,YAAY,CAACD,eAAb,CAA6B7b,OAA7B,CAAH,GAA2CA,OAA9D;AACD,CANM;;SCjDS+b,iBACdrhB,OACAyP;AAEA,MAAIzP,KAAK,CAAC2N,KAAV,EAAiB,OAAO3N,KAAK,CAAC2N,KAAb;AAEjB,MAAIhI,YAAY,CAAC3F,KAAD,CAAhB,EAAyB,OAAOwP,eAAe,CAACxP,KAAD,EAAQyP,KAAR,CAAtB;AACzB,MAAI5J,aAAa,CAAC7F,KAAD,CAAjB,EAA0B,OAAOA,KAAK,CAAC4N,WAAb;AAE1B,SAAO,EAAP;AACD;;SCfe0T,iBAAiB7Z;AAC/B,SAAO,EAACA,SAAD,YAACA,SAAS,CAAEH,QAAX,CAAoB,aAApB,CAAD,KAAuC,EAACG,SAAD,YAACA,SAAS,CAAEH,QAAX,CAAoB,oBAApB,CAAD,CAA9C;AACD;;ACsCD,WAAYia;AACVA,EAAAA,+BAAA,OAAA;AACAA,EAAAA,8BAAA,OAAA;AACD,CAHD,EAAYA,gCAAwB,KAAxBA,gCAAwB,KAAA,CAApC;;AAKA,WAAYC;AACV;AACAA,EAAAA,4BAAA,WAAA;AACA;;AACAA,EAAAA,+BAAA,cAAA;AACA;;AACAA,EAAAA,iCAAA,gBAAA;AACA;;AACAA,EAAAA,8BAAA,aAAA;AACA;;AACAA,EAAAA,qCAAA,oBAAA;AACA;;AACAA,EAAAA,kCAAA,iBAAA;AACAA,EAAAA,4BAAA,WAAA;AACAA,EAAAA,2BAAA,UAAA;AACA;;AACAA,EAAAA,8BAAA,aAAA;AACA;;AACAA,EAAAA,iCAAA,gBAAA;AACAA,EAAAA,gCAAA,eAAA;AACAA,EAAAA,mCAAA,kBAAA;AACAA,EAAAA,8BAAA,aAAA;AACAA,EAAAA,iCAAA,gBAAA;AACAA,EAAAA,6BAAA,YAAA;AACAA,EAAAA,6BAAA,YAAA;AACD,CAzBD,EAAYA,0BAAkB,KAAlBA,0BAAkB,KAAA,CAA9B;;SC3CgBC,WAAW9Q;AACzB,MAAIpB,MAAM,GAAGoB,GAAb;AACA,MAAI+Q,OAAO,GAAG,IAAd;;AAEA,MAAI/Q,GAAG,IAAI,QAAX,EAAqB;AACnBpB,IAAAA,MAAM,GAAGoB,GAAG,GAAG,OAAf;AACA+Q,IAAAA,OAAO,GAAG,KAAV;AACD,GAHD,MAGO,IAAI/Q,GAAG,IAAI,KAAX,EAAkB;AACvBpB,IAAAA,MAAM,GAAGoB,GAAG,GAAG,KAAf;AACA+Q,IAAAA,OAAO,GAAG,IAAV;AACD;;AAED,SAAUnI,gBAAgB,CAAChK,MAAD,CAA1B,SAAsCmS,OAAtC;AACD;AAED,SAAgBC,aAAahR;AAC3B,MAAIpB,MAAM,GAAGoB,GAAb;AACA,MAAI+Q,OAAO,GAAG,GAAd;;AAEA,MAAI/Q,GAAG,GAAG,KAAV,EAAiB;AACfpB,IAAAA,MAAM,GAAGoB,GAAG,GAAG,IAAf;AACA+Q,IAAAA,OAAO,GAAG,IAAV;AACD;;AAED,SAAUnI,gBAAgB,CAAChK,MAAD,CAA1B,SAAsCmS,OAAtC;AACD;AACD,SAAgBE,qBAAqBC,MAAcC;AACjD,kBAAcL,UAAU,CAACI,IAAD,CAAxB,cAAuCF,YAAY,CAACG,SAAD,CAAnD;AACD;AAED,SAAgBC,sBACd1L,OACArS;AAEA,MAAIqS,KAAK,CAAC,CAAD,CAAL,CAAS3W,MAAT,IAAmB,CAAvB,EAA0B;AACxB,WAAO,KAAP;AACD;;AAED,QAAMsiB,MAAM,GAAG3L,KAAK,CAAC,CAAD,CAApB;AACA,QAAM4L,UAAU,GAAGD,MAAM,CAAC,CAAD,CAAzB;AACA,QAAME,SAAS,GAAGF,MAAM,CAACA,MAAM,CAACtiB,MAAP,GAAgB,CAAjB,CAAxB;AACA,QAAMyiB,QAAQ,GAAGne,UAAU,GAAG,CAA9B;AAEA,SACEoe,eAAU,CAACH,UAAU,CAAC,CAAD,CAAX,EAAgBC,SAAS,CAAC,CAAD,CAAzB,EAA8BC,QAA9B,CAAV,IACAC,eAAU,CAACH,UAAU,CAAC,CAAD,CAAX,EAAgBC,SAAS,CAAC,CAAD,CAAzB,EAA8BC,QAA9B,CAFZ;AAID;;SCnDeE,SAASC;AACvB,QAAMC,MAAM,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAf;;AAEA,OAAK,IAAIxf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,EAApB,EAAwBA,CAAC,EAAzB,EAA6B;AAC3B,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuf,MAAM,CAAC7iB,MAA3B,EAAmCsD,CAAC,EAApC,EAAwC;AACtC,YAAMuM,MAAM,GAAGuB,IAAI,CAAC0R,GAAL,CAAS,EAAT,EAAazf,CAAb,IAAkBwf,MAAM,CAACvf,CAAD,CAAvC;;AAEA,UAAIuM,MAAM,GAAG+S,KAAb,EAAoB;AAClB,eAAO/S,MAAP;AACD;AACF;AACF;;AAED,SAAO,CAAP;AACD;;ACPM,MAAMkT,kBAAkB,GAA0B;AACvDC,EAAAA,OAAO,EAAEd,oBAD8C;AAEvDliB,EAAAA,MAAM,EAAEiiB;AAF+C,CAAlD;;ACiCP,MAAMgB,cAAc,GAAG,CAAvB;AACA,MAAMC,sBAAsB,GAAqB,CAACC,QAAD,EAAWA,QAAX,CAAjD;AAEA,IAAaC,sBAAb;AAAA;;AAAA;;AAUE,kCACExhB,GADF,EAEEC,OAFF,EAGEwhB,MAHF;;;;;AAKE,8BAAMzhB,GAAN,EAAWyhB,MAAX;;AAyLM,gBAAA,GAAS;AACf,YAAKC,IAAL,CAAU,QAAV;AACD,KAFO;;AAxLN,UAAKzhB,OAAL,GAAeA,OAAf;AACA,UAAK0hB,iBAAL,GAAyBF,MAAM,CAACE,iBAAhC;AACA,UAAKC,UAAL,GAAkBH,MAAM,CAACG,UAAP,IAAqBT,kBAAvC;AACA,UAAKU,UAAL,GAAkBJ,MAAM,CAACI,UAAzB;;AACA,UAAKC,EAAL,CAAQ,UAAR,EAAoB,MAAKC,cAAzB;;;AAEA,UAAKD,EAAL,CAAQ,QAAR,EAAkB,MAAKE,cAAvB;;;AACD;;AAvBH;AAAA;AAAA,WAyBY,0BAAiB3gB,KAAjB;AACR,mGAAuBA,KAAvB;;AACA,WAAK4gB,oBAAL,CAA0B5gB,KAA1B;AACD;AA5BH;AAAA;AAAA,WA8BY;AACR;;AACA,WAAK6gB,YAAL;AACA,WAAKC,SAAL,CAAe,SAAf;AACD;AAlCH;AAAA;AAAA,WAoCY;AACR;;AACA,WAAKC,gBAAL;AACA,WAAKC,eAAL;AACA,WAAKC,kBAAL;AACA,WAAKC,iBAAL;AACA,WAAKJ,SAAL,CAAe,SAAf;AACD;AA3CH;AAAA;AAAA,WA6CU;AACN,YAAMne,OAAO,GAAG,KAAKwe,aAArB;AAEA,UAAI,CAACxe,OAAL,EAAc;AACd,YAAM;AAAE+Q,QAAAA,KAAF;AAAS3R,QAAAA;AAAT,UAA2BY,OAAjC;;AAEA,UAAIyc,qBAAqB,CAAC1L,KAAD,EAAQ,KAAK/U,GAAL,CAAS0C,UAAjB,CAAzB,EAAuD;AACrD,aAAK+f,aAAL;AACA,aAAKf,IAAL,CAAU,IAAIgB,0BAAJ,CAAuB1e,OAAvB,EAAgC,IAAI2e,UAAJ,CAAe,SAAf,CAAhC,CAAV;AAEA;AACD;;AAED,UAAI5N,KAAK,CAAC,CAAD,CAAL,CAAS3W,MAAT,KAAoB,CAAxB,EAA2B;AACzB,cAAMwkB,UAAU,GAAGxf,GAAG,CAACyf,YAAJ,CAAiBvH,OAAjB,CAAnB;AACA,cAAMha,KAAK,GAAGyT,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAd;AACA,YAAI,CAAC6N,UAAL,EAAiB;AACjB,cAAM,CAACE,GAAD,EAAMC,IAAN,IAAcH,UAAU,CAACthB,KAAD,CAA9B;AAEA,aAAK+gB,eAAL;AACA,aAAKW,qBAAL;AACA,aAAKC,aAAL,CACKH,GAAG,CAACpP,OAAJ,CAAY2N,cAAZ,CADL,UACqC0B,IAAI,CAACrP,OAAL,CAAa2N,cAAb,CADrC,EAEE/f,KAFF;AAID,OAZD,MAYO;AACL,aAAK8gB,gBAAL;AACD;AACF;AAzEH;AAAA;AAAA,WA2EU;AACN,UAAI,KAAKc,WAAT,EAAsB;AACpB,aAAKC,UAAL,IAAmB,KAAKA,UAAL,CAAgBC,MAAhB,CAAuB,KAAKF,WAA5B,CAAnB;AACD;;AAED,YAAMlf,OAAO,GAAG,KAAKwe,aAArB;AAEA,UAAI,CAACxe,OAAL,EAAc;AACd,YAAM;AAAE+Q,QAAAA,KAAF;AAAS3R,QAAAA;AAAT,UAAiBY,OAAvB;AACA,YAAMqf,YAAY,GAAG,CAAC,GAAGtO,KAAK,CAAC,CAAD,CAAT,CAArB;AAEAsO,MAAAA,YAAY,CAACC,KAAb;AACA,WAAKJ,WAAL,GAAmB,IAAInF,eAAJ,CAAYsF,YAAZ,EAA0B;AAAEjgB,QAAAA;AAAF,OAA1B,CAAnB;AACA,WAAK8f,WAAL,CAAiBpiB,MAAjB,GAA0B,KAAK+gB,UAAL,IAAmB0B,iBAA7C;AAEA,WAAKf,aAAL,IAAsB,KAAKA,aAAL,CAAmBgB,IAAnB,EAAtB;AACA,WAAKL,UAAL,IAAmB,KAAKA,UAAL,CAAgBM,GAAhB,CAAoB,KAAKP,WAAzB,CAAnB;AACD;AA5FH;AAAA;AAAA,WA8FU;AACN,UAAI,KAAKA,WAAT,EAAsB;AACpB,aAAKC,UAAL,IAAmB,KAAKA,UAAL,CAAgBC,MAAhB,CAAuB,KAAKF,WAA5B,CAAnB;AACA,eAAO,KAAKA,WAAZ;AACD;AACF;AAnGH;AAAA;AAAA,WAqGU,wBAAe7hB,KAAf;AACN,YAAM2C,OAAO,GAAG,KAAKwe,aAArB;AACA,YAAM;AAAEkB,QAAAA,SAAF;AAAaC,QAAAA;AAAb,UAA4BtiB,KAAlC;AAEA,UAAI,CAAC2C,OAAD,IAAY0f,SAAS,KAAK,IAA1B,IAAkCC,UAAU,KAAK,IAArD,EAA2D;AAE3D,YAAM;AAAE5O,QAAAA,KAAF;AAAS3R,QAAAA;AAAT,UAAiBY,OAAvB;AAEA,YAAM1B,QAAQ,GAAGyS,KAAK,CAAC2O,SAAD,CAAL,CAAiBC,UAAjB,CAAjB;AACA,YAAMvlB,MAAM,GAAGwlB,eAAU,CAAC7O,KAAD,EAAQ3R,GAAR,CAAzB;AACA,UAAIygB,OAAO,GAAG,KAAKjC,UAAL,CAAgBxjB,MAAhB,CAAuBA,MAAvB,CAAd;;AAEA,UAAIqiB,qBAAqB,CAAC1L,KAAD,EAAQ,KAAK/U,GAAL,CAAS0C,UAAjB,CAAzB,EAAuD;AACrD,aAAKohB,cAAL;AAEA,cAAMvD,IAAI,GAAGwD,aAAQ,CAAChP,KAAD,EAAQ3R,GAAR,CAArB;AAEAygB,QAAAA,OAAO,GAAG,KAAKjC,UAAL,CAAgBR,OAAhB,CAAwBb,IAAxB,EAA8BniB,MAA9B,CAAV;AACD,OAND,MAMO,IAAI,KAAK8kB,WAAT,EAAsB;AAC3Blf,QAAAA,OAAO,CAACX,IAAR;AACA,aAAKkf,iBAAL;AACD;;AAED,UAAI,KAAKyB,kBAAT,EAA6B;AAC3B,aAAKA,kBAAL,CAAwB1hB,QAAxB,GAAmCA,QAAnC;AACA,aAAK0hB,kBAAL,CAAwBH,OAAxB,GAAkCA,OAAlC;AACD;AACF;AAhIH;AAAA;AAAA,WAkIU;AACN,WAAKI,SAAL,GAAiB,IAAIC,kBAAJ,CAAiB5C,sBAAjB,EAAyC;AACxDuC,QAAAA,OAAO,EAAE,0CAD+C;AAExDzgB,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GAF0C;AAGxDtC,QAAAA,MAAM,EAAEqjB,iBAAiB,CAAC;AACxBC,UAAAA,WAAW,EAAE,KAAKzC;AADM,SAAD;AAH+B,OAAzC,CAAjB;AAOA,WAAKwB,UAAL,IAAmB,KAAKA,UAAL,CAAgBM,GAAhB,CAAoB,KAAKQ,SAAzB,CAAnB;AACD;AA3IH;AAAA;AAAA,WA6IU,uBAAcJ,OAAd,EAA+BvhB,QAA/B;AACN,WAAK+hB,UAAL,GAAkB,IAAIH,kBAAJ,CAAiB5hB,QAAjB,EAA2B;AAC3CuhB,QAAAA,OAD2C;AAE3CzgB,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GAF6B;AAG3CtC,QAAAA,MAAM,EAAEqjB,iBAAiB,CAAC;AACxBC,UAAAA,WAAW,EAAE,KAAKzC,iBADM;AAExB2C,UAAAA,OAAO,EAAE,KAAKC;AAFU,SAAD;AAHkB,OAA3B,CAAlB;AAQA,WAAKpB,UAAL,IAAmB,KAAKkB,UAAxB,IAAsC,KAAKlB,UAAL,CAAgBM,GAAhB,CAAoB,KAAKY,UAAzB,CAAtC;AACD;AAvJH;AAAA;AAAA,WAyJU;AACN,WAAKL,kBAAL,GAA0B,IAAIE,kBAAJ,CAAiB5C,sBAAjB,EAAyC;AACjEle,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GADmD;AAEjEtC,QAAAA,MAAM,EAAEqjB,iBAAiB,CAAC;AACxBC,UAAAA,WAAW,EAAE,KAAKzC;AADM,SAAD;AAFwC,OAAzC,CAA1B;AAMA,WAAKwB,UAAL,IACE,KAAKa,kBADP,IAEE,KAAKb,UAAL,CAAgBM,GAAhB,CAAoB,KAAKO,kBAAzB,CAFF;AAGD;AAnKH;AAAA;AAAA,WAqKU;AACN,UAAI,KAAKC,SAAT,EAAoB;AAClB,aAAKd,UAAL,IAAmB,KAAKA,UAAL,CAAgBC,MAAhB,CAAuB,KAAKa,SAA5B,CAAnB;AACA,eAAO,KAAKA,SAAZ;AACD;AACF;AA1KH;AAAA;AAAA,WA4KU;AACN,UAAI,KAAKI,UAAT,EAAqB;AACnB,aAAKlB,UAAL,IAAmB,KAAKA,UAAL,CAAgBC,MAAhB,CAAuB,KAAKiB,UAA5B,CAAnB;AACA,eAAO,KAAKA,UAAZ;AACD;AACF;AAjLH;AAAA;AAAA,WAmLU;AACN,UAAI,KAAKL,kBAAT,EAA6B;AAC3B,aAAKb,UAAL,IAAmB,KAAKA,UAAL,CAAgBC,MAAhB,CAAuB,KAAKY,kBAA5B,CAAnB;AACA,eAAO,KAAKA,kBAAZ;AACD;AACF;AAxLH;AAAA;AAAA,WA0LU,8BAAqB3iB,KAArB;AACN,UAAI,KAAK4iB,SAAT,EAAoB;AAClB,aAAKA,SAAL,CAAe3hB,QAAf,GAA0BjB,KAAK,CAACC,KAAN,CAAYgB,QAAtC;AACD;AACF;AA9LH;AAAA;AAAA,WAgMU,mBAAUkiB,MAAV;AACN,YAAM;AAAEhjB,QAAAA;AAAF,UAAc,KAAKvB,OAAzB;;AAEA,UAAIuB,OAAO,IAAI,OAAOA,OAAP,KAAmB,QAAlC,EAA4C;AAC1CA,QAAAA,OAAO,CAACiH,KAAR,CAAc+b,MAAd,GAAuBA,MAAvB;AACD;AACF;AAtMH;;AAAA;AAAA,EAA4CC,+BAA5C;;ICpBaC,qBAAb;AAAA;;AAAA;;AAME,iCACE1kB,GADF,EAEEC,OAFF,EAGEwhB,MAHF;;;;;AAKE,8BAAMzhB,GAAN,EAAWyhB,MAAX;;AAaM,uBAAA,GAAgB;AACtB,YAAMzd,OAAO,GAAG,MAAKwe,aAArB;AAEA,UAAI,CAACxe,OAAL,EAAc,OAAO,IAAP;AAEd,YAAM;AAAE+Q,QAAAA,KAAF;AAAS4P,QAAAA,UAAT;AAAqBvhB,QAAAA;AAArB,UAA6BY,OAAnC;AACA,YAAM4gB,WAAW,GAAG7P,KAAK,CAAC,CAAD,CAAL,CAAS3W,MAA7B;AACA,YAAMkE,QAAQ,GAAGyS,KAAK,CAAC,CAAD,CAAL,CAAS6P,WAAW,GAAG,CAAvB,CAAjB;AAEA,YAAMrE,IAAI,GAAGwD,aAAQ,CAAChP,KAAD,EAAQ3R,GAAR,CAArB;AACA,YAAMhF,MAAM,GAAGwlB,eAAU,CAAC7O,KAAD,EAAQ3R,GAAR,EAAauhB,UAAb,CAAzB;AACA,YAAMd,OAAO,GAAGc,UAAU,GACtB,MAAK/C,UAAL,CAAgBR,OAAhB,CAAwBb,IAAxB,EAA8BniB,MAA9B,CADsB,GAEtB,MAAKwjB,UAAL,CAAgBxjB,MAAhB,CAAuBA,MAAvB,CAFJ;AAIA,aAAO;AACLylB,QAAAA,OADK;AAELvhB,QAAAA;AAFK,OAAP;AAID,KAnBO;;AAmDA,uBAAA,GAAgB;AACtB,YAAKof,IAAL,CAAU,QAAV;AACD,KAFO;;AA/DN,UAAKzhB,OAAL,GAAeA,OAAf;AACA,UAAK0hB,iBAAL,GAAyBF,MAAM,CAACE,iBAAhC;AACA,UAAKC,UAAL,GAAkBH,MAAM,CAACG,UAAP,IAAqBT,kBAAvC;;AACA,UAAKW,EAAL,CAAQ,QAAR,EAAkB,MAAK+C,mBAAvB;;AACA,UAAK/C,EAAL,CAAQ,MAAR,EAAgB,MAAK+C,mBAArB;;;AACD;;AAjBH;AAAA;AAAA,WAmBY;AACR;;AACA,WAAK7B,qBAAL;AACD;AAtBH;AAAA;AAAA,WA6CU;AACN,YAAM8B,aAAa,GAAG,KAAKA,aAAL,EAAtB;AACA,UAAIA,aAAa,KAAK,IAAtB,EAA4B;AAE5B,YAAM;AAAEjB,QAAAA,OAAF;AAAWvhB,QAAAA;AAAX,UAAwBwiB,aAA9B;AAEA,WAAKd,kBAAL,GAA0B,IAAIE,kBAAJ,CAAiB5hB,QAAjB,EAA2B;AACnDuhB,QAAAA,OADmD;AAEnDzgB,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GAFqC;AAGnDtC,QAAAA,MAAM,EAAEqjB,iBAAiB,CAAC;AACxBG,UAAAA,OAAO,EAAE,KAAKS,aADU;AAExBX,UAAAA,WAAW,EAAE,KAAKzC;AAFM,SAAD;AAH0B,OAA3B,CAA1B;AAQA,WAAKwB,UAAL,IAAmB,KAAKA,UAAL,CAAgBM,GAAhB,CAAoB,KAAKO,kBAAzB,CAAnB;AACD;AA5DH;AAAA;AAAA,WA8DE;AACE,UAAI,KAAKA,kBAAT,EAA6B;AAC3B,cAAMc,aAAa,GAAG,KAAKA,aAAL,EAAtB;AAEA,YAAIA,aAAa,KAAK,IAAtB,EAA4B;AAE5B,cAAM;AAAEjB,UAAAA,OAAF;AAAWvhB,UAAAA;AAAX,YAAwBwiB,aAA9B;AAEA,aAAKd,kBAAL,CAAwBH,OAAxB,GAAkCA,OAAlC;AACA,aAAKG,kBAAL,CAAwB1hB,QAAxB,GAAmCA,QAAnC;AACD;AACF;AAzEH;;AAAA;AAAA,EAA2C0iB,qBAA3C;;MCvBaC,SAAS,GAAIC,MAAD,IACvB,CAACzK,KAAK,CAAC0K,UAAU,CAACD,MAAD,CAAX,CAAN,IAAwCE,QAAQ,CAACF,MAAD,CAD3C;;MCIMG,eAAe,GAAG,CAC7BC,KAD6B,EAE7Bnf,SAF6B;AAAA;;AAAA,SAGjB,CAAC,OAAOmf,KAAP,KAAiB,QAAjB,GACTnf,SADS,6CACTA,SAAS,CAAEof,WAAX,EADS,qBACT,sBAA0Bvf,QAA1B,CAAmCsf,KAAK,CAACC,WAAN,EAAnC,CADS,GAETD,KAAK,CAAC7W,IAAN,CAAW7H,IAAI;AAAA;;AAAA,WAAIT,SAAJ,8CAAIA,SAAS,CAAEof,WAAX,EAAJ,qBAAI,uBAA0Bvf,QAA1B,CAAmCY,IAAI,CAAC2e,WAAL,EAAnC,CAAJ;AAAA,GAAf,CAFQ,KAEuE,KALtD;AAAA,CAAxB;;ACUA,MAAMC,6BAA6B,GAAuC;AAC/E,GAAC9f,mBAAS,CAACE,IAAX,GAAkBsa,0BAAkB,CAACuF,MAD0C;AAE/E,GAAC/f,mBAAS,CAACggB,OAAX,GAAqBxF,0BAAkB,CAACyF,SAFuC;AAG/E,GAACjgB,mBAAS,CAACC,IAAX,GAAkBua,0BAAkB,CAAC0F,WAH0C;AAI/E,GAAClgB,mBAAS,CAACI,IAAX,GAAkBoa,0BAAkB,CAAC2F,QAJ0C;AAK/E,GAACngB,mBAAS,CAACG,KAAX,GAAmBqa,0BAAkB,CAAC4F,eALyC;AAM/E,GAACpgB,mBAAS,CAACK,KAAX,GAAmBma,0BAAkB,CAAC6F,YANyC;AAO/E,GAACrgB,mBAAS,CAACsgB,OAAX,GAAqB9F,0BAAkB,CAAC8F,OAPuC;AAQ/E,GAACtgB,mBAAS,CAACugB,OAAX,GAAqB/F,0BAAkB,CAAC+F;AARuC,CAA1E;AAWP,AAAO,MAAMC,uBAAuB,GAAoB,CACtDjK,iBAAa,CAACkK,KADwC,EAEtDlK,iBAAa,CAACG,KAFwC,EAGtDH,iBAAa,CAACC,QAHwC,EAItDD,iBAAa,CAACmK,MAJwC,CAAjD;;AAOP,MAAMC,WAAW,GAAG,CAAC3nB,KAAD,EAAyB2P,MAAzB;AAClB,SAAOA,MAAM,UACJuJ,UAAU,CAAClZ,KAAD,EAAQ;AACrBmZ,IAAAA,UAAU,EAAEb,kBAAU,CAACsP,GADF;AAErBvf,IAAAA,YAAY,EAAErI;AAFO,GAAR,CADN,SAKTA,KAAK,GACLA,KAAK,CAACqQ,QAAN,EADK,GAEL,CAPJ;AAQD,CATD;;AAWA,SAAgBwX,gBAAgB3hB;AAC9B,QAAM;AAAE4hB,IAAAA,kBAAF;AAAsB9nB,IAAAA,KAAtB;AAA6BkI,IAAAA,IAA7B;AAAmCnC,IAAAA;AAAnC,MAAiDG,WAAvD;AACA,QAAM6hB,QAAQ,GAAGC,wBAAwB,CAACF,kBAAD,CAAxB,IAAsEA,kBAAvF;AAEA,QAAMG,aAAa,GAAG,OAAOjoB,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAACsH,QAAN,CAAe,KAAf,CAA7B,GAAqDtH,KAAK,CAAC0H,KAAN,CAAY,KAAZ,CAArD,GAA0E1H,KAAhG;AACA,QAAM2P,MAAM,GAAGzH,IAAI,KAAKqV,iBAAa,CAACC,QAAtC;AACA,QAAM0K,gBAAgB,GAAGC,iBAAiB,CAAC7gB,QAAlB,CAA2BwgB,kBAA3B,CAAzB;AACA,QAAMM,WAAW,GAAG,CAACZ,uBAAuB,CAAClgB,QAAxB,CAAiCY,IAAjC,CAAD,IAA4D+f,aAAa,KAAK,IAAlG;;AAEA,MAAIC,gBAAgB,IAAIngB,KAAK,CAACC,OAAN,CAAcigB,aAAd,CAApB,IAAoDA,aAAa,CAAC,CAAD,CAAb,KAAqB3X,SAA7E,EAAwF;AACtF,WAAU0X,wBAAwB,CAACF,kBAAD,CAAlC,SAAgF/hB,SAAhF,UAA8F4hB,WAAW,CACvGM,aAAa,CAAC,CAAD,CAD0F,EAEvGtY,MAFuG,CAAzG,UAGMgY,WAAW,CAACM,aAAa,CAAC,CAAD,CAAd,EAAmBtY,MAAnB,CAHjB;AAID;;AAED,QAAM0Y,cAAc,GAAGtgB,KAAK,CAACC,OAAN,CAAcigB,aAAd,IACnBA,aAAa,CAAC3mB,GAAd,CAAkBgnB,GAAG,IAAIX,WAAW,CAACW,GAAD,EAAM3Y,MAAN,CAApC,CADmB,GAEnBgY,WAAW,CAACM,aAAD,EAAmCtY,MAAnC,CAFf;AAIA,QAAM4Y,WAAW,GAAGC,YAAK,CAACP,aAAD,CAAL,GAAuB,QAAvB,GAAkCI,cAAtD;AAEA,QAAMI,YAAY,GAChBL,WAAW,IAAI,OAAOG,WAAP,KAAuB,QAAtC,SACQG,cAAI,CAACC,eAAL,CAAqBC,mBAAmB,CAACL,WAAD,EAAcT,kBAAd,CAAxC,CADR,SAEIS,WAHN;AAKA,SAAUxiB,SAAV,SAAuBgiB,QAAvB,SAAmCU,YAAnC;AACD;AAED,SAAgBI,sBAAsB3iB;AACpC,MAAI6B,KAAK,CAACC,OAAN,CAAc9B,SAAd,CAAJ,EAA8B;AAC5B,kBAAY2hB,eAAe,CAAC3hB,SAAS,CAAC,CAAD,CAAV,CAA3B,SAA6CA,SAAS,CAAC,CAAD,CAAT,CAAaF,SAA1D,SAAuE6hB,eAAe,CAAC3hB,SAAS,CAAC,CAAD,CAAV,CAAtF;AACD;;AAED,SAAO2hB,eAAe,CAAC3hB,SAAD,CAAtB;AACD;AAED,SAAgB4iB;MAAgB;AAAE/iB,IAAAA,SAAF;AAAaC,IAAAA,SAAb;AAAwBhG,IAAAA;AAAxB;AAC9B,QAAM8nB,kBAAkB,GAAGhB,6BAA6B,CAAC9gB,SAAD,CAAxD;AACA,QAAM+iB,eAAe,GAAGC,oBAAoB,CAAChpB,KAAD,EAAqC8nB,kBAArC,CAA5C;AAEA;AACE/hB,IAAAA;AADF,KAEKgjB,eAFL;AAID;;AAED,SAASC,oBAAT,CAA8BhpB,KAA9B,EAAgE8nB,kBAAhE;AACE,MAAI,OAAO9nB,KAAP,KAAiB,QAArB,EAA+B;AAC7B,UAAMipB,aAAa,GAAG,EAAEnB,kBAAkB,KAAKtG,0BAAkB,CAACyF,SAA5C,CAAtB;;AAEA,QAAIjnB,KAAK,CAACkpB,UAAN,CAAiBR,cAAI,CAACS,UAAtB,KAAqCnpB,KAAK,CAACopB,QAAN,CAAeV,cAAI,CAACS,UAApB,CAAzC,EAA0E;AACxE,aAAO;AACLnpB,QAAAA,KAAK,EAAEA,KAAK,CAACmE,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CADF;AAEL2jB,QAAAA,kBAAkB,EAAEuB,kBAAkB,CAACJ,aAAD;AAFjC,OAAP;AAID;;AAED,QAAIjpB,KAAK,CAACkpB,UAAN,CAAiBR,cAAI,CAACS,UAAtB,CAAJ,EAAuC;AACrC,aAAO;AACLnpB,QAAAA,KAAK,EAAEA,KAAK,CAACmE,KAAN,CAAY,CAAZ,CADF;AAEL2jB,QAAAA,kBAAkB,EAAEwB,mBAAmB,CAACL,aAAD;AAFlC,OAAP;AAID;;AAED,QAAIjpB,KAAK,CAACopB,QAAN,CAAeV,cAAI,CAACS,UAApB,CAAJ,EAAqC;AACnC,aAAO;AACLnpB,QAAAA,KAAK,EAAEA,KAAK,CAACmE,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CADF;AAEL2jB,QAAAA,kBAAkB,EAAEyB,qBAAqB,CAACN,aAAD;AAFpC,OAAP;AAID;AACF;;AAED,SAAO;AAAEjpB,IAAAA,KAAF;AAAS8nB,IAAAA;AAAT,GAAP;AACD;;AAED,MAAM0B,WAAW,GAAIxpB,KAAD,UAAgCA,KAAhC,MAApB;;AACA,MAAMypB,aAAa,GAAIzpB,KAAD,IAA+BA,KAA/B,MAAtB;;AACA,MAAM0pB,WAAW,GAAI1pB,KAAD,UAAgCA,KAApD;;AAEA,SAAS4oB,mBAAT,CAA6B5oB,KAA7B,EAA4C+nB,QAA5C;AACE,UAAQA,QAAR;AACE,SAAKvG,0BAAkB,CAACmI,QAAxB;AACA,SAAKnI,0BAAkB,CAACoI,WAAxB;AACE,aAAOJ,WAAW,CAACxpB,KAAD,CAAlB;;AACF,SAAKwhB,0BAAkB,CAACqI,UAAxB;AACA,SAAKrI,0BAAkB,CAACsI,aAAxB;AACE,aAAOL,aAAa,CAACzpB,KAAD,CAApB;;AACF,SAAKwhB,0BAAkB,CAACuI,QAAxB;AACA,SAAKvI,0BAAkB,CAACwI,WAAxB;AACE,aAAON,WAAW,CAAC1pB,KAAD,CAAlB;;AACF,SAAKwhB,0BAAkB,CAAC8F,OAAxB;AACE,aAAOoB,cAAI,CAACuB,OAAZ;;AACF,SAAKzI,0BAAkB,CAAC+F,OAAxB;AACE,aAAOmB,cAAI,CAACwB,OAAZ;;AACF;AACE,aAAOlqB,KAAP;AAfJ;AAiBD;;ICzIYmqB,eAAb;AAGE,2BAAoBjkB,WAApB;QAAoBA;AAAAA,MAAAA,cAA2B;;;;;AAA3B,kBAAA,GAAAA,WAAA;AAClB,SAAKkkB,oBAAL,GAA4B,IAAIhkB,8BAAJ,CAAyBF,WAAzB,CAA5B;AACD;;AALH;AAAA;AAAA,SAaE;AACE,YAAM;AAAElG,QAAAA;AAAF,UAAY,KAAKoqB,oBAAvB;;AAEA,UAAIpqB,KAAK,YAAYsG,KAArB,EAA4B;AAC1B;AACAG,QAAAA,OAAO,CAACC,IAAR,CAAa1G,KAAK,CAACqqB,OAAnB;AACD;;AAED,aAAOrqB,KAAK,YAAYsG,KAAjB,GAAyB,EAAzB,GAA8BtG,KAAK,CAACqG,WAAN,CAAkB/E,GAAlB,CAAsBwnB,eAAtB,CAArC;AACD;AAtBH;AAAA;AAAA,SAwBE;AACE,YAAM;AAAE9oB,QAAAA;AAAF,UAAY,KAAKoqB,oBAAvB;;AAEA,UAAIpqB,KAAK,YAAYsG,KAArB,EAA4B;AAC1B,eAAO,IAAP;AACD;;AAED,YAAMgkB,aAAa,GAAGtqB,KAAK,CAACuqB,cAAN,CAAqBjjB,QAArB,CAA8BN,mBAAS,CAACwjB,MAAxC,CAAtB;AACA,YAAMC,cAAc,GAAGzqB,KAAK,CAACuqB,cAAN,CAAqBjjB,QAArB,CAA8BN,mBAAS,CAAC0jB,OAAxC,CAAvB;;AAEA,UAAIJ,aAAa,IAAIG,cAArB,EAAqC;AACnC,eAAO,IAAP;AACD;;AAED,aAAOH,aAAa,GAAG/I,gCAAwB,CAACoJ,EAA5B,GAAiCF,cAAc,GAAGlJ,gCAAwB,CAACqJ,GAA5B,GAAkC,IAArG;AACD;AAvCH;AAAA;AAAA,WAyCS;AACL,aAAO,KAAKR,oBAAL,CAA0BpqB,KAA1B,YAA2CsG,KAAlD;AACD;AA3CH;AAAA;AAAA,WA6CS;AACL,aAAO,KAAKJ,SAAZ;AACD;AA/CH;AAAA;AAAA,WAOE,cAAY2kB,UAAZ,EAA+C7kB,SAA/C;AACE,YAAME,SAAS,GAAG,CAAA2kB,UAAU,QAAV,YAAAA,UAAU,CAAEvpB,GAAZ,CAAgBunB,qBAAhB,EAAuChhB,IAAvC,OAAgD7B,SAAhD,YAAiE,IAAnF;AAEA,aAAO,IAAImkB,eAAJ,CAAoBjkB,SAApB,CAAP;AACD;AAXH;;AAAA;AAAA;;MCoEa4kB,cAAc,GAAI9qB,KAAD,IAA6D8H,QAAQ,CAAC9H,KAAD,CAAR,IAAmB,UAAUA,KAAjH;AAEP,MAAa+qB,yBAAyB,GAAI7kB,SAAD;AACvC,QAAM8kB,KAAK,GAAG9kB,SAAS,CAACwB,KAAV,CAAgB,GAAhB,CAAd;AAEA,SAAOsjB,KAAK,CAAC,CAAD,CAAL,CAAS9B,UAAT,CAAoB,GAApB,IAA2B8B,KAAK,CAAC,CAAD,CAAL,CAAS7mB,KAAT,CAAe,CAAf,CAA3B,GAA+C6mB,KAAK,CAAC,CAAD,CAA3D;AACD,CAJM;AAMP,MAAaC,oBAAoB,GAAG,CAAC/kB,SAAD,EAAoBglB,SAApB;;;AAClC,MAAIC,IAAJ;;AAEA,MAAID,SAAJ,EAAe;AACb,UAAMF,KAAK,GAAG9kB,SAAS,CAACwB,KAAV,CAAgB,MAAhB,EAAwBpG,GAAxB,CAA4B8pB,IAAI,IAAIA,IAAI,CAACjnB,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAApC,CAAd;AAEAgnB,IAAAA,IAAI,GAAGH,KAAK,CAACE,SAAS,GAAG,CAAb,CAAZ;AACD,GAJD,MAIO;AACLC,IAAAA,IAAI,GAAGjlB,SAAP;AACD;;AAED,kBAAOilB,IAAP,qBAAO,MAAMzjB,KAAN,CAAY,GAAZ,CAAP;AACD,CAZM;AAcP,MAAa2jB,wBAAwB,GAAG,CAACnlB,SAAD,EAAoBglB,SAApB;;;AACtC,kCAAOD,oBAAoB,CAAC/kB,SAAD,EAAYglB,SAAZ,CAA3B,qBAAO,sBAA6C,CAA7C,CAAP;AACD,CAFM;AAIP,MAAaI,yBAAyB,GAAG,CAACplB,SAAD,EAAoBglB,SAApB;;;AACvC,mCAAOD,oBAAoB,CAAC/kB,SAAD,EAAYglB,SAAZ,CAA3B,qBAAO,uBAA6C,CAA7C,CAAP;AACD,CAFM;AAIP,MAAaK,gBAAgB,GAAIrlB,SAAD,IAAuBA,SAAS,CAACoB,QAAV,CAAmB,GAAnB,CAAhD;AAEP,MAAakkB,sBAAsB,GAAI/jB,SAAD;AACpC,SAAOgkB,eAAe,CAAChkB,SAAD,CAAf,IAA8BikB,sBAArC;AACD,CAFM;AAIP,MAAaC,sBAAsB,GAAG,CAAC3rB,KAAD,EAAqB2nB,WAArB;AACpC,QAAM;AAAE5hB,IAAAA,SAAF;AAAa6H,IAAAA;AAAb,MAA6B5N,KAAnC;AAEA,SAAO+F,SAAS,IAAI4hB,WAAb,GACHA,WAAW,CAAC5hB,SAAS,CAACmC,IAAX,EAAiB0F,WAAjB,EAA8B7H,SAAS,CAAC6lB,YAAxC,CADR,GAEHhe,WAFJ;AAGD,CANM;AAQP,MAAagC,gBAAc,GAAG,OAE5BF,QAF4B,EAG5BC,MAH4B,EAI5BF,KAJ4B;MAC5B;AAAE7I,IAAAA,IAAF;AAAQC,IAAAA;AAAR;AAKA,SAAO;AACLD,IAAAA,IAAI,EAAEA,IAAI,KAAK,IAAT,IAAiB6I,KAAK,KAAK,CAA3B,GAAgCE,MAAM,GAAG/I,IAAH,GAAU8I,QAAQ,GAAG,CAAC9I,IAAJ,GAAW,CAACA,IAAD,GAAQ,CAA3E,GAAgFA,IADjF;AAELC,IAAAA;AAFK,GAAP;AAID,CAVM;AAYP,MAAaglB,qBAAqB,GAAG,CACnC7rB,KADmC,EAEnC2nB,WAFmC,EAGnClY,KAHmC;;;AAKnC,QAAMC,QAAQ,GAAG,qBAAA1P,KAAK,CAAC+F,SAAN,sCAAiBmC,IAAjB,MAA0B,QAA3C;AACA,QAAMyH,MAAM,GAAG,sBAAA3P,KAAK,CAAC+F,SAAN,uCAAiBmC,IAAjB,MAA0B,UAAzC;AAEA,QAAM;AAAEtB,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAe+I,gBAAc,CAAC5P,KAAD,EAAQ0P,QAAR,EAAkBC,MAAlB,EAA0BF,KAA1B,CAAnC;AAEA,QAAMqc,aAAa,GAAGnE,WAAW,GAAGA,WAAW,sBAC7C3nB,KAAK,CAAC+F,SADuC,qBAC7C,kBAAiBmC,IAD4B,EAE7CtB,IAF6C,uBAG7C5G,KAAK,CAAC+F,SAHuC,qBAG7C,kBAAiB6lB,YAH4B,CAAd,GAI7BhlB,IAJJ;AAKA,QAAMmlB,WAAW,GAAGpE,WAAW,GAAGA,WAAW,sBAC3C3nB,KAAK,CAAC+F,SADqC,qBAC3C,kBAAiBmC,IAD0B,EAE3CrB,EAF2C,uBAG3C7G,KAAK,CAAC+F,SAHqC,qBAG3C,kBAAiB6lB,YAH0B,CAAd,GAI3B/kB,EAJJ;;AAMA,MAAID,IAAI,KAAK,IAAb,EAAmB;AACjB,gBAAUmlB,WAAV,IAAwB,CAACpc,MAAD,GAAU,UAAV,GAAuB,EAA/C;AACD;;AAED,MAAI9I,EAAE,KAAK,IAAX,EAAiB;AACf,iBAAU,CAAC8I,MAAD,GAAU,QAAV,GAAqB,EAA/B,IAAoCmc,aAApC;AACD;;AAED,SAAOllB,IAAI,KAAKC,EAAT,QAAiBilB,aAAjB,GAAsCA,aAAtC,WAAyDC,WAAhE;AACD,CA9BM;AAgCP,MAAaC,mBAAmB,GAAIC,SAAD;;;AACjC,SAAO,0BAAAC,qBAAqB,CAACD,SAAS,CAACE,YAAX,CAArB,2CAA+Cpc,IAA/C,CAAoDqc,KAAK;;;AAC9D,UAAMC,UAAU,GAAGC,GAAG,qBAACL,SAAS,CAACliB,KAAX,qBAAC,iBAAiB3H,MAAlB,EAA0BgqB,KAA1B,CAAtB;AAEA,WAAO,CAAAC,UAAU,QAAV,YAAAA,UAAU,CAAEnkB,IAAZ,MAAqB,aAA5B;AACD,GAJM,MAID,KAJN;AAKD,CANM;AAQP,MAAaqkB,qBAAqB,GAAIrmB,SAAD;;;AACnC,QAAM8kB,KAAK,GAAG9kB,SAAS,CAACwB,KAAV,CAAgB,MAAhB,CAAd;AAEA,oBAAOsjB,KAAK,CAAC,CAAD,CAAZ,qBAAO,QAAU7mB,KAAV,CAAgB,CAAhB,EAAmB,CAAC,CAApB,CAAP;AACD,CAJM;;AAMP,SAASkd,kBAAT,CACEgL,UADF,EAEEtmB,SAFF,EAGE4hB,WAHF,EAIElY,KAJF;AAME,MAAI4c,UAAU,CAAC1e,KAAf,EAAsB,OAAO0e,UAAU,CAAC1e,KAAlB;AAEtB,QAAM3N,KAAK,GAAG;AACZsN,IAAAA,cAAc,EAAElF,iBAAiB,CAACikB,UAAU,CAACrsB,KAAZ,CADrB;AAEZ+F,IAAAA;AAFY,GAAd;AAKA,QAAMymB,IAAI,GAAGnB,wBAAwB,CAACgB,UAAU,CAACnmB,SAAZ,EAAuB,CAAvB,CAArC;AACA,QAAMumB,WAAW,GAAGD,IAAI,CAACllB,QAAL,CAAc,GAAd,CAApB;AAECtH,EAAAA,KAAoB,CAAC4G,IAArB,GAA4B6lB,WAAW,GAAGnB,yBAAyB,CAACe,UAAU,CAACnmB,SAAZ,EAAuB,CAAvB,CAA5B,GAAwD,IAA/F;AACAlG,EAAAA,KAAoB,CAAC6G,EAArB,GACCwlB,UAAU,CAACnmB,SAAX,CAAqBoB,QAArB,CAA8B,MAA9B,KAAyCmlB,WAAzC,GACInB,yBAAyB,CAACe,UAAU,CAACnmB,SAAZ,EAAuB,CAAvB,CAD7B,GAEI,CAACumB,WAAD,GACAnB,yBAAyB,CAACe,UAAU,CAACnmB,SAAZ,EAAuB,CAAvB,CADzB,GAEA,IALL;AAOD,MAAIP,YAAY,CAAC3F,KAAD,CAAhB,EAAyB,OAAO6rB,qBAAqB,CAAC7rB,KAAD,EAAsB2nB,WAAtB,EAAmClY,KAAnC,CAA5B;AACzB,MAAI5J,aAAa,CAAC7F,KAAD,CAAjB,EAA0B,OAAO2rB,sBAAsB,CAAC3rB,KAAD,EAAuB2nB,WAAvB,CAA7B;AAE1B,SAAO,EAAP;AACD;AAwBD;AACA;;;AACA,MAAa+E,qBAAqB,GAAqB;AACrD;;AAAA,KAA2B;AACzBxW,IAAAA,SAAS,EAAE,WADc;AAEzBvC,IAAAA,WAAW,EAAE,CAFY;AAGzBF,IAAAA,WAAW,EAAE;AAHY,GAD0B;AAMrD;;AAAA,KAAgC;AAC9BkZ,IAAAA,WAAW,EAAE;AADiB,GANqB;AASrD;;AAAA,KAA0B;AACxBvhB,IAAAA,MAAM,EAAE;AACNqG,MAAAA,KAAK,EAAE,CADD;AAENiC,MAAAA,KAAK,EAAE;AAFD;AADgB,GAT2B;AAerD;;AAAA,KAA6B;AAC3BxH,IAAAA,IAAI,EAAE;AACJwH,MAAAA,KAAK,EAAE,WADH;AAEJK,MAAAA,UAAU,EAAE;AAFR,KADqB;AAK3B3I,IAAAA,MAAM,EAAE;AACNqG,MAAAA,KAAK,EAAE,CADD;AAENiC,MAAAA,KAAK,EAAE;AAFD;AALmB;AAfwB,CAAhD;AA2BP,MAAakZ,sBAAsB,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,QAAlB,CAA/B;;AAGP,MAAaC,oBAAoB,GAA2B;AAC1DC,EAAAA,iBAAiB,EAAE,CADuC;AAE1DC,EAAAA,iBAAiB,EAAE,EAFuC;AAG1DC,EAAAA,gBAAgB,EAAE,EAHwC;AAI1DC,EAAAA,sBAAsB,EAAE,EAJkC;AAK1DC,EAAAA,cAAc,EAAE;AAL0C,CAArD;;AAQP,MAAMC,0BAA0B,GAAG,CACjCC,UADiC,EAEjC3lB,SAFiC,EAGjC4lB,qBAHiC,EAIjCnlB,IAJiC;AAMjC,MAAImlB,qBAAqB,CAAC/lB,QAAtB,CAA+BG,SAA/B,CAAJ,EAA+C;AAC7C,UAAM6lB,qBAAqB,GAAGC,sBAAsB,CAACb,qBAAqB,CAACxkB,IAAD,CAAtB,EAA8BT,SAA9B,CAApD;;AAEA,QAAI6lB,qBAAJ,EAA2B;AACzB,aAAOA,qBAAP;AACD;;AACD,QAAIV,sBAAsB,CAACtlB,QAAvB,CAAgCG,SAAhC,KAA8ColB,oBAAoB,CAACO,UAAU,CAACllB,IAAZ,CAAtE,EAAmG;AACjG,aAAO2kB,oBAAoB,CAACO,UAAU,CAACllB,IAAZ,CAA3B;AACD;AACF;;AAED,SAAOE,iBAAiB,CAACmlB,sBAAsB,CAACH,UAAD,EAAa3lB,SAAb,CAAvB,CAAxB;AACD,CAlBD;;AAoBA,MAAa+lB,qBAAqB,GAAG,CACnCprB,MADmC,EAEnC0G,IAFmC,EAGnC9I,KAHmC,KAKnCsI,qBAAqB,CAAC,MAAMtI,KAAP,CAArB,CACEoC,MADF,EAEE0G,IAFF,CALK;;AAUP,MAAM2kB,iBAAiB,GAA8C,CACnEL,UADmE,EAEnE3lB,SAFmE,EAGnE4lB,qBAHmE,EAInE/f,cAJmE;AAMnE,SAAOkgB,qBAAqB,cAErBJ,UAFqB;AAGxBlX,IAAAA,SAAS,EAAEiX,0BAA0B,CAACC,UAAD,EAAa,WAAb,EAA0BC,qBAA1B;;AAAA,KAHb;AAIxB5Z,IAAAA,WAAW,EAAE0Z,0BAA0B,CACrCC,UADqC,EAErC,aAFqC,EAGrCC,qBAHqC;;AAAA,KAJf;AAUxB1Z,IAAAA,WAAW,EAAEwZ,0BAA0B,CACrCC,UADqC,EAErC,aAFqC,EAGrCC,qBAHqC;;AAAA,KAVf;AAgBxBva,IAAAA,IAAI,EAAEqa,0BAA0B,CAACC,UAAD,EAAa,MAAb,EAAqBC,qBAArB;;AAAA,KAhBR;AAiBxBlgB,IAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ;AAjBgB,MAmB1B1F,SAnB0B,EAoB1B6F,cApB0B,CAA5B;AAsBD,CA5BD;;AAmCA,SAAgBogB,cAActrB,QAAqB0Q;AACjD,QAAM4B,MAAM,GAAGtM,iBAAiB,CAAChG,MAAM,CAACsS,MAAR,CAAhC;AACA,QAAMjD,KAAK,GAAGrJ,iBAAiB,CAAChG,MAAM,CAACqP,KAAR,CAA/B;;AAEA,MAAIA,KAAK,KAAKiD,MAAd,EAAsB;AACpB,WAAO;AACLjD,MAAAA,KAAK,EAAEqB,IADF;AAEL4B,MAAAA,MAAM,EAAE5B;AAFH,KAAP;AAID;;AAED,QAAM6a,KAAK,GAAGjZ,MAAM,GAAGjD,KAAvB;;AAEA,MAAIA,KAAK,GAAGiD,MAAZ,EAAoB;AAClB,WAAO;AACLjD,MAAAA,KAAK,EAAEqB,IADF;AAEL4B,MAAAA,MAAM,EAAEA,MAAM,GAAG,CAAC5B,IAAI,GAAGrB,KAAR,IAAiBkc;AAF7B,KAAP;AAID;;AAED,SAAO;AACLlc,IAAAA,KAAK,EAAEA,KAAK,GAAG,CAACqB,IAAI,GAAG4B,MAAR,IAAkBiZ,KAD5B;AAELjZ,IAAAA,MAAM,EAAE5B;AAFH,GAAP;AAID;;AAED,MAAM8a,sBAAsB,GAA+B,CACzDR,UADyD,EAEzD3lB,SAFyD,EAGzD4lB,qBAHyD,EAIzD/f,cAJyD;AAMzD,MAAIlL,MAAM,gBAAQgrB,UAAR,CAAV;;AAEA,MAAI7iB,mBAAmB,CAACnI,MAAD,CAAvB,EAAiC;AAC/BA,IAAAA,MAAM,CAACuqB,WAAP,GAAqBQ,0BAA0B,CAC7CC,UAD6C,EAE7C,aAF6C,EAG7CC,qBAH6C;;AAAA,KAA/C;AAMD;;AAED,MAAI5lB,SAAS,KAAK,QAAd,IAA0BA,SAAS,KAAK,OAA5C,EAAqD;AACnD,UAAM;AAAEiN,MAAAA,MAAF;AAAUjD,MAAAA;AAAV,QAAoBic,aAAa,CAACN,UAAD,EAAa9f,cAAb,CAAvC;AAEAlL,IAAAA,MAAM,CAACsS,MAAP,GAAgBA,MAAhB;AACAtS,IAAAA,MAAM,CAACqP,KAAP,GAAeA,KAAf;AACD,GALD,MAKO;AACLrP,IAAAA,MAAM,CAACqP,KAAP,GAAe0b,0BAA0B,CACvCC,UADuC,EAEvC,OAFuC,EAGvCC,qBAHuC;;AAAA,KAAzC;AAMAjrB,IAAAA,MAAM,CAACsS,MAAP,GAAgBtS,MAAM,CAACqP,KAAvB;AAEArP,IAAAA,MAAM,GAAGorB,qBAAqB,CAACprB,MAAD,EAASqF,SAAT,EAAoB6F,cAApB,CAA9B;AACD;;AAEDlL,EAAAA,MAAM,CAAC+K,MAAP,GAAgB,CACb/E,iBAAiB,CAAChG,MAAM,CAACsS,MAAR,CAAjB,GAAsE,CADzD,EAEbtM,iBAAiB,CAAChG,MAAM,CAACqP,KAAR,CAAjB,GAAqE,CAFxD,CAAhB;AAKA,SAAOrP,MAAP;AACD,CAxCD;;AA0CA,MAAMyrB,gBAAgB,GAAkC,CACtDT,UADsD,EAEtD3lB,SAFsD,EAGtD4lB,qBAHsD,EAItD/f,cAJsD;AAMtD,SAAOkgB,qBAAqB,cAErBJ,UAFqB;AAGxBllB,IAAAA,IAAI,EAAE,gBAHkB;AAIxBkD,IAAAA,MAAM,EAAE;AACNsI,MAAAA,KAAK,EAAEyZ,0BAA0B,CAACC,UAAD,EAAa,cAAb,EAA6BC,qBAA7B;;AAAA,OAD3B;AAEN5b,MAAAA,KAAK,EAAE0b,0BAA0B,CAACC,UAAD,EAAa,cAAb,EAA6BC,qBAA7B;;AAAA;AAF3B;AAJgB,MAS1B5lB,SAT0B,EAU1B6F,cAV0B,CAA5B;AAYD,CAlBD;;AAoBA,MAAMwgB,mBAAmB,GAAiC,CACxDV,UADwD,EAExD3lB,SAFwD,EAGxD4lB,qBAHwD,EAIxD/f,cAJwD;AAMxD,SAAOkgB,qBAAqB,cAErBJ,UAFqB;AAGxBlhB,IAAAA,IAAI,EAAE;AACJwH,MAAAA,KAAK,EAAEyZ,0BAA0B,CAACC,UAAD,EAAa,YAAb,EAA2BC,qBAA3B;;AAAA,OAD7B;AAEJtZ,MAAAA,UAAU,EAAEoZ,0BAA0B,CACpCC,UADoC,EAEpC,iBAFoC,EAGpCC,qBAHoC;;AAAA;AAFlC,KAHkB;AAYxBjiB,IAAAA,MAAM,EAAE;AACNsI,MAAAA,KAAK,EAAEyZ,0BAA0B,CAACC,UAAD,EAAa,cAAb,EAA6BC,qBAA7B;;AAAA,OAD3B;AAEN5b,MAAAA,KAAK,EAAE0b,0BAA0B,CAACC,UAAD,EAAa,cAAb,EAA6BC,qBAA7B;;AAAA;AAF3B;AAZgB,MAiB1B5lB,SAjB0B,EAkB1B6F,cAlB0B,CAA5B;AAoBD,CA1BD;;AA4BA,MAAMygB,cAAc,GAA4B,CAC9CX,UAD8C,EAE9C3lB,SAF8C,EAG9C4lB,qBAH8C,EAI9C/f,cAJ8C;AAM9C,SAAOkgB,qBAAqB,cAErBJ,UAFqB;AAGxBlhB,IAAAA,IAAI,EAAE;AACJwH,MAAAA,KAAK,EAAEyZ,0BAA0B,CAACC,UAAD,EAAa,YAAb,EAA2BC,qBAA3B;;AAAA;AAD7B,KAHkB;AAMxBjiB,IAAAA,MAAM,EAAE;AACNsI,MAAAA,KAAK,EAAEyZ,0BAA0B,CAACC,UAAD,EAAa,cAAb,EAA6BC,qBAA7B;;AAAA,OAD3B;AAEN5b,MAAAA,KAAK,EAAE0b,0BAA0B,CAACC,UAAD,EAAa,cAAb,EAA6BC,qBAA7B;;AAAA;AAF3B;AANgB,MAW1B5lB,SAX0B,EAY1B6F,cAZ0B,CAA5B;AAcD,CApBD;;AAsBA,MAAa0gB,kBAAkB,GAAG,CAChC1gB,cADgC,EAEhC7F,SAFgC,EAGhC4lB,qBAHgC,EAIhCD,UAJgC;AAMhC,MAAI5f,sBAAsB,CAACF,cAAD,CAA1B,EAA4C;AAC1C,WAAOA,cAAP;AACD;AAED;;;;;AAIA,MAAIvC,eAAe,CAACqiB,UAAD,CAAnB,EAAiC;AAC/B,WAAOK,iBAAiB,CAACL,UAAD,EAAa3lB,SAAb,EAAwB4lB,qBAAxB,EAA+C/f,cAA/C,CAAxB;AACD;;AAED,MAAIxC,sBAAsB,CAACsiB,UAAD,CAA1B,EAAwC;AACtC,WAAOQ,sBAAsB,CAACR,UAAD,EAAa3lB,SAAb,EAAwB4lB,qBAAxB,EAA+C/f,cAA/C,CAA7B;AACD;;AAED,MAAI1C,iBAAiB,CAACwiB,UAAD,CAArB,EAAmC;AACjC,WAAOS,gBAAgB,CACrBT,UADqB,EAErB3lB,SAFqB,EAGrB4lB,qBAHqB,EAIrB/f,cAJqB,CAAvB;AAMD;;AAED,MAAI7C,eAAe,CAAC2iB,UAAD,CAAnB,EAAiC;AAC/B,WAAOU,mBAAmB,CACxBV,UADwB,EAExB3lB,SAFwB,EAGxB4lB,qBAHwB,EAIxB/f,cAJwB,CAA1B;AAMD;;AAED,MAAIjC,cAAc,CAAC+hB,UAAD,CAAlB,EAAgC;AAC9B,WAAOW,cAAc,CAACX,UAAD,EAAyB3lB,SAAzB,EAAoC4lB,qBAApC,EAA2D/f,cAA3D,CAArB;AACD;;AAED,SAAO,IAAP;AACD,CA7CM;AA+CP,SAAgB2gB,sBAAsBzf,eAAuB0f,eAA8BluB;AACzF,MAAImuB,QAAJ;AACA,MAAIrG,kBAAJ;;AAEA,MAAIniB,YAAY,CAAC3F,KAAD,CAAhB,EAAyB;AACvB,QAAIA,KAAK,CAAC4G,IAAN,IAAc5G,KAAK,CAAC6G,EAAxB,EAA4B;AAC1BsnB,MAAAA,QAAQ,GAAG,CAACnuB,KAAK,CAAC4G,IAAP,EAAuB5G,KAAK,CAAC6G,EAA7B,CAAX;AACAihB,MAAAA,kBAAkB,GAAGtG,0BAAkB,CAAC+F,OAAxC;AACD,KAHD,MAGO,IAAIvnB,KAAK,CAAC4G,IAAV,EAAgB;AACrBunB,MAAAA,QAAQ,GAAGnuB,KAAK,CAAC4G,IAAjB;AACAkhB,MAAAA,kBAAkB,GAAGtG,0BAAkB,CAAC2F,QAAxC;AACD,KAHM,MAGA,IAAInnB,KAAK,CAAC6G,EAAV,EAAc;AACnBsnB,MAAAA,QAAQ,GAAGnuB,KAAK,CAAC6G,EAAjB;AACAihB,MAAAA,kBAAkB,GAAGtG,0BAAkB,CAAC0F,WAAxC;AACD;AACF,GAXD,MAWO;AACLiH,IAAAA,QAAQ,GAAGnuB,KAAK,CAAC4N,WAAjB;AACAka,IAAAA,kBAAkB,GAAGtG,0BAAkB,CAACyF,SAAxC;AACD;;AAED,SAAO,IAAIkD,eAAJ,CACLtB,qBAAqB,CAAC;AACpB9iB,IAAAA,SAAS,EAAEyI,aADS;AAEpBtG,IAAAA,IAAI,EAAEgmB,aAFc;AAGpBpG,IAAAA,kBAAkB,EAAEA,kBAHA;AAIpB9nB,IAAAA,KAAK,EAAEmuB;AAJa,GAAD,CADhB,EAOL9d,QAPK,EAAP;AAQD;AAED,MAAa+d,0BAA0B,GAAG,CACxCngB,MADwC,EAExCO,aAFwC,EAGxC0f,aAHwC;AAKxC,QAAMluB,KAAK,GAAGiO,MAAM,CAACA,MAAM,CAACvO,MAAP,GAAgB,CAAjB,CAApB;AACA,MAAI2uB,eAAJ;;AAEA,MAAI1oB,YAAY,CAAC3F,KAAD,CAAhB,EAAyB;AACvBquB,IAAAA,eAAe,GAAG,IAAIlE,eAAJ,CAChBtB,qBAAqB,CAAC;AACpB9iB,MAAAA,SAAS,EAAEyI,aADS;AAEpBtG,MAAAA,IAAI,EAAEgmB,aAFc;AAGpBpG,MAAAA,kBAAkB,EAAEtG,0BAAkB,CAAC6F,YAHnB;AAIpBrnB,MAAAA,KAAK,EAAGA,KAAoB,CAAC6G,EAArB,IAA4B7G,KAAoB,CAAC4G;AAJrC,KAAD,CADL,EAOhByJ,QAPgB,EAAlB;AAQD,GATD,MASO;AACL,UAAMwa,UAAU,GAAG5c,MAAM,CAAC3M,GAAP,CAAWgnB,GAAG,IAC/B,IAAI6B,eAAJ,CACEtB,qBAAqB,CAAC;AACpB9iB,MAAAA,SAAS,EAAEyI,aADS;AAEpBtG,MAAAA,IAAI,EAAEgmB,aAFc;AAGpBpG,MAAAA,kBAAkB,EAAEtG,0BAAkB,CAACuF,MAHnB;AAIpB/mB,MAAAA,KAAK,EAAGsoB,GAAmB,CAAC1a;AAJR,KAAD,CADvB,EAOEyC,QAPF,EADiB,CAAnB;AAWAge,IAAAA,eAAe,UAAQxD,UAAU,CAAC1gB,MAAX,CAAkBvE,OAAlB,EAA2BiC,IAA3B,OAAoC0Z,gCAAwB,CAACoJ,EAA7D,OAAR,OAAf;AACD;;AAED,SAAO0D,eAAP;AACD,CAjCM;AAmCP,MAAaC,wBAAwB,GAAG,CACtCvoB,SADsC,EAEtCwoB,UAFsC,EAGtC5G,WAHsC,EAItClY,KAJsC,EAKtC+e,UALsC;AAOtC,QAAMC,KAAK,GAAG;AACZ9gB,IAAAA,KAAK,EAAE6gB,UADK;AAEZlhB,IAAAA,cAAc,EAAEihB,UAAU,CAAClmB,YAFf;AAGZgmB,IAAAA,eAAe,EAAED,0BAA0B,CAACG,UAAU,CAACtgB,MAAX,CAAkB3M,GAAlB,CAAsBgnB,GAAG,IAAIoG,sBAAsB,CAC7FpG,GAAG,CAACtoB,KADyF,EAE7FwuB,UAF6F,EAG7F,IAAIvoB,uBAAJ,CAA4BqiB,GAAG,CAACpiB,SAAhC,CAH6F,CAAnD,CAAD,EAIvCH,SAAS,CAACgY,IAJ6B,EAIbhY,SAAS,CAACmC,IAJG;AAH/B,GAAd;AAUA,QAAMymB,KAAK,GAAGJ,UAAU,CAACtgB,MAAX,CAAkB3M,GAAlB,CAAsB+qB,UAAU;AAC5C,UAAM/e,cAAc,GAAGlF,iBAAiB,CAACikB,UAAU,CAACrsB,KAAZ,CAAxC;AACA,UAAMuP,MAAM,GAAG;AAAEjC,MAAAA,cAAF;AAAkBvH,MAAAA;AAAlB,KAAf;;AAEA,QAAIwlB,gBAAgB,CAACc,UAAU,CAACnmB,SAAZ,CAApB,EAA4C;AAC1C,YAAMU,IAAI,GAAG0kB,yBAAyB,CAACe,UAAU,CAACnmB,SAAZ,EAAuB,CAAvB,CAAtC;AACA,YAAMW,EAAE,GAAGykB,yBAAyB,CAACe,UAAU,CAACnmB,SAAZ,EAAuB,CAAvB,CAApC;AAECqJ,MAAAA,MAAqB,CAAC3I,IAAtB,GAA6BA,IAAI,GAAI2f,SAAS,CAAC3f,IAAD,CAAT,GAAkB,CAACA,IAAnB,GAA0BsS,UAAU,CAACtS,IAAD,CAAxC,GAAkD,IAAnF;AACA2I,MAAAA,MAAqB,CAAC1I,EAAtB,GAA2BA,EAAE,GAAI0f,SAAS,CAAC1f,EAAD,CAAT,GAAgB,CAACA,EAAjB,GAAsBqS,UAAU,CAACrS,EAAD,CAApC,GAA4C,IAAzE;AAED0I,MAAAA,MAAM,CAAC5B,KAAP,GAAe0T,kBAAgB,CAACgL,UAAD,EAAatmB,SAAb,EAAwB4hB,WAAxB,EAAqClY,KAArC,CAA/B;AAEA,aAAOF,MAAP;AACD;;AAEAA,IAAAA,MAAsB,CAAC3B,WAAvB,GAAqC+Z,WAAW,GAAGA,WAAW,CAC7D5hB,SAAS,CAACmC,IADmD,EAE7DmkB,UAAU,CAACrsB,KAFkD,EAG7D+F,SAAS,CAAC6lB,YAHmD,CAAd,GAInCS,UAAU,CAACrsB,KAAX,CAAiBqQ,QAAjB,EAJb;AAKDd,IAAAA,MAAM,CAAC5B,KAAP,GAAe4e,qBAAqB,CAACF,UAAU,CAACnmB,SAAZ,CAApC;AACAqJ,IAAAA,MAAM,CAAC8e,eAAP,GAAyBJ,qBAAqB,CAACloB,SAAS,CAACgY,IAAX,EAA2BhY,SAAS,CAACmC,IAArC,EAA2CwmB,sBAAsB,CAC7GrC,UAAU,CAACrsB,KADkG,EAE7GuP,MAAM,CAAC5B,KAFsG,EAG7G,IAAI1H,uBAAJ,CAA4BomB,UAAU,CAACnmB,SAAvC,CAH6G,CAAjE,CAA9C;AAMA,WAAOqJ,MAAP;AACD,GA7Ba,CAAd;;AA+BA,MAAIxJ,SAAS,CAACmC,IAAV,KAAmBqV,iBAAa,CAACE,MAArC,EAA6C;AAC3CkR,IAAAA,KAAK,CAACC,OAAN;AACD;;AAED,SAAO,CAAC,GAAGD,KAAJ,EAAWF,KAAX,CAAP;AACD,CArDM;AAuDP,MAAaI,wBAAwB,GAAG,CACtC9oB,SADsC,EAEtCqmB,KAFsC,EAGtCrJ,MAHsC,EAItCwL,UAJsC,EAKtCnsB,MALsC,EAMtCulB,WANsC,EAOtCmH,YAPsC,EAQtCN,UARsC;AAUtC,QAAMC,KAAK,GAAG;AACZ9gB,IAAAA,KAAK,EAAE6gB,UADK;AAEZpsB,IAAAA,MAAM,EAAE4rB,kBAAkB,CAACO,UAAU,CAAClmB,YAAZ,EAA0B+jB,KAA1B,EAAiCrJ,MAAjC,EAAyC3gB,MAAzC,CAFd;AAGZisB,IAAAA,eAAe,EAAED,0BAA0B,CAACG,UAAU,CAACtgB,MAAX,CAAkB3M,GAAlB,CAAsBgnB,GAAG,IAAIoG,sBAAsB,CAC7FpG,GAAG,CAACtoB,KADyF,EAE7FwuB,UAF6F,EAG7F,IAAIvoB,uBAAJ,CAA4BqiB,GAAG,CAACpiB,SAAhC,CAH6F,CAAnD,CAAD,EAIvCH,SAAS,CAACgY,IAJ6B,EAIbhY,SAAS,CAACmC,IAJG;AAH/B,GAAd;AAUA,QAAMymB,KAAK,GAAGJ,UAAU,CAACtgB,MAAX,CAAkB3M,GAAlB,CAAsB,CAAC+qB,UAAD,EAAa5c,KAAb;AAClC,UAAMF,MAAM,GAAG;AACbnN,MAAAA,MAAM,EAAE4rB,kBAAkB,CAAC3B,UAAU,CAACrsB,KAAZ,EAAmBosB,KAAnB,EAA0BrJ,MAA1B,EAAkC3gB,MAAlC;AADb,KAAf;AAIAmN,IAAAA,MAAM,CAAC5B,KAAP,GAAe4d,gBAAgB,CAACc,UAAU,CAACnmB,SAAZ,CAAhB,GACXmb,kBAAgB,CAACgL,UAAD,EAAatmB,SAAb,EAAwB4hB,WAAxB,EAAqCmH,YAArC,CADL,GAEXvC,qBAAqB,CAACF,UAAU,CAACnmB,SAAZ,CAFzB;AAIAqJ,IAAAA,MAAM,CAAC8e,eAAP,GAAyBJ,qBAAqB,CAC5CloB,SAAS,CAACgY,IADkC,EAE5ChY,SAAS,CAACmC,IAFkC,EAG5CwmB,sBAAsB,CACpBrC,UAAU,CAACrsB,KADS,EAEpBuP,MAAM,CAAC5B,KAFa,EAGpB,IAAI1H,uBAAJ,CAA4BsoB,UAAU,CAACtgB,MAAX,CAAkBwB,KAAlB,EAAyBvJ,SAArD,CAHoB,CAHsB,CAA9C;AAUA,WAAOqJ,MAAP;AACD,GApBa,CAAd;;AAsBA,MAAIxJ,SAAS,CAACmC,IAAV,KAAmBqV,iBAAa,CAACE,MAArC,EAA6C;AAC3CkR,IAAAA,KAAK,CAACC,OAAN;AACD;;AAED,SAAO,CAAC,GAAGD,KAAJ,EAAWF,KAAX,CAAP;AACD,CA/CM;AAmDP,MAAaM,aAAa,GACxB9C,SAD2B;AAG3B,QAAM+C,cAAc,GAAG9C,qBAAqB,CAACD,SAAS,CAACE,YAAX,CAA5C;AAEA,SAAO6C,cAAP,oBAAOA,cAAc,CAAE7gB,MAAhB,CAAuB,CAACoB,MAAD,EAASgf,UAAT;;;AAC5B,UAAMnC,KAAK,GAAGE,GAAG,sBAACL,SAAS,CAACliB,KAAX,qBAAC,kBAAiB3H,MAAlB,EAA0BmsB,UAA1B,CAAjB;AAEA,WAAO,CAAAnC,KAAK,QAAL,YAAAA,KAAK,CAAElkB,IAAP,MAAgB,aAAhB,gBAAqCqH,MAArC;AAA6C,OAACgf,UAAD,GAAcnC;AAA3D,SAAqE7c,MAA5E;AACD,GAJM,EAIJ,EAJI,CAAP;AAKD,CAVM;AAYP,MAAa0f,oBAAoB,GAAI7sB,MAAD;;;AAClC,SAAOkJ,gBAAgB,CAAClJ,MAAD,CAAhB,yBACDA,MAAM,CAACqS,UADN,qBACD,mBAAsCd,WADrC,GAEDvR,MAAsB,CAACuR,WAF7B;AAGD,CAJM;AAMP,MAAa4Z,sBAAsB,GAAG,CACpCnrB,MADoC,EAEpCqF,SAFoC;AAIpC,MAAIynB,mBAAmB,GAAG,EAA1B;AAEA5mB,EAAAA,qBAAqB,CAAEgF,cAAD;AACpB4hB,IAAAA,mBAAmB,GAAG5hB,cAAtB;AACD,GAFoB,CAArB,CAEGlL,MAFH,EAEWqF,SAFX;AAIA,SAAOynB,mBAAP;AACD,CAXM;AAaP,MAAaC,mBAAmB,GAAI/sB,MAAD;AACjC,MAAI0Q,IAAI,GAAG,CAAX;;AAEA,MAAIxH,gBAAgB,CAAClJ,MAAD,CAApB,EAA8B;AAC5B0Q,IAAAA,IAAI,GAAG1K,iBAAiB,CAAChG,MAAM,CAAC0Q,IAAR,CAAxB;AACD;;AAED,MAAIzH,cAAc,CAACjJ,MAAD,CAAlB,EAA4B;AAC1B0Q,IAAAA,IAAI,GAAG1K,iBAAiB,CAAChG,MAAM,CAACgtB,QAAR,CAAxB;AACD;;AAED,MAAItkB,sBAAsB,CAAC1I,MAAD,CAA1B,EAAoC;AAClC0Q,IAAAA,IAAI,GAAGhC,IAAI,CAACD,GAAL,CACLzI,iBAAiB,CAAChG,MAAM,CAACqP,KAAR,CADZ,EAELrJ,iBAAiB,CAAChG,MAAM,CAACsS,MAAR,CAFZ,CAAP;AAID;;AAED,MAAI3J,eAAe,CAAC3I,MAAD,CAAnB,EAA6B;AAC3B,UAAMuR,WAAW,GAAGsb,oBAAoB,CAAC7sB,MAAD,CAAxC;AAEA0Q,IAAAA,IAAI,GAAG1K,iBAAiB,CAAChG,MAAM,CAAC0Q,IAAR,CAAjB,IACJa,WAAW,GAAGvL,iBAAiB,CAACuL,WAAD,CAAjB,GAAiC0b,iBAApC,GAAwD,CAD/D,CAAP;AAED;;AAED,MAAIzkB,iBAAiB,CAACxI,MAAD,CAArB,EAA+B;AAC7B0Q,IAAAA,IAAI,GAAG1K,iBAAiB,CAACmlB,sBAAsB,CAACnrB,MAAD,EAAS,cAAT,CAAvB,CAAxB;AACD;;AAED,SAAO0O,IAAI,CAACD,GAAL,CAASye,0BAAT,EAAqCxc,IAArC,CAAP;AACD,CA9BM;AAgCP,MAAayc,uBAAuB,GAAIntB,MAAD;;;AACrC,MAAI,CAACA,MAAL,EAAa,OAAO,IAAP;AAEb,QAAMotB,eAAe,GAAK,mBAAAptB,MAAM,CAACqtB,MAAP,oCAAkCvZ,SAAlC,KAA0D,IAApF;AACA,QAAMwZ,WAAW,GAAK,wBAAAttB,MAAM,CAACqS,UAAP,yCAAsCyB,SAAtC,KAA8D,IAApF;AAEA;AACEhO,IAAAA,IAAI,EAAE,gBADR;AAEE4K,IAAAA,IAAI,EAAE1Q,MAAM,CAAC0Q,IAFf;AAGE3F,IAAAA,MAAM,EAAE/K,MAAM,CAAC+K,MAHjB;AAIEwiB,IAAAA,KAAK,EAAEvtB,MAAM,CAACutB;AAJhB,KAKMD,WAAW,GACX;AACEjb,IAAAA,UAAU,EAAE;AACV6J,MAAAA,EAAE,EAAE,WADM;AAEVpI,MAAAA,SAAS,EAAEwZ,WAFD;AAGVjc,MAAAA,WAAW,EAAI,wBAAArR,MAAM,CAACqS,UAAP,yCAAsChB,WAAtC,KAAgE,IAHrE;AAIVE,MAAAA,WAAW,EAAG,wBAAAvR,MAAM,CAACqS,UAAP,yCAAsCd,WAAtC,KAAqD,IAJzD;AAKVzL,MAAAA,IAAI,EAAG,wBAAA9F,MAAM,CAACqS,UAAP,yCAAsCvM,IAAtC,KAA8C0nB,mBAAW,CAAC3iB;AALvD;AADd,GADW,GAUX,EAfN,EAgBMuiB,eAAe,GACf;AACEC,IAAAA,MAAM,EAAE;AAAEnR,MAAAA,EAAE,EAAE,eAAN;AAAuBpI,MAAAA,SAAS,EAAEsZ;AAAlC;AADV,GADe,GAIf,EApBN;AAsBD,CA5BM;AA8BP,MAAMK,eAAe,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,aAAnB,EAAkC,cAAlC,CAAxB;AAEA,MAAaC,oBAAoB,GAAIroB,SAAD,IAAgCooB,eAAe,CAACvoB,QAAhB,CAAyBG,SAAzB,CAA7D;AAEP,MAAasoB,uBAAuB,GAAIjuB,KAAD;AACrC,QAAMkuB,yBAAyB,GAAmC;AAChEjS,IAAAA,IAAI,EAAE;AAD0D,GAAlE;AAIA,MAAI,CAAC+M,cAAc,CAAChpB,KAAD,CAAf,IAA0B,EAAE,mBAAmBA,KAArB,CAA9B,EAA2D,OAAOkuB,yBAAP;AAE3D,sBACKA,yBADL,EAEMluB,KAAK,CAACmuB,aAAN,IAAuB,EAF7B;AAID,CAXM;AAaP;;AACA,MAAaC,kBAAkB,GAAG,UAA3B;AAEP;;AACA,MAAaC,yBAAyB,GAAG,KAAlC;AAEP,MAAaC,0BAA0B,GAAItuB,KAAD;AACxC,QAAMuuB,oBAAoB,GAAGN,uBAAuB,CAACjuB,KAAD,CAApD;AACA,QAAMwuB,4BAA4B,GAA8B;AAC9DC,IAAAA,iBAAiB,EAAEL,kBAD2C;AAE9DM,IAAAA,WAAW,EAAEL,yBAFiD;AAG9DM,IAAAA,SAAS,EAAE;AAHmD,GAAhE;;AAMA,MAAI,CAACJ,oBAAD,IAAyB,EAAE,6BAA6BA,oBAA/B,CAA7B,EAAmF;AACjF,WAAOC,4BAAP;AACD;;AAED,sBACKA,4BADL,EAEOD,oBAA4D,CAACK,uBAA7D,IAAwF,EAF/F;AAID,CAhBM;AAkBP,MAAaC,kBAAkB,GAAI7uB,KAAD;AAChC,QAAM;AAAEyuB,IAAAA,iBAAF;AAAqBC,IAAAA;AAArB,MAAqCJ,0BAA0B,CAACtuB,KAAD,CAArE;AAEA,QAAM8uB,oBAAoB,GAAsB;AAC9C9S,IAAAA,UAAU,EAAE,EADkC;AAE9CyS,IAAAA,iBAAiB,EAAEA,iBAF2B;AAG9CC,IAAAA,WAH8C;AAI9CrE,IAAAA,YAAY,EAAEtN,gBAAY,CAAClB,OAJmB;AAK9CsD,IAAAA,cAAc,EAAE;AAL8B,GAAhD;;AAQA,MAAI,CAAC6J,cAAc,CAAChpB,KAAD,CAAf,IAA0B,EAAE,qBAAqBA,KAAvB,CAA9B,EAA6D;AAC3D,WAAO8uB,oBAAP;AACD;;AAED,sBACKA,oBADL,EAEM9uB,KAAK,CAAC+b,eAAN,IAAyB,EAF/B;AAGEC,IAAAA,UAAU,EAAEhc,KAAK,CAAC+b,eAAN,CAAsBC,UAAtB,IAAoC8S,oBAAoB,CAAC9S;AAHvE;AAKD,CApBM;AAsBP,SAAgB+S,iBAAiB/uB,OAAkC0M;AACjE,QAAM;AAAEsP,IAAAA;AAAF,MAAiB6S,kBAAkB,CAAC7uB,KAAD,CAAzC;AACA,QAAMiE,SAAS,GAAG+X,UAAU,CAACtP,aAAD,CAA5B;AAEA,SAAOzI,SAAS,GAAGA,SAAS,CAACmC,IAAb,GAAoBqV,iBAAa,CAACI,OAAlD;AACD;;AAED,MAAM+Q,sBAAsB,GAAG,CAC7BphB,cAD6B,EAE7BK,KAF6B,EAG7BzH,SAH6B;AAK7BoH,EAAAA,cAL6B;AAM7BK,EAAAA;AAN6B,GAOzBzH,SAAS,CAACM,QAAV,KACA;AACAoH,EAAAA,WAAW,EAAE1H,SAAS,CAAC0H;AADvB,CADA,GAIA;AACAhH,EAAAA,IAAI,EAAEV,SAAS,CAAC2H,KAAV,CAAgB,CAAhB,CADN;AAEAhH,EAAAA,EAAE,EAAEX,SAAS,CAAC2H,KAAV,CAAgB,CAAhB;AAFJ,CAXyB,CAA/B;;MC10BaijB,cAAc,GAAG,CAC5BC,MAD4B;MAE5B;AAAExvB,IAAAA,OAAF;AAAWmD,IAAAA,GAAG,GAAGkY;AAAjB;AAEA,QAAM;AAAEnL,IAAAA;AAAF,MAAYlQ,OAAlB;AACA,QAAMyvB,SAAS,GAAGzvB,OAAO,CAAC+B,sBAAR,CAA+B,CAA/B,EAAkC,CAAlC,EAAqC2tB,SAArC,CAA+CvsB,GAA/C,CAAlB;AACA,QAAMwsB,aAAa,GAAG3vB,OAAO,CAAC+B,sBAAR,CAA+BmO,KAA/B,EAAsC,CAAtC,EAAyCwf,SAAzC,CAAmDvsB,GAAnD,CAAtB;AACA,QAAMysB,aAAa,GAAWhP,iBAAQ,CAAC6O,SAAD,EAAYE,aAAZ,CAAtC;AACA,QAAME,GAAG,GAAG3f,KAAK,IAAI0f,aAAa,IAAI,CAArB,CAAjB;AAEA,SAAOrgB,IAAI,CAACc,KAAL,CAAWmf,MAAM,GAAGK,GAApB,CAAP;AACD,CAXM;;MCPMC,sBAAsB,GAAG,CACpC1e,MADoC,EAEpC2e,QAFoC;AAIpC,QAAM3S,WAAW,GAAkB,EAAnC;AACA,QAAM4S,MAAM,GAAGD,QAAQ,GAAG,CAA1B;AACA,QAAME,QAAQ,GAAG1gB,IAAI,CAAC8B,EAAL,GAAU,CAA3B;AACA,QAAM6e,IAAI,GAAG3gB,IAAI,CAACD,GAAL,CAASC,IAAI,CAAC8B,EAAL,GAAU,CAAV,GAAc2e,MAAvB,EAA+BC,QAAQ,GAAG,GAA1C,CAAb;AACA,MAAIE,KAAK,GAAG,CAAZ;AACA,MAAIC,GAAG,GAAGH,QAAV;;AAEA,OAAK,IAAII,GAAG,GAAGF,KAAf,EAAsBE,GAAG,GAAGD,GAA5B,EAAiCC,GAAG,IAAIH,IAAxC,EAA8C;AAC5C9S,IAAAA,WAAW,CAACpQ,IAAZ,CAAiB,CACfuC,IAAI,CAAC+gB,GAAL,CAASD,GAAT,IAAgBL,MAAhB,GAAyB5e,MAAM,CAAC,CAAD,CADhB,EAEf7B,IAAI,CAACghB,GAAL,CAASF,GAAT,IAAgBL,MAAhB,GAAyB5e,MAAM,CAAC,CAAD,CAFhB,CAAjB;AAID;;AAED,SAAO,CAACgM,WAAD,CAAP;AACD,CAnBM;;MCGM2Q,0BAA0B,GAAG,EAAnC;AAEP,MAAaD,iBAAiB,GAAG,CAA1B;AAEP,MAAa0C,mBAAmB,GAAG,EAA5B;AAEP,MAAaC,2BAA2B,GAAG,EAApC;AAEP,MAAaC,yBAAyB,GAAG,sBAAlC;AAEP,MAAaC,2BAA2B,GAAG,oBAApC;AAEP,MAAaC,qBAAqB,GAAG,CAAC,CAAD,EAAI,CAAJ,CAA9B;AAEP,MAAajG,qBAAqB,GAAuD;AACvF,GAACrN,gBAAY,CAACQ,OAAd,GAAwB,CAAC,YAAD,EAAe,cAAf,EAA+B,cAA/B,CAD+D;AAEvF,GAACR,gBAAY,CAACM,QAAd,GAAyB,CAAC,cAAD,EAAiB,cAAjB,CAF8D;AAGvF,GAACN,gBAAY,CAACC,KAAd,GAAsB,CACpB,OADoB,EAEpB,sBAFoB,EAGpB,wBAHoB,EAIpB,wBAJoB,EAKpB,kBALoB,EAMpB,MANoB;AAHiE,CAAlF;AAaP,MAAasT,aAAa,GAAG;AAC3BC,EAAAA,QAAQ,EAAE,CADiB;AAE3BC,EAAAA,QAAQ,EAAE,EAFiB;AAG3BC,EAAAA,SAAS,EAAE,CAHgB;AAI3BC,EAAAA,aAAa,EAAE,GAJY;AAK3BC,EAAAA,aAAa,EAAE,GALY;AAM3BC,EAAAA,iBAAiB,EAAE,CANQ;AAO3BC,EAAAA,iBAAiB,EAAE,KAPQ;AAQ3BC,EAAAA,gBAAgB,EAAE,EARS;AAS3BC,EAAAA,gBAAgB,EAAE,GATS;AAU3BriB,EAAAA,gBAAgB,EAAE,CAVS;AAW3BC,EAAAA,gBAAgB,EAAE,EAXS;AAY3BqiB,EAAAA,iBAAiB,EAAE,IAZQ;AAa3BC,EAAAA,SAAS,EAAE,CAAC,GAbe;AAc3BC,EAAAA,SAAS,EAAE,GAdgB;AAe3BC,EAAAA,UAAU,EAAE,CAfe;AAgB3BC,EAAAA,gBAAgB,EAAE,EAhBS;AAiB3BC,EAAAA,sBAAsB,EAAE;AAjBG,CAAtB;AAoBP,MAAazH,sBAAsB,GAAkB;AACnD0H,EAAAA,YAAY,EAAE,IADqC;AAEnDxiB,EAAAA,GAAG,EAAEwhB,aAAa,CAAC5hB,gBAFgC;AAGnDK,EAAAA,GAAG,EAAEuhB,aAAa,CAAC3hB,gBAHgC;AAInDghB,EAAAA,IAAI,EAAEW,aAAa,CAACU,iBAJ+B;AAKnDO,EAAAA,KAAK;;AAL8C;AAMnDC,EAAAA,SAAS,EAAEtzB,KAAK,IAAIA,KAN+B;AAOnDuzB,EAAAA,WAAW,EAAEvzB,KAAK,IAAIA;AAP6B,CAA9C;AAUP,MAAayrB,eAAe,GAA4D;AACtF3Y,EAAAA,IAAI,4BACC4Y,sBADD;AAEF9a,IAAAA,GAAG,EAAEwhB,aAAa,CAACC,QAFjB;AAGFxhB,IAAAA,GAAG,EAAEuhB,aAAa,CAACE,QAHjB;AAIFb,IAAAA,IAAI,EAAEW,aAAa,CAACG,SAJlB;AAKFc,IAAAA,KAAK;;;AALH;AADkF,CAAjF;AAkDP,MAAarL,wBAAwB,GAAuC;AAC1E,GAACxG,0BAAkB,CAACuF,MAApB,GAA6B,IAD6C;AAE1E,GAACvF,0BAAkB,CAACyF,SAApB,GAAgC,IAF0C;AAG1E,GAACzF,0BAAkB,CAAC0F,WAApB,GAAkC,GAHwC;AAI1E,GAAC1F,0BAAkB,CAAC4F,eAApB,GAAsC,IAJoC;AAK1E,GAAC5F,0BAAkB,CAAC2F,QAApB,GAA+B,GAL2C;AAM1E,GAAC3F,0BAAkB,CAAC6F,YAApB,GAAmC,IANuC;AAO1E,GAAC7F,0BAAkB,CAACgS,MAApB,GAA6B,IAP6C;AAQ1E,GAAChS,0BAAkB,CAACiS,KAApB,GAA4B,IAR8C;AAS1E,GAACjS,0BAAkB,CAACmI,QAApB,GAA+B,IAT2C;AAU1E,GAACnI,0BAAkB,CAACoI,WAApB,GAAkC,IAVwC;AAW1E,GAACpI,0BAAkB,CAACqI,UAApB,GAAiC,IAXyC;AAY1E,GAACrI,0BAAkB,CAACsI,aAApB,GAAoC,IAZsC;AAa1E,GAACtI,0BAAkB,CAACuI,QAApB,GAA+B,IAb2C;AAc1E,GAACvI,0BAAkB,CAACwI,WAApB,GAAkC,IAdwC;AAe1E,GAACxI,0BAAkB,CAAC8F,OAApB,GAA8B,SAf4C;AAgB1E,GAAC9F,0BAAkB,CAAC+F,OAApB,GAA8B;AAhB4C,CAArE;AAmBP,MAAamM,cAAc,GAAG,CAAClS,0BAAkB,CAACuF,MAApB,EAA4BvF,0BAAkB,CAACyF,SAA/C,CAAvB;AAEP,MAAaoC,kBAAkB,GAAG,CAAC7H,0BAAkB,CAACmI,QAApB,EAA8BnI,0BAAkB,CAACoI,WAAjD,CAA3B;AAEP,MAAa+J,gBAAgB,GAAG,CAACnS,0BAAkB,CAACgS,MAApB,EAA4BhS,0BAAkB,CAACiS,KAA/C,CAAzB;AAEP,MAAalK,qBAAqB,GAAG,CAAC/H,0BAAkB,CAACqI,UAApB,EAAgCrI,0BAAkB,CAACsI,aAAnD,CAA9B;AAEP,MAAaR,mBAAmB,GAAG,CAAC9H,0BAAkB,CAACuI,QAApB,EAA8BvI,0BAAkB,CAACwI,WAAjD,CAA5B;AAEP,MAAa4J,eAAe,GAAG,CAC7BpS,0BAAkB,CAAC2F,QADU,EAE7B3F,0BAAkB,CAAC6F,YAFU,EAG7B7F,0BAAkB,CAAC0F,WAHU,EAI7B1F,0BAAkB,CAAC4F,eAJU,CAAxB;AAOP,MAAae,iBAAiB,GAAG,CAAC3G,0BAAkB,CAAC8F,OAApB,EAA6B9F,0BAAkB,CAAC+F,OAAhD,CAA1B;AAEP,MAAasM,yBAAyB,GAAG,CACvC,GAAGH,cADoC,EAEvC,GAAGE,eAFoC,EAGvC,GAAGD,gBAHoC,EAIvC,GAAGxL,iBAJoC,CAAlC;AAOP,MAAa2L,uBAAuB,GAAG,CACrC,GAAGJ,cADkC,EAErC,GAAGE,eAFkC,EAGrC,GAAGD,gBAHkC,EAIrC,GAAGxL,iBAJkC,CAAhC;AAOP,MAAa4L,uBAAuB,GAAG,CACrC,GAAGL,cADkC,EAErC,GAAGrK,kBAFkC,EAGrC,GAAGE,qBAHkC,EAIrC,GAAGD,mBAJkC,EAKrC,GAAGqK,gBALkC,CAAhC;;ACtCP,WAAY/D;AACVA,EAAAA,mBAAA,SAAA;AACAA,EAAAA,qBAAA,WAAA;AACD,CAHD,EAAYA,mBAAW,KAAXA,mBAAW,KAAA,CAAvB;;MC3GaoE,kBAAkB,GAAIC,GAAD,mCAA8CC,MAAM,CAACC,IAAP,CAAYF,GAAZ,CAAzE;AAEP,MAAaG,iBAAiB,GAAG,CAACH,GAAD,EAAWhmB,MAAX,KAC/BgmB,GAAG,CACAI,QADH,CACY,QADZ,EACuBtP,GAAD;AAClB9W,EAAAA,MAAM,QAAN,YAAAA,MAAM,CAAEqmB,OAAR,CAAgB,OAAY7kB,KAAZ;QAAC;AAAEzP,MAAAA;AAAF;AACf+kB,IAAAA,GAAG,CAACwP,IAAJ,CAAS9kB,KAAK,IAAI,CAAAxB,MAAM,QAAN,YAAAA,MAAM,CAAEvO,MAAR,IAAiB,CAArB,CAAd,EAAuCM,KAAvC;AACD,GAFD;AAGD,CALH,EAMG4G,IANH,CAMQ,CANR,EAMW,CANX,EAOGC,EAPH,CAOM,CAPN,EAOS,CAPT,CADK;;AAWP,MAAa2tB,mBAAmB,GAAG,CAACC,YAAD,EAAoBryB,MAApB,EAA4C6xB,GAA5C,EAA0DS,EAA1D;;;AACjC,MAAI,CAACtyB,MAAL,EAAa,OAAOqyB,YAAP;AAEb,QAAME,UAAU,GAAGV,GAAG,IAAI7xB,MAAM,CAACwyB,IAAjC;AAEA,MAAI,CAACD,UAAL,EAAiB,OAAOF,YAAP;AAEjBA,EAAAA,YAAY,CAACI,KAAb;AAEA,QAAM;AAAE/hB,IAAAA,IAAF;AAAQ6c,IAAAA,KAAR;AAAelb,IAAAA,UAAf;AAA2Bgb,IAAAA;AAA3B,MAAsCrtB,MAA5C;AACA,QAAM0yB,cAAc,GAAG,CAACJ,EAAD,IAAO,CAACC,UAAU,CAACrtB,QAAX,CAAoB,WAApB,CAAR,IAA4C,CAACqtB,UAAU,CAACrtB,QAAX,CAAoB,eAApB,CAApE;AACA,QAAMytB,QAAQ,GAAGJ,UAAU,CAAC/a,OAAX,CAAmB,oCAAnB,EAAyD,EAAzD,CAAjB;;AAEA,MAAIkb,cAAJ,EAAoB;AAAA;;AAClBL,IAAAA,YAAY,CAACR,GAAb,CAAiBc,QAAjB;AAEA,UAAMC,eAAe,aAAG,qBAAqBC,IAArB,CAA0BN,UAA1B,CAAH,qBAAG,OAAwC,CAAxC,CAAxB;;AAEA,QAAIK,eAAJ,YAAIA,eAAe,CAAG,CAAH,CAAnB,EAA0B;AACxBP,MAAAA,YAAY,CAACS,OAAb,CAAqBF,eAArB;AACD;;AAEDP,IAAAA,YAAY,CAAC3hB,IAAb,CAAkBA,IAAlB;AACD,GAVD,MAUO;AACL,UAAMqiB,KAAK,GAAGT,EAAE,KAAIK,QAAJ,oBAAIA,QAAQ,CAAEztB,QAAV,CAAmB,WAAnB,CAAJ,CAAhB;AACA,QAAI8tB,WAAW,GAAGD,KAAK,GAAGnD,2BAAH,GAAiCD,mBAAxD;AACA,UAAMsD,WAAW,GAAGviB,IAAI,IAAIsiB,WAA5B;AACA,QAAIE,OAAO,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAOF,WAAP,EAAoBA,WAApB,CAAd;AACA,UAAMzhB,WAAW,GACfvL,iBAAiB,CAAEqM,UAAF,oBAAEA,UAA6B,CAAEd,WAAjC,CAAjB,KACC,QAAQc,UAAR,oBAAQA,UAA6B,CAAEhB,WAAvC,MAAuD,QAAvD,GAAkE,CAAlE,GAAsE,CADvE,CADF;;AAIA,QAAIE,WAAJ,EAAiB;AACfyhB,MAAAA,WAAW,IAAIzhB,WAAf;AACA2hB,MAAAA,OAAO,GAAG,CAAC,CAAC3hB,WAAD,GAAe,CAAhB,EAAmB,CAACA,WAAD,GAAe,CAAlC,EAAqCyhB,WAArC,EAAkDA,WAAlD,CAAV;AACD;;AAED,QAAID,KAAJ,EAAW;AACTV,MAAAA,YAAY,CAAC3hB,IAAb,CAAqBuiB,WAArB,SAAyCA,WAAzC,SAA0DH,OAA1D,CAAkEI,OAAO,CAACztB,IAAR,CAAa,GAAb,CAAlE;AAEA,YAAM0tB,SAAS,GAAGb,EAAE,KAAKjgB,UAAL,oBAAKA,UAA6B,CAAEvM,IAApC,CAApB;;AAEA,UAAIqtB,SAAJ,EAAe;AACb,cAAM9hB,WAAW,GAAGrL,iBAAiB,CAAEqM,UAAF,oBAAEA,UAA6B,CAAEhB,WAAjC,CAArC;AACA,cAAMyC,SAAS,GAAG9N,iBAAiB,CAAEqM,UAAF,oBAAEA,UAA6B,CAAEyB,SAAjC,CAAnC;AAEAue,QAAAA,YAAY,CAACR,GAAb,CACEsB,SAAS,KAAK3F,mBAAW,CAAC3iB,MAA1B,wEAGY+kB,2BAA2B,GAAG,CAH1C,iCAIYA,2BAA2B,GAAG,CAJ1C,gCAKWA,2BAA2B,GAAG,CALzC,oCAMc9b,SAAS,IAAI+b,yBAN3B,uCAOgBxe,WAAW,IAAIye,2BAP/B,4CAQsBve,WARtB,kGAYeqe,2BAZf,qCAagBA,2BAbhB,8DAec9b,SAAS,IAAI+b,yBAf3B,uCAgBgBxe,WAAW,IAAIye,2BAhB/B,4CAiBsBve,WAjBtB,yBADF;AAqBA8gB,QAAAA,YAAY,CAACR,GAAb,CAAiBc,QAAjB;AACAN,QAAAA,YAAY,CAACvvB,IAAb,CAAkB,8BAAlB,EAAkDswB,IAAlD,CAAwDC,IAAD,IAAeA,IAAI,CAAC/Q,MAAL,EAAtE;AACA+P,QAAAA,YAAY,CAACvvB,IAAb,CAAkB,kBAAlB,EAAsCswB,IAAtC,CAA4CC,IAAD,IACzCA,IAAI,CAAC9iB,MAAL,CAAYqf,2BAA2B,GAAG,CAA1C,EAA6CA,2BAA2B,GAAG,CAA3E,EAA8E9lB,IAA9E,CAAmF,OAAnF,CADF,EA3Ba;;AAgCb,YAAIjE,sBAAsB,CAAEwM,UAAF,oBAAEA,UAA6B,CAAEyB,SAAjC,CAA1B,EAAyF;AAAA;;AACvF,gBAAMme,QAAQ,GAAGD,iBAAiB,CAChCK,YADgC,EAE9BhgB,UAF8B,6CAE9BA,UAA6B,CAAEyB,SAFD,qBAE9B,sBAA2EjI,MAF7C,CAAlC;AAKA,iCAAAwmB,YAAY,CAACvvB,IAAb,CAAkB,YAAlB,EAAgC,CAAhC,0CAAoCgH,IAApC,CAAyCmoB,QAAzC;AACD;AACF,OAxCD,MAwCO;AACLI,QAAAA,YAAY,CAACR,GAAb,CAAiBc,QAAjB;AACD;AACF,KAhDD,MAgDO;AACL,YAAM7e,SAAS,GAAG9N,iBAAiB,CAAEqnB,MAAF,oBAAEA,MAAyB,CAAEvZ,SAA7B,CAAnC;AAEAue,MAAAA,YAAY,CAAC3hB,IAAb,CAAqBuiB,WAArB,SAAyCA,WAAzC,SAA0DH,OAA1D,CAAkEI,OAAO,CAACztB,IAAR,CAAa,GAAb,CAAlE;AACA4sB,MAAAA,YAAY,CAACR,GAAb,CAAiBc,QAAjB;AACAN,MAAAA,YAAY,CAACvvB,IAAb,CAAkB,gBAAlB,EAAoCswB,IAApC,CAAyCC,IAAI;AAC3CA,QAAAA,IAAI,CAAC9iB,MAAL,CAAYof,mBAAmB,GAAG,CAAlC,EAAqCA,mBAAmB,GAAG,CAA3D,EAA8D7lB,IAA9D,CAAmEgK,SAAS,IAAI+b,yBAAhF;AACD,OAFD;AAGD;AACF;;AAED,QAAMyD,aAAa,cAAG,gCAAgCT,IAAhC,CAAqCN,UAArC,CAAH,qBAAG,QAAmD,CAAnD,CAAtB;;AAEA,MAAIe,aAAJ,EAAmB;AACjB,UAAMC,cAAc,GAAGD,aAAa,CAACvxB,KAAd,CAAoB,CAApB,EAAuB,CAAC,CAAxB,EAA2BuD,KAA3B,CAAiC,GAAjC,CAAvB;AAEA+sB,IAAAA,YAAY,CAACmB,SAAb,CAAuB;AAAE,OAACD,cAAc,CAAC,CAAD,CAAf,GAAqBA,cAAc,CAAC,CAAD,CAAd,CAAkBjuB,KAAlB,CAAwB,GAAxB;AAAvB,KAAvB;AACD;;AAED,QAAMmuB,YAAY,GAAGpB,YAAY,CAACmB,SAAb,CAAuB,QAAvB,CAArB;;AAEA,MAAIC,YAAJ,EAAkB;AAChBpB,IAAAA,YAAY,CAACqB,MAAb,CAAoB,CAACD,YAArB,EAAmC,CAAnC,EAAsC,CAAtC;AACD;;AACD,MAAIlG,KAAK,KAAKrf,SAAd,EAAyB;AACvBmkB,IAAAA,YAAY,CAACqB,MAAb,CAAqBnG,KAAgB,IAAI,MAAM7e,IAAI,CAAC8B,EAAf,CAArC,EAAyD,CAAzD,EAA4D,CAA5D;AACD;;AAED,SAAO6hB,YAAP;AACD,CAlHM;;ICzBMsB,qBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAKje,SAAL,GAAiB,KAAKnE,WAAL,GAAmB,CAA3C;AACD;AAHH;AAAA;AAAA,WAKE,2BAAiC0D,WAAjC;UAAY,CAACtU,CAAD,EAAIC,CAAJ;AACV,aAAO,CAAC,CAAC,CAACD,CAAC,GAAG,CAAC,KAAK+U,SAAL,GAAiB,CAAjB,GAAqB,KAAKnE,WAA3B,IAA0C0D,WAA/C,EAA4DrU,CAA5D,CAAD,CAAD,CAAP;AACD;AAPH;AAAA;AAAA,WASE,sBAAawU,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAc1L,kBAAc,CAACG,YAA9C;AAEA,aAAO,IAAIwL,eAAJ,CACLoZ,sBAAsB,CAAC7Z,UAAU,CAAC,CAAD,CAAV,CAAc,CAAd,CAAD,EAAmB,KAAKM,SAAxB,CADjB,EAEL;AACE5B,QAAAA,SAAS,EAAE6B,QAAQ,GAAG,KAAKrE,KAAR,GAAgB,aADrC;AAEED,QAAAA,WAAW,EAAE,KAAKC,KAFpB;AAGEC,QAAAA,WAAW,EAAE,KAAKA,WAHpB;AAIEuE,QAAAA,QAAQ,EAAE;AAJZ,OAFK,CAAP;AASD;AArBH;;AAAA;AAAA,EAA2CrB,eAA3C;;ICDamf,qBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAKle,SAAL,GAAiB,KAAKnE,WAA7B;AACD;AAHH;AAAA;AAAA,WAIE,2BAAiC0D,WAAjC;UAAY,CAACtU,CAAD,EAAIC,CAAJ;AACV,aAAO,CACL,CACE,CAACD,CAAD,EAAIC,CAAC,GAAG,KAAK8U,SAAL,GAAiB,CAAzB,CADF,EAEE,CAAC/U,CAAD,EAAIC,CAAC,GAAG,KAAK8U,SAAL,GAAiB,CAAzB,CAFF,EAGE,CAAC/U,CAAC,GAAG,KAAK+U,SAAL,GAAiBT,WAAtB,EAAmCrU,CAAC,GAAG,KAAK8U,SAAL,GAAiB,CAAxD,CAHF,EAIE,CAAC/U,CAAC,GAAG,KAAK+U,SAAL,GAAiBT,WAAtB,EAAmCrU,CAAC,GAAG,KAAK8U,SAAL,GAAiB,CAAxD,CAJF,CADK,CAAP;AAQD;AAbH;AAAA;AAAA,WAeE,sBAAaN,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAc1L,kBAAc,CAACK,YAA9C;AAEA,aAAO,IAAIsL,eAAJ,CAAeT,UAAf,EAA2B;AAChCU,QAAAA,QAAQ,EAAE,IADsB;AAEhChC,QAAAA,SAAS,EAAE6B,QAAQ,GAAG,KAAKrE,KAAR,GAAgB,KAAK,CAFR;AAGhC6B,QAAAA,SAAS,EAAEwC,QAAQ,GAAGI,cAAS,CAAC/H,KAAb,GAAqB+H,cAAS,CAAC5L,IAHlB;AAIhCyH,QAAAA,OAAO,EAAE,QAJuB;AAKhCoE,QAAAA,QAAQ,EAAE,OALsB;AAMhC3E,QAAAA,WAAW,EAAE,KAAKC,KANc;AAOhCC,QAAAA,WAAW,EAAE,KAAKA;AAPc,OAA3B,CAAP;AASD;AA3BH;;AAAA;AAAA,EAA2CkD,eAA3C;;ACCO,MAAMof,kBAAkB,GAC7BC,OADgC;AAGhC,UAAQA,OAAO,CAACle,IAAhB;AACE,SAAK1L,kBAAc,CAACO,KAApB;AACA,SAAKP,kBAAc,CAACI,WAApB;AACE,aAAO,IAAImL,oBAAJ,CAAyBqe,OAAzB,CAAP;;AACF,SAAK5pB,kBAAc,CAACS,MAApB;AACA,SAAKT,kBAAc,CAACK,YAApB;AACE,aAAO,IAAIqpB,qBAAJ,CAA0BE,OAA1B,CAAP;;AACF,SAAK5pB,kBAAc,CAACW,MAApB;AACA,SAAKX,kBAAc,CAACG,YAApB;AACE,aAAO,IAAIspB,qBAAJ,CAA0BG,OAA1B,CAAP;;AACF;AACE,aAAO,IAAP;AAXJ;AAaD,CAhBM;;ACHP,MAAMC,uBAAuB,GAAG,CAC9Bxf,IAD8B,EAE9BmB,SAF8B,EAG9Bse,UAH8B;AAK9B,QAAMC,YAAY,GAAG1f,IAAI,CAACxS,KAAL,GAAayqB,OAAb,EAArB;;AAEA,OAAK,IAAIrd,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8kB,YAAY,CAAC32B,MAAjC,EAAyC6R,CAAC,EAA1C,EAA8C;AAC5C,UAAMoN,WAAW,GAAG0X,YAAY,CAAC9kB,CAAD,CAAhC;;AAEA,QAAI6kB,UAAU,IAAI7kB,CAAC,KAAK,CAAxB,EAA2B;AACzB8kB,MAAAA,YAAY,CAAC9kB,CAAD,CAAZ,GAAkB,CAACoN,WAAW,CAAC,CAAD,CAAX,GAAiB7G,SAAlB,EAA6B6G,WAAW,CAAC,CAAD,CAAxC,CAAlB;AACD;;AAED,UAAM2X,eAAe,GAAGD,YAAY,CAAC9kB,CAAC,GAAG,CAAL,CAApC;;AAEA,QAAI+kB,eAAe,IAAIA,eAAe,CAAC,CAAD,CAAf,GAAqB3X,WAAW,CAAC,CAAD,CAAvD,EAA4D;AAC1D0X,MAAAA,YAAY,CAAC9kB,CAAD,CAAZ,GAAkB,CAChB+kB,eAAe,CAAC,CAAD,CAAf,GAAqBxlB,IAAI,CAACylB,GAAL,CAASD,eAAe,CAAC,CAAD,CAAf,GAAqB3X,WAAW,CAAC,CAAD,CAAzC,CADL,EAEhBA,WAAW,CAAC,CAAD,CAFK,CAAlB;AAID;AACF;;AAED,SAAO0X,YAAY,CAACzH,OAAb,EAAP;AACD,CAzBD;;AA2BA,MAAM4H,sBAAsB,GAAG,CAC7B7f,IAD6B,EAE7BmB,SAF6B,EAG7B2e,WAH6B;AAK7B,QAAMC,OAAO,GAAG/f,IAAI,CAACxS,KAAL,EAAhB;;AAEA,OAAK,IAAIoN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmlB,OAAO,CAACh3B,MAA5B,EAAoC6R,CAAC,EAArC,EAAyC;AACvC,UAAMoN,WAAW,GAAG+X,OAAO,CAACnlB,CAAD,CAA3B;;AAEA,QAAIA,CAAC,KAAK,CAAN,IAAWklB,WAAf,EAA4B;AAC1BC,MAAAA,OAAO,CAACnlB,CAAD,CAAP,GAAa,CAACoN,WAAW,CAAC,CAAD,CAAX,GAAiB7G,SAAlB,EAA6B6G,WAAW,CAAC,CAAD,CAAxC,CAAb;AACD;;AAED,UAAMgY,eAAe,GAAGD,OAAO,CAACnlB,CAAC,GAAG,CAAL,CAA/B;;AAEA,QAAIolB,eAAe,IAAIA,eAAe,CAAC,CAAD,CAAf,GAAqBhY,WAAW,CAAC,CAAD,CAAvD,EAA4D;AAC1D+X,MAAAA,OAAO,CAACnlB,CAAD,CAAP,GAAa,CACXolB,eAAe,CAAC,CAAD,CAAf,GAAqB7lB,IAAI,CAACylB,GAAL,CAAS5X,WAAW,CAAC,CAAD,CAAX,GAAiBgY,eAAe,CAAC,CAAD,CAAzC,CADV,EAEXhY,WAAW,CAAC,CAAD,CAFA,CAAb;AAID;AACF;;AAED,SAAO+X,OAAP;AACD,CAzBD;;AA2BA,AAAO,MAAME,mBAAmB,GAAG,CACjCvgB,KADiC,EAEjCzS,QAFiC,EAGjCkU,SAHiC;AAKjC,SAAOzB,KAAK,CAAC/U,GAAN,CAAU,CAACqV,IAAD,EAAOqO,SAAP;AACf,YAAQphB,QAAR;AACE,WAAK,OAAL;AACE,eAAOuyB,uBAAuB,CAC5Bxf,IAD4B,EAE5BmB,SAF4B,EAG5BkN,SAAS,KAAK3O,KAAK,CAAC3W,MAAN,GAAe,CAHD,CAA9B;;AAKF;AACE,eAAO82B,sBAAsB,CAAC7f,IAAD,EAAOmB,SAAP,EAAkBkN,SAAS,KAAK,CAAhC,CAA7B;AARJ;AAUD,GAXM,CAAP;AAYD,CAjBM;;MCpCM6R,SAAS,GAAIxgB,KAAD,IACvBA,KAAK,CAAC/U,GAAN,CAAUqV,IAAI,IACZA,IAAI,CAACrV,GAAL,CAASqd,WAAW,IAAIA,WAAW,CAACxa,KAAZ,EAAxB,CADF,CADK;AAKP,IAAa2yB,kBAAb;AAAA;;AAAA;;AACE,8BAAmBtjB,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9H,iBAAiB,0BAACoL,cAAc,CAACpI,MAAhB,qBAAC,sBAAuBsI,KAAxB,CAAlB,CAFpB;AAGJC,MAAAA,WAAW,EAAEjD,KAAK;AAEhBtI,MAAAA,iBAAiB,2BAACoL,cAAc,CAACpI,MAAhB,qBAAC,uBAAuBqG,KAAxB,CAFD,EAGhBlB,cAAc,CAACC,gBAHC,EAIhBD,cAAc,CAACE,gBAJC,CAHd;AASJ;AACAmD,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACpI,MAAhB,CAVjB;AAWJ;AACA4I,MAAAA,OAAO,EAAEjI,aAAa,CAACyH,cAAc,CAACpI,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AAZvD,KAAN;AADiB,wBAAA,GAAAoI,cAAA;;AAelB;;AAhBH;AAAA;AAAA,WAkBE,wBAAelO,OAAf,EAAkCtB,UAAlC,EAAsDU,GAAtD;AACE,UAAI,CAACiG,sBAAsB,CAAC,KAAK6I,cAAN,CAA3B,EACE,8FAA4BlO,OAA5B,EAAqCtB,UAArC,EAAiDU,GAAjD;AAEF,YAAM;AACJyG,QAAAA,MADI;AAEJD,QAAAA;AAFI,UAGF,KAAKsI,cAHT;AAIA,YAAMujB,OAAO,GAAa,EAA1B;AAEA,YAAMC,WAAW,GAAG1xB,OAAO,CAAC2xB,KAAR,EAApB;AAEA,YAAMC,oBAAoB,GAAGjB,kBAAkB,CAAC;AAC9CviB,QAAAA,KAAK,EAAE,KAAKD,WADkC;AAE9C;AACAuE,QAAAA,IAAI,EAAE9M,SAAS,CAAChD,IAH8B;AAI9CtE,QAAAA,QAAQ,EAAE,MAJoC;AAK9C;AACAkP,QAAAA,IAAI,EAAE5H,SAAS,CAAC4H,IAN8B;AAO9Ca,QAAAA,WAAW,EAAE,KAAKA;AAP4B,OAAD,CAA/C;AASA,YAAMwjB,iBAAiB,GAAGlB,kBAAkB,CAAC;AAC3CviB,QAAAA,KAAK,EAAE,KAAKD,WAD+B;AAE3C;AACAuE,QAAAA,IAAI,EAAE7M,MAAM,CAACjD,IAH8B;AAI3CtE,QAAAA,QAAQ,EAAE,OAJiC;AAK3C;AACAkP,QAAAA,IAAI,EAAE3H,MAAM,CAAC2H,IAN8B;AAO3Ca,QAAAA,WAAW,EAAE,KAAKA;AAPyB,OAAD,CAA5C;;AAUA,UAAIujB,oBAAJ,EAA0B;AACxB,cAAME,YAAY,GAAGR,mBAAmB,CACtCI,WAAW,CAAC3gB,KAD0B,EAEtC,MAFsC,EAGtC6gB,oBAAoB,CAACG,SAHiB,CAAxC;AAKA,cAAMC,MAAM,GAAGJ,oBAAoB,CAACK,SAArB,CACbH,YADa,EAEb9xB,OAAO,CAACZ,GAFK,EAGbV,UAHa,EAIbU,GAJa,CAAf;AAOAsyB,QAAAA,WAAW,CAAC3gB,KAAZ,GAAoB+gB,YAApB;AACAL,QAAAA,OAAO,CAACxoB,IAAR,CAAa+oB,MAAb;AACD;;AAED,UAAIH,iBAAJ,EAAuB;AACrB,cAAMC,YAAY,GAAGR,mBAAmB,CACtCI,WAAW,CAAC3gB,KAD0B,EAEtC,OAFsC,EAGtC8gB,iBAAiB,CAACE,SAHoB,CAAxC;AAKA,cAAMC,MAAM,GAAGH,iBAAiB,CAACI,SAAlB,CACbH,YADa,EAEb9xB,OAAO,CAACZ,GAFK,EAGbV,UAHa,EAIbU,GAJa,CAAf;AAOAsyB,QAAAA,WAAW,CAAC3gB,KAAZ,GAAoB+gB,YAApB;AACAL,QAAAA,OAAO,CAACxoB,IAAR,CAAa+oB,MAAb;AACD;;;AAGDP,MAAAA,OAAO,CAACS,OAAR,CAAgB,0FAAwBR,WAAxB,EAAqChzB,UAArC,EAAiDU,GAAjD,CAAhB;AAEA,aAAOqyB,OAAP;AACD;AAvFH;AAAA;AAAA,WAyFE;AACE,aAAO,IAAID,kBAAJ,CAAuB,KAAKtjB,cAA5B,CAAP;AACD;AA3FH;;AAAA;AAAA,EAAwCikB,6BAAxC;;ICZaC,WAAb;AAAA;;AAAA;;AAGE;;;QAAY;AAAEC,MAAAA,SAAF;AAAaxqB,MAAAA;AAAb,2BAA2C;;;;AACrD,8BAAM;AAAEA,MAAAA;AAAF,KAAN;AACA,UAAKwqB,SAAL,GAAiBA,SAAjB;;AACD;;AANH;AAAA;AAAA,WAQY,yBAAgBryB,OAAhB;AACR,YAAMsyB,IAAI,GAAGzjB,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAb;AAEA,WAAKyjB,SAAL,CAAevyB,OAAO,CAAC6f,OAAvB,EAAgCyS,IAAhC;AAEA,aAAOA,IAAP;AACD;AAdH;AAAA;AAAA,WAgBY,4BAAmBtyB,OAAnB;AACR,WAAKuyB,SAAL,CAAevyB,OAAO,CAAC6f,OAAvB,EAAgC,KAAK2S,OAAL,CAAaxyB,OAAb,CAAhC;AACD;AAlBH;AAAA;AAAA,WAoBU,mBAAU6f,OAAV,EAA2ByS,IAA3B;AACN,UAAI,CAACA,IAAL,EAAW;AACT;AACD;;AAED,YAAMG,SAAS,GAAG,KAAKJ,SAAvB;;AAEA,UAAII,SAAJ,EAAe;AACbC,QAAAA,QAAQ,CAACV,MAAT,CAAgBz2B,4BAAA,CAACk3B,SAAD;AAAW5S,UAAAA,OAAO,EAAEA;SAApB,CAAhB,EAAiDyS,IAAjD;AACD,OAFD,MAEO;AACLA,QAAAA,IAAI,CAACK,SAAL,GAAiB9S,OAAjB;AACD;AACF;AAhCH;;AAAA;AAAA,EAAiC+S,0BAAjC;;MCTaC,aAAa,GAAW,CAAC,CAAD,EAAI,CAAC,EAAL,CAA9B;AAQP,MAAa1S,iBAAiB,GAAI2S,KAAD;AAC/B,QAAM;AACJjrB,IAAAA,MAAM,GAAGgrB,aADL;AAEJzS,IAAAA,WAAW,GAAG;AAAA,UAAC;AAAEP,QAAAA;AAAF,OAAD;AAAA,aAAsCtkB,4BAAA,MAAA,MAAA,EAAMskB,OAAN,CAAtC;AAAA,KAFV;AAGJS,IAAAA,OAAO,GAAGtV;AAHN,MAIF8nB,KAAK,IAAI,EAJb;AAMA,SAAO,IAAIV,WAAJ,CAAgB;AACrBvqB,IAAAA,MADqB;AAErBwqB,IAAAA,SAAS,EAAE;AAAA,UAAC;AAAExS,QAAAA;AAAF,OAAD;AAAA,aACTO,WAAW,CAAC;AAAEP,QAAAA,OAAF;AAAWS,QAAAA;AAAX,OAAD,CADF;AAAA;AAFU,GAAhB,CAAP;AAKD,CAZM;;SCRSyS,mBACdz0B;MACA;AACE+P,IAAAA,WAAW,GAAG,CADhB;AAEE2kB,IAAAA,WAFF;AAGEC,IAAAA,UAHF;AAIEzlB,IAAAA,IAAI,GAAG;AAJT;AAOA,QAAM0lB,cAAc,GAAG1lB,IAAI,GAAGa,WAAP,GAAqB4kB,UAA5C;AAEA,SAAO,IAAItgB,eAAJ,CAAeoZ,sBAAsB,CAACztB,QAAD,EAAW40B,cAAX,CAArC,EAAiE;AACtEtiB,IAAAA,SAAS,EAAE,aAD2D;AAEtEzC,IAAAA,WAAW,EAAE6kB,WAFyD;AAGtE3kB,IAAAA,WAAW,EAAE4kB,UAHyD;AAItErgB,IAAAA,QAAQ,EAAE;AAJ4D,GAAjE,CAAP;AAMD;AAED,SAAgBugB,uBACd70B;MACA;AACE6P,IAAAA,WADF;AAEEE,IAAAA,WAFF;AAGE2kB,IAAAA,WAHF;AAIEpiB,IAAAA,SAJF;AAKEqiB,IAAAA,UALF;AAMEzlB,IAAAA,IAAI,GAAG;AANT;AASA,SAAO,CACLulB,kBAAkB,CAACz0B,QAAD,EAAW;AAC3B+P,IAAAA,WAD2B;AAE3BF,IAAAA,WAF2B;AAG3B8kB,IAAAA,UAH2B;AAI3BD,IAAAA,WAJ2B;AAK3BxlB,IAAAA;AAL2B,GAAX,CADb,EAQL,IAAImF,eAAJ,CAAeoZ,sBAAsB,CAACztB,QAAD,EAAWkP,IAAX,CAArC,EAAuD;AACrDoD,IAAAA,SADqD;AAErDzC,IAAAA,WAFqD;AAGrDE,IAAAA,WAHqD;AAIrDuE,IAAAA,QAAQ,EAAE;AAJ2C,GAAvD,CARK,CAAP;AAeD;;ICjCYwgB,mBAAb;AAAA;;AAAA;;AAIE;AACA,+BAAYxC,OAAZ;;;6BACQA;AACP;;AAPH;AAAA;AAAA,WAmDS,wBACL5wB,OADK,EAELtB,UAFK,EAGLU,GAHK;AAKL,UAAI,EAAEY,OAAO,YAAYyZ,yBAArB,CAAJ,EAAwC,OAAO,EAAP;AACxC,YAAM;AAAEnb,QAAAA;AAAF,UAAe0B,OAAO,CAAC2rB,SAAR,CAAkBvsB,GAAlB,CAArB;AAEA,YAAMi0B,UAAU,GAAgB,CAC9B/0B,QAAQ,CAAC,CAAD,CAAR,GAAcI,UAAd,IAA4B,KAAKmJ,MAAL,CAAY,CAAZ,KAAkB,CAA9C,CAD8B,EAE9B,CAACvJ,QAAQ,CAAC,CAAD,CAAT,GAAeI,UAAf,IAA6B,KAAKmJ,MAAL,CAAY,CAAZ,KAAkB,CAA/C,CAF8B,CAAhC;AAKA,YAAMyrB,YAAY,GAAG,KAAKC,SAAL,CAAeF,UAAf,EAA2BrzB,OAA3B,CAArB;AACA,YAAMwzB,QAAQ,GAAG,KAAKC,QAAL,CAAcJ,UAAd,EAA0BrzB,OAA1B,CAAjB;AAEA,aAAOszB,YAAY,GAAG,CAACA,YAAD,EAAeE,QAAf,CAAH,GAA8B,CAACA,QAAD,CAAjD;AACD;AApEH;AAAA;AAAA,WAsEY,mBACRl1B,QADQ,EAERo1B,QAFQ;AAIR,aAAON,mBAAmB,CAACO,YAApB,CAAiCr1B,QAAjC,EAA2C,IAA3C,CAAP;AACD;AA3EH;AAAA;AAAA,WA6EY,kBAASA,QAAT,EAAgCo1B,QAAhC;AACR,aAAON,mBAAmB,CAACQ,WAApB,CAAgCt1B,QAAhC,EAA0C,IAA1C,CAAP;AACD;AA/EH;AAAA;AAAA,WASE,sBACEA,QADF;UAEE;AACE+P,QAAAA,WAAW,GAAG,CADhB;AAEE2kB,QAAAA,WAFF;AAGEC,QAAAA,UAHF;AAIEzlB,QAAAA,IAAI,GAAG;AAJT;AAOA,aAAO,IAAImF,eAAJ,CACLoZ,sBAAsB,CAACztB,QAAD,EAAWkP,IAAI,GAAGa,WAAP,GAAqB4kB,UAAhC,CADjB,EAEL;AACEriB,QAAAA,SAAS,EAAE,aADb;AAEEzC,QAAAA,WAAW,EAAE6kB,WAFf;AAGE3kB,QAAAA,WAAW,EAAE4kB,UAHf;AAIErgB,QAAAA,QAAQ,EAAE;AAJZ,OAFK,CAAP;AASD;AA3BH;AAAA;AAAA,WA6BE,qBACEtU,QADF;UAEE;AAAE+P,QAAAA,WAAF;AAAeuC,QAAAA,SAAf;AAA0BzC,QAAAA,WAA1B;AAAuCX,QAAAA,IAAI,GAAG;AAA9C;AAEA,aAAO,IAAImF,eAAJ,CAAeoZ,sBAAsB,CAACztB,QAAD,EAAWkP,IAAX,CAArC,EAAuD;AAC5DoD,QAAAA,SAD4D;AAE5DzC,QAAAA,WAF4D;AAG5DE,QAAAA,WAH4D;AAI5DuE,QAAAA,QAAQ,EAAE;AAJkD,OAAvD,CAAP;AAMD;AAvCH;AAAA;AAAA,WAyCE,iBACEtU,QADF,EAEEmf,MAFF;AAIE,YAAM6V,YAAY,GAAGF,mBAAmB,CAACO,YAApB,CAAiCr1B,QAAjC,EAA2Cmf,MAA3C,CAArB;AACA,YAAMoW,WAAW,GAAGT,mBAAmB,CAACQ,WAApB,CAAgCt1B,QAAhC,EAA0Cmf,MAA1C,CAApB;AAEA,aAAO6V,YAAY,GAAG,CAACA,YAAD,EAAeO,WAAf,CAAH,GAAiC,CAACA,WAAD,CAApD;AACD;AAjDH;;AAAA;AAAA,EAAyCC,iBAAzC;;ICMaC,kBAAb;AAAA;;AAAA;;AAQE;AACA,8BAAYnD,OAAZ;;;6BACQA;AACP;;AAXH;AAAA;AAAA,WAaS,wBACL5wB,OADK,EAELtB,UAFK,EAGLU,GAHK;AAKL,UAAI,EAAEY,OAAO,YAAYg0B,WAArB,CAAJ,EAAgC,OAAO,EAAP;;AAEhC,YAAM3a,WAAW,kGACfrZ,OADe,EAEftB,UAFe,EAGfU,GAHe,CAAjB;;AAKA,YAAM60B,UAAU,GAAG,KAAKC,aAAL,CAAmB7a,WAAnB,EAAgCrZ,OAAhC,CAAnB;AACA,YAAMszB,YAAY,GAAG,KAAKC,SAAL,CAAela,WAAf,EAA4BrZ,OAA5B,CAArB;AACA,YAAMm0B,aAAa,GAAG,KAAKC,gBAAL,CAAsB/a,WAAtB,CAAtB;AACA,UAAIoY,OAAO,GAAa,CAACwC,UAAD,CAAxB;;AAEA,UAAIX,YAAJ,EAAkB;AAChB7B,QAAAA,OAAO,GAAG,CAAC6B,YAAD,EAAeW,UAAf,CAAV;AACD;;AAED,UAAIE,aAAJ,EAAmB;AACjB1C,QAAAA,OAAO,GAAGA,OAAO,CAAC4C,MAAR,CAAeF,aAAf,CAAV;AACD;;AAED,aAAO1C,OAAP;AACD;AAvCH;AAAA;AAAA,WAyCY,mBACRpY,WADQ,EAERqa,QAFQ;AAIR,aAAO,IAAI/gB,eAAJ,CAAe0G,WAAf,EAA4B;AACjCpJ,QAAAA,SAAS,EAAE4C,cAAS,CAAC5L,IADY;AAEjC2L,QAAAA,QAAQ,EAAE,KAAK0hB,OAFkB;AAGjCnmB,QAAAA,WAAW,EAAE,KAAK6kB,WAHe;AAIjC3kB,QAAAA,WAAW,EAAE,KAAK4kB,UAJe;AAKjC3kB,QAAAA,QAAQ,EAAE,KAAKA;AALkB,OAA5B,CAAP;AAOD;AApDH;AAAA;AAAA,WAsDY,uBACR+K,WADQ,EAERqa,QAFQ;AAIR,aAAO,IAAI/gB,eAAJ,CAAe0G,WAAf,EAA4B;AACjCpJ,QAAAA,SAAS,EAAE,KAAKqkB,OAAL,GAAezhB,cAAS,CAAC/H,KAAzB,GAAiC+H,cAAS,CAAC5L,IADrB;AAEjC2L,QAAAA,QAAQ,EAAE,KAAK0hB,OAFkB;AAGjC1jB,QAAAA,SAAS,EAAE,KAAKA,SAHiB;AAIjCzC,QAAAA,WAAW,EAAE,KAAKA,WAJe;AAKjCE,QAAAA,WAAW,EAAE,KAAKA,WALe;AAMjCC,QAAAA,QAAQ,EAAE,KAAKA;AANkB,OAA5B,CAAP;AAQD;AAlEH;AAAA;AAAA,WAoEY,0BACR+K,WADQ;AAGR,UAAI,CAAC,KAAKkb,UAAV,EAAsB;AAEtB,YAAMC,iBAAiB,GAAGnb,WAAW,CAACxQ,MAAZ,CAAmB,CAAC4rB,GAAD,EAAMC,IAAN;AAC3C,eAAOD,GAAG,CAACJ,MAAJ,CAAWK,IAAX,CAAP;AACD,OAFyB,EAEvB,EAFuB,CAA1B;AAIA,aAAOF,iBAAiB,CACrBx4B,GADI,CACA24B,KAAK,IACRxB,sBAAsB,CAACwB,KAAD,EAAQ;AAC5BnnB,QAAAA,IAAI,EAAE,CADsB;AAE5Ba,QAAAA,WAAW,EAAE,CAFe;AAG5B2kB,QAAAA,WAAW,EAAE,KAAKA,WAHU;AAI5B7kB,QAAAA,WAAW,EAAE,KAAKA,WAJU;AAK5B8kB,QAAAA,UAAU,EACR,KAAK2B,gBAAL,KAA0B5pB,SAA1B,GAAsC,KAAK4pB,gBAA3C,GAA8D,CANpC;AAO5BhkB,QAAAA,SAAS,EAAE;AAPiB,OAAR,CAFnB,EAYJ/H,MAZI,CAYG,CAAC4rB,GAAD,EAAMC,IAAN,KAAeD,GAAG,CAACJ,MAAJ,CAAWK,IAAX,CAZlB,EAYoC,EAZpC,CAAP;AAaD;AA1FH;;AAAA;AAAA,EAAwCG,6BAAxC;AA6FA,MAAMC,gBAAgB,GAAG;AACvBzmB,EAAAA,WAAW,EAAE,CADU;AAEvBF,EAAAA,WAAW,EAAE,SAFU;AAGvB8kB,EAAAA,UAAU,EAAE,CAHW;AAIvBD,EAAAA,WAAW,EAAE;AAJU,CAAzB;AAOA,MAAM+B,mBAAmB,GAAG;AAC1B5mB,EAAAA,WAAW,EAAE,SADa;AAE1B8kB,EAAAA,UAAU,EAAE,CAFc;AAG1B2B,EAAAA,gBAAgB,EAAE;AAHQ,CAA5B;AAMA,MAAaI,mBAAmB,gBAAG,IAAIjB,kBAAJ,4BAC9Be,gBAD8B,EAE9BC,mBAF8B;AAGjCT,EAAAA,OAAO,EAAE,KAHwB;AAIjCC,EAAAA,UAAU,EAAE;AAJqB,GAA5B;AAOP,MAAahV,iBAAiB,gBAAG,IAAIwU,kBAAJ,4BAC5Be,gBAD4B,EAE5BC,mBAF4B;AAG/BnkB,EAAAA,SAAS,EAAE,0BAHoB;AAI/B0jB,EAAAA,OAAO,EAAE,IAJsB;AAK/BC,EAAAA,UAAU,EAAE;AALmB,GAA1B;AAQP,MAAMU,gBAAgB,GAAG;AACvBznB,EAAAA,IAAI,EAAE,EADiB;AAEvBa,EAAAA,WAAW,EAAE,CAFU;AAGvBF,EAAAA,WAAW,EAAE,SAHU;AAIvByC,EAAAA,SAAS,EAAE,SAJY;AAKvBoiB,EAAAA,WAAW,EAAE,uBALU;AAMvBC,EAAAA,UAAU,EAAE;AANW,CAAzB;AASA,MAAaiC,wBAAwB,gBAAG,IAAI9B,mBAAJ,4BACnC6B,gBADmC;AAEtC9mB,EAAAA,WAAW,EAAE,SAFyB;AAGtC8kB,EAAAA,UAAU,EAAE;AAH0B,GAAjC;;IC5IMkC,mBAAb;AAAA;;AAAA;;AAIE;AACA,+BAAYrC,KAAZ;;;6BACQA;AACP;;AAPH;AAAA;AAAA,WASY,mBACRx0B,QADQ,EAER0B,OAFQ;AAIR,UAAIA,OAAO,CAACo1B,UAAZ,EAAwB;AACtB,kGAAuB92B,QAAvB,EAAiC0B,OAAjC;AACD;AACF;AAhBH;AAAA;AAAA,WAkBY,kBACR1B,QADQ,EAER0B,OAFQ;AAIR,YAAM6zB,WAAW,qFAAkBv1B,QAAlB,EAA4B0B,OAA5B,CAAjB;;AAEA,UAAIA,OAAO,CAACo1B,UAAZ,EAAwB;AACtBvB,QAAAA,WAAW,CAAC1lB,WAAZ,GAA0B,KAAKknB,mBAA/B;AACAxB,QAAAA,WAAW,CAACjjB,SAAZ,GAAwB,KAAK0kB,iBAA7B;AACD;;AAED,aAAOzB,WAAP;AACD;AA9BH;;AAAA;AAAA,EAAyCT,mBAAzC;;ICKamC,kBAAb;AAAA;;AAAA;;AAKE;AACA,8BAAYzC,KAAZ;;;6BACQA;AACP;;AARH;AAAA;AAAA,WAUY,mBACRzZ,WADQ,EAERrZ,OAFQ;AAIR,UAAIA,OAAO,CAACo1B,UAAZ,EAAwB;AACtB,iGAAuB/b,WAAvB,EAAoCrZ,OAApC;AACD;AACF;AAjBH;AAAA;AAAA,WAmBY,uBACRqZ,WADQ,EAERrZ,OAFQ;AAIR,YAAMi0B,UAAU,yFAAuB5a,WAAvB,EAAoCrZ,OAApC,CAAhB;;AACA,UAAIA,OAAO,CAACo1B,UAAZ,EAAwB;AACtBnB,QAAAA,UAAU,CAACrjB,SAAX,GAAuB,KAAK0kB,iBAA5B;AACArB,QAAAA,UAAU,CAAC9lB,WAAX,GAAyB,KAAKknB,mBAA9B;;AACA,YAAI,KAAKG,mBAAL,KAA6B,KAAK,CAAtC,EAAyC;AACvCvB,UAAAA,UAAU,CAAC5lB,WAAX,GAAyB,KAAKmnB,mBAA9B;AACD;AACF;;AAED,aAAOvB,UAAP;AACD;AAjCH;;AAAA;AAAA,EAAwCF,kBAAxC;;MChBara,aAAa,gBAAG,IAAIyb,mBAAJ,CAAwB;AACnD3nB,EAAAA,IAAI,EAAE,CAD6C;AAEnDa,EAAAA,WAAW,EAAE,CAFsC;AAGnDF,EAAAA,WAAW,EAAE,wBAHsC;AAInDyC,EAAAA,SAAS,EAAE,2BAJwC;AAKnDoiB,EAAAA,WAAW,EAAE,wBALsC;AAMnDC,EAAAA,UAAU,EAAE,CANuC;AAQnDoC,EAAAA,mBAAmB,EAAE,SAR8B;AASnDC,EAAAA,iBAAiB,EAAE;AATgC,CAAxB,CAAtB;AAYP,MAAaxb,gBAAgB,gBAAG,IAAIyb,kBAAJ,CAAuB;AACrDlnB,EAAAA,WAAW,EAAE,CADwC;AAErDF,EAAAA,WAAW,EAAE,wBAFwC;AAGrD8kB,EAAAA,UAAU,EAAE,CAHyC;AAIrDD,EAAAA,WAAW,EAAE,wBAJwC;AAKrDqC,EAAAA,mBAAmB,EAAE,SALgC;AAMrDG,EAAAA,mBAAmB,EAAE;AANgC,CAAvB,CAAzB;AASP,MAAaxb,eAAe,gBAAG,IAAIub,kBAAJ,CAAuB;AACpDlnB,EAAAA,WAAW,EAAE,CADuC;AAEpDF,EAAAA,WAAW,EAAE,wBAFuC;AAGpD8kB,EAAAA,UAAU,EAAE,CAHwC;AAIpDD,EAAAA,WAAW,EAAE,wBAJuC;AAKpDpiB,EAAAA,SAAS,EAAE,2BALyC;AAMpD0jB,EAAAA,OAAO,EAAE,IAN2C;AAOpDgB,EAAAA,iBAAiB,EAAE,2BAPiC;AAQpDD,EAAAA,mBAAmB,EAAE;AAR+B,CAAvB,CAAxB;;ACJP,MAAMI,iBAAiB,GAAsB;AAC3CpnB,EAAAA,WAAW,EAAE,CAD8B;AAE3CF,EAAAA,WAAW,EAAE,kBAF8B;AAG3C8B,EAAAA,SAAS,EAAE4C,cAAS,CAAC5L;AAHsB,CAA7C;AAMA,IAAayuB,OAAb;AAAA;;AAAA;;AAQE;;;QAAY;AACVC,MAAAA,iBADU;AAEVC,MAAAA,UAFU;AAGVC,MAAAA,MAHU;AAIVC,MAAAA,SAJU;AAKVC,MAAAA;AALU,2BAMM;;;;AAChB;AAdF,mBAAA,GAA4BlnB,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAA5B;AAeE,UAAKknB,SAAL,CAAevxB,KAAf,CAAqBnG,QAArB,GAAgC,UAAhC;AACA,UAAKq3B,iBAAL,GAAyBA,iBAAzB;AACA,UAAKC,UAAL;AAAoBvoB,MAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CAA5B;AAAoCuD,MAAAA,SAAS,EAAE;AAA/C,OAA0DglB,UAA1D;AACA,UAAKC,MAAL,GAAcA,MAAd;AACA,UAAKC,SAAL,GAAiBA,SAAjB;AACA,UAAKC,WAAL,GAAmBA,WAAnB;;AACD;;AAtBH;AAAA;AAAA,WAwBE,wBACE/1B,OADF,EAEEtB,UAFF,EAGEU,GAHF;AAKE,YAAMia,WAAW,GACfrZ,OAAO,YAAYg0B,WAAnB,GACI,IAAIa,6BAAJ,GAAqBoB,sBAArB,CAA4Cj2B,OAA5C,EAAqDtB,UAArD,EAAiEU,GAAjE,CADJ,GAEIY,OAAO,CAACk2B,QAHd;AAKA,WAAKC,gBAAL,CAAsB/2B,GAAtB;AACA,WAAK42B,SAAL,CAAeI,SAAf,GAA2B,EAA3B;AACA,YAAMzH,GAAG,GAAG,KAAK0H,MAAL,CAAYhd,WAAZ,CAAZ;AACAsV,MAAAA,GAAG,IAAI,KAAKqH,SAAL,CAAeM,MAAf,CAAsB3H,GAAtB,CAAP;AAEA3uB,MAAAA,OAAO,CAACu2B,qBAAR,GAAgC,IAAIC,oBAAJ,CAAkB;AAChDlE,QAAAA,IAAI,EAAE,KAAK0D,SADqC;AAEhDS,QAAAA,MAAM,EAAE,CAACv3B,IAAD,EAAOR,UAAP,KACN,KAAK+3B,MAAL,CAAY;AAAEv3B,UAAAA,IAAF;AAAQR,UAAAA,UAAR;AAAoBsB,UAAAA,OAApB;AAA6BZ,UAAAA;AAA7B,SAAZ,CAH8C;AAIhDs3B,QAAAA,MAAM,EAAE;AACN,eAAKf,iBAAL,IAA0B,KAAKA,iBAAL,CAAuB31B,OAAvB,CAA1B;AACD;AAN+C,OAAlB,CAAhC;;AASA,WAAK22B,kBAAL,CAAwB32B,OAAxB;;AAEA,aAAO,CAACA,OAAO,CAACu2B,qBAAT,CAAP;AACD;AAnDH;AAAA;AAAA,WAqDE,0BAAiBn3B,GAAjB;AACE,UAAI,KAAKy2B,MAAL,IAAe,KAAKD,UAAxB,EAAoC;AAAA;;AAClC,aAAKA,UAAL,CAAgB3J,MAAhB,GACET,cAAc,CAAC,KAAKqK,MAAL,CAAY5J,MAAb,EAAqB;AACjChwB,UAAAA,OAAO,EAAE,KAAK45B,MAAL,CAAY55B,OADY;AAEjCmD,UAAAA;AAFiC,SAArB,CAAd,IAGM,sBAAKy2B,MAAL,kCAAae,QAAb,KAAyB,CAH/B,CADF;AAKD;AACF;AA7DH;AAAA;AAAA,WA+DE;;;UAAO;AACL13B,QAAAA,IADK;AAELR,QAAAA,UAFK;AAGLsB,QAAAA,OAHK;AAILZ,QAAAA;AAJK;AAWL,UAAI,CAACY,OAAL,EAAc;AAEd,UAAI,CAACd,IAAL,EAAWA,IAAI,GAAGc,OAAO,CAAC62B,UAAf;AACX,UAAI,CAACn4B,UAAL,EAAiBA,UAAU,GAAGsB,OAAO,CAAC82B,gBAArB;AAEjB,UAAI,CAAC53B,IAAD,IAAS,CAACR,UAAV,IAAwB,CAACsB,OAAO,CAACZ,GAAR,CAAY23B,YAAZ,CAAyB73B,IAAI,CAACE,GAA9B,CAA7B,EAAiE;;AAEjE,UAAIY,OAAO,CAAC82B,gBAAR,IAA4Bp4B,UAAU,KAAKsB,OAAO,CAAC82B,gBAAvD,EAAyE;AACvE,cAAME,cAAc,GAClBh3B,OAAO,YAAYg0B,WAAnB,GACI,IAAIa,6BAAJ,GAAqBoB,sBAArB,CAA4Cj2B,OAA5C,EAAqDtB,UAArD,EAAiEU,GAAjE,CADJ,GAEIY,OAAO,CAACk2B,QAHd;AAKA,aAAKC,gBAAL,CAAsB/2B,GAAtB;AACA,aAAK42B,SAAL,CAAeI,SAAf,GAA2B,EAA3B;AACA,cAAMzH,GAAG,GAAG,KAAK0H,MAAL,CAAYW,cAAZ,CAAZ;AACArI,QAAAA,GAAG,IAAI,KAAKqH,SAAL,CAAeM,MAAf,CAAsB3H,GAAtB,CAAP;AACD;;AAED,YAAMvR,OAAO,GAAGpd,OAAO,CAAC2rB,SAAR,CAAkBzsB,IAAI,CAACE,GAAvB,CAAhB;AACA,YAAM63B,YAAY,GAAG,yBAAKrB,UAAL,8BAAiB3J,MAAjB,GACjB,2BAAK2J,UAAL,uCAAiB3J,MAAjB,KACC,0BAAK2J,UAAL,+BAAiBvnB,WAAjB,GAA+B,2BAAKunB,UAAL,uCAAiBvnB,WAAjB,IAA+B,CAA9D,GAAkE,CADnE,CADiB,GAGjB,CAHJ;AAIA,YAAM6oB,EAAE,GACN1rB,IAAI,CAACc,KAAL,CAAW,CAAC8Q,OAAO,CAACle,IAAR,CAAaH,IAAb,GAAoBG,IAAI,CAACH,IAA1B,IAAkCL,UAA7C,IAA2Du4B,YAD7D;AAEA,YAAME,EAAE,GACN3rB,IAAI,CAACc,KAAL,CAAW,CAACpN,IAAI,CAACF,IAAL,GAAYoe,OAAO,CAACle,IAAR,CAAaF,IAA1B,IAAkCN,UAA7C,IAA2Du4B,YAD7D;AAGA,WAAKjB,SAAL,CAAevxB,KAAf,CAAqB2yB,IAArB,GAA+BF,EAAE,CAACnsB,QAAH,EAA/B;AACA,WAAKirB,SAAL,CAAevxB,KAAf,CAAqB4yB,GAArB,GAA8BF,EAAE,CAACpsB,QAAH,EAA9B;AAEA/K,MAAAA,OAAO,CAAC62B,UAAR,GAAqB33B,IAArB;AACAc,MAAAA,OAAO,CAAC82B,gBAAR,GAA2Bp4B,UAA3B;AACD;AA5GH;AAAA;AAAA,WA8GE,gBACE2a,WADF;AAGE,YAAM;AAAE3K,QAAAA,OAAF;AAAWoE,QAAAA,QAAX;AAAqBwkB,QAAAA,UAArB;AAAiChpB,QAAAA,QAAjC;AAA2CipB,QAAAA;AAA3C,UACJ,KAAK3B,UAAL,IAAmB,EADrB;AAEA,YAAM4B,SAAS,GAAG,IAAIC,mBAAJ;AAChBpe,QAAAA;AADgB,SAEboc,iBAFa;AAGhBM,QAAAA,WAAW,EAAE,KAAKA;AAHF,SAIb,KAAKH,UAJQ,EAAlB;;AAOA,UAAI,KAAKC,MAAT,EAAiB;AACf2B,QAAAA,SAAS,CAACE,WAAV;AACD,OAFD,MAEO;AACLF,QAAAA,SAAS,CAACG,YAAV;AACD;;AAED,UAAIC,UAAJ;AACAJ,MAAAA,SAAS,CAAChF,OAAV,CAAkB,CAAC7c,CAAD,EAAUgZ,GAAV;AAChBiJ,QAAAA,UAAU,GAAGjJ,GAAb;AACA,aAAKmH,SAAL,IAAkB8B,UAAU,CAACC,SAAX,CAAqBpY,GAArB,CAAyB,KAAKqW,SAA9B,CAAlB;AACA,cAAMtyB,IAAI,GACRo0B,UAAU,IAAIA,UAAU,CAACE,aAAX,CAAyB,KAAKjC,MAAL,GAAc,QAAd,GAAyB,MAAlD,CADhB;;AAGA,YAAIryB,IAAJ,EAAU;AACRA,UAAAA,IAAI,CAACu0B,YAAL,CAAkB,gBAAlB,EAAoCrpB,OAAO,IAAI,OAA/C;AACAlL,UAAAA,IAAI,CAACu0B,YAAL,CAAkB,iBAAlB,EAAqCjlB,QAAQ,IAAI,OAAjD;AACAtP,UAAAA,IAAI,CAACu0B,YAAL,CAAkB,mBAAlB,EAAuC,CAACT,UAAU,IAAI,EAAf,EAAmBvsB,QAAnB,EAAvC;AACAvH,UAAAA,IAAI,CAACu0B,YAAL,CAAkB,mBAAlB,EAAuC,CAACR,UAAU,IAAI,CAAf,EAAkBxsB,QAAlB,EAAvC;;AAEA,cAAI,KAAK8qB,MAAT,EAAiB;AACfryB,YAAAA,IAAI,CAACu0B,YAAL,CACE,kBADF,EAEEzpB,QAAQ,IAAIA,QAAQ,CAAClU,MAAT,GAAkB,CAA9B,GAAkCkU,QAAQ,CAAC/L,IAAT,CAAc,GAAd,CAAlC,GAAuD,EAFzD;AAID;AACF;AACF,OAnBD;AAqBA,aAAOq1B,UAAP;AACD;AAvJH;AAAA;AAAA,WAyJU,4BAAmBI,cAAnB;;;AACN,UAAIA,cAAc,CAACC,UAAf,KAA8BC,4BAAe,CAACjxB,IAAlD,EAAwD;AAExD,YAAMkxB,OAAO,GAAGH,cAAH,6CAAGA,cAAc,CAAEzB,qBAAnB,qBAAG,sBAAuCjE,IAAvC,CAA4CwF,aAA5C,CACd,KAAKjC,MAAL,GAAc,QAAd,GAAyB,MADX,CAAhB;AAIAxsB,MAAAA,MAAM,CAAC+uB,IAAP,CAAYC,wBAAZ,EAAyBrJ,OAAzB,CAAiCsJ,SAAS;AACxC,YAAIN,cAAc,CAACC,UAAf,GAA4BI,wBAAW,CAACC,SAAD,CAAX,CAAuBC,IAAvD,EAA6D;AAC3DC,UAAAA,uBAAc,CACZL,OADY,EAEZE,wBAAW,CAACC,SAAD,CAAX,CAAuB11B,IAFX,EAGXvF,KAAD;AACE26B,YAAAA,cAAc,CAACta,IAAf,CAAoB2a,wBAAW,CAACC,SAAD,CAAX,CAAuB11B,IAA3C,EAAiD;AAC/C0vB,cAAAA,IAAI,EAAE6F,OADyC;AAE/C56B,cAAAA,YAAY,EAAEF;AAFiC,aAAjD;AAID,WARW,CAAd;AAUD;AACF,OAbD;AAcD;AA9KH;;AAAA;AAAA,EAA6Bo7B,cAA7B;;SCLgBC,kBACd57B;AAEA,SACEA,MAAM,YAAYg3B,iBAAlB,IACAh3B,MAAM,YAAY67B,mCADlB,IAEA77B,MAAM,YAAY87B,mBAFlB,IAGA97B,MAAM,YAAY+7B,uBAJpB;AAMD;AAED,SAAgBC,kBACdh8B;AAEA,SAAOA,MAAM,YAAY67B,mCAAlB,IAAuC77B,MAAM,YAAY+7B,uBAAhE;AACD;AAED,SAAgBE,oBACdj8B;AAEA,SACEA,MAAM,YAAYk8B,oBAAlB,IACAl8B,MAAM,YAAYm8B,mBADlB,IAEAn8B,MAAM,YAAYo8B,mBAHpB;AAKD;AAED,SAAgBC,qBACdr8B;AAEA,SAAOA,MAAM,YAAY+3B,6BAAzB;AACD;AAED,SAAgBuE,eACdt8B;AAEA,SAAOA,MAAM,YAAYu8B,iBAAzB;AACD;AAED,SAAgBC,6BACdx8B;AAEA,SAAOA,MAAM,YAAYy8B,6CAAzB;AACD;AAED,SAAgBC,oBACd18B;AAEA,SAAO,CAAC,CAAEA,MAA0B,CAACwJ,kBAArC;AACD;;AC/DD;;;;;AAKA,AAAO,MAAMmzB,WAAW,GAAG,GAApB;AAEP,AAAO,MAAMC,YAAY,gBAAG,IAAIjgB,yBAAJ,CAAiB,CAAC,EAAD,EAAK,CAAC,EAAN,CAAjB,EAA4B;AAAEra,EAAAA,GAAG,EAAEu6B;AAAP,CAA5B,CAArB;AAEP,AAAO,MAAMC,WAAW,gBAAG,IAAI/f,iBAAJ,CACzB,CACE,CAAC,CAAD,EAAI,CAAC,EAAL,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,EAKE,CAAC,EAAD,EAAK,CAAC,EAAN,CALF,EAME,CAAC,GAAD,EAAM,CAAC,EAAP,CANF,CADyB,EASzB;AACEza,EAAAA,GAAG,EAAEu6B;AADP,CATyB,CAApB;AAaP,AAAO,MAAME,mBAAmB,gBAAG,IAAIC,iCAAJ,CACjC,CACE,CAAC,CAAD,EAAI,CAAC,EAAL,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,EAKE,CAAC,EAAD,EAAK,CAAC,EAAN,CALF,EAME,CAAC,GAAD,EAAM,CAAC,EAAP,CANF,CADiC,EASjC;AACE16B,EAAAA,GAAG,EAAEu6B;AADP,CATiC,CAA5B;AAaP,AAAO,MAAMI,cAAc,gBAAG,IAAIhgB,eAAJ,CAC5B,CACE,CAAC,EAAD,EAAK,CAAC,EAAN,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,CAD4B,EAO5B;AAAE3a,EAAAA,GAAG,EAAEu6B;AAAP,CAP4B,CAAvB;AASP,AAAO,MAAMK,aAAa,gBAAG,IAAIC,mBAAJ,CAC3B,CACE,CAAC,EAAD,EAAK,CAAC,EAAN,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,EAKE,CAAC,EAAD,EAAK,CAAC,EAAN,CALF,EAME,CAAC,EAAD,EAAK,CAAC,EAAN,CANF,EAOE,CAAC,EAAD,EAAK,CAAC,EAAN,CAPF,CAD2B,EAU3B;AAAE76B,EAAAA,GAAG,EAAEu6B;AAAP,CAV2B,CAAtB;AAaP,AAAO,MAAMO,iBAAiB,gBAAG,IAAIrgB,iBAAJ,CAC/B,CACE,CAAC,CAAD,EAAI,CAAC,EAAL,CADF,EAEE,CAAC,GAAD,EAAM,CAAC,EAAP,CAFF,CAD+B,EAK/B;AACEza,EAAAA,GAAG,EAAEu6B;AADP,CAL+B,CAA1B;AAUP,AAAO,MAAMQ,oBAAoB,gBAAG,IAAIpgB,eAAJ,CAClC,CACE,CAAC,EAAD,EAAK,CAAC,EAAN,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,CADkC,EAOlC;AAAE3a,EAAAA,GAAG,EAAEu6B;AAAP,CAPkC,CAA7B;AAUP,AAAO,MAAMS,uBAAuB,gBAAG,IAAIrgB,eAAJ,CACrC,CACE,CAAC,EAAD,EAAK,CAAL,CADF,EAEE,CAAC,GAAD,EAAM,CAAC,EAAP,CAFF,EAGE,CAAC,GAAD,EAAM,CAAC,EAAP,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,GAAN,CAJF,EAKE,CAAC,CAAD,EAAI,CAAC,EAAL,CALF,EAME,CAAC,CAAD,EAAI,CAAC,EAAL,CANF,CADqC,EASrC;AAAE3a,EAAAA,GAAG,EAAEu6B;AAAP,CATqC,CAAhC;AAYP,AAAO,MAAMU,mBAAmB,GAAG;AACjCjd,EAAAA,OAAO,EAAEgd;AADwB,CAA5B;AAIP,AAAO,MAAME,eAAe,GAAG;AAC7Bh9B,EAAAA,KAAK,EAAEo8B,YADsB;AAE7Ba,EAAAA,QAAQ,EAAEL,iBAFmB;AAG7BM,EAAAA,gBAAgB,EAAEX,mBAHW;AAI7Bzc,EAAAA,OAAO,EAAE+c,oBAJoB;AAK7BM,EAAAA,MAAM,EAAET;AALqB,CAAxB;AAQP,AAAO,MAAMU,aAAa,GAAG;AAC3Bp9B,EAAAA,KAAK,EAAEo8B,YADoB;AAE3Ba,EAAAA,QAAQ,EAAEX,WAFiB;AAG3BY,EAAAA,gBAAgB,EAAEX,mBAHS;AAI3Bzc,EAAAA,OAAO,EAAE2c,cAJkB;AAK3BU,EAAAA,MAAM,EAAET;AALmB,CAAtB;;SCjGSW,iBACd79B,QACA0Q,MACAtN;MADAsN;AAAAA,IAAAA,OAAeisB;;;MACfv5B;AAAAA,IAAAA,WAA0C;;;AAE1C,QAAMxB,UAAU,GAAG+6B,WAAW,GAAGjsB,IAAjC;;AACA,QAAMotB,gBAAgB,gBAAQF,aAAR,EAA0Bx6B,QAA1B,CAAtB;;AAEA,MAAI64B,mBAAmB,CAACj8B,MAAD,CAAvB,EAAiC;AAC/B,WAAOA,MAAM,CAAC+9B,mBAAP,CACLD,gBAAgB,CAACxd,OADZ,EAEL1e,UAFK,EAGLi7B,SAHK,CAAP;AAKD;;AAED,MAAIR,oBAAoB,CAACr8B,MAAD,CAAxB,EAAkC;AAChC,WAAOA,MAAM,CAAC+9B,mBAAP,CACLD,gBAAgB,CAACL,QADZ,EAEL77B,UAFK,EAGLi7B,SAHK,CAAP;AAKD;;AAED,MAAIP,cAAc,CAACt8B,MAAD,CAAlB,EAA4B;AAC1B,WAAOA,MAAM,CAAC+9B,mBAAP,CACLD,gBAAgB,CAACH,MADZ,EAEL/7B,UAFK,EAGLi7B,SAHK,CAAP;AAKD;;AAED,MAAIL,4BAA4B,CAACx8B,MAAD,CAAhC,EAA0C;AACxC,WAAOA,MAAM,CAAC+9B,mBAAP,CACLD,gBAAgB,CAACJ,gBADZ,EAEL97B,UAFK,EAGLi7B,SAHK,CAAP;AAKD;;AAED,SAAO78B,MAAM,CAAC+9B,mBAAP,CAA2BD,gBAAgB,CAACt9B,KAA5C,EAAmDoB,UAAnD,EAA+Di7B,SAA/D,CAAP;AACD;AAED,MAAamB,yBAAyB,GAAG,SAA5BA,yBAA4B,CACvCh+B,MADuC,EAEvC0Q,IAFuC;MAEvCA;AAAAA,IAAAA,OAAeisB;;;AAEf,SAAOkB,gBAAgB,CAAC79B,MAAD,EAAS0Q,IAAT,EAAe6sB,mBAAf,CAAvB;AACD,CALM;AAOP,MAAaU,sBAAsB,GAAG,SAAzBA,sBAAyB,CACpCj+B,MADoC,EAEpC0Q,IAFoC;MAEpCA;AAAAA,IAAAA,OAAeisB;;;AAEf,SAAOkB,gBAAgB,CAAC79B,MAAD,EAAS0Q,IAAT,EAAe8sB,eAAf,CAAvB;AACD,CALM;;SCzDSU,qBAAqBvJ,SAAmB7iB;AACtD6iB,EAAAA,OAAO,CAACzC,OAAR,CAAgBgD,MAAM;AACpBpjB,IAAAA,MAAM,CAACqsB,IAAP,CAA6BjJ,MAA7B;AACD,GAFD;AAGD;;SC8BekJ,kBACdp+B;AAEA,UAAQA,MAAM,CAAC8F,IAAf;AACE,SAAK,QAAL;AACE,aAAOu4B,mBAAmB,CAACr+B,MAAD,CAA1B;;AACF,SAAK,gBAAL;AACE,aAAOs+B,yBAAyB,CAACt+B,MAAD,CAAhC;;AACF,SAAK,mBAAL;AACE,aAAOu+B,sBAAsB,CAACv+B,MAAD,CAA7B;;AACF,SAAK,mBAAL;AACE,aAAOw+B,uBAAuB,CAACx+B,MAAD,CAA9B;;AACF,SAAK,wBAAL;AACE,aAAOy+B,4BAA4B,CAACz+B,MAAD,CAAnC;;AACF,SAAK,kBAAL;AACE,aAAO0+B,2BAA2B,CAAC1+B,MAAD,CAAlC;;AACF,SAAK,eAAL;AACE,aAAO2+B,wBAAwB,CAAC3+B,MAAD,CAA/B;;AACF,SAAK,sBAAL;AACA,SAAK,gBAAL;AACE,aAAO4+B,yBAAyB,CAAC5+B,MAAD,CAAhC;;AACF,SAAK,eAAL;AACE,aAAOo+B,iBAAiB,CAAEp+B,MAA0B,CAACwJ,kBAA7B,CAAxB;;AACF;AACE,aAAO,IAAP;AArBJ;AAuBD;;AAED,SAAS60B,mBAAT,CAA6Br+B,MAA7B;;;AACE,SAAO,IAAIu8B,iBAAJ,cACFv8B,MADE;AAELgtB,IAAAA,QAAQ,EAAEhnB,iBAAiB,CAAChG,MAAM,CAACgtB,QAAR,CAFtB;AAGLzb,IAAAA,WAAW,EAAEvL,iBAAiB,CAAChG,MAAD,sCAACA,MAAM,CAAEgJ,MAAT,qBAAC,eAAgBqG,KAAjB,CAHzB;AAILgC,IAAAA,WAAW,EAAErL,iBAAiB,CAAChG,MAAD,uCAACA,MAAM,CAAEgJ,MAAT,qBAAC,gBAAgBsI,KAAjB,CAJzB;AAKLwC,IAAAA,SAAS,EAAE9N,iBAAiB,CAAChG,MAAD,oCAACA,MAAM,CAAE8J,IAAT,qBAAC,aAAcwH,KAAf;AALvB,KAAP;AAOD;;AAED,SAASitB,sBAAT,CAAgCv+B,MAAhC;AACE;AACA,SAAO,IAAI6+B,iBAAJ,CAAiBC,4BAA4B,CAAC9+B,MAAD,CAA7C,CAAP;AACD;;AAED,MAAa++B,uBAAuB,GAAIh0B,MAAD,IAAkC,CACvE/E,iBAAiB,CAAC+E,MAAD,oBAACA,MAAM,CAAG,CAAH,CAAP,CADsD,EAEvE/E,iBAAiB,CAAC+E,MAAD,oBAACA,MAAM,CAAG,CAAH,CAAP,CAFsD,CAAlE;;AAKP,SAASi0B,+BAAT;MAAyC;AAAEl5B,IAAAA,IAAF;AAAQ0sB,IAAAA,IAAR;AAAc9hB,IAAAA,IAAd;AAAoB3F,IAAAA,MAApB;AAA4BwiB,IAAAA,KAA5B;AAAmClb,IAAAA,UAAnC;AAA+Cgb,IAAAA;AAA/C;AACvC;AACEvnB,IAAAA,IAAI,EAAEE,iBAAiB,CAACF,IAAD,CADzB;AAEE0sB,IAAAA,IAAI,EAAExsB,iBAAiB,CAACwsB,IAAD,CAFzB;AAGE9hB,IAAAA,IAAI,EAAE1K,iBAAiB,CAAC0K,IAAD,CAHzB;AAIE3F,IAAAA,MAAM,EAAEg0B,uBAAuB,CAACh0B,MAAD,CAJjC;AAKEwiB,IAAAA,KAAK,EAAEvnB,iBAAiB,CAACunB,KAAD;AAL1B,KAMMlb,UAAU,GACV;AACAA,IAAAA,UAAU,eACJA,UADI;AAERyB,MAAAA,SAAS,EAAEmrB,gBAAgB,CAACj5B,iBAAiB,CAAEqM,UAAF,oBAAEA,UAA6B,CAAEyB,SAAjC,CAAlB,CAFnB;AAGRzC,MAAAA,WAAW,EAAE4tB,gBAAgB,CAACj5B,iBAAiB,CAAEqM,UAAF,oBAAEA,UAA6B,CAAEhB,WAAjC,CAAlB,CAHrB;AAIRE,MAAAA,WAAW,EAAEvL,iBAAiB,CAAEqM,UAAF,oBAAEA,UAA6B,CAAEd,WAAjC;AAJtB;AADV,GADU,GASV,EAfN,EAgBM8b,MAAM,GACN;AACAA,IAAAA,MAAM,eACAA,MADA;AAEJvZ,MAAAA,SAAS,EAAEmrB,gBAAgB,CACzBj5B,iBAAiB,CAAEqnB,MAAF,oBAAEA,MAAyB,CAAEvZ,SAA7B,CADQ;AAFvB;AADN,GADM,GASN,EAzBN;AA2BD;;AAED,SAASwqB,yBAAT,CAAmCt+B,MAAnC;AACE,SAAO,IAAI6+B,iBAAJ,CAAiBG,+BAA+B,CAACh/B,MAAD,CAAhD,CAAP;AACD;;AAED,SAASw+B,uBAAT,CAAiCx+B,MAAjC;AACE,SAAO,IAAIk/B,mBAAJ,cACFJ,4BAA4B,CAAC9+B,MAAD,CAD1B;AAEL;AACAutB,IAAAA,KAAK,EAAEvnB,iBAAiB,CAAChG,MAAM,CAACutB,KAAR;AAHnB,KAAP;AAKD;;AAED,SAASkR,4BAAT,CAAsCz+B,MAAtC;AACE,SAAO,IAAI+7B,uBAAJ,cACF/7B,MADE;AAEL;AACAutB,IAAAA,KAAK,EAAEvnB,iBAAiB,CAAChG,MAAM,CAACutB,KAAR,CAHnB;AAIL;AACAle,IAAAA,KAAK,EAAErJ,iBAAiB,CAAChG,MAAM,CAACqP,KAAR,CALnB;AAML;AACAiD,IAAAA,MAAM,EAAEtM,iBAAiB,CAAChG,MAAM,CAACsS,MAAR,CAPpB;AAQL;AACA6sB,IAAAA,WAAW,EAAEC,iBAAiB,CAACp/B,MAAM,CAAC+K,MAAR,CATzB;AAUL;AACAs0B,IAAAA,WAAW,EAAEC,iBAAiB,CAACt/B,MAAM,CAACu/B,KAAR,CAXzB;AAYL;AACAC,IAAAA,UAAU,EAAEF,iBAAiB,CAACt/B,MAAM,CAACy/B,SAAR,CAbxB;AAcL;AACAC,IAAAA,SAAS,EAAET,gBAAgB,CAACj5B,iBAAiB,CAAChG,MAAM,CAACuqB,WAAR,CAAlB;AAftB,KAAP;AAiBD;;AAED,SAASmU,2BAAT,CAAqC1+B,MAArC;AACE,SAAO,IAAI2/B,mCAAJ,cACF3/B,MADE;AAEL;AACAutB,IAAAA,KAAK,EAAEvnB,iBAAiB,CAAChG,MAAM,CAACutB,KAAR,CAHnB;AAIL;AACAle,IAAAA,KAAK,EAAErJ,iBAAiB,CAAChG,MAAM,CAACqP,KAAR,CALnB;AAML;AACAiD,IAAAA,MAAM,EAAEtM,iBAAiB,CAAChG,MAAM,CAACsS,MAAR,CAPpB;AAQL;AACA6sB,IAAAA,WAAW,EAAEC,iBAAiB,CAACp/B,MAAM,CAAC+K,MAAR,CATzB;AAUL;AACA60B,IAAAA,MAAM,EAAEN,iBAAiB,CAACt/B,MAAM,CAACu/B,KAAR;AAXpB,KAAP;AAaD;;AAED,SAASZ,wBAAT,CAAkC3+B,MAAlC;AACE,MAAI6J,wBAAwB,CAAC7J,MAAD,CAA5B,EAAsC;AACpC,WAAO,IAAI0T,aAAJ,CAAkB1T,MAAlB,CAAP;AACD;;AAED,MAAI+J,sBAAsB,CAAC/J,MAAD,CAA1B,EAAoC;AAClC,WAAO,IAAImR,aAAJ,CAAkBnR,MAAlB,CAAP;AACD;;AAED,SAAO,IAAI6T,iBAAJ,CAAsB7T,MAAtB,CAAP;AACD;;AAED,SAAS4+B,yBAAT,CAAmC5+B,MAAnC;AACE,SAAO,IAAI00B,kBAAJ,CAAuB10B,MAAvB,CAAP;AACD;;AAED,SAAS8+B,4BAAT;MAAsC;AACpCpuB,IAAAA,IADoC;AAEpC3F,IAAAA,MAFoC;AAGpCsG,IAAAA,WAHoC;AAIpCE,IAAAA,WAJoC;AAKpCuC,IAAAA;AALoC;AAOpC,SAAO;AACLpD,IAAAA,IAAI,EAAE1K,iBAAiB,CAAC0K,IAAD,CADlB;AAEL3F,IAAAA,MAAM,EAAEq0B,iBAAiB,CAACr0B,MAAD,CAFpB;AAGLwG,IAAAA,WAAW,EAAEvL,iBAAiB,CAACuL,WAAD,CAHzB;AAILF,IAAAA,WAAW,EAAE4tB,gBAAgB,CAC3Bj5B,iBAAiB,CAACqL,WAAD,CADU,CAJxB;AAOLyC,IAAAA,SAAS,EAAEmrB,gBAAgB,CACzBj5B,iBAAiB,CAAC8N,SAAD,CADQ;AAPtB,GAAP;AAWD;;AAED,SAASwrB,iBAAT,CAA2BO,IAA3B;AACE,oCAAgCA,IAAhC;AACD;;AAED,SAAgBT,kBAAkBr0B;AAChC;AACA,SAAOA,MAAM,CAAC7L,GAAP,CAAW8G,iBAAX,CAAP;AACD;;AAED,SAASi5B,gBAAT,CAA0B3tB,OAA1B;AACE,SAAOA,OAAK,GAAG,IAAItD,WAAJ,CAAUsD,OAAV,EAAiBrD,QAAjB,EAAH,GAAiC,IAA7C;AACD;;AC9MM,MAAM6xB,WAAW,GAAG,CACzB9/B,MADyB,EAEzBwO,GAFyB,EAGzBC,GAHyB;AAKzB,MAAIutB,iBAAiB,CAACh8B,MAAD,CAArB,EAA+B;AAC7BA,IAAAA,MAAM,CAACqP,KAAP,GAAef,KAAK,CAACtO,MAAM,CAACqP,KAAR,EAAeb,GAAf,EAAoBC,GAApB,CAApB;AACAzO,IAAAA,MAAM,CAACsS,MAAP,GAAgBhE,KAAK,CAACtO,MAAM,CAACsS,MAAR,EAAgB9D,GAAhB,EAAqBC,GAArB,CAArB;AACD,GAHD,MAGO,IAAImtB,iBAAiB,CAAC57B,MAAD,CAArB,EAA+B;AACpCA,IAAAA,MAAM,CAAC0Q,IAAP,GAAcpC,KAAK,CAACtO,MAAM,CAAC0Q,IAAR,EAAclC,GAAd,EAAmBC,GAAnB,CAAnB;AACD;;AAED,SAAOzO,MAAP;AACD,CAbM;AAeP,SAAgB+/B,kBAAkB//B;AAChC,MAAIg8B,iBAAiB,CAACh8B,MAAD,CAArB,EAA+B;AAC7BA,IAAAA,MAAM,CAACm/B,WAAP,GAAqB,CAACn/B,MAAM,CAACqP,KAAP,GAAe,CAAhB,EAAmBrP,MAAM,CAACsS,MAAP,GAAgB,CAAnC,CAArB;AACD,GAFD,MAEO,IAAIspB,iBAAiB,CAAC57B,MAAD,CAArB,EAA+B;AACpCA,IAAAA,MAAM,CAAC+K,MAAP,GAAgB,CAAC,CAAD,EAAI,CAAJ,CAAhB;AACD;;AAED,SAAO/K,MAAP;AACD;AAED,MAAaggC,YAAY,GAAG,CAC1BhgC,MAD0B;AAAA,MAE1B;AAAE0Q,IAAAA;AAAF,GAF0B;AAAA,SAGvBqvB,iBAAiB,CAACD,WAAW,CAAC9/B,MAAD,EAAS,CAAT,EAAY0Q,IAAZ,CAAZ,CAHM;AAAA,CAArB;;ACbP,MAAMif,qBAAmB,GAAG,EAA5B;AAEA,SAAgBsQ,gBAOdC;MANA;AACElgC,IAAAA,MADF;AAEE0Q,IAAAA,IAAI,GAAGif,qBAFT;AAGEuF,IAAAA,MAAM,GAAG2I,gBAHX;AAIEsC,IAAAA;AAJF;AAQA78B,EAAAA,eAAS,CAAC;AACR,QAAI48B,SAAS,CAAC3iC,OAAV,KAAsB,IAAtB,IAA8ByC,MAAM,KAAKkO,SAA7C,EAAwD;AACtD,YAAM4D,MAAM,GAAGouB,SAAS,CAAC3iC,OAAzB;AACA6iC,MAAAA,aAAa,CAACtuB,MAAD,EAASpB,IAAT,EAAeyvB,QAAf,CAAb;AAEAjL,MAAAA,MAAM,CAACl1B,MAAD,EAAS0Q,IAAT,CAAN,CAAqB2vB,IAArB,CAA0B1L,OAAO;AAC/BuJ,QAAAA,oBAAoB,CAACvJ,OAAD,EAAU7iB,MAAV,CAApB;AACD,OAFD;AAGD;;AAEF,GAVQ,EAUN,CAAC9R,MAAD,EAAS0Q,IAAT,EAAeyvB,QAAf,CAVM,CAAT;AAWD;;AAED,SAASC,aAAT,CAAuBtuB,MAAvB,EAAuCpB,IAAvC,EAAqDyvB,QAArD;AACEruB,EAAAA,MAAM,CAAC0jB,IAAP,CAAYljB,MAAZ,GAAqB5B,IAArB;AACAoB,EAAAA,MAAM,CAAC0jB,IAAP,CAAYnmB,KAAZ,GAAoB8wB,QAAQ,GAAGzxB,IAAI,CAACF,GAAL,CAASkC,IAAT,EAAeyvB,QAAf,CAAH,GAA8BzvB,IAA1D;AACD;;SCzCe4vB;AACd,QAAMxuB,MAAM,GAAGyuB,YAAM,CAAgB,IAAhB,CAArB;AACA,QAAMC,GAAG,GAAG7iC,iBAAW,CAAE63B,IAAD;AACtB,QAAIA,IAAI,KAAK,IAAb,EAAmB;AACjB1jB,MAAAA,MAAM,CAACvU,OAAP,GAAiB,IAAIkjC,aAAJ,CAAWjL,IAAX,CAAjB;AACD,KAFD,MAEO;AACL1jB,MAAAA,MAAM,CAACvU,OAAP,GAAiB,IAAjB;AACD;AACF,GANsB,EAMpB,EANoB,CAAvB;AAQA,SAAO;AAAEuU,IAAAA,MAAF;AAAU0uB,IAAAA;AAAV,GAAP;AACD;;SCZeE;MAAS;AAAEC,IAAAA,OAAF;AAAWC,IAAAA;AAAX;AACvBt9B,EAAAA,eAAS,CAAC;AACRq9B,IAAAA,OAAO,IAAIA,OAAO,EAAlB;AACA,WAAOC,SAAP;AAED,GAJQ,EAIN,EAJM,CAAT;AAKD;;SCJeC,kBAEdC;MADA;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,UAAX;AAAuBrH,IAAAA;AAAvB;;MACAmH;AAAAA,IAAAA,OAAU;;;AAEV,QAAMG,OAAO,GAAGV,YAAM,EAAtB;AAEAG,EAAAA,QAAQ,CAAC;AACPE,IAAAA,SAAS;AACP,UAAIK,OAAO,CAAC1jC,OAAR,IAAmByjC,UAAvB,EAAmC;AACjCA,QAAAA,UAAU,CAACC,OAAO,CAAC1jC,OAAT,CAAV;AACD;AACF;;AALM,GAAD,CAAR;AAQA,SAAOiB,aAAO,CAAC;AACb,QAAIyiC,OAAO,CAAC1jC,OAAZ,EAAqB;AACnB,UAAIo8B,MAAJ,EAAY;AACV,cAAMuH,OAAO,GAAGvH,MAAM,CAACsH,OAAO,CAAC1jC,OAAT,EAAkBujC,IAAlB,EAAwB;AAAEC,UAAAA,OAAF;AAAWC,UAAAA;AAAX,SAAxB,CAAtB;AACA,YAAIE,OAAJ,EAAaD,OAAO,CAAC1jC,OAAR,GAAkB2jC,OAAlB;AACd,OAHD,MAGO,IAAIF,UAAJ,EAAgB;AACrBA,QAAAA,UAAU,CAACC,OAAO,CAAC1jC,OAAT,CAAV;AACD;AACF,KAPD,MAOO;AACL,UAAI,CAACo8B,MAAD,IAAW,CAACsH,OAAO,CAAC1jC,OAAxB,EAAiC;AAC/B0jC,QAAAA,OAAO,CAAC1jC,OAAR,GAAkBwjC,OAAO,CAACD,IAAD,CAAzB;AACD;AACF;;AAED,WAAOG,OAAO,CAAC1jC,OAAf;AAED,GAhBa,EAgBXujC,IAhBW,CAAd;AAiBD;;SCjCeK;MAAuC;AACrDC,IAAAA,QADqD;AAErDC,IAAAA,YAFqD;AAGrDP,IAAAA;AAHqD;AAKrDx9B,EAAAA,eAAS,CAAC;AACR,QAAI,CAAC+9B,YAAD,IAAiBA,YAAY,EAAjC,EAAqC;AACnCD,MAAAA,QAAQ;AACT;;AAEF,GALQ,EAKNN,IALM,CAAT;AAMD;;SCPeQ,cAAc5hC,OAAcqD;AAC1C,QAAM;AAAE7D,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA8hC,EAAAA,SAAS,CAAC;AACRC,IAAAA,QAAQ,EAAE,MAAMliC,GAAG,CAACqiC,WAAJ,CAAgB7hC,KAAhB,EAAuBqD,MAAvB,CADR;AAER+9B,IAAAA,IAAI,EAAE,CAAC/9B,MAAD,EAASrD,KAAT;AAFE,GAAD,CAAT;AAID;;SCTe8hC,mBAAmB9hC,OAAc+hC;MAAAA;AAAAA,IAAAA,cAAuB;;;AACtEN,EAAAA,SAAS,CAAC;AACRE,IAAAA,YAAY,EAAE,MAAM3hC,KAAK,CAAC+hC,WAAN,KAAsBA,WADlC;AAERL,IAAAA,QAAQ,EAAE,MAAO1hC,KAAK,CAAC+hC,WAAN,GAAoBA,WAF7B;AAGRX,IAAAA,IAAI,EAAE,CAACW,WAAD,EAAc/hC,KAAd;AAHE,GAAD,CAAT;AAKD;;SCNegiC,gBAAgBhiC,OAAciiC;MAAAA;AAAAA,IAAAA,UAAkB;;;AAC9DR,EAAAA,SAAS,CAAC;AACRE,IAAAA,YAAY,EAAE,MAAM3hC,KAAK,CAACiiC,OAAN,KAAkBA,OAD9B;AAERP,IAAAA,QAAQ,EAAE,MAAO1hC,KAAK,CAACiiC,OAAN,GAAgBA,OAFzB;AAGRb,IAAAA,IAAI,EAAE,CAACa,OAAD,EAAUjiC,KAAV;AAHE,GAAD,CAAT;AAKD;;SCCekiC;MAAuB;AACrCjmB,IAAAA,IADqC;AAErC5Y,IAAAA,MAFqC;AAGrC4E,IAAAA,KAHqC;AAIrC7D,IAAAA,SAJqC;AAKrC29B,IAAAA,WALqC;AAMrCE,IAAAA,OANqC;AAOrCE,IAAAA,YAPqC;AAQrCC,IAAAA,WARqC;AASrCC,IAAAA;AATqC;AAWrC,QAAMzjC,KAAG,GAAGK,iBAAiB,EAA7B;AACA,QAAM;AAAEO,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMK,KAAK,GAAGmhC,WAAW,CACvB;AACEE,IAAAA,OAAO,EAAE,MAAM,IAAIiB,uBAAJ,CAAwB;AAAErmB,MAAAA,IAAF;AAAQ7X,MAAAA,SAAR;AAAmB6D,MAAAA,KAAnB;AAA0Bk6B,MAAAA,YAA1B;AAAwCC,MAAAA,WAAxC;AAAqDC,MAAAA;AAArD,KAAxB,EAA0FzjC,KAA1F,CADjB;AAEE0iC,IAAAA,UAAU,EAAEthC,KAAK,IAAIR,GAAG,CAAC+iC,OAAJ,CAAYviC,KAAZ,MAA2C,CAAC,CAA5C,IAAiDR,GAAG,CAACgjC,WAAJ,CAAgBxiC,KAAhB,CAFxE;AAGEi6B,IAAAA,MAAM,EAAE,CAACj6B,KAAD;UAAQ,CAACic,IAAD,EAAOhU,KAAP,EAAc7D,SAAd,EAAyB+9B,YAAzB;AACdniC,MAAAA,KAAK,CAACic,IAAN,GAAaA,IAAb;AACAjc,MAAAA,KAAK,CAACiI,KAAN,GAAcA,KAAd;AACAjI,MAAAA,KAAK,CAACoE,SAAN,GAAkBA,SAAlB;AACApE,MAAAA,KAAK,CAACmiC,YAAN,GAAqBA,YAArB;AACD;AARH,GADuB,EAWvB,CAAClmB,IAAD,EAAOhU,KAAP,EAAc7D,SAAd,EAAyB+9B,YAAzB,EAAuCC,WAAvC,EAAoDC,SAApD,CAXuB,CAAzB;AAcAT,EAAAA,aAAa,CAAC5hC,KAAD,EAA4BqD,MAA5B,CAAb;AACAy+B,EAAAA,kBAAkB,CAAC9hC,KAAD,EAA4B+hC,WAA5B,CAAlB;AACAC,EAAAA,eAAe,CAAChiC,KAAD,EAA4BiiC,OAA5B,CAAf;AAEA,SAAOjiC,KAAP;AACD;;SC9BeyiC;MAAoB;AAClCxmB,IAAAA,IADkC;AAElCymB,IAAAA,SAFkC;AAGlCC,IAAAA,UAHkC;AAIlCt/B,IAAAA,MAJkC;AAKlC0+B,IAAAA,WALkC;AAMlCn/B,IAAAA,GANkC;AAOlCq/B,IAAAA;AAPkC;AASlC,QAAMrjC,KAAG,GAAGK,iBAAiB,EAA7B;AACA,QAAM;AAAEO,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAMK,KAAK,GAAGlB,aAAO,CACnB,MAAM,IAAI8jC,oBAAJ,CAAqB;AAAE3mB,IAAAA,IAAF;AAAQymB,IAAAA,SAAR;AAAmBC,IAAAA,UAAnB;AAA+B//B,IAAAA,GAA/B;AAAoCq/B,IAAAA;AAApC,GAArB,EAAoErjC,KAApE,CADa;AAGnB,GAACqd,IAAD,EAAOymB,SAAP,EAAkBC,UAAlB,EAA8B//B,GAA9B,EAAmCq/B,OAAnC,CAHmB,CAArB;AAMAr+B,EAAAA,eAAS,CACP,MAAM;AACJpE,IAAAA,GAAG,CAAC+iC,OAAJ,CAAaviC,KAAb,MAA6C,CAAC,CAA9C,IACER,GAAG,CAACgjC,WAAJ,CAAiBxiC,KAAjB,CADF;AAED,GAJM;AAMP,GAACA,KAAD,CANO,CAAT;AASA4hC,EAAAA,aAAa,CAAE5hC,KAAF,EAA8BqD,MAA9B,CAAb;AACAy+B,EAAAA,kBAAkB,CAAE9hC,KAAF,EAA8B+hC,WAA9B,CAAlB;AAEA,SAAO/hC,KAAP;AACD;;SCjCe6iC;MAAgB;AAC9Bx/B,IAAAA,MAD8B;AAE9B0+B,IAAAA,WAAW,GAAG,IAFgB;AAG9Br+B,IAAAA,QAH8B;AAI9Bu+B,IAAAA;AAJ8B;AAM9B,QAAM;AAAEziC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMK,KAAK,GAAGmhC,WAAW,CACvB;AACEE,IAAAA,OAAO,EAAE,MAAM,IAAIxhC,2BAAJ,CAAiB;AAAE6D,MAAAA,QAAF;AAAYu+B,MAAAA;AAAZ,KAAjB,CADjB;AAEEX,IAAAA,UAAU,EAAEthC,KAAK,IAAIR,GAAG,CAAC+iC,OAAJ,CAAYviC,KAAZ,MAAuB,CAAC,CAAxB,IAA6BR,GAAG,CAACgjC,WAAJ,CAAgBxiC,KAAhB,CAFpD;AAGEi6B,IAAAA,MAAM,EAAE,CAACj6B,KAAD;UAAQ,CAAC0D,QAAD;AACd1D,MAAAA,KAAK,CAAC0D,QAAN,GAAiBA,QAAjB;AACD;AALH,GADuB,EAQvB,CAACA,QAAD,CARuB,CAAzB;AAWAk+B,EAAAA,aAAa,CAAC5hC,KAAD,EAAQqD,MAAR,CAAb;AACAy+B,EAAAA,kBAAkB,CAAC9hC,KAAD,EAAQ+hC,WAAR,CAAlB;AACAC,EAAAA,eAAe,CAAChiC,KAAD,EAAQiiC,OAAR,CAAf;AAEA,SAAOjiC,KAAP;AACD;;SC7Be8iC,iBACdC,cACAC;AAEA,QAAM;AAAExjC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMkB,KAAK,GAAGmiC,KAAK,GAAGC,oBAAH,GAAqBC,uBAAxC;AAEA,QAAMC,gBAAgB,GAAGllC,iBAAW,CAAC;AACnC8kC,IAAAA,YAAY,IAAIA,YAAY,CAACK,WAAW,CAAC5jC,GAAD,CAAZ,CAA5B;AAED,GAHmC,EAGjC,CAACujC,YAAD,EAAevjC,GAAf,EAAoBqB,KAApB,CAHiC,CAApC;AAKA+C,EAAAA,eAAS,CAAC;AACRpE,IAAAA,GAAG,CAAC8hB,EAAJ,CAAOzgB,KAAK,CAACuF,IAAb,EAAmB+8B,gBAAnB;AAEA,WAAO;AACL3jC,MAAAA,GAAG,CAAC6jC,GAAJ,CAAQxiC,KAAK,CAACuF,IAAd,EAAoB+8B,gBAApB;AACD,KAFD;AAID,GAPQ,EAON,CAACA,gBAAD,EAAmBtiC,KAAnB,CAPM,CAAT;AAQD;AAOD,SAAgBuiC,YAAY5jC;AAC1B,SAAO;AACLsC,IAAAA,QAAQ,EAAEtC,GAAG,CAACsC,QAAJ,CAAaO,KAAb,CAAmB,CAAnB,CADL;AAELH,IAAAA,UAAU,EAAE1C,GAAG,CAAC0C;AAFX,GAAP;AAID;;SClCeohC,aAAaC;AAC3B,QAAM;AAAE9jC,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AAEA,QAAM6jC,eAAe,GAAGvlC,iBAAW,CAAC;AAClCslC,IAAAA,QAAQ,IAAIA,QAAQ,CAAC,CAAC9jC,OAAO,CAACkQ,KAAT,EAAgBlQ,OAAO,CAACmT,MAAxB,CAAD,CAApB;AAED,GAHkC,EAGhC,CAAC2wB,QAAD,EAAW9jC,OAAX,CAHgC,CAAnC;AAKAmE,EAAAA,eAAS,CAAC;AACRnE,IAAAA,OAAO,CAAC6hB,EAAR,CAAWmiB,oBAAS,CAACr9B,IAArB,EAA2Bo9B,eAA3B;AAEA,WAAO;AACL/jC,MAAAA,OAAO,CAAC4jC,GAAR,CAAYI,oBAAS,CAACr9B,IAAtB,EAA4Bo9B,eAA5B;AACD,KAFD;AAID,GAPQ,EAON,CAACA,eAAD,CAPM,CAAT;AAQD;;MCMYE,UAAU,GAAG;AACxB,QAAM;AAAElkC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAM,CAACgkC,cAAD,EAAiBC,iBAAjB,IAAsC7lC,cAAQ,EAApD;AAEA,QAAM8lC,aAAa,GAAG/kC,aAAO,CAAC,MAAMU,GAAG,CAACkB,MAAX,EAAgD,CAC3ElB,GAAG,CAACkB,MADuE,CAAhD,CAA7B;AAIA,QAAMojC,IAAI,GAAG7lC,iBAAW,CACrB4C,KAAD;AACE,QAAI,EAAEA,KAAK,YAAYkjC,2BAAnB,CAAJ,EAAwC;AACtC;AACD;;AAED,UAAMC,cAAc,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAOvkC,OAAO,CAACkQ,KAAf,EAAsBlQ,OAAO,CAACmT,MAA9B,CAAvB;AACA,UAAM,CAAC3R,CAAD,EAAIC,CAAJ,IAASzB,OAAO,CAACwkC,aAAR,CAAsBpjC,KAAK,CAACC,KAAN,CAAYgB,QAAlC,CAAf;AAEA8hC,IAAAA,iBAAiB,CAAC;AAChBM,MAAAA,UAAU,EAAE,CAACl1B,IAAI,CAACc,KAAL,CAAW7O,CAAX,CAAD,EAAgB+N,IAAI,CAACc,KAAL,CAAW5O,CAAX,CAAhB,CADI;AAEhBijC,MAAAA,SAAS,EAAEC,qBAAqB,CAACP,aAAD,CAFhB;AAGhBG,MAAAA,cAHgB;AAIhBK,MAAAA,QAAQ,EAAE7kC,GAAG,CAACoD,GAAJ,CAAQ0hC;AAJF,KAAD,CAAjB;AAMD,GAfqB,EAiBtB,CAAC7kC,OAAD,EAAUokC,aAAV,EAAyBrkC,GAAG,CAACoD,GAAJ,CAAQ0hC,IAAjC,CAjBsB,CAAxB;AAoBAtD,EAAAA,QAAQ,CAAC;AACPC,IAAAA,OAAO,EAAE,MAAMzhC,GAAG,CAAC8hB,EAAJ,CAAO,OAAP,EAAgBwiB,IAAhB,CADR;AAEP5C,IAAAA,SAAS,EAAE,MAAM1hC,GAAG,CAAC6jC,GAAJ,CAAQ,OAAR,EAAiBS,IAAjB;AAFV,GAAD,CAAR;AAKA,SAAOH,cAAP;AACD,CAlCM;;AAoCP,SAASY,iBAAT,CAA2BvkC,KAA3B;AACE;AAEEA,IAAAA,KAAK,CAACwkC,cAAN;AAEAxkC,IAAAA,KAAK,CAACwkC,cAAN,CAAqB9hC,IAFrB;AAIA1C,IAAAA,KAAK,CAACwkC,cAAN,CAAqB9hC,IAArB,CAA0Bma;AAN5B;AAQD;;AAED,SAASunB,qBAAT,CAA+B1jC,MAA/B;AACE,MAAIyjC,SAAS,GAAc,EAA3B;;AAEA,OAAK,MAAMnkC,KAAX,IAAoBU,MAApB,EAA4B;AAC1B,QAAI,CAAC+jC,yBAAqB,CAACzkC,KAAD,CAA1B,EAAmC;AACjC;AACD;;AAEDmkC,IAAAA,SAAS,CAACnkC,KAAK,CAACic,IAAP,CAAT,GAAwBsoB,iBAAiB,CAACvkC,KAAD,CAAzC;AACD;;AAED,SAAOmkC,SAAP;AACD;;SChFeO,YAAY1B;AAC1B,QAAM;AAAExjC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAM,GAAGglC,QAAH,IAAeC,gBAAU,CAACC,eAAD,EAAkBr2B,SAAlB,EAA6B,MAC1D40B,WAAW,CAAC5jC,GAAD,CADkB,CAA/B;AAIA,QAAM2jC,gBAAgB,GAAGllC,iBAAW,CAAC0mC,QAAD,EAAW,CAACA,QAAD,CAAX,CAApC;AAEA7B,EAAAA,gBAAgB,CAACK,gBAAD,EAAmBH,KAAnB,CAAhB;AAEA,SAAOI,WAAW,CAAC5jC,GAAD,CAAlB;AACD;;AAED,SAASqlC,eAAT,CAAyB1rB,CAAzB,EAAsC2rB,QAAtC;AACE,SAAOA,QAAP;AACD;;SCdeC;AACd,QAAM;AAAEvlC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAM;AAAEmC,IAAAA,QAAF;AAAYI,IAAAA;AAAZ,MAA2BwiC,WAAW,EAA5C;AAEA,QAAM1hC,KAAK,GAAGlE,aAAO,CAAC;AACpB,UAAM6O,KAAK,GAAGnO,GAAG,CAACyD,UAAJ,CAAe+hC,QAAf,CAAwB9iC,UAAxB,CAAd;AAEA,QAAIyL,KAAK,KAAK,KAAK,CAAf,IAAoBA,KAAK,KAAK,IAAlC,EAAwC;AAExC,WAAOnO,GAAG,CAACyD,UAAJ,CAAeE,MAAf,CAAsBwK,KAAtB,EAA6BtK,MAApC;AAED,GAPoB,EAOlB,CAACnB,UAAD,CAPkB,CAArB;;AAUA,QAAMQ,IAAI,GAAG5D,aAAO,CAAC,MAAMW,OAAO,CAACiD,IAAf,EAAqB,CAACZ,QAAD,EAAWI,UAAX,CAArB,CAApB;AAEA,SAAO;AACLJ,IAAAA,QADK;AAELI,IAAAA,UAFK;AAGLc,IAAAA,KAHK;AAILN,IAAAA;AAJK,GAAP;AAMD;AAED,SAAgBuiC;AACd,QAAM;AAAEzlC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAM;AAAEuC,IAAAA;AAAF,MAAiBwiC,WAAW,CAAC,IAAD,CAAlC;AAEA,SAAO5lC,aAAO,CAAC;AACb,UAAM6O,KAAK,GAAGnO,GAAG,CAACyD,UAAJ,CAAe+hC,QAAf,CAAwB9iC,UAAxB,CAAd;AAEA,QAAIyL,KAAK,KAAK,KAAK,CAAf,IAAoBA,KAAK,KAAK,IAAlC,EAAwC;AAExC,WAAOnO,GAAG,CAACyD,UAAJ,CAAeE,MAAf,CAAsBwK,KAAtB,EAA6BtK,MAApC;AAED,GAPa,EAOX,CAACnB,UAAD,CAPW,CAAd;AAQD;;SCtCegjC;AACd,QAAM;AAAEzlC,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AACA,QAAMwlC,UAAU,GAAGtE,YAAM,CAAwB,IAAxB,CAAzB;AAEAG,EAAAA,QAAQ,CAAC;AACPC,IAAAA,OAAO,EAAE,MAAOxhC,OAAO,CAACuB,OAAR,GAAkBmkC,UAAU,CAACtnC,OADtC;AAEPqjC,IAAAA,SAAS,EAAE,MAAOzhC,OAAO,CAACuB,OAAR,GAAkB;AAF7B,GAAD,CAAR;AAKA,SAAOmkC,UAAP;AACD;;ACVD,MAAMC,OAAO,GAAI5kB,KAAD,IAAmB;AAAA,MAAC;AAAEnd,IAAAA;AAAF,GAAD;AAAA,SACjCA,MAAM,KAAKmd,KADsB;AAAA,CAAnC;;AAGA,MAAa6kB,cAAc,GAAG,CAC5BC,QAD4B,EAE5BC,QAF4B,EAG5BC,eAH4B,EAI5BC,iBAJ4B;AAM5B,QAAM;AAAEjmC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEAiE,EAAAA,eAAS,CAAC;AACR,UAAMT,MAAM,GAAG3D,GAAG,CAACyD,UAAJ,CAAeE,MAA9B;;AAEA,QAAIoiC,QAAQ,KAAK/2B,SAAjB,EAA4B;AAC1B,YAAM;AAAEtM,QAAAA;AAAF,UAAiBiB,MAAM,CAACC,IAAP,CAAYgiC,OAAO,CAACG,QAAD,CAAnB,KAAkC;AACvDrjC,QAAAA,UAAU,EAAE,CAAC;AAD0C,OAAzD;AAGA1C,MAAAA,GAAG,CAAC0O,aAAJ,GAAoBhM,UAApB;AACD;;AACD,QAAIojC,QAAQ,KAAK92B,SAAjB,EAA4B;AAC1B,YAAM;AAAEtM,QAAAA;AAAF,UAAiBiB,MAAM,CAACC,IAAP,CAAYgiC,OAAO,CAACE,QAAD,CAAnB,KAAkC;AACvDpjC,QAAAA,UAAU,EAAE,CAAC;AAD0C,OAAzD;AAGA1C,MAAAA,GAAG,CAAC2O,aAAJ,GAAoBjM,UAApB;AACD;;AAED,QAAIojC,QAAQ,KAAK92B,SAAb,IAA0B+2B,QAAQ,KAAK/2B,SAA3C,EAAsD;AACpDk3B,MAAAA,mBAAmB,CAAClmC,GAAD,EAAMgmC,eAAN,EAAuBC,iBAAvB,CAAnB;AACD;;AAEF,GApBQ,EAoBN,CAACjmC,GAAD,EAAM8lC,QAAN,EAAgBC,QAAhB,CApBM,CAAT;AAqBD,CA7BM;AA+BP,MAAaG,mBAAmB,GAAG,CACjClmC,GADiC,EAEjCgmC,eAFiC,EAGjCC,iBAHiC;AAKjC,MAAID,eAAe,IAAIC,iBAAvB,EAA0C;AACxC,UAAME,aAAa,GAAG32B,IAAI,CAACF,GAAL,CACpBE,IAAI,CAACD,GAAL,CAAS02B,iBAAT,EAA4BjmC,GAAG,CAAC0O,aAAJ,IAAqB,CAAjD,CADoB,EAEpB1O,GAAG,CAAC2O,aAAJ,IAAqBy3B,MAAM,CAACC,SAFR,CAAtB;AAKArmC,IAAAA,GAAG,CAACyC,SAAJ,CAAcujC,eAAd,EAA+BG,aAA/B;AACD;AACF,CAbM;;ACnCP,SAASplB,UAAT,CAAkBC,KAAlB;AACE,QAAMslB,KAAK,GAAG92B,IAAI,CAAC0R,GAAL,CAAS,EAAT,EAAa,CAAC1R,IAAI,CAAC+2B,KAAL,CAAWvlB,KAAX,IAAoB,EAArB,EAAyB5iB,MAAzB,GAAkC,CAA/C,CAAd;AACA,QAAMooC,CAAC,GAAGxlB,KAAK,GAAGslB,KAAlB;AAEA,SAAOA,KAAK,IAAIE,CAAC,IAAI,EAAL,GAAU,EAAV,GAAeA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAaA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAaA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAa,CAA1D,CAAZ;AACD;;AAED,SAASC,sBAAT,CAAgC/jC,UAAhC;AACE,QAAM;AAAEzC,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AACA,QAAM;AACJiT,IAAAA,MADI;AAEJjD,IAAAA,KAFI;AAGJjN,IAAAA,IAAI,EAAE;AAAEH,MAAAA,IAAF;AAAQD,MAAAA,IAAR;AAAcG,MAAAA,IAAd;AAAoBD,MAAAA,IAApB;AAA0BI,MAAAA;AAA1B;AAHF,MAIFnD,OAJJ;AAMA,SAAOX,aAAO,CAAC;AACb,QAAI6Q,KAAK,KAAK,CAAd,EAAiB;AACf,aAAOzN,UAAP;AACD;;AACD,UAAMgkC,aAAa,GAAGv2B,KAAK,GAAG,EAA9B;AACA,UAAMoD,CAAC,GAAGtT,OAAO,CAAC+B,sBAAR,CAA+B,CAA/B,EAAkCoR,MAAM,GAAG,CAA3C,CAAV;AACA,UAAMY,CAAC,GAAG/T,OAAO,CAAC+B,sBAAR,CAA+B0kC,aAA/B,EAA8CtzB,MAAM,GAAG,CAAvD,CAAV;AAEA,WAAOyN,iBAAQ,CAACtN,CAAD,EAAIS,CAAJ,CAAR,GAAiB0yB,aAAxB;AAED,GAVa,EAUX,CAACtzB,MAAD,EAASjD,KAAT,EAAgBpN,IAAhB,EAAsBD,IAAtB,EAA4BG,IAA5B,EAAkCD,IAAlC,EAAwCI,GAAG,CAAC0hC,IAA5C,EAAkDpiC,UAAlD,EAA8DzC,OAA9D,CAVW,CAAd;AAWD;;AAED,SAAgB0mC;MAAS;AACvBjkC,IAAAA,UADuB;AAEvBkkC,IAAAA,SAAS,GAAG;AAFW;AAOvB,QAAMC,mBAAmB,GAAGJ,sBAAsB,CAAC/jC,UAAD,CAAlD;AAEA,SAAOpD,aAAO,CAAC;AACb,UAAMwmC,QAAQ,GAAGc,SAAS,GAAGC,mBAA7B;AACA,UAAMC,YAAY,GAAG/lB,UAAQ,CAAC+kB,QAAD,CAA7B;AACA,UAAM31B,KAAK,GAAG4Q,UAAQ,CAAC+kB,QAAD,CAAR,GAAqBe,mBAAnC;AAEA,WAAO;AACLC,MAAAA,YADK;AAEL32B,MAAAA;AAFK,KAAP;AAID,GATa,EASX,CAAC02B,mBAAD,EAAsBD,SAAtB,CATW,CAAd;AAUD;;SC1CeG,uBAEdvD;MADA;AAAElhC,IAAAA,QAAF;AAAYI,IAAAA;AAAZ;AAGA,QAAM;AAAE1C,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAM;AAAEsC,IAAAA;AAAF,MAAgBR,iBAAiB,EAAvC;AAEAmC,EAAAA,eAAS,CAAC;AACR,QAAI4iC,oBAAoB,CAAChnC,GAAD,EAAM;AAAEsC,MAAAA,QAAF;AAAYI,MAAAA;AAAZ,KAAN,CAAxB,EAAyD;AACvDD,MAAAA,SAAS,CAAC;AACRH,QAAAA,QADQ;AAERI,QAAAA;AAFQ,OAAD,CAAT;AAID;;AAEF,GARQ,EAQN,CAACJ,QAAD,EAAWI,UAAX,EAAuB8gC,KAAvB,CARM,CAAT;AASD;;AAED,SAASyD,oBAAT,CAA8BjnC,GAA9B,EAAwCsC,QAAxC;AACE,SACEA,QAAQ,KACP,CAACwe,eAAU,CAAC9gB,GAAG,CAACsC,QAAJ,CAAa,CAAb,CAAD,EAAkBA,QAAQ,CAAC,CAAD,CAA1B,CAAX,IACC,CAACwe,eAAU,CAAC9gB,GAAG,CAACsC,QAAJ,CAAa,CAAb,CAAD,EAAkBA,QAAQ,CAAC,CAAD,CAA1B,CAFL,CADV;AAKD;;AAED,SAAS4kC,sBAAT,CAAgClnC,GAAhC,EAA0C0C,UAA1C;AACE,SAAOA,UAAU,IAAI,CAACoe,eAAU,CAAC9gB,GAAG,CAAC0C,UAAL,EAAiBA,UAAjB,CAAhC;AACD;;AAED,SAAgBskC,qBACdhnC;MACA;AAAEsC,IAAAA,QAAF;AAAYI,IAAAA;AAAZ;AAEA,SACEukC,oBAAoB,CAACjnC,GAAD,EAAMsC,QAAN,CAApB,IACA4kC,sBAAsB,CAAClnC,GAAD,EAAM0C,UAAN,CAFxB;AAID;;MCRYykC,UAAU,GAAG,SAAbA,UAAa,CAACtjC,MAAD;MAACA;AAAAA,IAAAA,SAAS;;;AAClC,QAAM;AAAErD,IAAAA,KAAF;AAASC,IAAAA;AAAT,MAAwBE,iBAAiB,EAA/C;AACA,QAAM;AAAEX,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAM+B,aAAa,GAAGd,aAAa,EAAnC;AAEA,QAAMgmC,cAAc,GAAwC/F,YAAM,CAAC,EAAD,CAAlE;AACA,QAAMgG,YAAY,GAA0ChG,YAAM,CAAC,IAAD,CAAlE;AACA,QAAMiG,MAAM,GAAsCjG,YAAM,CAAC,EAAD,CAAxD;AAEA,QAAMkG,UAAU,GAAG9oC,iBAAW,CAAC,MAAMgC,UAAU,CAAC2iB,MAAX,CAAkB3iB,UAAU,CAACyD,QAA7B,CAAP,EAA+C,CAC3EzD,UAD2E,CAA/C,CAA9B;AAIA,QAAM7B,KAAK,GAAGH,iBAAW,CAAC;AACxB2oC,IAAAA,cAAc,CAAC/oC,OAAf,CAAuB20B,OAAvB,CAA+B,CAAChvB,OAAD,EAAyBmK,KAAzB;AAC7B,YAAMq5B,oBAAoB,GAAGF,MAAM,CAACjpC,OAAP,CAAe8P,KAAf,CAA7B;;AAEA,UAAIq5B,oBAAJ,EAA0B;AACxB,cAAM;AACJC,UAAAA,WADI;AAEJC,UAAAA,WAFI;AAGJC,UAAAA,UAHI;AAIJC,UAAAA;AAJI,YAKFJ,oBALJ;;AAOA,YAAIxjC,OAAO,CAAC6jC,WAAR,CAAoB,WAApB,EAAiCJ,WAAjC,CAAJ,EAA8D;AAC5DzjC,UAAAA,OAAO,CAAC6/B,GAAR,CAAY,WAAZ,EAAyB4D,WAAzB;AACD;;AAED,YAAIzjC,OAAO,CAAC6jC,WAAR,CAAoB,WAApB,EAAiCH,WAAjC,CAAJ,EAA8D;AAC5D1jC,UAAAA,OAAO,CAAC6/B,GAAR,CAAY,WAAZ,EAAyB6D,WAAzB;AACD;;AAED,YAAI1jC,OAAO,CAAC6jC,WAAR,CAAoB,UAApB,EAAgCF,UAAhC,CAAJ,EAA4D;AAC1D3jC,UAAAA,OAAO,CAAC6/B,GAAR,CAAY,UAAZ,EAAwB8D,UAAxB;AACD;;AAED,YAAI3jC,OAAO,CAAC6jC,WAAR,CAAoB,OAApB,EAA6BD,OAA7B,CAAJ,EAAsD;AACpD5jC,UAAAA,OAAO,CAAC6/B,GAAR,CAAY,OAAZ,EAAqB+D,OAArB;AACD;AACF;AACF,KA3BD;AA6BA5nC,IAAAA,GAAG,CAAC6jC,GAAJ,CAAQ,OAAR,EAAiB0D,UAAjB;AACAH,IAAAA,cAAc,CAAC/oC,OAAf,GAAyB,EAAzB;AACAgpC,IAAAA,YAAY,CAAChpC,OAAb,GAAuB,IAAvB;AACAmC,IAAAA,KAAK,CAAC4iB,MAAN,CAAa5iB,KAAK,CAAC0D,QAAnB;AACAojC,IAAAA,MAAM,CAACjpC,OAAP,GAAiB,EAAjB;;AAEA,QAAI2B,GAAG,CAAC+iC,OAAJ,CAAYtiC,UAAZ,MAA4B,CAAC,CAAjC,EAAoC;AAClCT,MAAAA,GAAG,CAACgjC,WAAJ,CAAgBviC,UAAhB;AACD;AACF,GAvCwB,EAuCtB,CAAC8mC,UAAD,EAAa9mC,UAAb,EAAyBD,KAAzB,EAAgCR,GAAhC,CAvCsB,CAAzB;AAyCAoE,EAAAA,eAAS,CAAC;AACR,QAAIpE,GAAG,CAAC+iC,OAAJ,CAAYviC,KAAZ,MAAuB,CAAC,CAA5B,EAA+B;AAC7BR,MAAAA,GAAG,CAACqiC,WAAJ,CAAgB7hC,KAAhB,EAAuBqD,MAAvB;AACD;;AACD,WAAOjF,KAAP;AACD,GALQ,EAKN,CAACA,KAAD,EAAQoB,GAAR,EAAaQ,KAAb,EAAoBqD,MAApB,CALM,CAAT;AAOA,QAAMikC,iBAAiB,GAAGrpC,iBAAW,CACnC;QAAC;AACC6C,MAAAA,KADD;AAECgB,MAAAA,QAFD;AAGC+zB,MAAAA,SAHD;AAIC0R,MAAAA;AAJD;AAQC,UAAM/jC,OAAO,GAAG,IAAIkgB,kBAAJ,CAAiB5hB,QAAQ,IAAIhB,KAAK,CAACgB,QAAnC,EAA6C;AAC3DxB,MAAAA,MAAM,EAAE,IAAIs1B,WAAJ,CAAgB;AACtBC,QAAAA,SAAS,EAAEA;AADW,OAAhB,CADmD;AAI3DjzB,MAAAA,GAAG,EAAEpD,GAAG,CAACoD;AAJkD,KAA7C,CAAhB;;AAOA,QAAI2kC,SAAJ,EAAe;AACb,UAAI/nC,GAAG,CAAC+iC,OAAJ,CAAYtiC,UAAZ,MAA4B,CAAC,CAAjC,EAAoC;AAClCT,QAAAA,GAAG,CAACqiC,WAAJ,CAAgB5hC,UAAhB,EAA4BoD,MAA5B;AACD;;AAEDpD,MAAAA,UAAU,CAAC2iB,MAAX,CAAkB3iB,UAAU,CAACyD,QAA7B;AACAzD,MAAAA,UAAU,CAACgjB,GAAX,CAAezf,OAAf;AACD,KAPD,MAOO;AACLqjC,MAAAA,YAAY,CAAChpC,OAAb,GAAuB2F,OAAvB;AACAxD,MAAAA,KAAK,CAACijB,GAAN,CAAUzf,OAAV;AACD;AACF,GA3BkC,EA4BnC,CAACvD,UAAD,EAAaD,KAAb,EAAoBR,GAApB,EAAyB6D,MAAzB,CA5BmC,CAArC;AA+BA,QAAMmkC,oBAAoB,GAAGvpC,iBAAW,CACtC4C,KAAK;AACH,QAAIA,KAAK,CAACi1B,IAAV,EAAgB;AACdj1B,MAAAA,KAAK,CAACi1B,IAAN,CAAW2R,gBAAX,GAA8B,IAA9B;AACD;;AACD5mC,IAAAA,KAAK,CAAC6mC,eAAN;AACAb,IAAAA,YAAY,CAAChpC,OAAb,IACEmC,KAAK,CAAC2nC,GAAN,CAAUd,YAAY,CAAChpC,OAAvB,CADF,IAEEmC,KAAK,CAAC4iB,MAAN,CAAaikB,YAAY,CAAChpC,OAA1B,CAFF;AAGAgpC,IAAAA,YAAY,CAAChpC,OAAb,GAAuB,IAAvB;AACAmC,IAAAA,KAAK,CAAC4iB,MAAN,CAAa5iB,KAAK,CAAC0D,QAAnB;AACD,GAXqC,EAYtC,CAAC1D,KAAD,CAZsC,CAAxC;AAeA,SAAO/B,iBAAW,CACf2pC,aAAD;AACE,UAAM;AAAEpkC,MAAAA,OAAF;AAAW1B,MAAAA,QAAX;AAAqB+zB,MAAAA,SAArB;AAAgC0R,MAAAA;AAAhC,QAA8CK,aAApD;AACA,UAAMC,MAAM,GAAGrkC,OAAO,IAAIhE,GAA1B;AACAonC,IAAAA,cAAc,CAAC/oC,OAAf,CAAuB4O,IAAvB,CAA4Bo7B,MAA5B;AACA,UAAMC,KAAK,GAAGD,MAAM,YAAYzoC,QAAhC;AAEA,UAAM2oC,aAAa,GAAkB,EAArC;;AAEAA,IAAAA,aAAa,CAACd,WAAd,GAA6BpmC,KAAD;AAC1BA,MAAAA,KAAK,CAAC6mC,eAAN;AACAF,MAAAA,oBAAoB,CAAC3mC,KAAD,CAApB;AAEAymC,MAAAA,iBAAiB,CAAC;AAAExmC,QAAAA,KAAK,EAAEY,aAAa,CAACb,KAAD,CAAtB;AAA+BiB,QAAAA,QAA/B;AAAyC+zB,QAAAA;AAAzC,OAAD,CAAjB;AACD,KALD;;AAOAkS,IAAAA,aAAa,CAACb,WAAd,GACErmC,KAD0B;AAK1B,UAAI,CAACinC,KAAL,EAAY;AACVjnC,QAAAA,KAAK,CAAC6mC,eAAN;AACD;;AAED,UAAI7mC,KAAK,CAACi1B,IAAV,EAAgB;AACdj1B,QAAAA,KAAK,CAACi1B,IAAN,CAAW2R,gBAAX,GAA8B,IAA9B;AACD;;AAED,YAAM3mC,KAAK,GAAGY,aAAa,CAACb,KAAD,CAA3B;;AAEA,UAAIgmC,YAAY,CAAChpC,OAAjB,EAA0B;AACxBiqC,QAAAA,KAAK,IACH,CAAC9nC,KAAK,CAAC2nC,GAAN,CAAUd,YAAY,CAAChpC,OAAvB,CADH,IAEEmC,KAAK,CAACijB,GAAN,CAAU4jB,YAAY,CAAChpC,OAAvB,CAFF;AAIAgpC,QAAAA,YAAY,CAAChpC,OAAb,CAAqBiE,QAArB,GAAgCA,QAAQ,IAAIhB,KAAK,CAACgB,QAAlD;AACD,OAND,MAMO;AACLwlC,QAAAA,iBAAiB,CAAC;AAAExmC,UAAAA,KAAK,EAAEA,KAAT;AAAgBgB,UAAAA,QAAhB;AAA0B+zB,UAAAA;AAA1B,SAAD,CAAjB;AACD;AACF,KAxBD;;AA0BA,QAAI0R,SAAJ,EAAe;AACbQ,MAAAA,aAAa,CAACX,OAAd,GAAyBvmC,KAAD;AACtBA,QAAAA,KAAK,CAAC6mC,eAAN;AAEAJ,QAAAA,iBAAiB,CAAC;AAChBxmC,UAAAA,KAAK,EAAEY,aAAa,CAACb,KAAD,CADJ;AAEhBiB,UAAAA,QAFgB;AAGhB+zB,UAAAA,SAHgB;AAIhB0R,UAAAA;AAJgB,SAAD,CAAjB;AAMD,OATD;AAUD;;AAEDQ,IAAAA,aAAa,CAACZ,UAAd,GAA2BK,oBAA3B;AAEAV,IAAAA,MAAM,CAACjpC,OAAP,CAAe4O,IAAf,CAAoBs7B,aAApB;AAEA,UAAM;AAAEd,MAAAA,WAAF;AAAeC,MAAAA,WAAf;AAA4BC,MAAAA,UAA5B;AAAwCC,MAAAA;AAAxC,QAAoDW,aAA1D;;AAEA,QAAIR,SAAS,IAAI,CAACO,KAAlB,EAAyB;AACvBD,MAAAA,MAAM,CAACvmB,EAAP,CAAU,WAAV,EAAuB6lB,UAAvB;AACAU,MAAAA,MAAM,CAACvmB,EAAP,CAAU,WAAV,EAAuB6lB,UAAvB;AACAU,MAAAA,MAAM,CAACvmB,EAAP,CAAU,OAAV,EAAmB8lB,OAAnB;;AAEA,UAAI,CAAC5nC,GAAG,CAAC6nC,WAAJ,CAAgB,OAAhB,EAAyBN,UAAzB,CAAL,EAAsD;AACpDvnC,QAAAA,GAAG,CAAC8hB,EAAJ,CAAO,OAAP,EAAgBylB,UAAhB;AACD;AACF,KARD,MAQO;AACL,UAAI,CAACe,KAAL,EAAY;AACVD,QAAAA,MAAM,CAACvmB,EAAP,CAAU,WAAV,EAAuB2lB,WAAvB;AACD;;AACDY,MAAAA,MAAM,CAACvmB,EAAP,CAAU,WAAV,EAAuB4lB,WAAvB;AACAW,MAAAA,MAAM,CAACvmB,EAAP,CAAU,UAAV,EAAsB6lB,UAAtB;AACD;AACF,GA5Ee,EA6EhB,CACEK,oBADF,EAEET,UAFF,EAGEvnC,GAHF,EAIE8nC,iBAJF,EAKE5lC,aALF,EAME1B,KANF,CA7EgB,CAAlB;AAsFD,CAjMM;;SClBSgoC;MAAgB;AAC9B3kC,IAAAA,MAD8B;AAE9B0+B,IAAAA,WAAW,GAAG,IAFgB;AAG9Br+B,IAAAA,QAH8B;AAI9BukC,IAAAA,YAJ8B;AAK9Bj3B,IAAAA,IAL8B;AAM9BqP,IAAAA,QAN8B;AAO9B6nB,IAAAA;AAP8B;AAS9B,QAAM;AAAE1oC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAMwoC,eAAe,GAAGtH,YAAM,CAACn9B,QAAD,CAA9B;AAEA,QAAM1D,KAAK,GAAiBmhC,WAAW,CACrC;AACEE,IAAAA,OAAO,EAAE;AACP,YAAM+G,mBAAmB,GAAG,IAAIC,uCAAJ,CAAwB;AAClDr3B,QAAAA,IADkD;AAElDqP,QAAAA,QAFkD;AAGlD4nB,QAAAA,YAAY,EAAEA,YAAY,GACtBvkC,QAAQ,IAAIukC,YAAY,CAACvkC,QAAD,EAAW1D,KAAX,CADF,GAEtB,KAAK;AALyC,OAAxB,CAA5B;AAQA,YAAMsoC,YAAY,GAAG,IAAIC,2BAAJ,CAAiB;AACpCH,QAAAA,mBADoC;AAEpCF,QAAAA;AAFoC,OAAjB,CAArB;AAIAC,MAAAA,eAAe,CAACtqC,OAAhB,GAA0B6F,QAA1B;AAEA4kC,MAAAA,YAAY,CAACrlB,GAAb,CAAiBvf,QAAjB;AAEA,aAAO4kC,YAAP;AACD,KAnBH;AAoBEhH,IAAAA,UAAU,EAAEthC,KAAK,IAAIR,GAAG,CAAC+iC,OAAJ,CAAYviC,KAAZ,MAAuB,CAAC,CAAxB,IAA6BR,GAAG,CAACgjC,WAAJ,CAAgBxiC,KAAhB,CApBpD;AAqBEi6B,IAAAA,MAAM,EAAE,CAACqO,YAAD;UAAe,CAAC5kC,QAAD;AACrB4kC,MAAAA,YAAY,CAAC1lB,MAAb,CAAoBulB,eAAe,CAACtqC,OAApC;AACAyqC,MAAAA,YAAY,CAACrlB,GAAb,CAAiBvf,QAAjB;AAEAykC,MAAAA,eAAe,CAACtqC,OAAhB,GAA0B6F,QAA1B;AACD;AA1BH,GADqC,EA6BrC,CAACA,QAAD,CA7BqC,CAAvC;AAgCAk+B,EAAAA,aAAa,CAAC5hC,KAAD,EAAQqD,MAAR,CAAb;AACAy+B,EAAAA,kBAAkB,CAAC9hC,KAAD,EAAQ+hC,WAAR,CAAlB;AAEA,SAAO/hC,KAAP;AACD;;AC5DD,MAAMwoC,aAAa,GAAqB,EAAxC;AAIA,MAAaC,gBAAgB,GAAG;MAAC;AAC/BC,IAAAA,MAD+B;AAE/BC,IAAAA;AAF+B;AAI/B,QAAMC,aAAa,GAAGlF,UAAU,EAAhC;AACA,QAAMhjC,MAAM,GAAGC,uBAAuB,EAAtC;AACA,QAAM,CAAC+C,QAAD,EAAWmlC,WAAX,IAA0B9qC,cAAQ,CAAmByqC,aAAnB,CAAxC;AAEA,QAAMM,cAAc,GAAG7qC,iBAAW,CAAC,MAAM4qC,WAAW,CAACL,aAAD,CAAlB,EAAmC,CACnEK,WADmE,CAAnC,CAAlC;AAIAjlC,EAAAA,eAAS,CAAC;AACR,QAAI,CAACglC,aAAL,EAAoB;AAClB;AACD;;AAEDF,IAAAA,MAAM,CAACE,aAAD,CAAN,CAAsBjI,IAAtB,CAA2Bj9B,QAAQ;AACjCmlC,MAAAA,WAAW,CAACnlC,QAAQ,CAAClE,GAAT,CAAa6f,eAAe,CAAC3e,MAAD,CAA5B,CAAD,CAAX;AACD,KAFD;AAID,GATQ,EASN,CAACkoC,aAAD,CATM,CAAT;AAWA,SAAO,CACL,OAAOD,UAAP,KAAsB,UAAtB,GAAmCA,UAAU,CAACjlC,QAAD,CAA7C,GAA0DA,QADrD,EAELolC,cAFK,CAAP;AAID,CA3BM;;MCXMC,MAAM,GAAIztB,IAAD;AACpB,SAAOxc,aAAO,CAAC;AACb,WAAO4b,OAAO,CAACY,IAAI,IAAIH,YAAT,CAAP,IAAiCC,WAAxC;AACD,GAFa,EAEX,CAACE,IAAD,CAFW,CAAd;AAGD,CAJM;;ACYP,MAAMqG,SAAS,GAAG,CAACliB,OAAD,EAAsBukB,MAAtB,KAChBvkB,OAAO,CAACuB,OAAR,IACA,OAAOvB,OAAO,CAACuB,OAAf,KAA2B,QAD3B,KAECvB,OAAO,CAACuB,OAAR,CAAgBiH,KAAhB,CAAsB+b,MAAtB,GAA+BA,MAFhC,CADF;;AAKA,SAASglB,IAAT;AACE;AACD;;AAED,MAAaC,kBAAkB,GAAG;MAAC;AACjCnnC,IAAAA,QADiC;AAEjConC,IAAAA,QAFiC;AAGjC5oC,IAAAA;AAHiC;AAKjC,QAAMkD,OAAO,GAAGq9B,YAAM,CAAiB,IAAjB,CAAtB;AACA,QAAM;AAAErhC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAMK,KAAK,GAAG6gC,YAAM,CAAC,IAAIhhC,2BAAJ,EAAD,CAApB;AACA,QAAMspC,WAAW,GAAGtI,YAAM,CACxB,IAAIuI,uBAAJ,CAAgB5pC,GAAhB,EAAqB;AACnB6pC,IAAAA,QAAQ,EAAE,KADS;AAEnBC,IAAAA,WAAW,EAAEtpC,KAAK,CAACnC;AAFA,GAArB,CADwB,CAA1B;AAOA,QAAM0rC,UAAU,GAAGtrC,iBAAW,CAC3B4C,KAAD;AACEA,IAAAA,KAAK,CAAC6mC,eAAN;;AACA,QAAI,EAAE7mC,KAAK,YAAYkjC,2BAAnB,CAAJ,EAAwC;AACtC;AACD;;AAEDvkC,IAAAA,GAAG,CAAC6jC,GAAJ,CAAQ,OAAR,EAAiBkG,UAAjB;AACA5nB,IAAAA,SAAS,CAACliB,OAAD,EAAU,SAAV,CAAT;AACAypC,IAAAA,QAAQ,CAACroC,KAAK,CAACC,KAAN,CAAYgB,QAAb,CAAR;AACD,GAV2B,EAW5B,CAACrC,OAAD,EAAUD,GAAV,EAAe0pC,QAAf,CAX4B,CAA9B;AAcAlI,EAAAA,QAAQ,CAAC;AACPC,IAAAA,OAAO,EAAE;AACPzhC,MAAAA,GAAG,CAACgqC,QAAJ,CAAaxpC,KAAK,CAACnC,OAAnB;AACAsrC,MAAAA,WAAW,CAACtrC,OAAZ,CAAoByjB,EAApB,CAAuB,MAAvB,EAA+B;AAAA;;AAAA,eAC7B4nB,QAAQ,CAAC,0BAAAC,WAAW,CAACtrC,OAAZ,CAAoBmkB,aAApB,2CAAmClgB,QAAnC,KAA+C,CAAC,CAAD,EAAI,CAAJ,CAAhD,CADqB;AAAA,OAA/B;;AAIA,UAAI,CAACA,QAAL,EAAe;AACb6f,QAAAA,SAAS,CAACliB,OAAD,EAAU,SAAV,CAAT;AACAD,QAAAA,GAAG,CAAC8hB,EAAJ,CAAO,OAAP,EAAgBioB,UAAhB;AACD;AACF,KAXM;AAYPrI,IAAAA,SAAS,EAAE;AACT1hC,MAAAA,GAAG,CAACgjC,WAAJ,CAAgBxiC,KAAK,CAACnC,OAAtB;AACA2B,MAAAA,GAAG,CAAC6jC,GAAJ,CAAQ,OAAR,EAAiBkG,UAAjB;AACAJ,MAAAA,WAAW,CAACtrC,OAAZ,CAAoBwlC,GAApB,CAAwB,MAAxB,EAAgC;AAAA;;AAAA,eAC9B6F,QAAQ,CAAC,2BAAAC,WAAW,CAACtrC,OAAZ,CAAoBmkB,aAApB,4CAAmClgB,QAAnC,KAA+C,CAAC,CAAD,EAAI,CAAJ,CAAhD,CADsB;AAAA,OAAhC;AAGA6f,MAAAA,SAAS,CAACliB,OAAD,EAAU,SAAV,CAAT;AACD;AAnBM,GAAD,CAAR;AAsBAmE,EAAAA,eAAS,CAAC;AACR,QAAI9B,QAAJ,EAAc;AACZ,UAAI,CAAC0B,OAAO,CAAC3F,OAAb,EAAsB;AACpB,cAAM4rC,WAAW,GAAGjqC,GAAG,CAAC6nC,WAAJ,CAAgB,OAAhB,EAAyBkC,UAAzB,CAApB;AAEA,cAAMrM,YAAY,GAAG,IAAIjgB,yBAAJ,CAAiBnb,QAAjB,EAA2B;AAC9Cc,UAAAA,GAAG,EAAEpD,GAAG,CAACoD,GADqC;AAE9CtC,UAAAA,MAAM,EAAEA,MAAM,IAAI,IAAI67B,mCAAJ;AAF4B,SAA3B,CAArB;AAKAe,QAAAA,YAAY,CAAC5b,EAAb,CAAgB,WAAhB,EAA6B0nB,IAA7B;AACA9L,QAAAA,YAAY,CAAC5b,EAAb,CAAgB,WAAhB,EAA6B,MAAMK,SAAS,CAACliB,OAAD,EAAU,SAAV,CAA5C;AACAy9B,QAAAA,YAAY,CAAC5b,EAAb,CAAgB,UAAhB,EAA4B,MAAMK,SAAS,CAACliB,OAAD,EAAU,SAAV,CAA3C;AAEAO,QAAAA,KAAK,CAACnC,OAAN,CAAcolB,GAAd,CAAkBia,YAAlB;AACAiM,QAAAA,WAAW,CAACtrC,OAAZ,CAAoBmkB,aAApB,GAAoCkb,YAApC;AACAiM,QAAAA,WAAW,CAACtrC,OAAZ,CAAoBwrC,QAApB,GAA+B,IAA/B;AACA7lC,QAAAA,OAAO,CAAC3F,OAAR,GAAkBq/B,YAAlB;;AACA,YAAIuM,WAAJ,EAAiB;AACfjqC,UAAAA,GAAG,CAAC6jC,GAAJ,CAAQ,OAAR,EAAiBkG,UAAjB;AACA5nB,UAAAA,SAAS,CAACliB,OAAD,EAAU,SAAV,CAAT;AACD;AACF,OApBD,MAoBO,IAAI+D,OAAO,CAAC3F,OAAR,IAAmBsrC,WAAW,CAACtrC,OAAZ,CAAoBmkB,aAA3C,EAA0D;AAC/DmnB,QAAAA,WAAW,CAACtrC,OAAZ,CAAoBmkB,aAApB,CAAkClgB,QAAlC,GAA6CA,QAA7C;AACA9B,QAAAA,KAAK,CAACnC,OAAN,CAAcq8B,MAAd;AACD;AACF,KAzBD,MAyBO,IAAI12B,OAAO,CAAC3F,OAAZ,EAAqB;AAC1BmC,MAAAA,KAAK,CAACnC,OAAN,CAAc+kB,MAAd,CAAqBpf,OAAO,CAAC3F,OAA7B;AACA2F,MAAAA,OAAO,CAAC3F,OAAR,GAAkB,IAAlB;AACA8jB,MAAAA,SAAS,CAACliB,OAAD,EAAU,SAAV,CAAT;AACAD,MAAAA,GAAG,CAAC8hB,EAAJ,CAAO,OAAP,EAAgBioB,UAAhB;AACD;AACF,GAhCQ,EAgCN,CAACA,UAAD,EAAa9pC,OAAb,EAAsBD,GAAtB,EAA2BsC,QAA3B,EAAqCxB,MAArC,CAhCM,CAAT;AAiCD,CApFM;;MCjBMopC,iBAAiB,GAAG,CAACza,MAAD,EAAiBrsB,GAAjB;AAC/B,QAAM;AAAEnD,IAAAA,OAAF;AAAWD,IAAAA;AAAX,MAAmBG,aAAa,EAAtC;AACA,QAAM;AAAEuC,IAAAA;AAAF,MAAiBwiC,WAAW,EAAlC;AAEA,SAAO5lC,aAAO,CACZ,MACEkwB,cAAc,CAACC,MAAD,EAAS;AACrBxvB,IAAAA,OAAO,EAAEA,OADY;AAErBmD,IAAAA,GAAG,EAAEA,GAAG,IAAIpD,GAAG,CAACoD;AAFK,GAAT,CAFJ;AAOZ,GAACnD,OAAD,EAAUwvB,MAAV,EAAkBrsB,GAAlB,EAAuBpD,GAAG,CAACoD,GAA3B,EAAgCV,UAAhC,CAPY,CAAd;AASD,CAbM;AAeP,MAAaynC,mBAAmB,GAAG;AACjC,QAAM;AAAElqC,IAAAA,OAAF;AAAWD,IAAAA;AAAX,MAAmBG,aAAa,EAAtC;AAEA,SAAO1B,iBAAW,CAChB,CAACgxB,MAAD,EAAiBrsB,GAAjB,KACEosB,cAAc,CAACC,MAAD,EAAS;AACrBxvB,IAAAA,OAAO,EAAEA,OADY;AAErBmD,IAAAA,GAAG,EAAEA,GAAG,IAAIpD,GAAG,CAACoD;AAFK,GAAT,CAFA,EAMhB,CAACnD,OAAD,EAAUD,GAAG,CAACoD,GAAd,CANgB,CAAlB;AAQD,CAXM;;MCnBMgnC,oBAAoB,GAC/BC,QADkC;AAGlC,SAAO/qC,aAAO,CACZ,MACEgrC,cAAQ,CAAEC,EAAD;AACPA,IAAAA,EAAE;AACH,GAFO,EAELF,QAFK,CAFE,EAKZ,CAACA,QAAD,CALY,CAAd;AAOD,CAVM;;MCDMG,SAAS,GAAI18B,OAAD;AACvB,QAAM,CAAC28B,KAAD,EAAQC,QAAR,IAAoBnsC,cAAQ,CAACuP,OAAO,KAAKkB,SAAZ,GAAwBlB,OAAxB,GAAkC,KAAnC,CAAlC;AACA,QAAM68B,MAAM,GAAGlsC,iBAAW,CAAC,MAAMisC,QAAQ,CAAC,CAACD,KAAF,CAAf,EAAyB,CAACA,KAAD,CAAzB,CAA1B;AAEA,SAAO,CAACA,KAAD,EAAQE,MAAR,EAAgBD,QAAhB,CAAP;AACD,CALM;;SCASE;AACd,QAAM,CAACtU,IAAD,EAAOuU,SAAP,IAAoBtsC,cAAQ,CAAqB,IAArB,CAAlC;AAEA,QAAM+iC,GAAG,GAAG7iC,iBAAW,CAACosC,SAAD,EAAY,CAACA,SAAD,CAAZ,CAAvB;AAEA,SAAO,CAACvJ,GAAD,EAAMhL,IAAN,CAAP;AACD;;MCFYmG,MAAM,GAAoB;MAAC;AAAE37B,IAAAA,MAAF;AAAU0Q,IAAAA,IAAV;AAAgBwkB,IAAAA;AAAhB;AACtC,QAAM;AAAEpjB,IAAAA,MAAF;AAAU0uB,IAAAA;AAAV,MAAkBF,SAAS,EAAjC;AACAL,EAAAA,SAAS,CAAC;AAAEjgC,IAAAA,MAAF;AAAU0Q,IAAAA,IAAV;AAAgBwkB,IAAAA;AAAhB,GAAD,EAA2BpjB,MAA3B,CAAT;AAEA,SAAOrT,4BAAA,SAAA;AAAQ+hC,IAAAA,GAAG,EAAEA;GAAb,CAAP;AACD,CALM;;;MCEMwJ,YAAY,gBAAGC,eAAM,CAACC,GAAV,gJACT;AAAA,MAAC;AAAEngB,IAAAA,YAAF;AAAgBogB,IAAAA;AAAhB,GAAD;AAAA,kBACLA,KAAK,CAACpgB,YAAD,CADA,2BAEVA,YAAY,KAAKtN,gBAAY,CAACM,QAA9B,GAAyC,aAAzC,GAAyD,WAF/C;AAAA,CADS,CAAlB;AASP,MAAaqtB,aAAa,gBAAGH,eAAM,CAACC,GAAV,grBAYF;AAAA,MAAC;AAAE54B,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAf;AAAA,CAZE,EA2BF;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAf;AAAA,CA3BE,CAAnB;;ACJP,MAAM+4B,QAAQ,GAAG,EAAjB;AAEA,MAAaC,WAAW,GAA+B;MAAC;AACtDtqC,IAAAA,MADsD;AAEtD0Q,IAAAA,IAAI,GAAG25B,QAF+C;AAGtD9rC,IAAAA;AAHsD;;AAKtD,MAAIA,QAAJ,EAAc;AACZ,WAAOE,4BAAA,wBAAA,MAAA,EAAGF,QAAH,CAAP;AACD;;AAED,MAAIgsC,UAAU,GAAG,IAAjB;;AAEA,MAAI;AACFA,IAAAA,UAAU,GAAGnM,iBAAiB,CAACp+B,MAAD,CAA9B;AACD,GAFD,CAEE,OAAOwqC,CAAP,EAAU;AAEX;;AAED,MAAI,CAACD,UAAL,EAAiB;AACf,WAAO,IAAP;AACD;;AAED,MAAI7N,mBAAmB,CAAC18B,MAAD,CAAvB,EAAmD;AAAA;;AACjD,UAAMsR,KAAK,GAAGtL,iBAAiB,0BAAEukC,UAA+B,CAACl4B,UAAlC,qBAAE,sBAA4CyB,SAA9C,CAAjB,IACZ9N,iBAAiB,uBAAEukC,UAA+B,CAACld,MAAlC,qBAAE,mBAAwCvZ,SAA1C,CADL,IACuE,kBADrF;AAGA,WAAOrV,4BAAA,CAAC2rC,aAAD;AAAe94B,MAAAA,KAAK,EAAEA;KAAtB,CAAP;AACD;;AAED,SACE7S,4BAAA,CAACk9B,MAAD;AACE37B,IAAAA,MAAM,EAAEggC,YAAY,CAACuK,UAAD,EAAa;AAAE75B,MAAAA,IAAI,EAAEA,IAAI,GAAG;AAAf,KAAb;AACpBA,IAAAA,IAAI,EAAEA;GAFR,CADF;AAMD,CAlCM;;;MCZM+5B,oBAAoB,gBAAGR,eAAM,CAACC,GAAV,6jBAkB7BQ,UAlB6B,CAA1B;AA6BP,MAAaC,YAAY,gBAAGV,eAAM,CAACC,GAAV,iMAAlB;AAQP,MAAaU,UAAU,gBAAGX,eAAM,CAACC,GAAV,qKAAhB;AAMP,MAAaW,SAAS,gBAAGZ,eAAM,CAACC,GAAV,8KAAf;AAOP,MAAaY,YAAY,gBAAGb,eAAM,CAACC,GAAV,sJAGrBQ,UAHqB,CAAlB;AAQP,MAAaK,WAAW,gBAAGd,eAAM,CAACC,GAAV,2LAAjB;AAOP,MAAac,SAAS,gBAAGf,eAAM,CAACC,GAAV,qIAAf;AAKP,MAAae,cAAc,gBAAGhB,eAAM,CAACC,GAAV,wVAApB;AAcP,MAAagB,qBAAqB,gBAAGjB,eAAM,CAACC,GAAV,6GAA3B;AAIP,MAAaiB,mBAAmB,gBAAGlB,eAAM,CAACC,GAAV,2JAAzB;AAMP,MAAakB,cAAc,gBAAGnB,eAAM,CAACC,GAAV,6IAApB;AAKP,MAAamB,kBAAkB,gBAAGpB,eAAM,CAACC,GAAV,wHAAxB;AAIP,MAAaoB,cAAc,gBAAGrB,eAAM,CAACC,GAAV,6JAApB;AAMP,MAAaqB,uBAAuB,gBAAGtB,eAAM,CAACC,GAAV,mIAA7B;AAKP,MAAasB,eAAe,gBAAGvB,eAAM,CAACC,GAAV,2FAArB;AAEP,MAAauB,SAAS,gBAAGxB,eAAM,CAACx3B,CAAV,iKAAf;;AC9GA,MAAMi5B,SAAS,GAAG;AAAA,MAAC;AAAE3yB,IAAAA;AAAF,GAAD;AAAA,SACvBta,4BAAA,CAACgtC,SAAD;AAAWlE,IAAAA,MAAM,EAAE;AAAUoE,IAAAA,GAAG,EAAE;AAAcC,IAAAA,IAAI,EAAE9yB,QAAQ,CAACC,IAAD;GAA9D,EACGA,IADH,CADuB;AAAA,CAAlB;;ACAA,MAAM8yB,UAAU,GAAG;AAAA,MAAC;AAAEC,IAAAA;AAAF,GAAD;AAAA,SACxBrtC,4BAAA,CAACgtC,SAAD;AAAWlE,IAAAA,MAAM,EAAE;AAAUoE,IAAAA,GAAG,EAAE;AAAcC,IAAAA,IAAI,EAAE5yB,SAAS,CAAC8yB,KAAD;GAA/D,EACGA,KADH,CADwB;AAAA,CAAnB;;ACAA,MAAMC,QAAQ,GAAG;AAAA,MAAC;AAAE7tC,IAAAA;AAAF,GAAD;AAAA,SACtBO,4BAAA,CAACgtC,SAAD;AAAWlE,IAAAA,MAAM,EAAE;AAAUoE,IAAAA,GAAG,EAAE;AAAcC,IAAAA,IAAI,EAAE3yB,OAAO,CAAC/a,GAAD;GAA7D,EACGA,GADH,CADsB;AAAA,CAAjB;;ACKA,MAAM8tC,cAAc,GAAwC;MAAC;AAClEroC,IAAAA;AADkE;AAGlE,QAAM8V,eAAe,GAAGS,oBAAoB,CAACvW,SAAD,CAA5C;AAEA,SACElF,4BAAA,CAAC8sC,uBAAD,MAAA,EACG9xB,eAAe,CAACva,GAAhB,CAAoB,CAACgc,cAAD,EAAiB7N,KAAjB;AACnB,UAAM;AAAEzP,MAAAA;AAAF,QAAYsd,cAAlB;AACA,UAAM+wB,GAAG,GAAMruC,KAAN,SAAeyP,KAAxB;;AAEA,QAAI6N,cAAc,CAACpV,IAAf;;AAAJ,MAAoD;AAClD,aAAOrH,4BAAA,CAACstC,QAAD;AAAUE,QAAAA,GAAG,EAAEA;AAAK/tC,QAAAA,GAAG,EAAEguC,cAAc,CAACtuC,KAAD;OAAvC,CAAP;AACD;;AAED,QAAIsd,cAAc,CAACpV,IAAf;;AAAJ,MAAqD;AACnD,aAAOrH,4BAAA,CAACitC,SAAD;AAAWO,QAAAA,GAAG,EAAEA;AAAKlzB,QAAAA,IAAI,EAAEnb;OAA3B,CAAP;AACD;;AAED,QAAIsd,cAAc,CAACpV,IAAf;;AAAJ,MAAsD;AACpD,aAAOrH,4BAAA,CAACotC,UAAD;AAAYI,QAAAA,GAAG,EAAEA;AAAKH,QAAAA,KAAK,EAAEluC;OAA7B,CAAP;AACD;;AAED,WAAOa,4BAAA,CAAC+sC,eAAD;AAAiBS,MAAAA,GAAG,EAAEruC;KAAtB,EAA8BA,KAA9B,CAAP;AACD,GAjBA,CADH,CADF;AAsBD,CA3BM;;AA6BP,SAASsuC,cAAT,CAAwBC,OAAxB;AACE,MAAI;AACF,WAAOA,OAAO,CACX7mC,KADI,CACE,GADF,EAEJpG,GAFI,CAEAktC,QAAQ,CAACC,SAFT,EAGJ5mC,IAHI,CAGC,GAHD,CAAP;AAID,GALD,CAKE,OAAO6mC,KAAP,EAAc;AACd,WAAOH,OAAP;AACD;AACF;;MCxCYI,oBAAoB,GAAwC;AAAA,MAAC;AACxE5oC,IAAAA,SADwE;AAExEq1B,IAAAA;AAFwE,GAAD;AAAA,SAIvEv6B,4BAAA,CAAC4sC,kBAAD;AAAoBrS,IAAAA,SAAS,EAAEA;GAA/B,EACEv6B,4BAAA,CAAC6sC,cAAD,MAAA,EAAiB3nC,SAAS,CAACib,KAAV,IAAmBjb,SAAS,CAACgY,IAA9C,CADF,EAEEld,4BAAA,CAACutC,cAAD;AAAgBroC,IAAAA,SAAS,EAAEA;GAA3B,CAFF,CAJuE;AAAA,CAAlE;;ACmBA,MAAM6oC,UAAU,GAA0C;MAAC;AAChEppC,IAAAA,QAAQ,GAAG,EADqD;AAEhE41B,IAAAA,SAFgE;AAGhEl7B,IAAAA,KAHgE;AAIhEoF,IAAAA,OAJgE;AAKhE3B,IAAAA,IALgE;AAMhE1D,IAAAA,IANgE;AAOhEN,IAAAA,OAPgE;AAQhEG,IAAAA,IARgE;AAShE+uC,IAAAA,YATgE;AAUhEC,IAAAA,YAVgE;AAWhEC,IAAAA,eAXgE;AAYhEC,IAAAA,WAZgE;AAahEC,IAAAA;AAbgE;AAehEvpC,EAAAA,eAAS,CAAC;AACRqpC,IAAAA,eAAe,IAAIA,eAAe,CAACpvC,OAAD,CAAlC;AACD,GAFQ,EAEN,CAACA,OAAD,EAAUovC,eAAV,CAFM,CAAT;AAIA,SACEluC,4BAAA,CAACgsC,oBAAD;AAAsBzR,IAAAA,SAAS,EAAEA;GAAjC,EACEv6B,4BAAA,CAACksC,YAAD,MAAA,EACElsC,4BAAA,CAACmsC,UAAD,MAAA,EACEnsC,4BAAA,CAAC6rC,WAAD;AAAatqC,IAAAA,MAAM,EAAEkD,OAAO,CAAClD,MAAR,IAAkB;GAAvC,CADF,EAEEvB,4BAAA,CAACosC,SAAD,MAAA,EACEpsC,4BAAA,CAACssC,WAAD;AAAax/B,IAAAA,KAAK,EAAErI,OAAO,CAACiZ,WAAR,IAAuB;GAA3C,EACGjZ,OAAO,CAACiZ,WADX,CADF,EAIE1d,4BAAA,CAACusC,SAAD,MAAA,EAAY9nC,OAAO,CAACoZ,UAApB,CAJF,CAFF,EAQE7d,4BAAA,CAACqsC,YAAD,MAAA,EACG4B,YAAY,IAAIjuC,4BAAA,CAACquC,gBAAD;AAAYhG,IAAAA,OAAO,EAAE,MAAM4F,YAAY,CAACxpC,OAAD;GAAvC,EAAkDzE,4BAAA,CAACsuC,6BAAD,MAAA,CAAlD,CADnB,EAEG,CAACF,QAAD,IAAapuC,4BAAA,CAACquC,gBAAD;AAAYhG,IAAAA,OAAO,EAAEvlC;GAArB,EAA2B9C,4BAAA,CAACuuC,yBAAD,MAAA,CAA3B,CAFhB,EAGEvuC,4BAAA,CAACquC,gBAAD;AAAYhG,IAAAA,OAAO,EAAEhpC;GAArB,EAA4BW,4BAAA,CAACwuC,wBAAD,MAAA,CAA5B,CAHF,CARF,CADF,EAeG7pC,QAAQ,CAAC9F,MAAT,GAAkB,CAAlB,GACCmB,4BAAA,CAACwsC,cAAD,MAAA,EACExsC,4BAAA,CAACquC,gBAAD;AAAYhG,IAAAA,OAAO,EAAEjpC;GAArB,EAA2BY,4BAAA,CAACyuC,2BAAD,MAAA,CAA3B,CADF,EAEEzuC,4BAAA,CAACysC,qBAAD,MAAA,EACEzsC,4BAAA,CAAC0sC,mBAAD;AAAqBrE,IAAAA,OAAO,EAAEvlC;GAA9B,EACGhE,OAAO,GAAG,CADb,CADF,sDAAA,EAIa6F,QAAQ,CAAC9F,MAJtB,CAFF,EAQEmB,4BAAA,CAACquC,gBAAD;AAAYhG,IAAAA,OAAO,EAAEppC;GAArB,EAA2Be,4BAAA,CAAC0uC,2BAAD,MAAA,CAA3B,CARF,CADD,GAWG,IA1BN,EA2BGP,WA3BH,CADF,EA8BEnuC,4BAAA,CAAC2sC,cAAD,MAAA,EACGloC,OAAO,CAACwY,UAAR,IACC,CAAC,OAAO+wB,YAAP,KAAwB,UAAxB,GACGA,YAAY,CAACvpC,OAAO,CAACwY,UAAT,CADf,GAEGxY,OAAO,CAACwY,UAFZ,EAGExc,GAHF,CAGOyE,SAAD;AACJ,WACEA,SAAS,CAACuxB,MAAV,IACEz2B,4BAAA,CAAC8tC,oBAAD;AACEN,MAAAA,GAAG,EAAEtoC,SAAS,CAACgY;AACfhY,MAAAA,SAAS,EAAEA;KAFb,CAFJ;AAQD,GAZD,CAFJ,CA9BF,CADF;AAiDD,CApEM;;;AC/BP,MAuBaypC,WAAW,GAA+B;MAAC;AACtDC,IAAAA,UADsD;AAEtDrU,IAAAA,SAFsD;AAGtDz6B,IAAAA;AAHsD;MAInDy3B;;AAEH,QAAM;AAAE5yB,IAAAA,QAAQ,GAAG;AAAb,MAAoB4yB,KAA1B;AACA,QAAMsX,SAAS,GAAGnqC,cAAc,CAACC,QAAD,CAAhC;AACA,QAAM;AAAEF,IAAAA,OAAF;AAAW3F,IAAAA;AAAX,MAAuB+vC,SAA7B;;AACA,QAAMC,SAAS,gBAAQvX,KAAR,EAAkBsX,SAAlB,CAAf;;AAEA,SAAOpqC,OAAO,GACZzE,4BAAA,wBAAA,MAAA,EACG,OAAO4uC,UAAP,KAAsB,UAAtB,GACCA,UAAU,CAACE,SAAD,CADX,GAGC9uC,4BAAA,CAAC+tC,UAAD;AAAYxT,IAAAA,SAAS,EAAEA;KAAeuU,UAAtC,CAJJ,EAMGhvC,QAAQ,IAAIA,QAAQ,CAAChB,OAAD,CANvB,CADY,GASV,IATJ;AAUD,CArBM;;MCnBM0qC,YAAY,GAAgCjS,KAAK;AAC5D0R,EAAAA,eAAe,CAAC1R,KAAD,CAAf;AAEA,SAAO,IAAP;AACD,CAJM;;MCAMgM,mBAAmB,GAAuChM,KAAK;AAC1E4L,EAAAA,sBAAsB,CAAC5L,KAAD,CAAtB;AAEA,SAAO,IAAP;AACD,CAJM;;MCAMz2B,YAAY,GAAgCy2B,KAAK;AAC5DuM,EAAAA,eAAe,CAACvM,KAAD,CAAf;AAEA,SAAO,IAAP;AACD,CAJM;;ACCP,MAAMwX,OAAO,GAAW5vC,KAAR,IACd4F,OAAO,CAAC5F,KAAD,CADT;;AAGA,MAAM6vC,WAAW,GAAIlwC,OAAD,IAAqB,CAAC2F,OAAD,EAAmBmK,KAAnB;AACvC;AACAnK,EAAAA,OAAO,CAAC,YAAD,CAAP,GAAwBmK,KAAK,KAAK9P,OAAlC;AAEA,SAAO2F,OAAP;AACD,CALD;;AAOA,MAAMwqC,MAAM,GAAIxqC,OAAD,IAA6BA,OAAO,CAACia,WAAR,EAA5C;;;AAGA,AAAO,MAAMwwB,eAAe,GAAG,CAC7BvqC,QAD6B,EAE7BwqC,YAF6B,KAI7BpvC,aAAO,CACL,MACE4E,QAAQ,CACLlE,GADH,CACOwuC,MADP,EAEG3lC,MAFH,CAEUylC,OAFV,EAGGtuC,GAHH,CAGOuuC,WAAW,CAACG,YAAD,CAHlB,CAFG,EAML,CAACxqC,QAAD,EAAWwqC,YAAX,CANK,CAJF;;MCLMC,kBAAkB,GAAsC;MAAC;AACpEzqC,IAAAA,QADoE;AAEpEL,IAAAA,MAFoE;AAGpExF,IAAAA;AAHoE;AAKpE,QAAMuwC,YAAY,GAAGH,eAAe,CAACvqC,QAAD,EAAW7F,OAAX,CAApC;AAEA,SAAOkB,4BAAA,CAACc,YAAD;AAAc6D,IAAAA,QAAQ,EAAE0qC;AAAc/qC,IAAAA,MAAM,EAAEA;GAA9C,CAAP;AACD,CARM;;MCTMu/B,gBAAgB,GAAoCtM,KAAK;AACpEmM,EAAAA,mBAAmB,CAACnM,KAAD,CAAnB;AAEA,SAAO,IAAP;AACD,CAJM;;;ACJP,SAagB+X;MAAa;AAC3BC,IAAAA,OAD2B;AAE3BjrC,IAAAA,MAF2B;AAG3B0+B,IAAAA;AAH2B;MAIxBwM;;AAEH,QAAM;AAAE/uC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMK,KAAK,GAAGmhC,WAAW,CACvB;AACEE,IAAAA,OAAO,EAAE,MAAM,IAAImN,qBAAJ,CAAcF,OAAd,EAAuBC,eAAvB,CADjB;AAEEjN,IAAAA,UAAU,EAAEthC,KAAK,IAAIR,GAAG,CAAC+iC,OAAJ,CAAYviC,KAAZ,MAAuB,CAAC,CAAxB,IAA6BR,GAAG,CAACgjC,WAAJ,CAAgBxiC,KAAhB;AAFpD,GADuB,EAKvB,CAACsuC,OAAD,CALuB,CAAzB;AAQA1M,EAAAA,aAAa,CAAC5hC,KAAD,EAAQqD,MAAR,CAAb;AACAy+B,EAAAA,kBAAkB,CAAC9hC,KAAD,EAAQ+hC,WAAR,CAAlB;AAEA,SAAO/hC,KAAP;AACD;;MC7BYwuC,SAAS,GAA6BlY,KAAK;AACtD+X,EAAAA,YAAY,CAAC/X,KAAD,CAAZ;AAEA,SAAO,IAAP;AACD,CAJM;;ACKP,MAAMmY,aAAa,GAAG,GAAtB;AAEA,MAAaC,aAAa,GAAiC;MAAC;AAC1DhG,IAAAA,MAD0D;AAE1DpP,IAAAA,SAF0D;AAG1DqU,IAAAA,UAH0D;AAI1DtqC,IAAAA,MAJ0D;AAK1DslC,IAAAA,UAL0D;AAM1DoE,IAAAA,YAN0D;AAO1DC,IAAAA;AAP0D;AAS1D,QAAM,CAACtpC,QAAD,EAAWolC,cAAX,IAA6BL,gBAAgB,CAAC;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,GAAD,CAAnD;AAEA,SACE5pC,4BAAA,CAAC2uC,WAAD;AACEpU,IAAAA,SAAS,EAAEA;AACX51B,IAAAA,QAAQ,EAAEA;AACVtF,IAAAA,KAAK,EAAE0qC;AACP6E,IAAAA,UAAU,EAAEA;AACZZ,IAAAA,YAAY,EAAEA;AACdC,IAAAA,YAAY,EAAEA;GANhB,EAQGnvC,OAAO,IACNkB,4BAAA,CAACovC,kBAAD;AACEzqC,IAAAA,QAAQ,EAAEA;AACV7F,IAAAA,OAAO,EAAEA;AACTwF,IAAAA,MAAM,EAAEA,MAAM,IAAIorC;GAHpB,CATJ,CADF;AAkBD,CA7BM;;;;ACFP,MAAME,OAAO,GAAItuB,QAAD,IAAsBuuB,UAAtB,8GACPvuB,QADO,EAENA,QAFM,CAAhB;;AAKA,MAAMwuB,QAAQ,GAAIxuB,QAAD,IAAsBuuB,UAAtB,iHACRvuB,QADQ,EAENA,QAFM,CAAjB;;AAKA,MAAMyuB,UAAU,GAAIzuB,QAAD,IAAsBuuB,UAAtB,mHACPvuB,QADO,EAETA,QAFS,CAAnB;;AAKA,MAAM0uB,WAAW,GAAI1uB,QAAD,IAAsBuuB,UAAtB,oHACRvuB,QADQ,EAETA,QAFS,CAApB;;AAWA,AAAO,MAAM2uB,cAAc,GAAG,SAAjBA,cAAiB,CAC5BC,SAD4B,EAE5B5uB,QAF4B;AAAA,MAC5B4uB,SAD4B;AAC5BA,IAAAA,SAD4B,GACL,aADK;AAAA;;AAAA,MAE5B5uB,QAF4B;AAE5BA,IAAAA,QAF4B,GAET,MAFS;AAAA;;AAAA,SAGzBuuB,UAHyB,mHAI1BK,SAAS,KAAK,UAAd,IAA4BN,OAAO,CAACtuB,QAAD,CAJT,EAK1B4uB,SAAS,KAAK,WAAd,IAA6BJ,QAAQ,CAACxuB,QAAD,CALX,EAM1B4uB,SAAS,KAAK,aAAd,IAA+BH,UAAU,CAACzuB,QAAD,CANf,EAO1B4uB,SAAS,KAAK,cAAd,IAAgCF,WAAW,CAAC1uB,QAAD,CAPjB;AAAA,CAAvB;;;ACzBP,MAAM6uB,kBAAkB,gBAAGN,UAAH,wOAAxB;AAcA,AAAO,MAAMO,SAAS,gBAAG5E,eAAM,CAACS,UAAD,CAAT,wGAClBkE,kBADkB,CAAf;;AAKP,AAAO,MAAME,UAAU,gBAAG7E,eAAM,CAACS,UAAD,CAAT,wGACnBkE,kBADmB,CAAhB;;AAKP,AAAO,MAAMG,SAAS,gBAAG9E,eAAM,CAACS,UAAD,CAAT,wGAClBkE,kBADkB,CAAf;AAKP;;AACA,AAAO,MAAMI,aAAa,gBAAG/E,eAAM,CAACS,UAAD,CAAT,wGACtBkE,kBADsB,CAAnB;;AAKP,AAAO,MAAMK,UAAU,gBAAGhF,eAAM,CAACS,UAAD,CAAT,wGAGnBkE,kBAHmB,CAAhB;;AAOP,MAAaM,UAAU,gBAAGjF,eAAM,CAACC,GAAV,sVAAhB;AAcP,MAAaiF,WAAW,gBAAGlF,eAAM,CAACC,GAAV,2QAGJ;AAAA,MAAC;AAAEkF,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,QAAH,GAAc,KAAzC;AAAA,CAHI,EAKpB;AAAA,MAAC;AAAET,IAAAA;AAAF,GAAD;AAAA,SAAmBD,cAAc,CAACC,SAAD,CAAjC;AAAA,CALoB,EAOpBO,UAPoB,EAQH;AAAA,MAAC;AAAEE,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,QAAH,GAAc,GAAzC;AAAA,CARG,EASJ;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,GAAH,GAAS,QAApC;AAAA,CATI,EAUF;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,QAAH,GAAc,KAAzC;AAAA,CAVE,CAAjB;;MC9DMC,OAAO,GAAG;AACrB,SACE5wC,4BAAA,CAACywC,UAAD,MAAA,EACEzwC,4BAAA,CAACwwC,UAAD;AAAYnI,IAAAA,OAAO,EAAE;GAArB,CADF,CADF;AAKD,CANM;;MCAMwI,MAAM,GAAG;AACpB,SACE7wC,4BAAA,CAACywC,UAAD,MAAA,EACEzwC,4BAAA,CAACswC,SAAD;AAAWjI,IAAAA,OAAO,EAAE;GAApB,CADF,CADF;AAKD,CANM;;MCAMyI,UAAU,GAAG;AACxB,SACE9wC,4BAAA,CAACywC,UAAD,MAAA,EACEzwC,4BAAA,CAACuwC,aAAD;AAAelI,IAAAA,OAAO,EAAE;GAAxB,CADF,CADF;AAKD,CANM;;;MCIM0I,oBAAoB,gBAAGvF,eAAM,CAACC,GAAV,oHAA1B;AAIP,MAAauF,QAAQ,gBAAGxF,eAAM,CAACC,GAAV,gJAEX;AAAA,MAAC;AAAEwF,IAAAA,KAAK,EAAE;AAAEC,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA0BA,KAAK,CAACC,WAAhC;AAAA,CAFW,CAAd;AAKP,MAAaC,aAAa,gBAAG5F,eAAM,CAACC,GAAV,qLAAnB;AAQP,MAAa4F,eAAe,gBAAG7F,eAAM,CAAC,MAAD,CAAT,0LAArB;AAOP,MAAa8F,cAAc,gBAAG9F,eAAM,CAACC,GAAV,ycAIf;AAAA,MAAC;AAAE9gC,IAAAA;AAAF,GAAD;AAAA,SAA6BA,kBAAkB,GAAG,SAAH,GAAe,SAA9D;AAAA,CAJe,EAKP;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAA6BA,kBAAkB,GAAG,MAAH,GAAY,MAA3D;AAAA,CALO,EAWvBqmC,QAXuB,EAWVK,eAXU,EAevBL,QAfuB,EAgBZ;AAAA,MAAC;AAAEO,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,IAAH,GAAU,IAArC;AAAA,CAhBY,EAmBvBF,eAnBuB,EAoBZ;AAAA,MAAC;AAAEE,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,IAAH,GAAU,CAArC;AAAA,CApBY,EAwBrBP,QAxBqB,EAwBRK,eAxBQ,CAApB;AA8BP,MAAMG,qBAAqB,gBAAG3B,UAAH,8MAMH;AAAA,MAAC;AAAEoB,IAAAA,KAAK,EAAE;AAAEQ,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA4BA,OAAO,CAACC,WAApC;AAAA,CANG,CAA3B;AAUA,MAAaC,YAAY,gBAAGnG,eAAM,CAACoG,IAAV,mRAKrB;AAAA,MAAC;AAAEvJ,IAAAA;AAAF,GAAD;AAAA,SAAiB,CAAC,CAACA,OAAF,IAAamJ,qBAA9B;AAAA,CALqB,CAAlB;AAaP,MAAaK,gBAAgB,gBAAGrG,eAAM,CAACiF,UAAD,CAAT,mHAAtB;AAIP,MAAaqB,kBAAkB,gBAAGtG,eAAM,CAACC,GAAV,mTAAxB;AAcP,MAAasG,eAAe,gBAAGvG,eAAM,CAACC,GAAV,8LAArB;AAOP,MAAauG,6BAA6B,gBAAGxG,eAAM,CAACC,GAAV,0MAAnC;AAOP,MAAawG,wBAAwB,gBAAGzG,eAAM,CAACC,GAAV,0OACvB;AAAA,MAAC;AAAEyG,IAAAA;AAAF,GAAD;AAAA,SAAiBA,OAAO,GAAG,UAAH,GAAgB,UAAxC;AAAA,CADuB,EAGxB;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAiBA,OAAO,GAAG,CAAH,GAAO,CAA/B;AAAA,CAHwB,EAIrB;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAiBA,OAAO,GAAG,SAAH,GAAe,QAAvC;AAAA,CAJqB,CAA9B;AASP,MAAaC,wBAAwB,gBAAG3G,eAAM,CAACyG,wBAAD,CAAT,0JAA9B;AAKP,MAAaG,yBAAyB,gBAAG5G,eAAM,CAACC,GAAV,2KAA/B;AAQP,MAAa4G,qBAAqB,gBAAG7G,eAAM,CAACC,GAAV,6LAEtB;AAAA,MAAC;AAAE53B,IAAAA;AAAF,GAAD;AAAA,SAAgBA,MAAhB;AAAA,CAFsB,CAA3B;AAOP,MAAay+B,mBAAmB,gBAAG9G,eAAM,CAACC,GAAV,mNAAzB;;AAQP,MAAM8G,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACpzC,KAAD;AAAA,MAACA,KAAD;AAACA,IAAAA,KAAD,GAAS,CAAT;AAAA;;AAAA,SAAe0wC,UAAf,ueAkBP1wC,KAAK,GAAG,CAlBD,EAmBfA,KAnBe,EAoBdA,KApBc;AAAA,CAA5B;;AAwBA,MAAMqzC,0BAA0B,GAAG,SAA7BA,0BAA6B,CAACrzC,KAAD;AAAA,MAACA,KAAD;AAACA,IAAAA,KAAD,GAAS,CAAT;AAAA;;AAAA,SAAe0wC,UAAf,ikBAQvB1wC,KARuB,EAuBrBA,KAvBqB,EAwBhB8Q,IAAI,CAACc,KAAL,CAAW5R,KAAK,GAAG,CAAnB,CAxBgB;AAAA,CAAnC;;AA6BA,MAAMszC,0BAA0B,gBAAG5C,UAAH,wIAAhC;AAKA,MAAa6C,aAAa,gBAAGlH,eAAM,CAACC,GAAV,8RAEd;AAAA,MAAC;AAAE7kC,IAAAA;AAAF,GAAD;AAAA,SACVkf,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkClf,SAAlC,CAAf,GAAiG,IAAjG,GAAwG,CAD9F;AAAA,CAFc,EAIV;AAAA,MAAC;AAAEzH,IAAAA;AAAF,GAAD;AAAA,SAAe,OAAOA,KAAP,KAAiB,QAAjB,GAA4B,MAA5B,GAAqCA,KAApD;AAAA,CAJU,EAQb;AAAA,MAAC;AAAEoyC,IAAAA;AAAF,GAAD;AAAA,SAAkBA,QAAQ,GAAG,IAAH,GAAU,CAApC;AAAA,CARa,EAUtB;AAAA,MAAC;AAAEpyC,IAAAA,KAAF;AAASyH,IAAAA;AAAT,GAAD;AAAA,SAA0Bkf,eAAe,CAAC,MAAD,EAASlf,SAAT,CAAf,IACzB2rC,mBAAmB,CAACpzC,KAAD,CADpB;AAAA,CAVsB,EAatB;AAAA,MAAC;AAAEA,IAAAA,KAAF;AAASyH,IAAAA;AAAT,GAAD;AAAA,SAA0Bkf,eAAe,CAC3C,CAAC,aAAD,EAAgB,cAAhB,CAD2C,EAE3Clf,SAF2C,CAAf,IAGzB4rC,0BAA0B,CAACrzC,KAAD,CAH3B;AAAA,CAbsB,CAAnB;AAmBP,MAAawzC,cAAc,gBAAGnH,eAAM,CAACkH,aAAD,CAAT,kPAApB;AAUP,MAAME,oBAAoB,gBAAG/C,UAAH,iOAMtB8C,cANsB,CAA1B;AAYA,MAAME,2BAA2B,gBAAGhD,UAAH,qOAK7B8C,cAL6B,CAAjC;AAWA,MAAaG,mBAAmB,gBAAGtH,eAAM,CAACC,GAAV,0LAAzB;AAOP,MAAasH,yBAAyB,gBAAGvH,eAAM,CAACC,GAAV,uIAA/B;AAKP,MAAauH,wBAAwB,gBAAGxH,eAAM,CAACC,GAAV,oHAA9B;AAIP,MAAawH,uBAAuB,gBAAGzH,eAAM,CAACC,GAAV,+HAA7B;AAIP,MAAayH,qBAAqB,gBAAG1H,eAAM,CAACyH,uBAAD,CAAT,2FAA3B;AAEP,MAAME,0BAA0B,gBAAGtD,UAAH,oLAI5B6C,aAJ4B,CAAhC;AASA,MAAMU,sBAAsB,gBAAGvD,UAAH,uYAQxB;AAAA,MAAC;AAAEwD,IAAAA;AAAF,GAAD;AAAA,SAAgBA,MAAM,IAAIF,0BAA1B;AAAA,CARwB,EAUxBT,aAVwB,EAqBtB;AAAA,MAAC;AAAE9rC,IAAAA;AAAF,GAAD;AAAA,SAAmBkf,eAAe,CACtC,CAAC,aAAD,EAAgB,cAAhB,CADsC,EAEtClf,SAFsC,CAAf,IAGpB6rC,0BAHC;AAAA,CArBsB,CAA5B;AA4BA,MAAaa,cAAc,gBAAG9H,eAAM,CAACC,GAAV,iNAYvB;AAAA,MAAC;AAAE4H,IAAAA;AAAF,GAAD;AAAA,SAAgBA,MAAM,IAAIT,oBAA1B;AAAA,CAZuB,EAavB;AAAA,MAAC;AAAEW,IAAAA;AAAF,GAAD;AAAA,SAAuBA,aAAa,IAAIV,2BAAxC;AAAA,CAbuB,EAcvB;AAAA,MAAC;AAAEW,IAAAA;AAAF,GAAD;AAAA,SAAkBA,QAAQ,IAAIJ,sBAA9B;AAAA,CAduB,CAApB;AAiBP,MAAaK,uBAAuB,gBAAGjI,eAAM,CAACC,GAAV,sXAIhCiH,aAJgC,CAA7B;AAiBP,MAAagB,eAAe,gBAAGlI,eAAM,CAACC,GAAV,+MAArB;AAQP,MAAakI,oBAAoB,gBAAGnI,eAAM,CAACC,GAAV,6aAA1B;AAsBP,MAAamI,oBAAoB,gBAAGpI,eAAM,CAACmH,cAAD,CAAT,6JAA1B;AAMP,MAAakB,qBAAqB,gBAAGrI,eAAM,CAACC,GAAV,mLAA3B;;ACnXP,MAAMqI,uBAAuB,GAAG,CAAChnC,KAAD,EAAgBinC,QAAhB;AAC9B,MAAIjnC,KAAK,CAACrG,QAAN,CAAe,KAAf,CAAJ,EAA2B;AACzB,UAAMiI,MAAM,GAAG5B,KAAH,oBAAGA,KAAK,CAAEjG,KAAP,CAAa,KAAb,CAAf;AAEA,WAAOktC,QAAQ,KAAK,KAAb,GAAqBrlC,MAArB,oBAAqBA,MAAM,CAAG,CAAH,CAA3B,GAAmCA,MAAnC,oBAAmCA,MAAM,CAAG,CAAH,CAAhD;AACD;;AAED,MAAI5B,KAAK,CAACrG,QAAN,CAAe,GAAf,CAAJ,EAAyB;AACvB,UAAMiI,MAAM,GAAG5B,KAAH,oBAAGA,KAAK,CAAEjG,KAAP,CAAa,GAAb,CAAf;AAEA,WAAO6H,MAAM,CAAC1H,IAAP,CAAY,IAAZ,CAAP;AACD;;AAED,SAAO8F,KAAK,CAACjG,KAAN,CAAY,GAAZ,EAAiBxC,IAAjB,CAAsBqhB,SAAtB,KAAoC5Y,KAApC,IAA6C,EAApD;AACD,CAdD;;AAgBA,MAAaknC,eAAe,GAA6B;;;MAAC;AACxDC,IAAAA,QADwD;AAExD/B,IAAAA,OAFwD;AAGxD9kC,IAAAA,MAHwD;AAIxDN,IAAAA,KAJwD;AAKxDlG,IAAAA,SALwD;AAMxDstC,IAAAA;AANwD;AAQxD,QAAMC,aAAa,GAAG,CAAC,GAAG/mC,MAAJ,CAAtB;AACA,QAAMwgB,KAAK,GAAGumB,aAAa,CAACC,GAAd,EAAd;AACA,QAAMf,MAAM,GAAGvtB,eAAe,CAAC,MAAD,EAASlf,SAAT,CAA9B;AACA,QAAM2sC,aAAa,GAAGztB,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkClf,SAAlC,CAArC;AACA,QAAMytC,QAAQ,GAAGP,uBAAuB,oBAACK,aAAa,CAAC,CAAD,CAAd,qBAAC,gBAAkBrnC,KAAnB,EAA0B,KAA1B,CAAxC;AACA,QAAMwnC,QAAQ,GAAGR,uBAAuB,mBAACK,aAAa,CAACA,aAAa,CAACt1C,MAAd,GAAuB,CAAxB,CAAd,qBAAC,eAAyCiO,KAA1C,EAAiD,KAAjD,CAAxC;AAEA,QAAMynC,aAAa,GAAGr1C,iBAAW,CAAEsuB,eAAD,IAA8BA,eAAe,GAC3E0mB,aAD2E,oBAC3EA,aAAa,CAAEhlC,IAAf,CAAoB7J,SAAS,IAAImoB,eAAe,CAAC/mB,QAAhB,CAAyBpB,SAAzB,CAAjC,CAD2E,GAE3E,KAF6B,EAEtB,CAAC6uC,aAAD,CAFsB,CAAjC;AAIA,SACEl0C,4BAAA,CAACmyC,wBAAD;AAA0BpQ,IAAAA,GAAG,EAAEkS;AAAU/B,IAAAA,OAAO,EAAEA;GAAlD,EACG,CAAC,CAACplC,KAAF,IAAW9M,4BAAA,CAACsyC,mBAAD,MAAA,EAAsBxlC,KAAtB,CADd,EAEGumC,MAAM,GACLrzC,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAAC8yC,mBAAD,MAAA,EACE9yC,4BAAA,CAAC+yC,yBAAD,MAAA,EACE/yC,4BAAA,CAACszC,cAAD;AAAgB1sC,IAAAA,SAAS,EAAEA;AAAWysC,IAAAA,MAAM;GAA5C,EACGc,aAAa,CAAC1zC,GAAd,CAAkB,CAACtB,KAAD,EAAQyP,KAAR,KACjB5O,4BAAA,CAAC0yC,aAAD;AACElF,IAAAA,GAAG,OAAKruC,KAAK,CAAC2N,KAAX,GAAmB8B;AACtB9B,IAAAA,KAAK,EAAE3N,KAAK,CAAC2N;AACb3N,IAAAA,KAAK,EAAEA,KAAK,CAACsN;AACb7F,IAAAA,SAAS,EAAEA;AACX2qC,IAAAA,QAAQ,EAAEgD,aAAa,CAACp1C,KAAK,CAACquB,eAAP;GALzB,CADD,CADH,CADF,CADF,EAcExtB,4BAAA,CAACgzC,wBAAD,MAAA,EACEhzC,4BAAA,CAACizC,uBAAD,MAAA,sBAA0BkB,aAAa,CAAC,CAAD,CAAvC,qBAA0B,iBAAkBrnC,KAA5C,CADF,EAEE9M,4BAAA,CAACkzC,qBAAD,MAAA,qBAAwBiB,aAAa,CAACA,aAAa,CAACt1C,MAAd,GAAuB,CAAxB,CAArC,qBAAwB,gBAAyCiO,KAAjE,CAFF,CAdF,CADF,EAoBE9M,4BAAA,CAAC8yC,mBAAD,MAAA,EACE9yC,4BAAA,CAAC+yC,yBAAD,MAAA,EACE/yC,4BAAA,CAACszC,cAAD;AAAgB1sC,IAAAA,SAAS,EAAEA;AAAWysC,IAAAA,MAAM;GAA5C,EACErzC,4BAAA,CAAC2yC,cAAD;AACE7lC,IAAAA,KAAK,EAAC;AACN3N,IAAAA,KAAK,EAAEyuB,KAAF,oBAAEA,KAAK,CAAEnhB;AACd7F,IAAAA,SAAS,EAAEA;AACX2qC,IAAAA,QAAQ,EAAEgD,aAAa,CAAC3mB,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,CADF,CADF,CADF,EAWExtB,4BAAA,CAACgzC,wBAAD,MAAA,EACEhzC,4BAAA,CAACkzC,qBAAD,MAAA,wCAAA,CADF,CAXF,CApBF,CADK,GAqCHK,aAAa,GACfvzC,4BAAA,CAACszC,cAAD;AAAgB1sC,IAAAA,SAAS,EAAEA;AAAW2sC,IAAAA,aAAa;GAAnD,EACGY,aAAa,CAAC1zC,GAAd,CAAkB,CAACtB,KAAD,EAAQyP,KAAR,KACjB5O,4BAAA,CAAC0yC,aAAD;AACElF,IAAAA,GAAG,OAAKruC,KAAK,CAAC2N,KAAX,GAAmB8B;AACtB9B,IAAAA,KAAK,EAAE3N,KAAK,CAAC2N;AACb3N,IAAAA,KAAK,EAAEA,KAAK,CAACsN;AACb7F,IAAAA,SAAS,EAAEA;AACX2qC,IAAAA,QAAQ,EAAEgD,aAAa,CAACp1C,KAAK,CAACquB,eAAP;GALzB,EAOG,CAAC,CAAC5e,KAAD,IAAUA,KAAK,KAAKulC,aAAa,CAACt1C,MAAd,GAAuB,CAA5C,KAAkDM,KAAK,CAAC2N,KAP3D,CADD,CADH,EAYE9M,4BAAA,CAAC2yC,cAAD;AACE7lC,IAAAA,KAAK,EAAC;AACN3N,IAAAA,KAAK,EAAEyuB,KAAF,oBAAEA,KAAK,CAAEnhB;AACd7F,IAAAA,SAAS,EAAEA;AACX2qC,IAAAA,QAAQ,EAAEgD,aAAa,CAAC3mB,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,wCAAA,CAZF,CADe,GAuBfxtB,4BAAA,CAACszC,cAAD;AAAgB1sC,IAAAA,SAAS,EAAEA;GAA3B,EACE5G,4BAAA,CAACyzC,uBAAD,MAAA,EACGU,aAAa,CAAC1zC,GAAd,CAAkB,CAACtB,KAAD,EAAQyP,KAAR,KACjB5O,4BAAA,CAAC0yC,aAAD;AACElF,IAAAA,GAAG,OAAKruC,KAAK,CAAC2N,KAAX,GAAmB8B;AACtB9B,IAAAA,KAAK,EAAE3N,KAAK,CAAC2N;AACb3N,IAAAA,KAAK,EAAEA,KAAK,CAACsN;AACb7F,IAAAA,SAAS,EAAEA;AACX2qC,IAAAA,QAAQ,EAAEgD,aAAa,CAACp1C,KAAK,CAACquB,eAAP;GALzB,CADD,CADH,CADF,EAYExtB,4BAAA,CAAC2yC,cAAD;AACE7lC,IAAAA,KAAK,EAAC;AACN3N,IAAAA,KAAK,EAAEyuB,KAAF,oBAAEA,KAAK,CAAEnhB;AACd7F,IAAAA,SAAS,EAAEA;AACX2qC,IAAAA,QAAQ,EAAEgD,aAAa,CAAC3mB,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,CAZF,CA9DJ,EAkFG,QAAOI,KAAP,oBAAOA,KAAK,CAAEnhB,cAAd,MAAiC,QAAjC,KAA8C4nC,QAAQ,IAAIC,QAA1D,KACCt0C,4BAAA,CAAC0zC,eAAD,MAAA,EACE1zC,4BAAA,CAAC2zC,oBAAD,MAAA,EACE3zC,4BAAA,MAAA,MAAA,EAAMq0C,QAAN,CADF,EAEEr0C,4BAAA,MAAA,MAAA,EAAMs0C,QAAN,CAFF,CADF,EAKEt0C,4BAAA,CAAC4zC,oBAAD,MAAA,KAAA,CALF,CAnFJ,CADF;AA8FD,CAjHM;;MC3BMY,YAAY,GAAG,CAACjzC,MAAD,EAAyBkzC,UAAzB;AAC1B,QAAMC,oBAAoB,GAAG5S,YAAM,CAAqB,IAArB,CAAnC;AACA,QAAMlO,YAAY,GAAG7zB,aAAO,CAAC,MAAM40C,UAAG,EAAV,EAAc,EAAd,CAA5B;AAEA,QAAMC,OAAO,GAAG11C,iBAAW,CAAC;AAC1B00B,IAAAA,YAAY,CAACihB,KAAb,CAAmBH,oBAAoB,CAAC51C,OAAxC;AACD,GAF0B,EAExB,CAAC80B,YAAD,CAFwB,CAA3B;AAIA,QAAMkhB,UAAU,GAAG51C,iBAAW,CAAC,MAAM00B,YAAY,CAACR,GAAb,EAAP,EAA2B,CAACQ,YAAD,CAA3B,CAA9B;AAEA,QAAMmhB,aAAa,GAAG71C,iBAAW,CAC/B;QAAC;AAAEk0B,MAAAA,GAAF;AAAOS,MAAAA,EAAP;AAAWmhB,MAAAA;AAAX;AACCrhB,IAAAA,mBAAmB,CAACC,YAAD,EAAeohB,SAAS,IAAIzzC,MAA5B,EAAoC6xB,GAApC,EAAyCS,EAAzC,CAAnB;AACD,GAH8B,EAI/B,CAACD,YAAD,EAAeryB,MAAf,CAJ+B,CAAjC;AAOA,QAAM0zC,mBAAmB,GAAG/1C,iBAAW,CACrC,CAACg2C,KAAD,EAA8B/1C,KAA9B;;;AACE,UAAM;AAAE40B,MAAAA,IAAF;AAAQznB,MAAAA;AAAR,QAAmB/K,MAAzB;AACA,UAAM+rB,QAAQ,GAAGnuB,KAAK,YAAYoQ,WAAjB,GAAyBpQ,KAAK,CAACqQ,QAAN,CAAe,MAAf,CAAzB,GAAkDrQ,KAAnE;AAEA,UAAM61C,SAAS,GAAGG,IAAI,CAACC,KAAL,CAChBD,IAAI,CAACE,SAAL,cACK9zC,MADL;AAEE+K,MAAAA,MAAM,EAAEmoC,UAAU,GACdnjB,qBADc,GAEdrC,oBAAoB,CAACimB,KAAD,CAApB,GACA5U,uBAAuB,CAACh0B,MAAD,CADvB,GAEAA;AANN,OADgB,CAAlB;;AAWA,QAAI4oC,KAAK,CAAC1R,OAAN,CAAc,GAAd,MAAuB,CAAC,CAA5B,EAA+B;AAAA;;AAC7B,YAAMrZ,KAAK,GAAG+qB,KAAK,CAACruC,KAAN,CAAY,GAAZ,CAAd;;AAEA,+BAAImuC,SAAS,CAAC7qB,KAAK,CAAC,CAAD,CAAN,CAAb,aAAI,kBAAsBA,KAAK,CAAC,CAAD,CAA3B,CAAJ,EAAqC;AACnC6qB,QAAAA,SAAS,CAAC7qB,KAAK,CAAC,CAAD,CAAN,CAAT,CAAoBA,KAAK,CAAC,CAAD,CAAzB,IAAgCmD,QAAhC;AACD,OAFD,MAEO;AACL0nB,QAAAA,SAAS,CAAC7qB,KAAK,CAAC,CAAD,CAAN,CAAT,gBACK6qB,SAAS,CAAC7qB,KAAK,CAAC,CAAD,CAAN,CADd;AAEE,WAACA,KAAK,CAAC,CAAD,CAAN,GAAYmD;AAFd,WAGMnD,KAAK,CAAC,CAAD,CAAL,KAAa,YAAb,GACA;AAAE9iB,UAAAA,IAAI,EAAE2tC,SAAS,CAACphC,UAAV,CAAqBvM,IAA7B;AAAmCoW,UAAAA,EAAE,EAAE;AAAvC,SADA,GAEA0M,KAAK,CAAC,CAAD,CAAL,KAAa,QAAb,GACA;AAAE1M,UAAAA,EAAE,EAAE;AAAN,SADA,GAEA,EAPN;AASD;AACF,KAhBD,MAgBO;AACLu3B,MAAAA,SAAS,CAACE,KAAD,CAAT,GAAmB5nB,QAAnB;AACD;;AAEDynB,IAAAA,aAAa,CAAC;AAAE3hB,MAAAA,GAAG,EAAEW,IAAP;AAAuBihB,MAAAA,SAAvB;AAAkCnhB,MAAAA,EAAE,2BAAEmhB,SAAS,CAACphC,UAAZ,qBAAE,sBAAsBvM;AAA5D,KAAD,CAAb;AAEA,wBAAY2tC,SAAZ;AAAuBjhB,MAAAA,IAAI,EAAEH,YAAY,CAACR,GAAb;AAA7B;AACD,GAvCoC,EAwCrC,CAACQ,YAAD,EAAemhB,aAAf,EAA8BN,UAA9B,EAA0ClzC,MAA1C,CAxCqC,CAAvC;AA2CA,SAAO;AACL+zC,IAAAA,MAAM,EAAEZ,oBADH;AAELE,IAAAA,OAFK;AAGLE,IAAAA,UAHK;AAILC,IAAAA,aAJK;AAKLE,IAAAA;AALK,GAAP;AAOD,CAnEM;;;ACFP,MAAMM,kBAAkB,gBAAG/J,eAAM,CAACC,GAAV,oHAAxB;AAIA,MAAM+J,cAAc,gBAAGhK,eAAM,CAACC,GAAV,qTAUhB;AAAA,MAAC;AAAEgK,IAAAA;AAAF,GAAD;AAAA,SAAsB,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEC,UAAf,CAAD,sBAA8CD,YAAY,CAACC,UAAjF;AAAA,CAVgB,EAWhB;AAAA,MAAC;AAAED,IAAAA;AAAF,GAAD;AAAA,SAAsB,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEE,UAAf,CAAD,sBAA8CF,YAAY,CAACE,UAAjF;AAAA,CAXgB,EAYhB;AAAA,MAAC;AAAEF,IAAAA;AAAF,GAAD;AAAA,SAAsB,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEG,SAAf,CAAD,qBAA4CH,YAAY,CAACG,SAA/E;AAAA,CAZgB,EAahB;AAAA,MAAC;AAAEH,IAAAA;AAAF,GAAD;AAAA,SAAsB,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEI,SAAf,CAAD,gBAAuCJ,YAAY,CAACI,SAA1E;AAAA,CAbgB,EAchB;AAAA,MAAC;AAAEJ,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEK,QAAf,CAAD,qBACc,OAAOL,YAAY,CAACK,QAApB,KAAiC,QAAjC,GAA4CL,YAAY,CAACK,QAAzD,GAAuEL,YAAY,CAACK,QAApF,OADd,CADA;AAAA,CAdgB,EAiBhB;AAAA,MAAC;AAAEL,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEM,SAAf,CAAD,IACA,CAAC,EAACN,YAAD,YAACA,YAAY,CAAEO,SAAf,CADD,8BAEwBP,YAAY,CAACO,SAFrC,WAEoDP,YAAY,CAACM,SAFjE,MADA;AAAA,CAjBgB,CAApB;AAuBA,MAAaE,SAAS,gBAAuBC,UAAI,CAC/C;MAAC;AAAE9iB,IAAAA,GAAF;AAAOS,IAAAA,EAAP;AAAWtyB,IAAAA,MAAX;AAAmBuL,IAAAA,KAAnB;AAA0B2nC,IAAAA,UAA1B;AAAsC0B,IAAAA,IAAtC;AAA4CV,IAAAA,YAA5C;AAA0DpN,IAAAA;AAA1D;AACC,QAAM;AAAEiN,IAAAA,MAAF;AAAUV,IAAAA,OAAV;AAAmBE,IAAAA,UAAnB;AAA+BC,IAAAA;AAA/B,MAAiDP,YAAY,CAACjzC,MAAD,EAASkzC,UAAT,CAAnE;AAEA,QAAM2B,cAAc,GAAGl3C,iBAAW,CAAC;AACjCmpC,IAAAA,OAAO,QAAP,YAAAA,OAAO,CAAGyM,UAAU,EAAb,eACFvzC,MADE,EAEDsyB,EAAE,GAAG;AAAEjgB,MAAAA,UAAU,eAAQrS,MAAM,CAACqS,UAAf;AAA8CvM,QAAAA,IAAI,EAAEwsB;AAApD;AAAZ,KAAH,GAA4E,EAF7E,EAAP;AAID,GALiC,EAK/B,CAACA,EAAD,EAAKihB,UAAL,EAAiBzM,OAAjB,EAA0B9mC,MAA1B,CAL+B,CAAlC;AAOA,QAAM80C,YAAY,GAAGt2C,aAAO,CAC1B,MAAMC,4BAAA,CAAC2xC,YAAD;AAAc5P,IAAAA,GAAG,EAAEuT;AAAQxoC,IAAAA,KAAK,EAAEA;AAAOu7B,IAAAA,OAAO,EAAEA,OAAO,GAAG+N,cAAH,GAAoB3mC;GAA7E,CADoB,EAE1B,CAAC6lC,MAAD,EAASxoC,KAAT,EAAgBu7B,OAAhB,EAAyB+N,cAAzB,CAF0B,CAA5B;AAKAvxC,EAAAA,eAAS,CAAC;AACR+vC,IAAAA,OAAO;AACR,GAFQ,EAEN,CAACA,OAAD,CAFM,CAAT;AAIA/vC,EAAAA,eAAS,CAAC;AACRkwC,IAAAA,aAAa,CAAC;AAAE3hB,MAAAA,GAAF;AAAOS,MAAAA,EAAP;AAAWmhB,MAAAA,SAAS,EAAEzzC;AAAtB,KAAD,CAAb;AACD,GAFQ,EAEN,CAAC6xB,GAAD,EAAM7xB,MAAN,EAAcsyB,EAAd,EAAkBkhB,aAAlB,CAFM,CAAT;AAIA,SAAOoB,IAAI,GACTn2C,4BAAA,CAACu1C,kBAAD,MAAA,EACGc,YADH,EAEEr2C,4BAAA,CAACw1C,cAAD;AAAgBC,IAAAA,YAAY,EAAEA;GAA9B,EAA6CU,IAA7C,CAFF,EAGG,CAAC,EAACV,YAAD,YAACA,YAAY,CAAEM,SAAf,CAAD,IAA6B,CAAC,EAACN,YAAD,YAACA,YAAY,CAAEO,SAAf,CAA9B,IACCh2C,4BAAA,CAACw1C,cAAD;AAAgBC,IAAAA,YAAY,eAAOA,YAAP;AAAqBM,MAAAA,SAAS,EAAEtmC,SAAhC;AAA2CumC,MAAAA,SAAS,EAAEvmC;AAAtD;GAA5B,EACG0mC,IADH,CAJJ,CADS,GAWTE,YAXF;AAaD,CArC8C,CAA1C;;MC5BMC,YAAY,GAMpB;MAAC;AAAEjvC,IAAAA,IAAF;AAAQ9F,IAAAA,MAAR;AAAgB0Q,IAAAA,IAAhB;AAAsBmhB,IAAAA,GAAtB;AAA2BqhB,IAAAA;AAA3B;AACJ,QAAM8B,aAAa,GAAGx2C,aAAO,CAAC,MAAMC,4BAAA,CAACk9B,MAAD;AAAQ37B,IAAAA,MAAM,EAAEA;AAA0B0Q,IAAAA,IAAI,EAAEA;GAAhD,CAAP,EAAiE,CAAC1Q,MAAD,EAAS0Q,IAAT,CAAjE,CAA7B;;AAEA,UAAQ5K,IAAR;AACE,SAAK,gBAAL;AACE,aAAO+rB,GAAG,GACRpzB,4BAAA,CAACi2C,SAAD;AACE7iB,QAAAA,GAAG,EAAEA;AACLnhB,QAAAA,IAAI,EAAEA;AACNwiC,QAAAA,UAAU,EAAEA;AACZlzC,QAAAA,MAAM,EAAEmtB,uBAAuB,CAACntB,MAAD;OAJjC,CADQ,GAQRg1C,aARF;;AAUF;AACE,aAAOA,aAAP;AAbJ;AAeD,CAxBM;;MCCMC,oBAAoB,gBAAoCN,UAAI,CAAC;MAAC;AAAE30C,IAAAA;AAAF;;AACzE;;;;;;;;;;;;;AAaA,SACEvB,4BAAA,CAACs2C,YAAD;AACE/0C,IAAAA,MAAM,EAAEo+B,iBAAiB,CAACp+B,MAAD;AACzB0Q,IAAAA,IAAI,EAAEqc,mBAAmB,CAAC/sB,MAAD,CAAnB,IAA+BktB;AACrCpnB,IAAAA,IAAI,EAAE9F,MAAM,CAAC8F;AACb+rB,IAAAA,GAAG,EAAG7xB,MAAyB,CAACwyB;AAChC0gB,IAAAA,UAAU;GALZ,CADF;AASD,CAvBwE,CAAlE;;MCgBMgC,eAAe,GAA6B;MAAC;AACxDxC,IAAAA,QADwD;AAExD/B,IAAAA,OAFwD;AAGxDt0B,IAAAA,SAHwD;AAIxDrc,IAAAA,MAAM,EAAEm1C,aAJgD;AAKxD9vC,IAAAA,SALwD;AAMxDwG,IAAAA,MANwD;AAOxDwB,IAAAA,KAAK,EAAEqf,YAPiD;AAQxDZ,IAAAA,aARwD;AASxD6mB,IAAAA,aATwD;AAUxDyC,IAAAA;AAVwD;AAYxD,QAAM;AAAEC,IAAAA;AAAF,MAAQC,2BAAc,CAAC,QAAD,CAA5B;AACA,QAAM/nC,MAAM,GAAGue,aAAa,KAAK,UAAjC;AACA,QAAMgmB,MAAM,GAAGvtB,eAAe,CAAC,MAAD,EAASlf,SAAT,CAA9B;AACA,QAAM2sC,aAAa,GAAGztB,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkClf,SAAlC,CAArC;AACA,QAAMkwC,aAAa,GAAGhxB,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkClf,SAAlC,CAArC;AAEA,QAAM6F,cAAc,GAAG1M,aAAO,CAC5B,MAAM0rB,GAAG,CAACirB,aAAD,EAAgB9vC,SAAhB,CADmB,EAE5B,CAAC8vC,aAAD,EAAgB9vC,SAAhB,CAF4B,CAA9B;AAKA,QAAMmwC,YAAY,GAAG73C,iBAAW,CAAC,CAAC83C,MAAD,EAAiBpoC,KAAjB;AAC/B,UAAMqoC,QAAQ,GAAGD,MAAM,CAACnwC,KAAP,CAAa,GAAb,CAAjB;AAEA,WACE7G,4BAAA,CAACk3C,cAAD;AAAU1J,MAAAA,GAAG,EAAE5+B;KAAf,EACE5O,4BAAA,CAACgxC,QAAD;AAAUlkC,MAAAA,KAAK,EAAEkqC;KAAjB,EACGC,QAAQ,CAAC,CAAD,CADX,EAEEj3C,4BAAA,CAAC+wC,oBAAD,MAAA,EAAuBkG,QAAQ,CAAC,CAAD,CAA/B,CAFF,CADF,EAKGroC,KAAK,KAAK,CAAV,IAAe5O,4BAAA,CAACoxC,aAAD,MAAA,CALlB,CADF;AASD,GAZ+B,EAY7B,EAZ6B,CAAhC;AAcA,QAAM+F,cAAc,GAAGj4C,iBAAW,CAChC,CAAC4N,KAAD,EAAgB8B,KAAhB;AACE,QAAI,CAAC9B,KAAL,EAAY;AACV,aAAO9M,4BAAA,CAACgxC,QAAD,MAAA,EAAW4F,CAAC,CAAC,sBAAD,CAAZ,CAAP;AACD;;AAED,UAAMQ,OAAO,GAAGtqC,KAAH,oBAAGA,KAAK,CAAEjG,KAAP,CAAa,KAAb,CAAhB;AACA,UAAMwwC,cAAc,GAAG,CAAAD,OAAO,QAAP,YAAAA,OAAO,CAAEv4C,MAAT,MAAoB,CAA3C;;AAEA,QAAI,CAACiQ,MAAD,IAAYF,KAAK,IAAIyoC,cAAzB,EAA0C;AACxC,aAAOr3C,4BAAA,CAACgxC,QAAD;AAAUlkC,QAAAA,KAAK,EAAEA;OAAjB,EAAyBA,KAAzB,CAAP;AACD;;AAED,QAAI,CAAC8B,KAAD,IAAUyoC,cAAd,EAA8B;AAC5B,aACEr3C,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAACgxC,QAAD;AAAUlkC,QAAAA,KAAK,EAAC;OAAhB,UAAA,CADF,EAEE9M,4BAAA,CAACoxC,aAAD,MAAA,CAFF,EAGG2F,YAAY,CAACjqC,KAAD,CAHf,CADF;AAOD;;AAED,WAAO9M,4BAAA,wBAAA,MAAA,EAAGo3C,OAAO,CAAC32C,GAAR,CAAYs2C,YAAZ,CAAH,CAAP;AACD,GAxB+B,EAyBhC,CAACjoC,MAAD,EAASioC,YAAT,EAAuBH,CAAvB,CAzBgC,CAAlC;AA4BA,QAAMrF,QAAQ,GAAGryC,iBAAW,CACzBsuB,eAAD,IAA6B,CAAC,EAAC0mB,aAAD,YAACA,aAAa,CAAEztC,QAAf,CAAwB+mB,eAAxB,CAAD,CADJ,EAE1B,CAAC0mB,aAAD,CAF0B,CAA5B;AAKA,QAAMoD,YAAY,GAAGp4C,iBAAW,CAC9B,QAAqC0P,KAArC;;;QAAC;AAAErN,MAAAA,MAAF;AAAUuL,MAAAA,KAAV;AAAiB0gB,MAAAA;AAAjB;AACC,QAAI,CAACjsB,MAAL,EAAa,OAAO,IAAP;AAEb,UAAMoJ,oBAAkB,GAAG4sC,kBAAwB,CAACh2C,MAAD,EAASqF,SAAT,CAAnD;AAEA,WACE5G,4BAAA,CAACsxC,cAAD;AACE9D,MAAAA,GAAG,EAAEvf,YAAY,GAAGnhB,KAAf,GAAuB8B;AAC5B2iC,MAAAA,QAAQ,EAAEA,QAAQ,CAAC/jB,eAAD;AAClB7iB,MAAAA,kBAAkB,EAAEA;AACpB09B,MAAAA,OAAO,EAAE,MAAMsO,kBAAN,oBAAMA,kBAAkB,CAAG/4B,SAAH,EAAc4P,eAAd;KAJnC,EAMG6lB,MAAM,IAAIE,aAAV,IAA2BuD,aAA3B,GACC92C,4BAAA,CAACszC,cAAD;AACE1sC,MAAAA,SAAS,EAAEA;AACXysC,MAAAA,MAAM,EAAEA;AACRE,MAAAA,aAAa,EAAEA;AACfuD,MAAAA,aAAa,EAAEA;AACftD,MAAAA,QAAQ;KALV,EAOExzC,4BAAA,CAAC0yC,aAAD;AACElF,MAAAA,GAAG,OAAK1gC,KAAL,GAAa8B;AAChB9B,MAAAA,KAAK,EAAEA;AACP3N,MAAAA,KAAK,EAAG,CAAAsN,cAAc,QAAd,qCAAAA,cAAc,CAAEW,MAAhB,CAAuB,CAAAX,cAAc,QAAd,YAAAA,cAAc,CAAEW,MAAhB,CAAuBvO,MAAvB,IAAgC+P,KAAhC,GAAwC,CAA/D,4CAAmEzP,KAAnE,MAA4EsN,cAA5E,oBAA4EA,cAAc,CAAEjF,YAA5F;AACRZ,MAAAA,SAAS,EAAEA;KAJb,CAPF,CADD,GAgBC5G,4BAAA,CAACqxC,eAAD,MAAA,EACErxC,4BAAA,CAACw2C,oBAAD;AACEj1C,MAAAA,MAAM,EAAEoJ,oBAAkB,GAAGpJ,MAAH,GAAYqJ,kBAAkB,CAACrJ,MAAD,EAAS,IAAT;KAD1D,CADF,CAtBJ,EA4BG41C,cAAc,CAACrqC,KAAD,EAAQ8B,KAAR,CA5BjB,CADF;AAgCD,GAtC6B,EAuC9B,CACEykC,MADF,EAEEyD,aAFF,EAGEvD,aAHF,EAIE3sC,SAJF,EAKE6F,cALF,oBAKEA,cAAc,CAAEjF,YALlB,EAMEiF,cANF,oBAMEA,cAAc,CAAEW,MANlB,EAOE+pC,cAPF,EAQElpB,YARF,EASEimB,aATF,EAUEyC,kBAVF,CAvC8B,CAAhC;AAqDA,SACE32C,4BAAA,CAACiyC,wBAAD;AAA0BlQ,IAAAA,GAAG,EAAEkS;AAAU/B,IAAAA,OAAO,EAAEA;GAAlD,EACG9kC,MAAM,CAAC3M,GAAP,CAAW62C,YAAX,CADH,CADF;AAKD,CAhIM;;MCnBME,0BAA0B,GAAuD;MAAC;AAAE5wC,IAAAA;AAAF;AAC7F,QAAMysC,MAAM,GAAGvtB,eAAe,CAAC,MAAD,EAASlf,SAAT,CAA9B;AACA,QAAM2sC,aAAa,GAAGztB,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkClf,SAAlC,CAArC;AACA,QAAMkwC,aAAa,GAAGhxB,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkClf,SAAlC,CAArC;AAEA,SACE5G,4BAAA,CAACgyC,6BAAD,MAAA,EACGuB,aAAa,IAAIuD,aAAjB,GACIvD,aAAa,GAAG,iBAAH,GAAuB,cADxC,GAEGF,MAAM,GAAG,cAAH,GAAoB,cAHhC,CADF;AAOD,CAZM;;MCKMoE,aAAa,GAA2B;MAAC;AACpD75B,IAAAA,SADoD;AAEpDrc,IAAAA,MAFoD;AAGpDqF,IAAAA,SAHoD;AAIpD8wC,IAAAA,UAJoD;AAKpDhqB,IAAAA,UALoD;AAMpDwmB,IAAAA,aANoD;AAOpDyC,IAAAA,kBAPoD;AAQpDzxC,IAAAA,SARoD;AASpD4hB,IAAAA,WAToD;AAUpDlY,IAAAA;AAVoD;AAYpD,QAAM;AAAEgoC,IAAAA;AAAF,MAAQC,2BAAc,CAAC,QAAD,CAA5B;AACA,QAAM,CAACc,UAAD,EAAaC,cAAb,IAA+B3M,SAAS,EAA9C;AACA,QAAM,CAAC4M,MAAD,EAASC,OAAT,IAAoBzM,OAAO,EAAjC;AACA,QAAM,CAAC0M,MAAD,EAASC,OAAT,IAAoB3M,OAAO,EAAjC;AAEA,SACErrC,4BAAA,CAACoyC,yBAAD,MAAA,EACEpyC,4BAAA,CAAC+xC,eAAD,MAAA,EAAkB7sC,SAAS,CAACib,KAAV,IAAmBjb,SAAS,CAACgY,IAA/C,CADF,EAEEld,4BAAA,CAACw3C,0BAAD;AAA4B5wC,IAAAA,SAAS,EAAEA;GAAvC,CAFF,EAGE5G,4BAAA,CAACqyC,qBAAD;AAAuBx+B,IAAAA,MAAM,EAAE8jC,UAAU,GAAG,CAAC,CAAAG,OAAO,QAAP,YAAAA,OAAO,CAAEG,YAAT,KAAyB,CAA1B,IAA+B,CAAlC,GAAsCD,OAAtC,oBAAsCA,OAAO,CAAEC;GAAxF,EACEj4C,4BAAA,CAACy2C,eAAD;AACExC,IAAAA,QAAQ,EAAE4D;AACV3F,IAAAA,OAAO,EAAEyF;AACT/5B,IAAAA,SAAS,EAAEA;AACXrc,IAAAA,MAAM,EAAEA;AACR2yC,IAAAA,aAAa,EAAEA,aAAF,oBAAEA,aAAa,CAAGt2B,SAAH;AAC5B+4B,IAAAA,kBAAkB,EAAEA;AACpB/vC,IAAAA,SAAS,EAAEA;AACXymB,IAAAA,aAAa,EAAEnoB,SAAS,CAACmC;AACzBuH,IAAAA,KAAK,EAAEA;AACPxB,IAAAA,MAAM,EAAE4gB,wBAAwB,CAC9B9oB,SAD8B,EAE9B0B,SAF8B,EAG9B8wC,UAH8B,EAI9BhqB,UAJ8B,EAK9BnsB,MAL8B,EAM9BulB,WAN8B,EAO9BlY,KAP8B,EAQ9BgoC,CAAC,CAAC,sBAAD,CAR6B;GAVlC,CADF,EAsBE52C,4BAAA,CAACg0C,eAAD;AACEC,IAAAA,QAAQ,EAAE8D;AACV7F,IAAAA,OAAO,EAAE,CAACyF;AACVzD,IAAAA,aAAa,EAAEA,aAAF,oBAAEA,aAAa,CAAGt2B,SAAH;AAC5BhX,IAAAA,SAAS,EAAEA;AACXwG,IAAAA,MAAM,EAAEqgB,wBAAwB,CAC9BvoB,SAD8B,EAE9BwoB,UAF8B,EAG9B5G,WAH8B,EAI9BlY,KAJ8B,EAK9BgoC,CAAC,CAAC,sBAAD,CAL6B;GALlC,CAtBF,CAHF,EAuCE52C,4BAAA,CAAC6zC,qBAAD;AAAuBxL,IAAAA,OAAO,EAAEuP;GAAhC,EACGhB,CAAC,CAACe,UAAU,GAAG,YAAH,GAAkB,YAA7B,CADJ,CAvCF,CADF;AA6CD,CA9DM;;;ACXP,MASaO,MAAM,gBAAoBhC,UAAI,CAAC;MAAC;AAAE9qB,IAAAA;AAAF;MAAgB+sB;;AAC3D,QAAMzqB,UAAU,GAAGQ,aAAa,CAAC9C,SAAD,CAAhC;AAEA,MAAI,CAACsC,UAAL,EAAiB,OAAO,IAAP;AAEjB,QAAMgqB,UAAU,GAAG5pC,MAAM,CAAC+uB,IAAP,CAAYnP,UAAZ,CAAnB;AACA,QAAMzQ,UAAU,GAAGF,kBAAkB,CAACqO,SAAS,CAACpO,eAAX,CAArC;AAEA,SACEhd,4BAAA,CAAC8xC,kBAAD,MAAA,EACGhkC,MAAM,CAAC+uB,IAAP,CAAYnP,UAAZ,EAAwBjtB,GAAxB,CAA4B,CAAC8qB,KAAD,EAAQ3c,KAAR;;;AAC3B,UAAMjB,aAAa,GAAGsR,6BAA6B,0BACjDyO,UAAU,CAACnC,KAAD,CAAV,CAA0Cne,MAA1C,CAAiD,CAAjD,CADiD,qBACjD,sBAAqD/H,SADJ,CAAnD;AAIA,WACErF,4BAAA,CAACy3C,aAAD;AACEjK,MAAAA,GAAG,EAAE5+B;AACLgP,MAAAA,SAAS,EAAEwN,SAAS,CAAClO;AACrB3b,MAAAA,MAAM,sBAAE6pB,SAAS,CAACliB,KAAZ,qBAAE,iBAAiB3H;AACzB2D,MAAAA,SAAS,EAAE+X,UAAU,CAAC5Y,IAAX,CAAgB;AAAA,YAAC;AAAE6Y,UAAAA;AAAF,SAAD;AAAA,eAAcA,IAAI,KAAKvP,aAAvB;AAAA,OAAhB;AACX+f,MAAAA,UAAU,EAAEA,UAAU,CAACnC,KAAD;AACtB3kB,MAAAA,SAAS,EAAE2kB;AACXmsB,MAAAA,UAAU,EAAEA;AACZ9oC,MAAAA,KAAK,EAAEA;OACHupC,KATN,CADF;AAaD,GAlBA,CADH,CADF;AAuBD,CA/B0C,CAApC;;MCeM93C,GAAG,GAAuB;MAAC;AACtCk6B,IAAAA,SADsC;AAEtCx3B,IAAAA,QAFsC;AAGtCI,IAAAA,UAHsC;AAItCojC,IAAAA,QAJsC;AAKtCC,IAAAA,QALsC;AAMtC1mC,IAAAA,QANsC;AAOtCkkC,IAAAA,YAPsC;AAQtC96B,IAAAA;AARsC;AAUtC,QAAMk9B,UAAU,GAAGD,aAAa,EAAhC;AACA,QAAM;AAAE1lC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMwjC,gBAAgB,GAAGllC,iBAAW,CACjCgsC,KAAD;AACE,QAAIlH,YAAY,IAAIyD,oBAAoB,CAAChnC,GAAD,EAAM;AAAEsC,MAAAA,QAAF;AAAYI,MAAAA;AAAZ,KAAN,CAAxC,EAAyE;AACvE6gC,MAAAA,YAAY,CAACkH,KAAD,CAAZ;AACD;AACF,GALiC,EAMlC,CAACzqC,GAAD,EAAMujC,YAAN,EAAoBjhC,QAApB,EAA8BI,UAA9B,CANkC,CAApC;AASAqkC,EAAAA,gBAAgB,CAAC;AAAEzkC,IAAAA,QAAF;AAAYI,IAAAA;AAAZ,GAAD,CAAhB;AACAmjC,EAAAA,cAAc,CAACC,QAAD,EAAWC,QAAX,EAAqBzjC,QAArB,EAA+BI,UAA/B,CAAd;AAEA4gC,EAAAA,gBAAgB,CAACK,gBAAD,CAAhB;AAEA,SACEpkC,4BAAA,MAAA;AAAKu6B,IAAAA,SAAS,EAAEA;AAAWwH,IAAAA,GAAG,EAAEqE;AAAYl9B,IAAAA,KAAK,EAAEA;GAAnD,EACGpJ,QADH,CADF;AAKD,CAhCM;;ICGMs4C,WAAb;AAAA;;AAAA;;AAAA;;;;;;;AAoHE,uBAAA,GAAiBt2C,KAAD;AACd,YAAM2C,OAAO,GAAG,MAAK4zC,UAAL,CAAgB,CAAC,GAAGv2C,KAAK,CAAC2C,OAAN,CAAc+Q,KAAlB,CAAhB,CAAhB;;AAEA,YAAKvU,KAAL,IAAc,MAAKA,KAAL,CAAWijB,GAAX,CAAezf,OAAf,CAAd;;AACA,UAAI,MAAK6zC,aAAT,EAAwB;AACtB,cAAKA,aAAL,CAAmBr1B,aAAnB,GAAmCxe,OAAnC;AACD;;AACD,YAAK8zC,UAAL,CAAgB,KAAhB,EAAuB,IAAvB;AACD,KARD;;AAUA,uBAAA,GAAgB;AACd,UAAI,MAAKD,aAAL,IAAsB,MAAKA,aAAL,CAAmBr1B,aAA7C,EAA4D;AAC1D,cAAKhiB,KAAL,IAAc,MAAKA,KAAL,CAAW4iB,MAAX,CAAkB,MAAKy0B,aAAL,CAAmBr1B,aAArC,CAAd;AACD;;AAED,YAAKs1B,UAAL,CAAgB,IAAhB,EAAsB,KAAtB;AACD,KAND;;AAQA,+BAAA,GAAwB;AACtBC,MAAAA,UAAU,CAAC;AACT,cAAKD,UAAL,CAAgB,KAAhB,EAAuB,KAAvB;;AACA,cAAKA,UAAL,CAAgB,IAAhB,EAAsB,KAAtB;AACD,OAHS,EAGP,EAHO,CAAV;AAID,KALD;;;AAUD;;AAhJD;AAAA;AAAA,WAKE;AACE,YAAM;AAAE93C,QAAAA,GAAF;AAAOC,QAAAA,OAAP;AAAgB0hB,QAAAA;AAAhB,UAAsC,KAAKmV,KAAjD;AAEA,WAAKt2B,KAAL,GAAa,IAAIH,2BAAJ,EAAb;AACA,WAAK23C,cAAL,CAAoBh4C,GAApB,EAAyBC,OAAzB,EAAkC0hB,iBAAlC;AACA,WAAKs2B,YAAL,CAAkBj4C,GAAlB,EAAuBC,OAAvB,EAAgC0hB,iBAAhC;AAEA,WAAKmV,KAAL,CAAW92B,GAAX,CAAegqC,QAAf,CAAwB,KAAKxpC,KAA7B;AACA,WAAKs3C,UAAL,CAAgB,IAAhB,EAAsB,KAAtB;AACD;AAdH;AAAA;AAAA,WAgBE;AACE,WAAKt3C,KAAL,IAAc,KAAKs2B,KAAL,CAAW92B,GAAX,CAAegjC,WAAf,CAA2B,KAAKxiC,KAAhC,CAAd;AACA,WAAKs3C,UAAL,CAAgB,KAAhB,EAAuB,KAAvB;AACA,WAAKI,SAAL;AACA,WAAKC,eAAL;AACD;AArBH;AAAA;AAAA,WAuBE,wBACEn4C,GADF,EAEEC,OAFF,EAGE0hB,iBAHF;AAKE,YAAM;AAAEy2B,QAAAA,YAAF;AAAgBx2B,QAAAA,UAAhB;AAA4BC,QAAAA;AAA5B,UAA2C,KAAKiV,KAAtD;AAEA,WAAKuhB,aAAL,GAAqB,IAAI72B,sBAAJ,CAA2BxhB,GAA3B,EAAgCC,OAAhC,EAAyC;AAC5D4pC,QAAAA,QAAQ,EAAE,KADkD;AAE5DyO,QAAAA,YAAY,EAAE,IAF8C;AAG5Dx3C,QAAAA,MAAM,EAAEs3C,YAAY,IAAIpf,mBAHoC;AAI5DnX,QAAAA,UAJ4D;AAK5D02B,QAAAA,eAAe,EAAE,GAL2C;AAM5D52B,QAAAA,iBAN4D;AAO5DC,QAAAA,UAAU,EAAEA;AAPgD,OAAzC,CAArB;;AAUA,WAAKy2B,aAAL,CAAmBv2B,EAAnB,CAAsB,eAAtB,EAAuC,KAAK02B,aAA5C;AACA,WAAKH,aAAL,CAAmBv2B,EAAnB,CAAsB,QAAtB,EAAgC,KAAK22B,qBAArC;AACD;AA1CH;AAAA;AAAA,WA4CE,sBACEz4C,GADF,EAEEC,OAFF,EAGE0hB,iBAHF;AAKE,YAAM;AAAEy2B,QAAAA,YAAF;AAAgBM,QAAAA,UAAhB;AAA4B92B,QAAAA;AAA5B,UAA2C,KAAKkV,KAAtD;AAEA,WAAK+gB,aAAL,GAAqB,IAAInzB,qBAAJ,CAA0B1kB,GAA1B,EAA+BC,OAA/B,EAAwC;AAC3D4pC,QAAAA,QAAQ,EAAE,KADiD;AAE3DC,QAAAA,WAAW,EAAE,KAAKtpC,KAFyC;AAG3Dm4C,QAAAA,cAAc,EAAED,UAAU,IAAIxf,wBAH6B;AAI3Dp4B,QAAAA,MAAM,EAAEs3C,YAAY,IAAIpf,mBAJmC;AAK3DrX,QAAAA,iBAL2D;AAM3DC,QAAAA;AAN2D,OAAxC,CAArB;AAQA,WAAKi2B,aAAL,CAAmBe,kBAAnB,GAAwC,KAAxC;AACA,WAAKf,aAAL,CAAmB/1B,EAAnB,CAAsB,QAAtB,EAAgC,KAAKiD,aAArC;AACD;AA7DH;AAAA;AAAA,WA+DE;UAAmB;AAAEnD,QAAAA;AAAF;AACjB,YAAM;AAAEA,QAAAA,UAAU,EAAEi3B;AAAd,UAAoC,KAAK/hB,KAA/C;AAEA,UAAI+hB,iBAAiB,KAAKj3B,UAAtB,IAAoCi3B,iBAAxC,EACE,IAAI,KAAKhB,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmBj2B,UAAnB,GAAgCi3B,iBAAhC;AACA,aAAKhB,aAAL,CAAmBhzB,mBAAnB;AACD;AACJ;AAvEH;AAAA;AAAA,WAyEE;AACE,UAAI,KAAKwzB,aAAT,EAAwB;AACtB;AACA,aAAKA,aAAL,CAAmBxU,GAAnB,CAAuB,eAAvB,EAAwC,KAAK2U,aAA7C;AACD;;AAED,WAAKX,aAAL,IAAsB,KAAKA,aAAL,CAAmBhU,GAAnB,CAAuB,QAAvB,EAAiC,KAAK9e,aAAtC,CAAtB;AACA,WAAKszB,aAAL,IACE,KAAKA,aAAL,CAAmBxU,GAAnB,CAAuB,QAAvB,EAAiC,KAAK4U,qBAAtC,CADF;AAED;AAlFH;AAAA;AAAA,WAoFE;AACE,aAAO,KAAKJ,aAAZ;AACA,aAAO,KAAKR,aAAZ;AACA,aAAO,KAAKr3C,KAAZ;AACD;AAxFH;AAAA;AAAA,WA0FE,oBAAWs4C,MAAX,EAA4BC,IAA5B;AACE,UAAI,KAAKV,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmBxO,QAAnB,GAA8BiP,MAA9B;AACD;;AAED,UAAI,KAAKjB,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmBhO,QAAnB,GAA8BkP,IAA9B;AACD;AACF;AAlGH;AAAA;AAAA,WAoGE,oBAAWhkC,KAAX;AACE,YAAM;AAAEqjC,QAAAA,YAAF;AAAgBv2B,QAAAA,UAAhB;AAA4B7hB,QAAAA;AAA5B,UAAoC,KAAK82B,KAA/C;AACA,UAAI9yB,OAAJ;;AAEA,UAAIyc,qBAAqB,CAAC1L,KAAD,EAAQ/U,GAAG,CAAC0C,UAAZ,CAAzB,EAAkD;AAChDqS,QAAAA,KAAK,CAAC,CAAD,CAAL,CAASuO,KAAT;AACAtf,QAAAA,OAAO,GAAG,IAAI+Z,eAAJ,CAAYhJ,KAAZ,EAAmB;AAAE3R,UAAAA,GAAG,EAAEpD,GAAG,CAACoD;AAAX,SAAnB,CAAV;AACAY,QAAAA,OAAO,CAAClD,MAAR,GAAiB+gB,UAAU,IAAI0B,iBAA/B;AACD,OAJD,MAIO;AACLvf,QAAAA,OAAO,GAAG,IAAI6Z,iBAAJ,CAAa9I,KAAb,EAAoB;AAAE3R,UAAAA,GAAG,EAAEpD,GAAG,CAACoD;AAAX,SAApB,CAAV;AACAY,QAAAA,OAAO,CAAClD,MAAR,GAAiBs3C,YAAY,IAAIpf,mBAAjC;AACD;;AAED,aAAOh1B,OAAP;AACD;AAlHH;AAAA;AAAA,WA6IE;AACE,aAAOzE,4BAAA,MAAA;AAAKkJ,QAAAA,KAAK,EAAE;AAAEuwC,UAAAA,OAAO,EAAE;AAAX;OAAZ,CAAP;AACD;AA/IH;;AAAA;AAAA,EAAiCz5C,cAAK,CAACk3B,SAAvC;;;AC3BA,MAqBawiB,QAAQ,GAA2B;MAAC;AAAEpP,IAAAA;AAAF;MAAe/S;;AAC9D,QAAM;AAAE92B,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AAEA,SAAO0pC,QAAQ,GACbtqC,4BAAA,CAACo4C,WAAD;AAAa33C,IAAAA,GAAG,EAAEA;AAAKC,IAAAA,OAAO,EAAEA;KAAa62B,MAA7C,CADa,GAEX,IAFJ;AAGD,CANM;;;MCnBMoiB,mBAAmB,gBAAGnO,eAAM,CAACC,GAAV,sOAAzB;AAaP,MAAamO,eAAe,gBAAGpO,eAAM,CAACC,GAAV,gQAIjB;AAAA,MAAC;AAAE76B,IAAAA;AAAF,GAAD;AAAA,SAAkBA,KAAlB;AAAA,CAJiB,CAArB;AAiBP,MAAaipC,aAAa,gBAAGrO,eAAM,CAACC,GAAV,mRAIT;AAAA,MAAC;AAAEqO,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,UAAH,GAAgB,QAA3C;AAAA,CAJS,EAKf;AAAA,MAAC;AAAElpC,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,IAAI,MAAxB;AAAA,CALe,CAAnB;;MC5BMmpC,UAAU,GAAa;AAClC,QAAM;AAAE52C,IAAAA;AAAF,MAAiB6iC,UAAU,EAAjC;AACA,QAAM;AAAEuB,IAAAA,YAAF;AAAgB32B,IAAAA;AAAhB,MAA0Bw2B,QAAQ,CAAC;AAAEjkC,IAAAA,UAAU,EAAEA,UAAU,IAAI;AAA5B,GAAD,CAAxC;AAEA,SACEnD,4BAAA,CAAC25C,mBAAD,MAAA,EACE35C,4BAAA,CAAC45C,eAAD;AAAiBhpC,IAAAA,KAAK,EAAEA;GAAxB,EACE5Q,4BAAA,CAAC65C,aAAD;AAAeC,IAAAA,QAAQ;AAACE,IAAAA,MAAM,EAAE;GAAhC,EACGzS,YAAY,IAAI,IAAhB,GACMA,YAAY,GAAG,IADrB,UAEMA,YAFN,MADH,CADF,CADF,CADF;AAWD,CAfM;;MCIM0S,IAAI,GAAwB;MAAC;AAAEn6C,IAAAA;AAAF;AACxC,QAAM;AAAEkD,IAAAA,MAAF;AAAUC,IAAAA;AAAV,MAAsBP,iBAAiB,EAA7C;AAEA,SACE1C,4BAAA,CAACywC,UAAD,MAAA,EACEzwC,4BAAA,CAACowC,SAAD;AAAW/H,IAAAA,OAAO,EAAErlC;GAApB,CADF,EAEEhD,4BAAA,CAACqwC,UAAD;AAAYhI,IAAAA,OAAO,EAAEplC;GAArB,CAFF,EAGGnD,QAHH,CADF;AAOD,CAVM;;MCFMo6C,SAAS,GAAa;AACjC,QAAMj2C,KAAK,GAAGiiC,WAAW,EAAzB;AAEA,SACElmC,4BAAA,CAAC65C,aAAD;AAAeM,IAAAA,UAAU,EAAE;AAAMvpC,IAAAA,KAAK,EAAE;GAAxC,EACG3M,KAAK,IAAI,CADZ,CADF;AAKD,CARM;;;;ACKP,MAAMm2C,YAAY,GAAIC,UAAD,IAAwBxK,UAAxB,mTAKFwK,UALE,EAMDA,UANC,EAOHA,UAPG,CAArB;;AAWA,MAAMC,UAAU,GAAID,UAAD,IAAwBxK,UAAxB,qTAKDwK,UALC,EAMCA,UAND,EAOEA,UAPF,CAAnB;;AAWA,MAAME,WAAW,GAAIF,UAAD,IAAwBxK,UAAxB,oTAKFwK,UALE,EAMDA,UANC,EAOCA,UAPD,CAApB;;AAWA,MAAMG,SAAS,GAAIH,UAAD,IAAwBxK,UAAxB,sTAKCwK,UALD,EAMEA,UANF,EAOGA,UAPH,CAAlB;;AAWA,MAAMve,GAAG,GAAG,CAACxa,QAAD,EAAmB+4B,UAAnB,KAAiDxK,UAAjD,6JAGAvuB,QAHA,EAIR+4B,UAAU,IAAID,YAAY,CAACC,UAAD,CAJlB,CAAZ;;AAOA,MAAMI,KAAK,GAAG,CAACn5B,QAAD,EAAmB+4B,UAAnB,KAAiDxK,UAAjD,0JAGJvuB,QAHI,EAIV+4B,UAAU,IAAIC,UAAU,CAACD,UAAD,CAJd,CAAd;;AAOA,MAAMxe,IAAI,GAAG,CAACva,QAAD,EAAmB+4B,UAAnB,KAAiDxK,UAAjD,2JAGFvuB,QAHE,EAIT+4B,UAAU,IAAIE,WAAW,CAACF,UAAD,CAJhB,CAAb;;AAOA,MAAMK,MAAM,GAAG,CAACp5B,QAAD,EAAmB+4B,UAAnB,KAAiDxK,UAAjD,0JAGNvuB,QAHM,EAIX+4B,UAAU,IAAIG,SAAS,CAACH,UAAD,CAJZ,CAAf;;AAOA,AAAO,MAAMpK,gBAAc,GAAG,SAAjBA,cAAiB,CAC5BC,SAD4B,EAE5B5uB,QAF4B,EAG5B+4B,UAH4B;AAAA,MAC5BnK,SAD4B;AAC5BA,IAAAA,SAD4B,GACL,KADK;AAAA;;AAAA,SAIzBL,UAJyB,mHAK1BK,SAAS,KAAK,KAAd,IAAuBpU,GAAG,CAACxa,QAAD,EAAW+4B,UAAX,CALA,EAM1BnK,SAAS,KAAK,OAAd,IAAyBuK,KAAK,CAACn5B,QAAD,EAAW+4B,UAAX,CANJ,EAO1BnK,SAAS,KAAK,MAAd,IAAwBrU,IAAI,CAACva,QAAD,EAAW+4B,UAAX,CAPF,EAQ1BnK,SAAS,KAAK,QAAd,IAA0BwK,MAAM,CAACp5B,QAAD,EAAW+4B,UAAX,CARN;AAAA,CAAvB;AAWP,MAAMM,MAAM,gBAAG9K,UAAH,8LAAZ;AASA,MAAa+K,gBAAgB,gBAAGpP,eAAM,CAACC,GAAV,sXAYzB;AAAA,MAAC;AAAEyE,IAAAA,SAAF;AAAa5uB,IAAAA,QAAQ,GAAG,QAAxB;AAAkCu5B,IAAAA,SAAlC;AAA6CR,IAAAA,UAAU,GAAG;AAA1D,GAAD;AAAA,SACApK,gBAAc,CAACC,SAAD,EAAY5uB,QAAZ,EAAsBu5B,SAAS,GAAGR,UAAH,GAAgB,IAA/C,CADd;AAAA,CAZyB,EAczB;AAAA,MAAC;AAAEQ,IAAAA;AAAF,GAAD;AAAA,SAAmBA,SAAS,IAAIF,MAAhC;AAAA,CAdyB,CAAtB;;;ACvGP;AAUA,MAAM;AAAE16C,EAAAA,QAAF;AAAY66C,EAAAA;AAAZ,iBAAyBn7C,mBAAa,CAAY,EAAZ,CAA5C;;AAGA,MAAao7C,OAAO,GAAuB;MAAC;AAC1Cp2C,IAAAA,QAAQ,GAAG,EAD+B;AAE1ClE,IAAAA,GAF0C;AAG1CqR,IAAAA,MAH0C;AAI1CglB,IAAAA,SAJ0C;AAK1CxyB,IAAAA,MAL0C;AAM1CxE,IAAAA,QAN0C;AAO1CwkB,IAAAA,OAP0C;AAQ1C02B,IAAAA,aAR0C;AAS1CxS,IAAAA;AAT0C;MAUvCjR;;AAEH,QAAM0jB,SAAS,GAAGrT,UAAU,CAACtjC,MAAD,CAA5B;AAEAO,EAAAA,eAAS,CAAC;AACR,KAACpE,GAAG,GAAG,CAACA,GAAD,CAAH,GAAWkE,QAAf,EAAyB8uB,OAAzB,CAAkChvB,OAAD;AAC/B,YAAM1B,QAAQ,GACZ+O,MAAM,IAAI,EAAErN,OAAO,YAAYpE,QAArB,CAAV,IAAuCoE,OAAO,CAACd,IAAR,CAAamO,MAApD,GACIrN,OAAO,CAACd,IAAR,CAAamO,MADjB,GAEIrC,SAHN;AAKAwrC,MAAAA,SAAS,CAAC;AACRx2C,QAAAA,OADQ;AAERqyB,QAAAA,SAAS,EACP,OAAOkkB,aAAP,KAAyB,UAAzB,GACI,MAAMA,aAAa,CAACv2C,OAAD,CADvB,GAEI,MAAMzE,4BAAA,CAAC46C,gBAAD,oBAAsBrjB,MAAtB,EAA8BjT,OAA9B,CALJ;AAMRvhB,QAAAA,QANQ;AAORylC,QAAAA;AAPQ,OAAD,CAAT;AASD,KAfD;AAgBD,GAjBQ,EAiBN,CACDlkB,OADC,EAEDkkB,SAFC,EAGDwS,aAHC,EAIDC,SAJC,EAKDx6C,GALC,EAMDqR,MANC,EAODnN,QAPC,EAQDmyB,SARC,EASDS,KATC,CAjBM,CAAT;AA6BA,SACEv3B,4BAAA,CAACC,QAAD;AAAUd,IAAAA,KAAK,EAAEwF;GAAjB,EACGlE,GAAG,GAAGX,QAAH,GAAcA,QAAQ,GAAGE,4BAAA,CAAC86C,QAAD,MAAA,EAAWh7C,QAAX,CAAH,GAAqC,IADjE,CADF;AAKD,CAhDM;;ACXP;;AACA,MAAao7C,IAAI,GAAG,MAAMl7C,4BAAA,MAAA;AAAKkJ,EAAAA,KAAK,EAAE;AAAEuwC,IAAAA,OAAO,EAAE;AAAX;CAAZ,CAAnB;;MCGM0B,eAAe,GAA6B;MAAC;AACxDp4C,IAAAA,QADwD;AAExDonC,IAAAA,QAFwD;AAGxD5oC,IAAAA;AAHwD;AAKxD2oC,EAAAA,kBAAkB,CAAC;AAAEnnC,IAAAA,QAAF;AAAYonC,IAAAA,QAAZ;AAAsB5oC,IAAAA;AAAtB,GAAD,CAAlB;AAEA,SAAOvB,4BAAA,CAACk3C,cAAD,MAAA,CAAP;AACD,CARM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|