@evergis/react 2.0.263 → 2.0.265

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.
Files changed (114) hide show
  1. package/dist/components/Legend/styled.d.ts +0 -1
  2. package/dist/components/index.d.ts +0 -10
  3. package/dist/contexts/index.d.ts +0 -4
  4. package/dist/core/attributes/types.d.ts +0 -1
  5. package/dist/core/attributes/utils.d.ts +2 -60
  6. package/dist/core/feature/index.d.ts +0 -1
  7. package/dist/core/index.d.ts +0 -4
  8. package/dist/core/legend/types.d.ts +2 -27
  9. package/dist/hooks/index.d.ts +2 -28
  10. package/dist/index.d.ts +0 -1
  11. package/dist/react.cjs.development.js +2742 -5380
  12. package/dist/react.cjs.development.js.map +1 -1
  13. package/dist/react.cjs.production.min.js +1 -1
  14. package/dist/react.cjs.production.min.js.map +1 -1
  15. package/dist/react.esm.js +2754 -5294
  16. package/dist/react.esm.js.map +1 -1
  17. package/dist/symbols/index.d.ts +0 -1
  18. package/dist/utils/legend.d.ts +1 -4
  19. package/package.json +3 -3
  20. package/dist/components/DraggableMarker/DraggableMarker.d.ts +0 -3
  21. package/dist/components/DraggableMarker/index.d.ts +0 -2
  22. package/dist/components/DraggableMarker/types.d.ts +0 -8
  23. package/dist/components/EvergisCard/AttributeValue.d.ts +0 -3
  24. package/dist/components/EvergisCard/EvergisCard.d.ts +0 -16
  25. package/dist/components/EvergisCard/EvergisCardAttribute.d.ts +0 -7
  26. package/dist/components/EvergisCard/MailValue.d.ts +0 -5
  27. package/dist/components/EvergisCard/PhoneValue.d.ts +0 -5
  28. package/dist/components/EvergisCard/StyledCard.d.ts +0 -4
  29. package/dist/components/EvergisCard/UrlValue.d.ts +0 -5
  30. package/dist/components/EvergisCard/index.d.ts +0 -3
  31. package/dist/components/EvergisCard/styled.d.ts +0 -16
  32. package/dist/components/EvergisSelect/EvergisSelect.d.ts +0 -3
  33. package/dist/components/EvergisSelect/index.d.ts +0 -1
  34. package/dist/components/EvergisSelect/types.d.ts +0 -11
  35. package/dist/components/Layers/ClusterLayer.d.ts +0 -3
  36. package/dist/components/Layers/EvergisDynamicLayer.d.ts +0 -3
  37. package/dist/components/Layers/EvergisSelectLayer.d.ts +0 -9
  38. package/dist/components/Layers/EvergisTileLayer.d.ts +0 -3
  39. package/dist/components/Layers/FeatureLayer.d.ts +0 -3
  40. package/dist/components/Layers/TileLayer.d.ts +0 -3
  41. package/dist/components/Layers/index.d.ts +0 -6
  42. package/dist/components/Layers/useSGisFeatures.d.ts +0 -3
  43. package/dist/components/Map/Map.d.ts +0 -13
  44. package/dist/components/Map/index.d.ts +0 -1
  45. package/dist/components/MapControls/Fullscreen.d.ts +0 -1
  46. package/dist/components/MapControls/Measure.d.ts +0 -1
  47. package/dist/components/MapControls/Search.d.ts +0 -1
  48. package/dist/components/MapControls/index.d.ts +0 -4
  49. package/dist/components/MapControls/styled.d.ts +0 -16
  50. package/dist/components/Measurer/MeasureTool.d.ts +0 -32
  51. package/dist/components/Measurer/Measurer.d.ts +0 -16
  52. package/dist/components/Measurer/index.d.ts +0 -2
  53. package/dist/components/Noop/index.d.ts +0 -2
  54. package/dist/components/ScaleControl/ScaleRuler.d.ts +0 -2
  55. package/dist/components/ScaleControl/Zoom.d.ts +0 -4
  56. package/dist/components/ScaleControl/ZoomLevel.d.ts +0 -2
  57. package/dist/components/ScaleControl/index.d.ts +0 -4
  58. package/dist/components/ScaleControl/styled.d.ts +0 -13
  59. package/dist/components/SearchInput/SearchInput.d.ts +0 -6
  60. package/dist/components/SearchInput/styled.d.ts +0 -2
  61. package/dist/components/Tooltip/Tooltip.d.ts +0 -3
  62. package/dist/components/Tooltip/index.d.ts +0 -2
  63. package/dist/components/Tooltip/styled.d.ts +0 -4
  64. package/dist/components/Tooltip/types.d.ts +0 -24
  65. package/dist/contexts/EvergisContext.d.ts +0 -8
  66. package/dist/contexts/EvergisSelectContext.d.ts +0 -8
  67. package/dist/contexts/MapContext.d.ts +0 -14
  68. package/dist/contexts/TooltipContext.d.ts +0 -14
  69. package/dist/controls/BaseMeasureToolCreator.d.ts +0 -41
  70. package/dist/controls/BaseMeasureToolEditor.d.ts +0 -23
  71. package/dist/controls/MeasureToolFormatters.d.ts +0 -6
  72. package/dist/controls/index.d.ts +0 -2
  73. package/dist/core/crs/index.d.ts +0 -16
  74. package/dist/core/feature/EvergisFeature.d.ts +0 -22
  75. package/dist/core/layer/EvergisLayer.d.ts +0 -12
  76. package/dist/core/layer/index.d.ts +0 -2
  77. package/dist/core/layer/types.d.ts +0 -2
  78. package/dist/core/measurer.d.ts +0 -4
  79. package/dist/core/scale.d.ts +0 -1
  80. package/dist/hooks/LayerProps.d.ts +0 -5
  81. package/dist/hooks/useClusterLayer.d.ts +0 -13
  82. package/dist/hooks/useCrs.d.ts +0 -2
  83. package/dist/hooks/useDebouncedCallback.d.ts +0 -1
  84. package/dist/hooks/useDraggableMarker.d.ts +0 -2
  85. package/dist/hooks/useEventPoint.d.ts +0 -3
  86. package/dist/hooks/useEvergisCard.d.ts +0 -9
  87. package/dist/hooks/useEvergisDynamicLayer.d.ts +0 -6
  88. package/dist/hooks/useEvergisSelect.d.ts +0 -5
  89. package/dist/hooks/useEvergisTileLayer.d.ts +0 -6
  90. package/dist/hooks/useFeatureLayer.d.ts +0 -7
  91. package/dist/hooks/useLayerOpacity.d.ts +0 -2
  92. package/dist/hooks/useLayerOrder.d.ts +0 -2
  93. package/dist/hooks/useLayerVisibility.d.ts +0 -2
  94. package/dist/hooks/useMapBboxChange.d.ts +0 -8
  95. package/dist/hooks/useMapPick.d.ts +0 -14
  96. package/dist/hooks/useMapResize.d.ts +0 -1
  97. package/dist/hooks/useMapState.d.ts +0 -2
  98. package/dist/hooks/useMapView.d.ts +0 -9
  99. package/dist/hooks/useMapViewActions.d.ts +0 -21
  100. package/dist/hooks/useMapWrapper.d.ts +0 -2
  101. package/dist/hooks/useMaxMinScale.d.ts +0 -3
  102. package/dist/hooks/useMetersToPixels.d.ts +0 -3
  103. package/dist/hooks/usePagination.d.ts +0 -7
  104. package/dist/hooks/useProperty.d.ts +0 -11
  105. package/dist/hooks/useScale.d.ts +0 -7
  106. package/dist/hooks/useTileLayer.d.ts +0 -6
  107. package/dist/hooks/useTooltip.d.ts +0 -17
  108. package/dist/hooks/useUpdate.d.ts +0 -7
  109. package/dist/hooks/useUpdateMapView.d.ts +0 -4
  110. package/dist/hooks/useZoomToFeature.d.ts +0 -2
  111. package/dist/symbols/Label/LabelSymbol.d.ts +0 -19
  112. package/dist/symbols/Label/createLabelSymbol.d.ts +0 -11
  113. package/dist/symbols/Label/index.d.ts +0 -2
  114. package/dist/ui/mixins/placementMixin.d.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"react.esm.js","sources":["../src/hooks/usePagination.ts","../src/contexts/EvergisContext.tsx","../src/contexts/MapContext.tsx","../src/contexts/TooltipContext.tsx","../src/contexts/LegendContext.tsx","../src/contexts/EvergisSelectContext.tsx","../src/hooks/useEventPoint.ts","../src/hooks/useMapViewActions.ts","../src/hooks/useZoomToFeature.ts","../src/hooks/useEvergisCard.ts","../src/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/style/EvergisStyle.ts","../src/core/classification/getClassifications.ts","../src/core/classification/ClassificationManager.ts","../src/core/classification/unClassify.ts","../src/i18n/index.ts","../src/core/classification/printClass.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/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/hooks/useSvgSymbol.ts","../src/components/Legend/components/SvgSymbol.tsx","../src/components/Legend/components/ClusterSymbolPreview.tsx","../src/components/Legend/components/SymbolByType.tsx","../src/components/Legend/components/LegendSymbolRenderer.tsx","../src/components/Legend/components/LegendHeaderButtons.tsx","../src/components/Legend/utils/getConditionAttribute.ts","../src/components/Legend/utils/isHiddenLegend.ts","../src/components/Legend/utils/getLegendText.tsx","../src/components/Legend/components/LegendChildren.tsx","../src/components/Legend/components/LegendParameterDescription.tsx","../src/components/Legend/components/MinimizedLegend.tsx","../src/components/Legend/components/MaximizedLegend.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, FC, PropsWithChildren, useContext, useMemo } from 'react';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\n\r\ntype MapContext = {\r\n map: Map;\r\n painter: DomPainter;\r\n};\r\n\r\nconst defaultMap = new Map();\r\nconst defaultPainter = new DomPainter(defaultMap);\r\n\r\nconst mapContext = createContext<MapContext>({\r\n map: defaultMap,\r\n painter: defaultPainter,\r\n});\r\n\r\ninterface MapProviderProps extends PropsWithChildren<any> {\r\n map?: Map;\r\n painter?: DomPainter;\r\n}\r\n\r\nexport const MapProvider: FC<MapProviderProps> = ({\r\n map,\r\n painter,\r\n children,\r\n}) => {\r\n const value = useMemo(\r\n () => ({\r\n map: map || defaultMap,\r\n painter: painter || (map ? new DomPainter(map) : defaultPainter),\r\n }),\r\n [map, painter]\r\n );\r\n return <mapContext.Provider value={value}>{children}</mapContext.Provider>;\r\n};\r\n\r\nexport const useMapContext = () => useContext(mapContext);\r\n","import React, { createContext, useContext, useMemo } from 'react';\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 {\r\n ClassifyAble,\r\n ParameterValue,\r\n ParameterValueWithSymbol,\r\n} 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 | 'figure.strokeColor'\r\n | 'figure.strokeWidth';\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: ParameterValueWithSymbol;\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 {\r\n ClassificationParameterExtended,\r\n ParameterValueModifier,\r\n} from './types';\r\n\r\nimport {\r\n CalculatedAble,\r\n CalculatedParameter,\r\n ClassifyAble,\r\n ParameterByAttribute,\r\n ParameterValue,\r\n ParameterValueWithSymbol,\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<ParameterValueWithSymbol> =>\r\n Boolean(\r\n isObject(value) &&\r\n (value as ParameterByAttribute<ParameterValueWithSymbol>)?.type ===\r\n 'byAttribute'\r\n );\r\n\r\nexport const isCalculatedParameter = (\r\n value: UnidentifiedParameterValue\r\n): value is CalculatedParameter<ParameterValueWithSymbol> =>\r\n Boolean(\r\n isObject(value) &&\r\n (value as CalculatedParameter<ParameterValueWithSymbol>)?.type ===\r\n 'calculated'\r\n );\r\n\r\nexport const getParameterValue = <Value extends ParameterValueWithSymbol>(\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 CombinedPolylineSymbolDc,\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 isCombinedPolylineSymbol = symbolTypeGuard<CombinedPolylineSymbolDc>(\"combinedPolylineSymbol\");\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 | number[] | Date;\r\n\r\nexport type ParameterValueWithSymbol = ParameterValue | StyleSymbolType;\r\n\r\nexport type ParameterByAttributeValues = ParameterByAttributeValue<\r\n ParameterValueWithSymbol\r\n>[];\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 { 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 {\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 ParameterValueWithSymbol,\r\n Style,\r\n StyleSymbolType,\r\n} from '../style';\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<ParameterValueWithSymbol> | 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 i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport LanguageDetector from \"i18next-browser-languagedetector\";\r\n\r\nexport const DEFAULT_LANGUAGE = \"ru\";\r\n\r\nexport const resources = {\r\n en: {},\r\n ru: {},\r\n} as const;\r\n\r\ni18n\r\n .use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n fallbackLng: DEFAULT_LANGUAGE,\r\n ns: Object.keys(resources[DEFAULT_LANGUAGE]),\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n resources,\r\n supportedLngs: Object.keys(resources),\r\n });\r\n\r\nexport { i18n };\r\n","import { i18n } from \"../../i18n\";\r\nimport { 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 ? i18n.t(\"andBefore\", { ns: \"style\" }) : i18n.t(\"andLess\", { ns: \"style\" })}`;\r\n }\r\n\r\n if (to === null) {\r\n return `${isDate ? i18n.t(\"after\", { ns: \"style\" }) : i18n.t(\"more\", { ns: \"style\" })} ${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 { 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';\n\nimport {\n Attribute,\n ClassificationAttribute,\n FeatureAttribute,\n FeatureAttributeValue,\n LayerAttribute,\n} from './types';\n\nimport { LayerAttributes } from '../layer';\n\nexport const getFeatureAttributeType = (\n attributeValue?: FeatureAttributeValue\n): AttributeType => {\n if (attributeValue instanceof Date) {\n return AttributeType.DateTime;\n }\n\n if (typeof attributeValue === 'string') {\n return AttributeType.String;\n }\n\n if (typeof attributeValue === 'number') {\n return AttributeType.Int64;\n }\n\n return AttributeType.Unknown;\n};\n\nexport const getLayerAttributes = (\n layerDefinition?: LayerDefinitionDc\n): LayerAttribute[] => {\n const attributes = (layerDefinition && layerDefinition.attributes) || {};\n\n return Object.entries(attributes).map(([name, definition]) => ({\n name,\n ...definition,\n })) as LayerAttribute[];\n};\n\nexport const getFeatureAttributes = (\n attributes?: Record<string, FeatureAttributeValue>\n): FeatureAttribute[] => {\n return attributes\n ? Object.entries(attributes).map(([name, value]) => ({\n name,\n value,\n type: getFeatureAttributeType(value),\n }))\n : [];\n};\n\nexport const getClassificationAttribute = (\n attributeName: string,\n attributes: LayerAttributes\n): ClassificationAttribute => {\n const attribute = attributes[attributeName];\n const attrNamePart = {\n name: attributeName,\n type: attribute?.type || AttributeType.Unknown,\n };\n\n return attribute ? { ...attrNamePart, ...attribute } : attrNamePart;\n};\n\nexport const mergeAttributes = (\n attributes1: Attribute[],\n attributes2: Attribute[]\n) => {\n return attributes1.map(attribute => ({\n ...attribute,\n ...(attributes2.find(({ name }) => attribute.name === name) || {}),\n }));\n};\n","import { 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';\r\n\r\nimport { numberWithSpaces } from '../utils/format';\r\n\r\nexport function formatArea(num: number): string {\r\n let result = num;\r\n let measure = 'м²';\r\n\r\n if (num >= 10000000) {\r\n result = num / 1000000;\r\n measure = 'км²';\r\n } else if (num >= 10000) {\r\n result = num / 10000;\r\n measure = 'га';\r\n }\r\n\r\n return `${numberWithSpaces(result)} ${measure}`;\r\n}\r\n\r\nexport function formatLength(num: number): string {\r\n let result = num;\r\n let measure = 'м';\r\n\r\n if (num > 10000) {\r\n result = num / 1000;\r\n measure = 'км';\r\n }\r\n\r\n return `${numberWithSpaces(result)} ${measure}`;\r\n}\r\nexport function formatPolygonMeasure(area: number, perimiter: number): string {\r\n return `S : ${formatArea(area)} P : ${formatLength(perimiter)}`;\r\n}\r\n\r\nexport function isPolylineLikePolygon(\r\n rings: [number, number][][],\r\n resolution: number\r\n): boolean {\r\n if (rings[0].length <= 3) {\r\n return false;\r\n }\r\n\r\n const coords = rings[0];\r\n const firstPoint = coords[0];\r\n const lastPoint = coords[coords.length - 1];\r\n const distance = resolution * 2;\r\n\r\n return softEquals(firstPoint[0], lastPoint[0], distance) && softEquals(firstPoint[1], lastPoint[1], distance);\r\n}\r\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 { ClusterSymbol } from '@evergis/sgis/es/symbols/ClusterSymbol';\r\nimport {\r\n AttributesConfigurationDc,\r\n AttributeType,\r\n CompositeLayerInfoDc,\r\n FeatureLayerServiceInfoDc,\r\n GeometryType,\r\n LayerDefinitionDc,\r\n ParameterDcColor,\r\n PostgresLayerServiceConfigurationDc,\r\n ServiceInfoDc,\r\n SimplePolylineSymbolDc,\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 { i18n } from \"../i18n\";\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 isClusterSymbol,\r\n isCombinedPolylineSymbol,\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 = (\r\n value?: unknown\r\n): 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 = (\r\n condition: string,\r\n partIndex?: number\r\n): 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 = (\r\n condition: string,\r\n partIndex?: number\r\n): string => {\r\n return getExprFromCondition(condition, partIndex)?.[1];\r\n};\r\n\r\nexport const getValueFromConditionPart = (\r\n condition: string,\r\n partIndex?: number\r\n): string => {\r\n return getExprFromCondition(condition, partIndex)?.[2];\r\n};\r\n\r\nexport const isRangeCondition = (condition?: string): boolean =>\r\n condition?.includes('(') || false;\r\n\r\nexport const getSymbolParameterInfo = (\r\n parameter: ClassificationParameter\r\n): ParameterInfo => {\r\n return PARAMETER_INFOS[parameter] || DEFAULT_PARAMETER_INFO;\r\n};\r\n\r\nexport const formatUniqueClassValue = (\r\n value: UniqueClass,\r\n formatValue?: LegendProps['formatValue']\r\n): string => {\r\n const { attribute, uniqueValue } = value;\r\n\r\n return attribute && formatValue\r\n ? (formatValue(\r\n attribute.type,\r\n uniqueValue,\r\n attribute.stringFormat\r\n ) 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:\r\n from !== null && index !== 0\r\n ? isDate\r\n ? from\r\n : isDouble\r\n ? +from\r\n : +from + 1\r\n : 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\r\n ? formatValue(\r\n value.attribute?.type as AttributeType,\r\n from as string | number | Date,\r\n value.attribute?.stringFormat\r\n )\r\n : from;\r\n const formattedTo = formatValue\r\n ? formatValue(\r\n value.attribute?.type as AttributeType,\r\n to as string | number | Date,\r\n value.attribute?.stringFormat\r\n )\r\n : to;\r\n\r\n if (from === null) {\r\n return `${formattedTo}${!isDate ? ` ${i18n.t(\"andLess\", { ns: \"style\" })}` : ''}`;\r\n }\r\n\r\n if (to === null) {\r\n return `${!isDate ? `${i18n.t(\"more\", { ns: \"style\" })} ` : ''}${formattedFrom}`;\r\n }\r\n\r\n return from === to ? `${formattedFrom}` : `${formattedFrom} - ${formattedTo}`;\r\n};\r\n\r\nexport const checkLayerHasLegend = (\r\n layerInfo: Pick<FeatureLayerServiceInfoDc, 'geometryType' | 'style'>\r\n): boolean => {\r\n return (\r\n SYMBOL_CLASSIFICATION[layerInfo.geometryType]?.some(param => {\r\n const paramValue = (get(\r\n layerInfo.style?.symbol,\r\n param\r\n ) as unknown) as ParameterByAttribute<ParameterValue>;\r\n\r\n return paramValue?.type === 'byAttribute';\r\n }) || false\r\n );\r\n};\r\n\r\nexport const getTitleFromCondition = ({\r\n condition,\r\n attribute,\r\n formatValue,\r\n}: {\r\n condition?: string;\r\n attribute?: LayerAttribute | null;\r\n formatValue?: LegendProps['formatValue'];\r\n}): string => {\r\n const parts = condition?.split(' == ');\r\n const uniqueValue = parts?.[1] ? (parts[1].startsWith(\"'\") && parts[1].endsWith(\"'\") ? parts[1].slice(1, -1) : parts[1]) : '';\r\n\r\n return attribute && formatValue\r\n ? formatValue(attribute.type, uniqueValue, attribute.stringFormat)\r\n : uniqueValue;\r\n};\r\n\r\nexport function createValueTitleFromCondition(\r\n paramValue: ParameterByAttributeValue<ParameterValueWithSymbol>,\r\n attribute: LayerAttribute | null,\r\n formatValue: LegendProps['formatValue'],\r\n index: number\r\n): string {\r\n if (!attribute) return '';\r\n\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\r\n ? getValueFromConditionPart(paramValue.condition, 1)\r\n : 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))\r\n return formatRangeClassValue(value as RangeClass, formatValue, index);\r\n if (isUniqueClass(value))\r\n 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(\r\n DEFAULT_LEGEND_STYLES[type],\r\n parameter\r\n );\r\n\r\n if (defaultParameterValue) {\r\n return defaultParameterValue;\r\n }\r\n if (\r\n SYMBOL_SIZE_PARAMETERS.includes(parameter) &&\r\n DEFAULT_LEGEND_SIZES[baseSymbol.type as string]\r\n ) {\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(\r\n baseSymbol,\r\n 'fillColor',\r\n classificationsParams,\r\n LegendSymbolTypes.Point\r\n ),\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(\r\n baseSymbol,\r\n 'size',\r\n classificationsParams,\r\n LegendSymbolTypes.Point\r\n ),\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(\r\n baseSymbol,\r\n parameterValue as number\r\n );\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(\r\n baseSymbol,\r\n 'stroke.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Line\r\n ),\r\n width: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.width',\r\n classificationsParams,\r\n LegendSymbolTypes.Line\r\n ),\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(\r\n baseSymbol,\r\n 'fill.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\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(\r\n baseSymbol,\r\n 'stroke.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n width: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.width',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\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(\r\n baseSymbol,\r\n 'fill.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n },\r\n stroke: {\r\n color: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n width: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.width',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n },\r\n },\r\n parameter,\r\n parameterValue\r\n ) as unknown) as H3Symbol;\r\n};\r\n\r\nconst createClusterSymbol: SymbolCreator<ClusterSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue\r\n): ClusterSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fillColor: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'fillColor',\r\n classificationsParams,\r\n LegendSymbolTypes.Point\r\n ) as ParameterDcColor,\r\n } as StyleSymbolType,\r\n parameter,\r\n parameterValue\r\n ) as ClusterSymbol;\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(\r\n baseSymbol as ClusterSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue\r\n );\r\n }\r\n\r\n if (isSizableSymbol(baseSymbol)) {\r\n return createPointSymbol(\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue\r\n );\r\n }\r\n\r\n if (isTwoDimensionalSymbol(baseSymbol)) {\r\n return createImagePointSymbol(\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue\r\n );\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(\r\n baseSymbol as H3Symbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport function createHiddenCondition(\r\n attributeName: string,\r\n attributeType: AttributeType,\r\n value: ClassificationClass\r\n) {\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 || value.title;\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\r\n .filter(Boolean)\r\n .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<ParameterValueWithSymbol>,\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(\r\n classified.values.map(val =>\r\n getClassificationValue(\r\n val.value,\r\n otherTitle,\r\n new ClassificationCondition(val.condition)\r\n )\r\n ),\r\n attribute.name as string,\r\n attribute.type\r\n ),\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\r\n ? isNumeric(from)\r\n ? +from\r\n : formatDate(from)\r\n : null;\r\n (result as RangeClass).to = to\r\n ? isNumeric(to)\r\n ? +to\r\n : formatDate(to)\r\n : null;\r\n\r\n result.title = createValueTitleFromCondition(\r\n paramValue,\r\n attribute,\r\n formatValue,\r\n index\r\n );\r\n\r\n return result;\r\n }\r\n\r\n (result as UniqueClass).uniqueValue = formatValue\r\n ? (formatValue(\r\n attribute.type,\r\n paramValue.value,\r\n attribute.stringFormat\r\n ) as string)\r\n : paramValue.value.toString();\r\n result.title = getTitleFromCondition({ condition: paramValue.condition });\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(paramValue.condition)\r\n )\r\n ) as string;\r\n\r\n return result;\r\n }) as LegendValueType[];\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<ParameterValueWithSymbol>,\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(\r\n classified.defaultValue,\r\n param,\r\n params,\r\n symbol as StyleSymbolType\r\n ),\r\n hiddenCondition: createOtherHiddenCondition(\r\n classified.values.map(val =>\r\n getClassificationValue(\r\n val.value,\r\n otherTitle,\r\n new ClassificationCondition(val.condition)\r\n )\r\n ),\r\n attribute.name as string,\r\n attribute.type\r\n ),\r\n };\r\n\r\n const items = classified.values.map((paramValue, index) => {\r\n const result = {\r\n symbol: createLegendSymbol(\r\n paramValue.value,\r\n param,\r\n params,\r\n symbol as StyleSymbolType\r\n ),\r\n } as LegendSectionItem;\r\n\r\n result.title = isRangeCondition(paramValue.condition)\r\n ? createValueTitleFromCondition(\r\n paramValue,\r\n attribute,\r\n formatValue,\r\n sectionIndex\r\n )\r\n : getTitleFromCondition({ condition: 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 return [...items, other] as LegendSectionItem[];\r\n};\r\n\r\nexport type ClassifiedListItem = ParameterByAttribute<ParameterValueWithSymbol> & { index?: number };\r\n\r\nexport type ClassifiedList = Partial<Record<ClassifyParameter, ClassifiedListItem>>;\r\n\r\nexport const classifyParamsReduce = (\r\n symbol?: StyleSymbolType,\r\n classifyParams?: ClassifyParameter[],\r\n index?: number,\r\n): undefined | ClassifiedList => {\r\n return classifyParams?.reduce((result, classified) => {\r\n const param = (get(\r\n symbol,\r\n classified\r\n ) as unknown) as ParameterByAttribute<ParameterValue>;\r\n\r\n return param?.type === 'byAttribute' ? { ...result, [classified]: { index, ...param } } : result;\r\n }, {} as ClassifiedList);\r\n}\r\n\r\nexport const getClassified = (\r\n layerInfo: FeatureLayerServiceInfoDc\r\n): ClassifiedList | undefined => {\r\n if (!layerInfo) return undefined;\r\n\r\n if (layerInfo.style?.children?.length) {\r\n return {\r\n symbol: {\r\n type: 'byAttribute',\r\n defaultValue: layerInfo.style.symbol as StyleSymbolType,\r\n title: null,\r\n values: layerInfo.style?.children as ParameterByAttributeValue<\r\n ParameterValueWithSymbol\r\n >[],\r\n },\r\n };\r\n }\r\n\r\n const classifyParams = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\r\n\r\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\r\n if (!layerInfo.style.symbol.values?.length) return undefined;\r\n\r\n return layerInfo.style.symbol.values.reduce((result: ClassifiedList, polyline: SimplePolylineSymbolDc, index) => {\r\n return { ...result, ...classifyParamsReduce(polyline, classifyParams, index) };\r\n }, {} as ClassifiedList);\r\n }\r\n\r\n return classifyParamsReduce(layerInfo.style?.symbol, classifyParams);\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 =\r\n 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(\r\n getParameterFromSymbol(symbol, 'stroke.width')\r\n ) 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 =\r\n ((symbol.figure as SvgParameterDc)?.fillColor as string) || null;\r\n const bgFillColor =\r\n ((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:\r\n ((symbol.background as SvgParameterDc)?.strokeColor as string) ||\r\n null,\r\n strokeWidth:\r\n (symbol.background as SvgParameterDc)?.strokeWidth || null,\r\n type:\r\n (symbol.background as SvgParameterDc)?.type || SvgSymbolBg.Circle,\r\n },\r\n }\r\n : {}),\r\n ...(figureFillColor\r\n ? {\r\n figure: {\r\n id: 'symbol-figure',\r\n fillColor: figureFillColor,\r\n strokeColor:\r\n ((symbol.figure as SvgParameterDc)?.strokeColor as string) ||\r\n null,\r\n strokeWidth:\r\n (symbol.figure as SvgParameterDc)?.strokeWidth || null, },\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 =>\r\n SIZE_PARAMETERS.includes(parameter);\r\n\r\nexport const getServiceConfiguration = (\r\n layer?: ServiceInfoDc\r\n): ServiceInfoDc['configuration'] => {\r\n const emptyServiceConfiguration: ServiceInfoDc['configuration'] = {\r\n name: '',\r\n };\r\n\r\n if (!isLayerService(layer) || !('configuration' in layer))\r\n 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 = (\r\n layer: ServiceInfoDc\r\n): 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 (\r\n !serviceConfiguration ||\r\n !('attributesConfiguration' in serviceConfiguration)\r\n ) {\r\n return emptyAttributesConfiguration;\r\n }\r\n\r\n return {\r\n ...emptyAttributesConfiguration,\r\n ...((serviceConfiguration as PostgresLayerServiceConfigurationDc)\r\n .attributesConfiguration || {}),\r\n };\r\n};\r\n\r\nexport const getLayerDefinition = (\r\n layer?: FeatureLayerServiceInfoDc\r\n): LayerDefinitionDc => {\r\n const { geometryAttribute, idAttribute } = getAttributesConfiguration(\r\n layer as FeatureLayerServiceInfoDc\r\n );\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:\r\n layer.layerDefinition.attributes || emptyLayerDefinition.attributes,\r\n };\r\n};\r\n\r\nexport function getAttributeType(\r\n layer: FeatureLayerServiceInfoDc,\r\n attributeName: string\r\n): 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\nexport const 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 DEFAULT_CLUSTER_SVG = `\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 56 56\" width=\"56px\" height=\"56px\">\r\n <circle cx=\"28\" cy=\"28\" r=\"22\" fill=\"#00AAFF\" stroke=\"#00AAFF\" stroke-opacity=\"0.28\" stroke-width=\"12\" id=\"symbol-bg\" />\r\n</svg>\r\n`;\r\n\r\nexport const SYMBOL_CLASSIFICATION: Partial<Record<\r\n GeometryType,\r\n ClassifyParameter[]\r\n>> = {\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 'size',\r\n 'fill.color',\r\n 'fillColor',\r\n 'background.fillColor',\r\n 'background.strokeColor',\r\n 'background.strokeWidth',\r\n 'figure.fillColor',\r\n 'figure.strokeColor',\r\n 'figure.strokeWidth',\r\n 'singleObjectSymbol.size',\r\n 'singleObjectSymbol.figure.fillColor',\r\n 'singleObjectSymbol.figure.strokeColor',\r\n 'singleObjectSymbol.figure.strokeWidth',\r\n 'singleObjectSymbol.background.fillColor',\r\n 'singleObjectSymbol.background.strokeColor',\r\n 'singleObjectSymbol.background.strokeWidth',\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<\r\n ClassificationParameter,\r\n ParameterInfo\r\n>> = {\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 = [\r\n ComparisonOperator.Equals,\r\n ComparisonOperator.NotEquals,\r\n];\r\n\r\nexport const CONTAINS_OPERATORS = [\r\n ComparisonOperator.Contains,\r\n ComparisonOperator.NotContains,\r\n];\r\n\r\nexport const FILLED_OPERATORS = [\r\n ComparisonOperator.Filled,\r\n ComparisonOperator.Empty,\r\n];\r\n\r\nexport const STARTS_WITH_OPERATORS = [\r\n ComparisonOperator.StartsWith,\r\n ComparisonOperator.NotStartsWith,\r\n];\r\n\r\nexport const ENDS_WITH_OPERATORS = [\r\n ComparisonOperator.EndsWith,\r\n ComparisonOperator.NotEndsWith,\r\n];\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 = [\r\n ComparisonOperator.Between,\r\n ComparisonOperator.Outside,\r\n];\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 ParameterValueWithSymbol,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n} from '../../core';\r\nimport {\r\n SGisBrushFill,\r\n SGisImageFill,\r\n SGisPolygonSymbol,\r\n SGisPolylineSymbol,\r\n} from '../../symbols';\r\n\r\nexport type ClassifyParameter =\r\n | 'fill.color'\r\n | 'fill.hatchColor'\r\n | 'fillColor'\r\n | 'stroke.width'\r\n | 'stroke.color'\r\n | 'strokeWidth'\r\n | 'strokeColor'\r\n | 'textBackground.fill.color'\r\n | 'background.fillColor'\r\n | 'background.strokeColor'\r\n | 'background.strokeWidth'\r\n | 'figure.fillColor'\r\n | 'figure.strokeColor'\r\n | 'figure.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 | 'singleObjectSymbol.size'\r\n | 'singleObjectSymbol.figure.fillColor'\r\n | 'singleObjectSymbol.figure.strokeColor'\r\n | 'singleObjectSymbol.figure.strokeWidth'\r\n | 'singleObjectSymbol.background.fillColor'\r\n | 'singleObjectSymbol.background.strokeColor'\r\n | 'singleObjectSymbol.background.strokeWidth';\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<\r\n FeatureDc['geometry'],\r\n 'coordinates'\r\n> & {\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 clearHiddenLegends?: (layerName: string) => void;\r\n goToClassification?: VoidFunction;\r\n isShared?: boolean;\r\n};\r\n\r\nexport type LegendChildrenProps = Pick<\r\n LegendProps,\r\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\r\n> & {\r\n layerInfo: FeatureLayerServiceInfoDc;\r\n};\r\n\r\nexport type LegendSectionProps = Pick<\r\n LegendProps,\r\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\r\n> & {\r\n layerName: string;\r\n symbol: StyleDc['symbol'];\r\n parameter: ClassificationParameterExtended;\r\n parameters: ClassificationParameterExtended[];\r\n classified: ParameterByAttribute<ParameterValueWithSymbol>;\r\n attribute: LayerAttribute | null;\r\n index: number;\r\n count?: number;\r\n isShared?: boolean;\r\n};\r\n\r\nexport type LegendSectionItem = Pick<\r\n LegendProps,\r\n 'hiddenLegends' | 'toggleHiddenLegend'\r\n> & {\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 isClassified?: 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<\r\n SvgPointSymbol,\r\n 'size' | 'offset' | 'angle'\r\n> & {\r\n 'background.fillColor': string;\r\n 'background.strokeColor': string;\r\n 'background.strokeWidth': string;\r\n 'figure.strokeColor': string;\r\n 'figure.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\nconst DEFAULT_STROKE_OPACITY = 0.28;\r\n\r\nexport const convertSvgToBase64 = (svg: string) =>\r\n `data:image/svg+xml;base64,${window.btoa(svg)}`;\r\n\r\nexport const createSvgGradient = (\r\n svg: Svg,\r\n values: ParameterByAttributeValue<string>[]\r\n) =>\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 = ({\r\n SVGContainer,\r\n symbol,\r\n svg,\r\n bg,\r\n isClassified,\r\n}: {\r\n SVGContainer: Svg;\r\n symbol: SvgPointSymbol;\r\n svg?: string;\r\n bg?: SvgSymbolBg;\r\n isClassified?: boolean;\r\n}): Svg => {\r\n if (!symbol) return SVGContainer;\r\n\r\n const symbolData = getParameterValue(\r\n svg || (symbol.data as ParameterValue)\r\n ) as string;\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\r\n const isUploadedFile =\r\n !bg &&\r\n !symbolData.includes('symbol-bg') &&\r\n !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(\r\n (background as SvgParameterDc)?.strokeWidth as number\r\n ) ||\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(\r\n viewBox.join(' ')\r\n );\r\n\r\n const currentBg = bg || (background as SvgParameterDc)?.type;\r\n\r\n if (currentBg) {\r\n const strokeColor = getParameterValue(\r\n (background as SvgParameterDc)?.strokeColor as ParameterValue\r\n );\r\n const fillColor = getParameterValue(\r\n (background as SvgParameterDc)?.fillColor as ParameterValue\r\n );\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) =>\r\n item.remove()\r\n );\r\n SVGContainer.find(':not(#symbol-bg)').each((item: any) =>\r\n item\r\n .center(\r\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2,\r\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2\r\n )\r\n .fill('white')\r\n );\r\n\r\n const symbolBg = SVGContainer.find('#symbol-bg')[0];\r\n\r\n if (isClassified) {\r\n symbolBg?.stroke({ opacity: DEFAULT_STROKE_OPACITY });\r\n }\r\n\r\n // eslint-disable-next-line max-depth\r\n if (\r\n isParameterByAttribute(\r\n (background as SvgParameterDc)?.fillColor as ParameterValue\r\n )\r\n ) {\r\n symbolBg?.fill(createSvgGradient(\r\n SVGContainer,\r\n ((background as SvgParameterDc)?.fillColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ));\r\n }\r\n\r\n if (isParameterByAttribute(\r\n (background as SvgParameterDc)?.strokeColor as ParameterValue\r\n )) {\r\n symbolBg?.stroke({\r\n color: (createSvgGradient(\r\n SVGContainer,\r\n ((background as SvgParameterDc)?.strokeColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ) as unknown) as string,\r\n });\r\n }\r\n } else {\r\n SVGContainer.svg(innerSvg);\r\n }\r\n } else {\r\n const strokeColor = getParameterValue(\r\n (figure as SvgParameterDc)?.strokeColor as string\r\n );\r\n const strokeWidth = getParameterValue(\r\n (figure as SvgParameterDc)?.strokeWidth as number\r\n ) ||\r\n (typeof (figure as SvgParameterDc)?.strokeColor === 'object' ? 1 : 0);\r\n const fillColor = getParameterValue(\r\n (figure as SvgParameterDc)?.fillColor as string\r\n );\r\n\r\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(\r\n viewBox.join(' ')\r\n );\r\n SVGContainer.svg(innerSvg);\r\n SVGContainer.find('#symbol-figure').each(item => {\r\n item\r\n .center(DEFAULT_SYMBOL_SIZE / 2, DEFAULT_SYMBOL_SIZE / 2)\r\n .fill(fillColor || DEFAULT_SYMBOL_FILL_COLOR)\r\n .stroke({ color: strokeColor, width: strokeWidth });\r\n\r\n if (\r\n isParameterByAttribute(\r\n (figure as SvgParameterDc)?.fillColor as ParameterValue\r\n )\r\n ) {\r\n item?.fill(createSvgGradient(\r\n SVGContainer,\r\n ((figure as SvgParameterDc)?.fillColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ));\r\n }\r\n\r\n if (\r\n isParameterByAttribute(\r\n (figure as SvgParameterDc)?.strokeColor as ParameterValue\r\n )\r\n ) {\r\n item?.stroke({\r\n color: (createSvgGradient(\r\n SVGContainer,\r\n ((figure as SvgParameterDc)?.strokeColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ) as unknown) as string,\r\n });\r\n }\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({\r\n [transformParts[0]]: transformParts[1].split(','),\r\n });\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 {\r\n PointSymbol,\r\n PointSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/point/Point';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\r\n\r\nexport type EditorPointSymbolParams = {\r\n shadowColor: string;\r\n shadowSize: number;\r\n mapCoordinates?: Coordinates;\r\n} & PointSymbolConstructorParams;\r\n\r\nexport class ShadowedPointSymbol extends PointSymbol {\r\n shadowColor!: string;\r\n shadowSize!: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(options: EditorPointSymbolParams) {\r\n super(options);\r\n }\r\n\r\n static getShadowArc(\r\n position: Coordinates,\r\n { strokeWidth = 2, shadowColor, shadowSize, size = 6 }: EditorPointSymbolParams,\r\n mapCoordinates: Coordinates,\r\n ): Arc {\r\n return new Arc(position, {\r\n fillColor: \"transparent\",\r\n strokeColor: shadowColor,\r\n strokeWidth: shadowSize,\r\n radius: (size + strokeWidth + shadowSize) / 2,\r\n mapCoordinates,\r\n });\r\n }\r\n\r\n static getPointArc(\r\n position: Coordinates,\r\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams,\r\n mapCoordinates: Coordinates,\r\n ): Arc {\r\n return new Arc(position, {\r\n fillColor,\r\n strokeColor,\r\n strokeWidth,\r\n radius: size / 2,\r\n mapCoordinates,\r\n });\r\n }\r\n\r\n public renderFunction(\r\n feature: PointFeature,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n if (!(feature instanceof PointFeature)) return [];\r\n const { position } = feature.projectTo(crs);\r\n\r\n const pxPosition: Coordinates = [\r\n position[0] / resolution + (this.offset[0] || 0),\r\n -position[1] / resolution + (this.offset[1] || 0),\r\n ];\r\n\r\n const shadowRender = this.getShadow(pxPosition, feature, position);\r\n const pointArc = this.getPoint(pxPosition, feature, position);\r\n\r\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\r\n }\r\n\r\n protected getShadow(\r\n position: Coordinates,\r\n _feature: Feature,\r\n mapCoordinates: Coordinates,\r\n ): Arc | void {\r\n return ShadowedPointSymbol.getShadowArc(position, this, mapCoordinates);\r\n }\r\n\r\n protected getPoint(position: Coordinates, _feature: Feature, mapCoordinates: Coordinates): Arc {\r\n return ShadowedPointSymbol.getPointArc(position, this, mapCoordinates);\r\n }\r\n}\r\n","import {\r\n PolylineSymbol,\r\n PolylineSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Feature } from '@evergis/sgis';\r\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\r\n\r\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from './ShadowedPointSymbol';\r\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\r\n\r\nexport const getSimplifiedPolygonCoordinates = (feature: Poly, crs: Crs, tolerance = 1) => {\r\n const projected = feature.crs.equals(crs) ? feature.rings : feature.projectTo(crs).rings;\r\n\r\n return simplifyCoordinates(projected, tolerance);\r\n};\r\n\r\nexport function createShadowRender(\r\n position: Coordinates,\r\n { strokeWidth = 1, shadowColor, shadowSize, size = 3, mapCoordinates }: EditorPointSymbolParams,\r\n) {\r\n const shadowRadius = (size + strokeWidth + shadowSize) / 2;\r\n\r\n return new Arc(position, {\r\n fillColor: \"transparent\",\r\n strokeColor: shadowColor,\r\n strokeWidth: shadowSize,\r\n radius: shadowRadius,\r\n mapCoordinates,\r\n });\r\n}\r\n\r\nexport function createPointRender(\r\n position: Coordinates,\r\n { strokeColor, strokeWidth, fillColor, size = 3, mapCoordinates }: EditorPointSymbolParams,\r\n) {\r\n const radius = size / 2;\r\n\r\n return new Arc(position, {\r\n fillColor,\r\n strokeColor,\r\n strokeWidth,\r\n radius,\r\n mapCoordinates,\r\n });\r\n}\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 simplifiedFeatureCoordinates = getSimplifiedPolygonCoordinates(feature, crs);\r\n const polyRender = this.getPolyRender(coordinates, feature, simplifiedFeatureCoordinates);\r\n const shadowRender = this.getShadow(coordinates, feature, simplifiedFeatureCoordinates);\r\n const vertexRenders = this.getVertexRenders(coordinates, simplifiedFeatureCoordinates);\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 mapCoordinates: Coordinates[][],\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 mapCoordinates,\r\n });\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n _feature: Feature,\r\n mapCoordinates: Coordinates[][],\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 mapCoordinates,\r\n });\r\n }\r\n\r\n protected getVertexRenders(\r\n coordinates: Coordinates[][],\r\n mapCoordinates: Coordinates[][]\r\n ): Arc[] | void {\r\n if (!this.showVertex) return;\r\n\r\n const pointRenderers = [];\r\n const shadowRenderers = [];\r\n\r\n for (let i = 0; i < coordinates.length; i++) {\r\n const ring = coordinates[i];\r\n\r\n for (let j = 0; j < ring.length; j++) {\r\n const point = ring[j];\r\n const featurePoint = mapCoordinates[i][j];\r\n\r\n const shadowRender = createShadowRender(point, {\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: 'transparent',\r\n mapCoordinates: featurePoint,\r\n });\r\n const pointRender = createPointRender(point, {\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 mapCoordinates: featurePoint,\r\n });\r\n\r\n shadowRenderers.push(shadowRender);\r\n pointRenderers.push(pointRender);\r\n }\r\n }\r\n\r\n return [...pointRenderers, ...shadowRenderers];\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 { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\n\r\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\r\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\r\n\r\ntype SelectedFeature = PointFeature & {\r\n isSelected: boolean;\r\n};\r\n\r\nexport type SelectedPointSymbolParams = {\r\n selectedStrokeColor: string;\r\n selectedFillColor: string;\r\n} & EditorPointSymbolParams;\r\n\r\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\r\n selectedStrokeColor!: string;\r\n selectedFillColor!: string;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(props: SelectedPointSymbolParams) {\r\n super(props);\r\n }\r\n\r\n protected getShadow(\r\n position: [number, number],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates,\r\n ): Arc | void {\r\n if (feature.isSelected) {\r\n return super.getShadow(position, feature, mapCoordinates);\r\n }\r\n }\r\n\r\n protected getPoint(\r\n position: [number, number],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates,\r\n ): Arc {\r\n const pointRender = super.getPoint(position, feature, mapCoordinates);\r\n\r\n if (feature.isSelected) {\r\n pointRender.strokeColor = this.selectedStrokeColor;\r\n pointRender.fillColor = this.selectedFillColor;\r\n }\r\n\r\n return pointRender;\r\n }\r\n}\r\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\n\r\nimport {\r\n EditorPolySymbolParams,\r\n ShadowedPolySymbol,\r\n} from '../Shadowed';\r\n\r\ntype SelectedFeature = Polygon & {\r\n isSelected: boolean;\r\n};\r\n\r\nexport type SelectedPolySymbolParams = {\r\n selectedFillColor?: string;\r\n selectedStrokeColor: string;\r\n selectedStrokeWidth?: number;\r\n} & EditorPolySymbolParams;\r\n\r\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\r\n selectedFillColor!: string;\r\n selectedStrokeColor!: string;\r\n selectedStrokeWidth!: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(props: SelectedPolySymbolParams) {\r\n super(props);\r\n }\r\n\r\n protected getShadow(\r\n coordinates: Coordinates[][],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates[][],\r\n ): PolyRender | void {\r\n if (feature.isSelected) {\r\n return super.getShadow(coordinates, feature, mapCoordinates);\r\n }\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates[][],\r\n ): PolyRender {\r\n const polyRender = super.getPolyRender(coordinates, feature, mapCoordinates);\r\n if (feature.isSelected) {\r\n polyRender.fillColor = this.selectedFillColor;\r\n polyRender.strokeColor = this.selectedStrokeColor;\r\n if (this.selectedStrokeWidth !== void 0) {\r\n polyRender.strokeWidth = this.selectedStrokeWidth;\r\n }\r\n }\r\n\r\n return polyRender;\r\n }\r\n}\r\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\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 strokeColor: deserializeColor(getParameterValue((figure as SvgParameterDc)?.strokeColor as string)),\r\n strokeWidth: getParameterValue((figure as SvgParameterDc)?.strokeWidth as ParameterValue),\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\nimport { webMercator } from '@evergis/sgis/es/Crs';\r\n\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\nimport { useEvergisContext, useMapContext } from '../contexts';\r\nimport { useLayerOpacity } from './useLayerOpacity';\r\nimport { LayerProps } from './LayerProps';\r\n\r\nexport function useEvergisDynamicLayer({\r\n name,\r\n zIndex,\r\n style,\r\n crs,\r\n ts,\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, crs, 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, crs = webMercator, dataFilterId]) => {\r\n layer.name = name;\r\n layer.style = style;\r\n layer.condition = condition;\r\n layer.dataFilterId = dataFilterId;\r\n layer.crs = crs;\r\n },\r\n },\r\n [name, style, condition, crs, dataFilterId, ts]\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 ts?: any;\r\n};\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 pointPosition: Coordinates;\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 pointPosition: event.point.position,\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\nimport { IconButton } from \"@evergis/icons\";\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: 1.5rem;\r\n margin-right: 0.5rem;\r\n`;\r\n\r\nexport const ClassifiedItem = styled.div<{\r\n isHidden?: boolean;\r\n isClusterFillColor?: boolean;\r\n}>`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n cursor: ${({ isClusterFillColor }) =>\r\n isClusterFillColor ? 'default' : 'pointer'};\r\n pointer-events: ${({ isClusterFillColor }) =>\r\n 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 ${IconButton} {\r\n margin-left: 0.5rem;\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<{\r\n onClick?: MouseEventHandler<HTMLSpanElement> | null;\r\n}>`\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 MapLegendBadge = styled.span`\r\n min-width: 0.5rem;\r\n height: 0.75rem;\r\n display: inline-block;\r\n margin-left: 0.25rem;\r\n padding: 0.125rem 0.25rem;\r\n border-radius: ${({ theme: { borderRadius } }) => borderRadius.xSmall};\r\n background-color: ${({ theme: { palette } }) => palette.element};\r\n color: ${({ theme: { palette } }) => palette.textPrimary};\r\n text-align: center;\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 LegendHeaderButton = styled.span``;\r\n\r\nexport const MapLegendSectionContainer = styled.div<{ hasHiddenLegends?: boolean }>`\r\n width: 100%;\r\n\r\n :not(:last-child) {\r\n margin-bottom: 1rem;\r\n }\r\n\r\n ${LegendHeaderButton} {\r\n padding-left: 0.75rem;\r\n visibility: hidden;\r\n\r\n :first-child {\r\n padding-left: 1rem;\r\n }\r\n\r\n :last-child {\r\n margin-left: 0.75rem;\r\n border-left: 1px ${({ theme: { palette }}) => palette.elementDeep} solid;\r\n }\r\n }\r\n \r\n :hover {\r\n ${LegendHeaderButton} {\r\n visibility: visible;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendSectionItems = styled.div<{\r\n minHeight?: number;\r\n maxHeight?: number;\r\n isExpanded?: boolean;\r\n}>`\r\n position: relative;\r\n height: ${({ minHeight, maxHeight, isExpanded }) =>\r\n isExpanded ? (maxHeight || 0) + 4 : minHeight}px;\r\n overflow: ${({ isExpanded }) => (isExpanded ? 'none' : '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,\r\n :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(\r\n ['strokeColor', 'stroke.color'],\r\n parameter as ClassificationParameterExtended\r\n )\r\n ? 0.25\r\n : 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 }) =>\r\n isParameterType('size', parameter as ClassificationParameterExtended) &&\r\n SizeLegendItemMixin(value as number)}\r\n\r\n ${({ value, parameter }) =>\r\n 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 max-width: 9.75rem;\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 }) =>\r\n 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\r\nexport const ClusterLegendContainer = styled.div`\r\n margin: -0.9rem;\r\n transform: scale(0.5);\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 {\r\n getParameterValue,\r\n Offset,\r\n ParameterValue,\r\n SvgPointSymbol,\r\n} from '../../../core';\r\nimport { SvgEditorField, SvgSymbolBg } from '../types';\r\n\r\nexport const useSvgSymbol = (symbol: SvgPointSymbol, skipOffset?: boolean, isClassified?: 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 ({\r\n svg,\r\n bg,\r\n newSymbol,\r\n isClassified,\r\n }: {\r\n svg: string;\r\n bg?: SvgSymbolBg;\r\n newSymbol?: SvgPointSymbol;\r\n isClassified?: boolean;\r\n }) => {\r\n manipulateSvgSymbol({\r\n SVGContainer,\r\n symbol: newSymbol || symbol,\r\n svg,\r\n bg,\r\n isClassified,\r\n });\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 = {\r\n ...JSON.parse(JSON.stringify(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 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({\r\n svg: getParameterValue(data as ParameterValue) as string,\r\n newSymbol,\r\n bg: newSymbol.background?.type,\r\n isClassified,\r\n });\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 }) =>\r\n !!fontSettings?.fontFamily && `font-family: ${fontSettings.fontFamily}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontWeight && `font-weight: ${fontSettings.fontWeight}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontStyle && `font-style: ${fontSettings.fontStyle}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontColor && `color: ${fontSettings.fontColor}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontSize &&\r\n `font-size: ${\r\n typeof fontSettings.fontSize === 'string'\r\n ? fontSettings.fontSize\r\n : `${fontSettings.fontSize}px`\r\n }`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.haloColor &&\r\n !!fontSettings?.haloWidth &&\r\n `-webkit-text-stroke: ${fontSettings.haloWidth}px ${fontSettings.haloColor};`};\r\n line-height: 0;\r\n`;\r\n\r\nexport const SvgSymbol: FC<SvgSymbolProps> = memo(\r\n ({ svg, bg, symbol, title, text, fontSettings, skipOffset, isClassified, onClick }) => {\r\n const { svgRef, initSvg, getSvgData, manipulateSvg } = useSvgSymbol(\r\n symbol,\r\n skipOffset,\r\n isClassified,\r\n );\r\n\r\n const onSelectSymbol = useCallback(() => {\r\n onClick?.(getSvgData(), {\r\n ...symbol,\r\n ...(bg\r\n ? {\r\n background: {\r\n ...(symbol.background as SvgParameterDc),\r\n type: bg,\r\n },\r\n }\r\n : {}),\r\n } as SvgPointSymbol);\r\n }, [bg, getSvgData, onClick, symbol]);\r\n\r\n const renderSymbol = useMemo(\r\n () => (\r\n <SymbolButton\r\n ref={svgRef}\r\n title={title}\r\n onClick={onClick ? onSelectSymbol : undefined}\r\n />\r\n ),\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, isClassified });\r\n }, [svg, symbol, bg, manipulateSvg, isClassified]);\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\r\n fontSettings={{\r\n ...fontSettings,\r\n haloColor: undefined,\r\n haloWidth: undefined,\r\n }}\r\n >\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 } from 'react';\r\nimport {\r\n CalculatedParameterDc,\r\n ClusterSymbolDc,\r\n ParameterDcColor,\r\n} from '@evergis/api';\r\n\r\nimport { SvgSymbol } from './SvgSymbol';\r\nimport { DEFAULT_CLUSTER_SVG } from '../constants';\r\nimport {\r\n isParameterByAttribute,\r\n ParameterByAttribute,\r\n SvgPointSymbol,\r\n} from '../../../core';\r\n\r\nexport const ClusterSymbolPreview: FC<{\r\n symbol: ClusterSymbolDc;\r\n index?: number;\r\n size?: number;\r\n fontSize?: string;\r\n}> = ({ symbol, index, size = 56, fontSize = '1.25rem' }) => {\r\n const isClassified = isParameterByAttribute(\r\n symbol.fillColor as ParameterDcColor\r\n );\r\n const isClassifiedValue = isClassified && index !== undefined;\r\n\r\n const fillColor =\r\n isClassifiedValue\r\n ? (symbol.fillColor as ParameterByAttribute<string>).values[index as number]\r\n ?.value ||\r\n (symbol.fillColor as ParameterByAttribute<string>).defaultValue\r\n : symbol.fillColor;\r\n\r\n const strokeColor = isClassified ? fillColor : symbol.strokeColor;\r\n\r\n const svgSymbol = {\r\n type: 'svgPointSymbol',\r\n size,\r\n offset: [0, 0],\r\n angle: 0,\r\n background: {\r\n id: 'symbol-bg',\r\n fillColor,\r\n strokeColor,\r\n strokeWidth: 6,\r\n type: 'circle',\r\n },\r\n };\r\n\r\n return (\r\n <SvgSymbol\r\n svg={DEFAULT_CLUSTER_SVG}\r\n symbol={(svgSymbol as unknown) as SvgPointSymbol}\r\n isClassified={isClassified}\r\n text={'99'}\r\n fontSettings={{\r\n ...symbol.labelSymbol,\r\n fontSize:\r\n (fontSize as CalculatedParameterDc) || symbol.labelSymbol?.fontSize,\r\n }}\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(() => (\r\n <Symbol symbol={symbol as SGisSymbolType} size={size} />\r\n ), [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\nimport { ClusterSymbolDc } from '@evergis/api';\r\n\r\nimport { SymbolByType } from './SymbolByType';\r\nimport { ClusterSymbolPreview } from './ClusterSymbolPreview';\r\nimport { ClusterLegendContainer } from '../styled';\r\nimport { DEFAULT_LEGEND_SYMBOL_SIZE } from '../constants';\r\nimport { getLegendSymbolSize } from '../../../utils/legend';\r\nimport { deserializeSymbol } from '../../../symbols';\r\nimport {\r\n getParameterValue,\r\n isClusterSymbol,\r\n ParameterValue,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n} from '../../../core';\r\nimport { SGisSymbol } from '../types';\r\n\r\nexport const LegendSymbolRenderer: FC<{\r\n symbol: StyleSymbolType;\r\n index?: number;\r\n}> = memo(({ symbol, index }) => {\r\n if (isClusterSymbol(symbol)) {\r\n return (\r\n <ClusterLegendContainer>\r\n <ClusterSymbolPreview\r\n symbol={symbol as ClusterSymbolDc}\r\n index={index}\r\n />\r\n </ClusterLegendContainer>\r\n );\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={\r\n getParameterValue(\r\n (symbol as SvgPointSymbol).data as ParameterValue\r\n ) as string\r\n }\r\n skipOffset\r\n />\r\n );\r\n});\r\n","import React, { FC } from \"react\";\r\nimport { EverCloudClassificationIcon, EverCloudRefreshIcon, IconButton } from \"@evergis/icons\";\r\n\r\nimport { LegendHeaderButton } from \"../styled\";\r\nimport { LegendProps } from \"../types\";\r\n\r\ntype LegendHeaderButtonsProps = Pick<LegendProps, 'clearHiddenLegends' | 'goToClassification' | 'isShared'> & {\r\n layerName: string;\r\n hasHiddenLegends?: boolean;\r\n};\r\n\r\nexport const LegendHeaderButtons: FC<LegendHeaderButtonsProps> = ({ layerName, hasHiddenLegends, isShared, clearHiddenLegends, goToClassification }) => (\r\n <>\r\n {!!goToClassification && !isShared && (\r\n <LegendHeaderButton>\r\n <IconButton onClick={goToClassification}>\r\n <EverCloudClassificationIcon />\r\n </IconButton>\r\n </LegendHeaderButton>\r\n )}\r\n {!!clearHiddenLegends && (\r\n <LegendHeaderButton>\r\n <IconButton\r\n disabled={!hasHiddenLegends}\r\n onClick={() => clearHiddenLegends?.(layerName)}\r\n >\r\n <EverCloudRefreshIcon />\r\n </IconButton>\r\n </LegendHeaderButton>\r\n )}\r\n </>\r\n);\r\n","import { AttributeType } from '@evergis/api';\r\n\r\nimport { getAttributeNameFromCondition, LayerAttribute } from '../../../core';\r\n\r\nexport const getConditionAttribute = (\r\n attributes: LayerAttribute[],\r\n condition?: string\r\n): LayerAttribute | null => {\r\n if (!condition) return null;\r\n\r\n const attributeName = getAttributeNameFromCondition(condition) as string;\r\n\r\n let attribute: LayerAttribute = attributes.find(\r\n ({ name }) => name === attributeName\r\n ) as LayerAttribute;\r\n\r\n if (!attribute) {\r\n if (attributeName === 'count') {\r\n attribute = {\r\n name: 'count',\r\n alias: 'Количество',\r\n type: AttributeType.Int32,\r\n };\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n return attribute;\r\n};\r\n","export const isHiddenLegend = (\r\n hiddenCondition: string,\r\n hiddenLegends?: string[]\r\n): boolean => !!hiddenLegends?.includes(hiddenCondition);\r\n","import React, { Fragment } from 'react';\r\n\r\nimport { ItemSeparator, ItemText, MapLegendDescription } from '../styled';\r\nimport { i18n } from \"../../../i18n\";\r\n\r\nconst renderColumn = (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\nexport const getLegendText = ({\r\n title,\r\n index,\r\n isDate,\r\n}: {\r\n title?: string;\r\n index: number;\r\n isDate: boolean;\r\n}) => {\r\n if (!title) {\r\n return <ItemText>{i18n.t(\"other\", { ns: \"style\" })}</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","import React, { FC } from 'react';\r\n\r\nimport { LegendSymbolRenderer } from './LegendSymbolRenderer';\r\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\r\nimport { ClassifiedItem, MapLegendContainer, SymbolContainer } from '../styled';\r\nimport {\r\n createHiddenCondition,\r\n createValueTitleFromCondition,\r\n getClassificationValue,\r\n getTitleFromCondition,\r\n isRangeCondition,\r\n} from '../../../utils/legend';\r\nimport { getConditionAttribute } from '../utils/getConditionAttribute';\r\nimport { isHiddenLegend } from '../utils/isHiddenLegend';\r\nimport { getLegendText } from '../utils/getLegendText';\r\nimport { getLayerAttributes } from '../../../core/attributes/utils';\r\nimport { LegendChildrenProps } from '../types';\r\nimport {\r\n ClassificationCondition,\r\n ParameterByAttributeValue,\r\n ParameterValueWithSymbol,\r\n StyleSymbolType,\r\n} from '../../../core';\r\n\r\nexport const LegendChildren: FC<LegendChildrenProps> = ({\r\n layerInfo,\r\n hiddenLegends,\r\n toggleHiddenLegend,\r\n clearHiddenLegends,\r\n formatValue,\r\n}) => {\r\n if (!layerInfo?.style?.children?.length) return null;\r\n\r\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\r\n\r\n return (\r\n <MapLegendContainer>\r\n {layerInfo.style.children.map((paramValue, index) => {\r\n const attribute = getConditionAttribute(\r\n attributes,\r\n paramValue.condition\r\n );\r\n\r\n if (!attribute) return null;\r\n\r\n const hiddenCondition = createHiddenCondition(\r\n attribute.name as string,\r\n attribute.type,\r\n getClassificationValue(\r\n paramValue.symbol as StyleSymbolType,\r\n paramValue.title as string,\r\n new ClassificationCondition(paramValue.condition as string)\r\n )\r\n ) as string;\r\n\r\n const legendText = getLegendText({\r\n title: isRangeCondition(paramValue.condition)\r\n ? createValueTitleFromCondition(\r\n paramValue as ParameterByAttributeValue<\r\n ParameterValueWithSymbol\r\n >,\r\n attribute,\r\n formatValue,\r\n index\r\n )\r\n : getTitleFromCondition({\r\n condition: paramValue.condition,\r\n attribute,\r\n formatValue,\r\n }),\r\n index,\r\n isDate:\r\n getConditionAttribute(attributes, paramValue.condition)?.type ===\r\n 'DateTime',\r\n });\r\n\r\n return (\r\n <ClassifiedItem\r\n key={index}\r\n isHidden={isHiddenLegend(\r\n hiddenCondition,\r\n hiddenLegends?.[layerInfo.name]\r\n )}\r\n onClick={() =>\r\n toggleHiddenLegend?.(layerInfo.name, hiddenCondition)\r\n }\r\n >\r\n <SymbolContainer>\r\n <LegendSymbolRenderer\r\n symbol={paramValue.symbol as StyleSymbolType}\r\n />\r\n </SymbolContainer>\r\n {legendText}\r\n <LegendHeaderButtons layerName={layerInfo.name} clearHiddenLegends={clearHiddenLegends} />\r\n </ClassifiedItem>\r\n );\r\n })}\r\n </MapLegendContainer>\r\n );\r\n};\r\n","import React, { FC } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { MapLegendBadge, MapLegendDescriptionContainer } from \"../styled\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended } from \"../../../core\";\r\n\r\nexport const LegendParameterDescription: FC<{\r\n parameter: ClassificationParameterExtended;\r\n index?: number;\r\n}> = ({ parameter, index }) => {\r\n const { t } = useTranslation(\"style\");\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 ? t(\"strokeWidth\") : t(\"strokeColor\"))\r\n : isSize ? t(\"symbolSize\") : t(\"symbolColor\")}\r\n {!!index && <MapLegendBadge>{index}</MapLegendBadge>}\r\n </MapLegendDescriptionContainer>\r\n );\r\n};\r\n","import React, { FC, useCallback } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\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 { t } = useTranslation(\"style\");\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={t(\"other\")}\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>{t(\"other\")}</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={t(\"other\")}\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n >\r\n {t(\"other\")}\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={t(\"other\")}\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n )}\r\n {typeof other?.parameterValue === \"string\" && (titleMax || titleMin) && (\r\n <MapLegendValues>\r\n <MapLegendValuesRange>\r\n <div>{titleMax}</div>\r\n <div>{titleMin}</div>\r\n </MapLegendValuesRange>\r\n <MapLegendValuesOther>-</MapLegendValuesOther>\r\n </MapLegendValues>\r\n )}\r\n </MinimizedLegendContainer>\r\n )\r\n}\r\n","import React, { FC, useCallback, useMemo } from 'react';\r\nimport get from 'lodash/get';\r\n\r\nimport {\r\n ClassifiedItem,\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 { isHiddenLegend } from '../utils/isHiddenLegend';\r\nimport { getLegendText } from '../utils/getLegendText';\r\nimport {\r\n ClassificationParameterExtended,\r\n getExtractedSymbol,\r\n getParameterValue,\r\n isClusterFillColor as isClusterFillColorAction,\r\n ParameterByAttribute,\r\n ParameterValue,\r\n StyleSymbolType,\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 isDate = attributeType === 'DateTime';\r\n const isSize = isParameterType(\r\n 'size',\r\n parameter as ClassificationParameterExtended\r\n );\r\n const isStrokeWidth = isParameterType(\r\n ['strokeWidth', 'stroke.width'],\r\n parameter as ClassificationParameterExtended\r\n );\r\n const isStrokeColor = isParameterType(\r\n ['strokeColor', 'stroke.color'],\r\n parameter as ClassificationParameterExtended\r\n );\r\n\r\n const parameterValue = useMemo(\r\n () =>\r\n (get(sectionSymbol, parameter) as unknown) as ParameterByAttribute<\r\n ParameterValue\r\n >,\r\n [sectionSymbol, parameter]\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 const value = (getParameterValue(\r\n parameterValue?.values[index]?.value) || parameterValue?.defaultValue\r\n ) as string | number;\r\n\r\n return (\r\n <ClassifiedItem\r\n key={sectionIndex + title + index}\r\n isHidden={isHiddenLegend(hiddenCondition, hiddenLegends)}\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={value}\r\n parameter={parameter as ClassificationParameterExtended}\r\n />\r\n </MapLegendItems>\r\n ) : (\r\n <SymbolContainer>\r\n <LegendSymbolRenderer\r\n index={index}\r\n symbol={\r\n isClusterFillColor ? sectionSymbol as StyleSymbolType : getExtractedSymbol(symbol, true)\r\n }\r\n />\r\n </SymbolContainer>\r\n )}\r\n {getLegendText({ title, index, isDate })}\r\n </ClassifiedItem>\r\n );\r\n },\r\n [\r\n parameter,\r\n sectionIndex,\r\n hiddenLegends,\r\n isSize,\r\n isStrokeWidth,\r\n isStrokeColor,\r\n parameterValue,\r\n sectionSymbol,\r\n isDate,\r\n toggleHiddenLegend,\r\n layerName,\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\nimport { useTranslation } from \"react-i18next\";\r\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\r\nimport { CombinedPolylineSymbolDc, StyleDc } from \"@evergis/api\";\r\n\r\nimport { MinimizedLegend } from './MinimizedLegend';\r\nimport { MaximizedLegend } from './MaximizedLegend';\r\nimport { LegendParameterDescription } from './LegendParameterDescription';\r\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\r\nimport {\r\n MapLegendExpandButton,\r\n MapLegendHeader,\r\n MapLegendSectionContainer,\r\n MapLegendSectionItems,\r\n} from '../styled';\r\nimport {\r\n getMaximizedLegendValues,\r\n getMinimizedLegendValues,\r\n} from '../../../utils/legend';\r\nimport { isCombinedPolylineSymbol } from \"../../../core\";\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 clearHiddenLegends,\r\n goToClassification,\r\n attribute,\r\n formatValue,\r\n index,\r\n count,\r\n isShared,\r\n}) => {\r\n const { t } = useTranslation(\"style\");\r\n const [isExpanded, toggleExpanded] = useToggle();\r\n const [maxRef, maxNode] = useNode();\r\n const [minRef, minNode] = useNode();\r\n\r\n if (!layerName || !attribute) return null;\r\n\r\n const currentSymbol = isCombinedPolylineSymbol(symbol as CombinedPolylineSymbolDc)\r\n ? (symbol as CombinedPolylineSymbol).values[index] as StyleDc['symbol'] : symbol;\r\n\r\n return (\r\n <MapLegendSectionContainer hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}>\r\n <MapLegendHeader>\r\n {attribute.alias || attribute.name}\r\n <LegendHeaderButtons\r\n layerName={layerName}\r\n hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}\r\n clearHiddenLegends={clearHiddenLegends}\r\n goToClassification={goToClassification}\r\n isShared={isShared}\r\n />\r\n </MapLegendHeader>\r\n <LegendParameterDescription\r\n parameter={parameter}\r\n index={count && index !== undefined ? count - index : 0}\r\n />\r\n <MapLegendSectionItems\r\n minHeight={minNode?.offsetHeight}\r\n maxHeight={maxNode?.offsetHeight}\r\n isExpanded={isExpanded}\r\n >\r\n <MaximizedLegend\r\n innerRef={maxRef}\r\n isShown={isExpanded}\r\n layerName={layerName}\r\n symbol={currentSymbol}\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 currentSymbol,\r\n formatValue,\r\n index,\r\n t(\"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(\"other\")\r\n )}\r\n />\r\n </MapLegendSectionItems>\r\n <MapLegendExpandButton onClick={toggleExpanded}>\r\n {isExpanded ? t('hide') : t('show')}\r\n </MapLegendExpandButton>\r\n </MapLegendSectionContainer>\r\n );\r\n};\r\n","import React, { FC, memo, useMemo } from 'react';\r\n\r\nimport { LegendSection, LegendChildren } from './components';\r\nimport { MapLegendContainer } from './styled';\r\nimport { SYMBOL_CLASSIFICATION } from './constants';\r\nimport { getLayerAttributes } from '../../core/attributes/utils';\r\nimport { getConditionAttribute } from './utils/getConditionAttribute';\r\nimport { ClassifiedList, ClassifiedListItem, classifyParamsReduce, getClassified } from '../../utils/legend';\r\nimport { ClassificationParameterExtended, isCombinedPolylineSymbol } from '../../core';\r\nimport { ClassifyParameter, LegendProps } from './types';\r\n\r\nexport const Legend: FC<LegendProps> = memo(\r\n ({ layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification, ...rest }) => {\r\n if (!layerInfo) return null;\r\n\r\n if (layerInfo.style?.children?.length) {\r\n return (\r\n <LegendChildren\r\n layerInfo={layerInfo}\r\n formatValue={formatValue}\r\n hiddenLegends={hiddenLegends}\r\n toggleHiddenLegend={toggleHiddenLegend}\r\n clearHiddenLegends={clearHiddenLegends}\r\n goToClassification={goToClassification}\r\n />\r\n );\r\n }\r\n\r\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\r\n\r\n const renderItems = useMemo(() => {\r\n const parameters = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\r\n const props = {\r\n layerName: layerInfo.name,\r\n symbol: layerInfo.style?.symbol,\r\n parameters: parameters as ClassificationParameterExtended[],\r\n formatValue: formatValue,\r\n hiddenLegends: hiddenLegends,\r\n toggleHiddenLegend: toggleHiddenLegend,\r\n clearHiddenLegends: clearHiddenLegends,\r\n goToClassification: goToClassification,\r\n };\r\n\r\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\r\n const values = layerInfo.style?.symbol?.values?.reduce((result, symbol, index) => {\r\n return [classifyParamsReduce(symbol, parameters as ClassifyParameter[], index) as ClassifiedList, ...result];\r\n }, [] as ClassifiedList[]);\r\n\r\n return (\r\n <>\r\n {values?.map((value, index) => Object.keys(value).map((param, keyIndex) => {\r\n const item = value[param as ClassifyParameter] as ClassifiedListItem;\r\n\r\n return (\r\n <LegendSection\r\n key={[keyIndex, index].join(\"-\")}\r\n index={item?.index as number}\r\n count={values?.length}\r\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\r\n parameter={param as ClassificationParameterExtended}\r\n classified={item}\r\n {...props}\r\n {...rest}\r\n />\r\n );\r\n }))}\r\n </>\r\n );\r\n }\r\n\r\n const classified = getClassified(layerInfo);\r\n\r\n if (!classified) return null;\r\n\r\n return (\r\n <>\r\n {Object.keys(classified).map((param, keyIndex) => {\r\n const item = classified[param as keyof ClassifiedList] as ClassifiedListItem;\r\n\r\n return (\r\n <LegendSection\r\n key={[keyIndex, item.index].join(\"-\")}\r\n index={item.index as number}\r\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\r\n parameter={param as ClassificationParameterExtended}\r\n classified={item}\r\n {...props}\r\n {...rest}\r\n />\r\n );\r\n })}\r\n </>\r\n );\r\n }, [layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification]);\r\n\r\n return (\r\n <MapLegendContainer>\r\n {renderItems}\r\n </MapLegendContainer>\r\n );\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","isCombinedPolylineSymbol","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","EvergisStyle","classificationManager","ClassificationManager","some","title","minResolution","maxResolution","toClassificationClass","uniqueValue","range","DEFAULT_EXTRAS","defaultTitle","toClassification","values","extras","reduce","classification","classificationCondition","classificationValue","push","attributeName","getClassifications","pathContext","Object","entries","classifications","skipHeight","skip","collectClassifications","predicate","callback","initial","unClassify","flatSymbol","result","DEFAULT_LANGUAGE","resources","en","ru","i18n","use","LanguageDetector","initReactI18next","init","fallbackLng","ns","keys","interpolation","escapeValue","supportedLngs","printRangeClass","index","isDouble","isDate","getRangeValues","t","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","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","createValueTitleFromCondition","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","createClusterSymbol","createLegendSymbol","createHiddenCondition","attributeType","newValue","createOtherHiddenCondition","hiddenCondition","getMinimizedLegendValues","classified","otherTitle","other","getClassificationValue","items","getMaximizedLegendValues","sectionIndex","classifyParamsReduce","classifyParams","getClassified","polyline","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","DEFAULT_CLUSTER_SVG","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","DEFAULT_STROKE_OPACITY","convertSvgToBase64","svg","window","btoa","createSvgGradient","gradient","forEach","stop","manipulateSvgSymbol","SVGContainer","bg","isClassified","symbolData","data","clear","isUploadedFile","innerSvg","uploadedViewBox","exec","viewbox","hasBg","defaultSize","currentSize","viewBox","currentBg","each","item","symbolBg","opacity","rootTransform","transformParts","transform","rotatedAngle","rotate","CircleLineMiterRender","SquareLineMiterRender","getLineMiterRender","options","updateRingForRightMiter","isLastRing","reversedRing","reverse","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","ShadowedPointSymbol","pxPosition","shadowRender","getShadow","pointArc","getPoint","_feature","mapCoordinates","getShadowArc","getPointArc","shadowColor","shadowSize","Arc","PointSymbol","getSimplifiedPolygonCoordinates","tolerance","equals","createShadowRender","shadowRadius","createPointRender","ShadowedPolySymbol","Poly","simplifiedFeatureCoordinates","polyRender","getPolyRender","vertexRenders","getVertexRenders","concat","enclose","showVertex","pointRenderers","shadowRenderers","featurePoint","vertexShadowSize","pointRender","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","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","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","useEvergisDynamicLayer","ts","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","pointPosition","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","MapLegendBadge","borderRadius","xSmall","element","textPrimary","MaximizedLegendContainer","isShown","MinimizedLegendContainer","LegendHeaderButton","MapLegendSectionContainer","MapLegendSectionItems","minHeight","maxHeight","isExpanded","MapLegendValueDescr","SizeLegendItemMixin","StrokeWidthLegendItemMixin","StrokeColorLegendItemMixin","MapLegendItem","MapLegendOther","SizeLegendItemsMixin","StrokeWidthLegendItemsMixin","SizeMinimizedLegend","SizeMinimizedLegendSymbol","SizeMinimizedLegendLabel","SizeMinimizedLegendDown","SizeMinimizedLegendUp","SingleSizeLegendItemsMixin","SingleLegendItemsMixin","isSize","MapLegendItems","isStrokeWidth","isSingle","MapLegendItemsContainer","MapLegendValues","MapLegendValuesRange","MapLegendValuesOther","MapLegendExpandButton","ClusterLegendContainer","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","ClusterSymbolPreview","isClassifiedValue","svgSymbol","labelSymbol","SymbolByType","defaultSymbol","LegendSymbolRenderer","LegendHeaderButtons","hasHiddenLegends","isShared","clearHiddenLegends","goToClassification","EverCloudClassificationIcon","disabled","EverCloudRefreshIcon","getConditionAttribute","isHiddenLegend","hiddenLegends","renderColumn","column","dateTime","Fragment","getLegendText","columns","isSingleColumn","LegendChildren","toggleHiddenLegend","legendText","LegendParameterDescription","useTranslation","isStrokeColor","getValueFromLegendTitle","minOrMax","MinimizedLegend","innerRef","currentValues","pop","titleMax","titleMin","checkIsHidden","MaximizedLegend","sectionSymbol","renderLegend","isClusterFillColorAction","LegendSection","parameters","count","toggleExpanded","maxRef","maxNode","minRef","minNode","currentSymbol","offsetHeight","Legend","rest","renderItems","keyIndex","MeasureTool","getFeature","editorControl","switchMode","setTimeout","initCreateMode","initEditMode","offEvents","clearProperties","lengthSymbol","createControl","useTempLayer","dblClickMinTime","createFeature","cancelFeatureCreation","snapSymbol","snappingSymbol","featureDragAllowed","currentFormatters","create","edit","display","Measurer","ScaleRulerContainer","ScaleRulerBlock","TextContainer","alignEnd","ScaleRuler","margin","Zoom","ZoomLevel","buttonText","cornerBottom","cornerSize","cornerLeft","cornerRight","cornerTop","right","bottom","corner","TooltipComponent","withArrow","Consumer","Tooltip","onEachFeature","onTooltip","Noop","DraggableMarker"],"mappings":"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"}
1
+ {"version":3,"file":"react.esm.js","sources":["../src/utils/isParameterType.ts","../src/components/Legend/styled.ts","../src/utils/date.ts","../src/utils/format.ts","../src/utils/url.ts","../src/core/attributes/format.ts","../src/core/classification/types.ts","../src/core/classification/ClassificationCondition.ts","../src/core/classification/parameter.ts","../src/utils/isObject.ts","../src/core/classification/parameterValue.ts","../src/core/style/types/utils.ts","../src/core/style/types/label.ts","../src/core/style/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/style/EvergisStyle.ts","../src/core/classification/getClassifications.ts","../src/core/classification/ClassificationManager.ts","../src/core/classification/unClassify.ts","../src/i18n/index.ts","../src/core/classification/printClass.ts","../src/core/feature/evaluateCondition.ts","../src/core/feature/getFeatureSymbol.ts","../src/core/legend/createValueTitle.ts","../src/core/legend/isValidParameter.ts","../src/core/legend/types.ts","../src/components/Legend/constants.ts","../src/components/Legend/types.ts","../src/utils/svg.ts","../src/utils/isNumeric.ts","../src/core/legend/createCondition.ts","../src/core/legend/FilterCondition.ts","../src/utils/legend.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/contexts/LegendContext.tsx","../src/hooks/useCanvas.ts","../src/hooks/useMount.ts","../src/hooks/useNode.ts","../src/hooks/useSymbol.ts","../src/hooks/useToggle.ts","../src/utils/metersToPixels.ts","../src/utils/polygonCircleFromPoint.ts","../src/symbols/LineMiters/CircleLineMiterRender.ts","../src/symbols/LineMiters/SquareLineMiterRender.ts","../src/symbols/LineMiters/getLineMiterRender.ts","../src/symbols/LineMiters/updateRingsForMiter.ts","../src/symbols/Evergis/SGisPolylineSymbol.ts","../src/symbols/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/components/Legend/hooks/useSvgSymbol.ts","../src/components/Legend/components/SvgSymbol.tsx","../src/components/Legend/components/ClusterSymbolPreview.tsx","../src/components/Legend/components/SymbolByType.tsx","../src/components/Legend/components/LegendSymbolRenderer.tsx","../src/components/Legend/components/LegendHeaderButtons.tsx","../src/components/Legend/utils/getConditionAttribute.ts","../src/components/Legend/utils/isHiddenLegend.ts","../src/components/Legend/utils/getLegendText.tsx","../src/core/attributes/utils.ts","../src/components/Legend/components/LegendChildren.tsx","../src/components/Legend/components/LegendParameterDescription.tsx","../src/components/Legend/components/MinimizedLegend.tsx","../src/components/Legend/components/MaximizedLegend.tsx","../src/components/Legend/components/LegendSection.tsx","../src/components/Legend/Legend.tsx","../src/components/Symbol/Symbol.tsx","../src/components/Symbol/styled.ts","../src/components/Symbol/StyleSymbol.tsx"],"sourcesContent":["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 { MouseEventHandler } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { IconButton } from \"@evergis/icons\";\r\n\r\nimport { isParameterType } from '../../utils/isParameterType';\r\n\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: 1.5rem;\r\n margin-right: 0.5rem;\r\n`;\r\n\r\nexport const ClassifiedItem = styled.div<{\r\n isHidden?: boolean;\r\n isClusterFillColor?: boolean;\r\n}>`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n cursor: ${({ isClusterFillColor }) =>\r\n isClusterFillColor ? 'default' : 'pointer'};\r\n pointer-events: ${({ isClusterFillColor }) =>\r\n 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 ${IconButton} {\r\n margin-left: 0.5rem;\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<{\r\n onClick?: MouseEventHandler<HTMLSpanElement> | null;\r\n}>`\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 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 MapLegendBadge = styled.span`\r\n min-width: 0.5rem;\r\n height: 0.75rem;\r\n display: inline-block;\r\n margin-left: 0.25rem;\r\n padding: 0.125rem 0.25rem;\r\n border-radius: ${({ theme: { borderRadius } }) => borderRadius.xSmall};\r\n background-color: ${({ theme: { palette } }) => palette.element};\r\n color: ${({ theme: { palette } }) => palette.textPrimary};\r\n text-align: center;\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 LegendHeaderButton = styled.span``;\r\n\r\nexport const MapLegendSectionContainer = styled.div<{ hasHiddenLegends?: boolean }>`\r\n width: 100%;\r\n\r\n :not(:last-child) {\r\n margin-bottom: 1rem;\r\n }\r\n\r\n ${LegendHeaderButton} {\r\n padding-left: 0.75rem;\r\n visibility: hidden;\r\n\r\n :first-child {\r\n padding-left: 1rem;\r\n }\r\n\r\n :last-child {\r\n margin-left: 0.75rem;\r\n border-left: 1px ${({ theme: { palette }}) => palette.elementDeep} solid;\r\n }\r\n }\r\n \r\n :hover {\r\n ${LegendHeaderButton} {\r\n visibility: visible;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendSectionItems = styled.div<{\r\n minHeight?: number;\r\n maxHeight?: number;\r\n isExpanded?: boolean;\r\n}>`\r\n position: relative;\r\n height: ${({ minHeight, maxHeight, isExpanded }) =>\r\n isExpanded ? (maxHeight || 0) + 4 : minHeight}px;\r\n overflow: ${({ isExpanded }) => (isExpanded ? 'none' : '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,\r\n :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(\r\n ['strokeColor', 'stroke.color'],\r\n parameter as ClassificationParameterExtended\r\n )\r\n ? 0.25\r\n : 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 }) =>\r\n isParameterType('size', parameter as ClassificationParameterExtended) &&\r\n SizeLegendItemMixin(value as number)}\r\n\r\n ${({ value, parameter }) =>\r\n 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 max-width: 9.75rem;\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 }) =>\r\n 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\r\nexport const ClusterLegendContainer = styled.div`\r\n margin: -0.9rem;\r\n transform: scale(0.5);\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 {\r\n ClassifyAble,\r\n ParameterValue,\r\n ParameterValueWithSymbol,\r\n} 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 | 'figure.strokeColor'\r\n | 'figure.strokeWidth';\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: ParameterValueWithSymbol;\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 {\r\n ClassificationParameterExtended,\r\n ParameterValueModifier,\r\n} from './types';\r\n\r\nimport {\r\n CalculatedAble,\r\n CalculatedParameter,\r\n ClassifyAble,\r\n ParameterByAttribute,\r\n ParameterValue,\r\n ParameterValueWithSymbol,\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<ParameterValueWithSymbol> =>\r\n Boolean(\r\n isObject(value) &&\r\n (value as ParameterByAttribute<ParameterValueWithSymbol>)?.type ===\r\n 'byAttribute'\r\n );\r\n\r\nexport const isCalculatedParameter = (\r\n value: UnidentifiedParameterValue\r\n): value is CalculatedParameter<ParameterValueWithSymbol> =>\r\n Boolean(\r\n isObject(value) &&\r\n (value as CalculatedParameter<ParameterValueWithSymbol>)?.type ===\r\n 'calculated'\r\n );\r\n\r\nexport const getParameterValue = <Value extends ParameterValueWithSymbol>(\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 CombinedPolylineSymbolDc,\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 isCombinedPolylineSymbol = symbolTypeGuard<CombinedPolylineSymbolDc>(\"combinedPolylineSymbol\");\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 | number[] | Date;\r\n\r\nexport type ParameterValueWithSymbol = ParameterValue | StyleSymbolType;\r\n\r\nexport type ParameterByAttributeValues = ParameterByAttributeValue<\r\n ParameterValueWithSymbol\r\n>[];\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 { 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 {\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 ParameterValueWithSymbol,\r\n Style,\r\n StyleSymbolType,\r\n} from '../style';\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<ParameterValueWithSymbol> | 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 i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport LanguageDetector from \"i18next-browser-languagedetector\";\r\n\r\nexport const DEFAULT_LANGUAGE = \"ru\";\r\n\r\nexport const resources = {\r\n en: {},\r\n ru: {},\r\n} as const;\r\n\r\ni18n\r\n .use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n fallbackLng: DEFAULT_LANGUAGE,\r\n ns: Object.keys(resources[DEFAULT_LANGUAGE]),\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n resources,\r\n supportedLngs: Object.keys(resources),\r\n });\r\n\r\nexport { i18n };\r\n","import { i18n } from \"../../i18n\";\r\nimport { 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 ? i18n.t(\"andBefore\", { ns: \"style\" }) : i18n.t(\"andLess\", { ns: \"style\" })}`;\r\n }\r\n\r\n if (to === null) {\r\n return `${isDate ? i18n.t(\"after\", { ns: \"style\" }) : i18n.t(\"more\", { ns: \"style\" })} ${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 { 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 {\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 } from '@evergis/api';\r\n\r\nimport { ParameterValueWithSymbol } 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 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 { 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 DEFAULT_CLUSTER_SVG = `\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 56 56\" width=\"56px\" height=\"56px\">\r\n <circle cx=\"28\" cy=\"28\" r=\"22\" fill=\"#00AAFF\" stroke=\"#00AAFF\" stroke-opacity=\"0.28\" stroke-width=\"12\" id=\"symbol-bg\" />\r\n</svg>\r\n`;\r\n\r\nexport const SYMBOL_CLASSIFICATION: Partial<Record<\r\n GeometryType,\r\n ClassifyParameter[]\r\n>> = {\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 'size',\r\n 'fill.color',\r\n 'fillColor',\r\n 'background.fillColor',\r\n 'background.strokeColor',\r\n 'background.strokeWidth',\r\n 'figure.fillColor',\r\n 'figure.strokeColor',\r\n 'figure.strokeWidth',\r\n 'singleObjectSymbol.size',\r\n 'singleObjectSymbol.figure.fillColor',\r\n 'singleObjectSymbol.figure.strokeColor',\r\n 'singleObjectSymbol.figure.strokeWidth',\r\n 'singleObjectSymbol.background.fillColor',\r\n 'singleObjectSymbol.background.strokeColor',\r\n 'singleObjectSymbol.background.strokeWidth',\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<\r\n ClassificationParameter,\r\n ParameterInfo\r\n>> = {\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 = [\r\n ComparisonOperator.Equals,\r\n ComparisonOperator.NotEquals,\r\n];\r\n\r\nexport const CONTAINS_OPERATORS = [\r\n ComparisonOperator.Contains,\r\n ComparisonOperator.NotContains,\r\n];\r\n\r\nexport const FILLED_OPERATORS = [\r\n ComparisonOperator.Filled,\r\n ComparisonOperator.Empty,\r\n];\r\n\r\nexport const STARTS_WITH_OPERATORS = [\r\n ComparisonOperator.StartsWith,\r\n ComparisonOperator.NotStartsWith,\r\n];\r\n\r\nexport const ENDS_WITH_OPERATORS = [\r\n ComparisonOperator.EndsWith,\r\n ComparisonOperator.NotEndsWith,\r\n];\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 = [\r\n ComparisonOperator.Between,\r\n ComparisonOperator.Outside,\r\n];\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 ParameterValueWithSymbol,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n} from '../../core';\r\nimport {\r\n SGisBrushFill,\r\n SGisImageFill,\r\n SGisPolygonSymbol,\r\n SGisPolylineSymbol,\r\n} from '../../symbols';\r\n\r\nexport type ClassifyParameter =\r\n | 'fill.color'\r\n | 'fill.hatchColor'\r\n | 'fillColor'\r\n | 'stroke.width'\r\n | 'stroke.color'\r\n | 'strokeWidth'\r\n | 'strokeColor'\r\n | 'textBackground.fill.color'\r\n | 'background.fillColor'\r\n | 'background.strokeColor'\r\n | 'background.strokeWidth'\r\n | 'figure.fillColor'\r\n | 'figure.strokeColor'\r\n | 'figure.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 | 'singleObjectSymbol.size'\r\n | 'singleObjectSymbol.figure.fillColor'\r\n | 'singleObjectSymbol.figure.strokeColor'\r\n | 'singleObjectSymbol.figure.strokeWidth'\r\n | 'singleObjectSymbol.background.fillColor'\r\n | 'singleObjectSymbol.background.strokeColor'\r\n | 'singleObjectSymbol.background.strokeWidth';\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<\r\n FeatureDc['geometry'],\r\n 'coordinates'\r\n> & {\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 clearHiddenLegends?: (layerName: string) => void;\r\n goToClassification?: VoidFunction;\r\n isShared?: boolean;\r\n};\r\n\r\nexport type LegendChildrenProps = Pick<\r\n LegendProps,\r\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\r\n> & {\r\n layerInfo: FeatureLayerServiceInfoDc;\r\n};\r\n\r\nexport type LegendSectionProps = Pick<\r\n LegendProps,\r\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\r\n> & {\r\n layerName: string;\r\n symbol: StyleDc['symbol'];\r\n parameter: ClassificationParameterExtended;\r\n parameters: ClassificationParameterExtended[];\r\n classified: ParameterByAttribute<ParameterValueWithSymbol>;\r\n attribute: LayerAttribute | null;\r\n index: number;\r\n count?: number;\r\n isShared?: boolean;\r\n};\r\n\r\nexport type LegendSectionItem = Pick<\r\n LegendProps,\r\n 'hiddenLegends' | 'toggleHiddenLegend'\r\n> & {\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 isClassified?: 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<\r\n SvgPointSymbol,\r\n 'size' | 'offset' | 'angle'\r\n> & {\r\n 'background.fillColor': string;\r\n 'background.strokeColor': string;\r\n 'background.strokeWidth': string;\r\n 'figure.strokeColor': string;\r\n 'figure.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\nconst DEFAULT_STROKE_OPACITY = 0.28;\r\n\r\nexport const convertSvgToBase64 = (svg: string) =>\r\n `data:image/svg+xml;base64,${window.btoa(svg)}`;\r\n\r\nexport const createSvgGradient = (\r\n svg: Svg,\r\n values: ParameterByAttributeValue<string>[]\r\n) =>\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 = ({\r\n SVGContainer,\r\n symbol,\r\n svg,\r\n bg,\r\n isClassified,\r\n}: {\r\n SVGContainer: Svg;\r\n symbol: SvgPointSymbol;\r\n svg?: string;\r\n bg?: SvgSymbolBg;\r\n isClassified?: boolean;\r\n}): Svg => {\r\n if (!symbol) return SVGContainer;\r\n\r\n const symbolData = getParameterValue(\r\n svg || (symbol.data as ParameterValue)\r\n ) as string;\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\r\n const isUploadedFile =\r\n !bg &&\r\n !symbolData.includes('symbol-bg') &&\r\n !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(\r\n (background as SvgParameterDc)?.strokeWidth as number\r\n ) ||\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(\r\n viewBox.join(' ')\r\n );\r\n\r\n const currentBg = bg || (background as SvgParameterDc)?.type;\r\n\r\n if (currentBg) {\r\n const strokeColor = getParameterValue(\r\n (background as SvgParameterDc)?.strokeColor as ParameterValue\r\n );\r\n const fillColor = getParameterValue(\r\n (background as SvgParameterDc)?.fillColor as ParameterValue\r\n );\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) =>\r\n item.remove()\r\n );\r\n SVGContainer.find(':not(#symbol-bg)').each((item: any) =>\r\n item\r\n .center(\r\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2,\r\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2\r\n )\r\n .fill('white')\r\n );\r\n\r\n const symbolBg = SVGContainer.find('#symbol-bg')[0];\r\n\r\n if (isClassified) {\r\n symbolBg?.stroke({ opacity: DEFAULT_STROKE_OPACITY });\r\n }\r\n\r\n // eslint-disable-next-line max-depth\r\n if (\r\n isParameterByAttribute(\r\n (background as SvgParameterDc)?.fillColor as ParameterValue\r\n )\r\n ) {\r\n symbolBg?.fill(createSvgGradient(\r\n SVGContainer,\r\n ((background as SvgParameterDc)?.fillColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ));\r\n }\r\n\r\n if (isParameterByAttribute(\r\n (background as SvgParameterDc)?.strokeColor as ParameterValue\r\n )) {\r\n symbolBg?.stroke({\r\n color: (createSvgGradient(\r\n SVGContainer,\r\n ((background as SvgParameterDc)?.strokeColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ) as unknown) as string,\r\n });\r\n }\r\n } else {\r\n SVGContainer.svg(innerSvg);\r\n }\r\n } else {\r\n const strokeColor = getParameterValue(\r\n (figure as SvgParameterDc)?.strokeColor as string\r\n );\r\n const strokeWidth = getParameterValue(\r\n (figure as SvgParameterDc)?.strokeWidth as number\r\n ) ||\r\n (typeof (figure as SvgParameterDc)?.strokeColor === 'object' ? 1 : 0);\r\n const fillColor = getParameterValue(\r\n (figure as SvgParameterDc)?.fillColor as string\r\n );\r\n\r\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(\r\n viewBox.join(' ')\r\n );\r\n SVGContainer.svg(innerSvg);\r\n SVGContainer.find('#symbol-figure').each(item => {\r\n item\r\n .center(DEFAULT_SYMBOL_SIZE / 2, DEFAULT_SYMBOL_SIZE / 2)\r\n .fill(fillColor || DEFAULT_SYMBOL_FILL_COLOR)\r\n .stroke({ color: strokeColor, width: strokeWidth });\r\n\r\n if (\r\n isParameterByAttribute(\r\n (figure as SvgParameterDc)?.fillColor as ParameterValue\r\n )\r\n ) {\r\n item?.fill(createSvgGradient(\r\n SVGContainer,\r\n ((figure as SvgParameterDc)?.fillColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ));\r\n }\r\n\r\n if (\r\n isParameterByAttribute(\r\n (figure as SvgParameterDc)?.strokeColor as ParameterValue\r\n )\r\n ) {\r\n item?.stroke({\r\n color: (createSvgGradient(\r\n SVGContainer,\r\n ((figure as SvgParameterDc)?.strokeColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ) as unknown) as string,\r\n });\r\n }\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({\r\n [transformParts[0]]: transformParts[1].split(','),\r\n });\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","export const isNumeric = (number: string | number): boolean =>\r\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\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 { ClusterSymbol } from '@evergis/sgis/es/symbols/ClusterSymbol';\r\nimport {\r\n AttributeType,\r\n CompositeLayerInfoDc,\r\n FeatureLayerServiceInfoDc,\r\n ParameterDcColor,\r\n ServiceInfoDc,\r\n SimplePolylineSymbolDc,\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 { i18n } from \"../i18n\";\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 isClusterSymbol,\r\n isCombinedPolylineSymbol,\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 = (\r\n value?: unknown\r\n): 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 = (\r\n condition: string,\r\n partIndex?: number\r\n): 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 = (\r\n condition: string,\r\n partIndex?: number\r\n): string => {\r\n return getExprFromCondition(condition, partIndex)?.[1];\r\n};\r\n\r\nexport const getValueFromConditionPart = (\r\n condition: string,\r\n partIndex?: number\r\n): string => {\r\n return getExprFromCondition(condition, partIndex)?.[2];\r\n};\r\n\r\nexport const isRangeCondition = (condition?: string): boolean =>\r\n condition?.includes('(') || false;\r\n\r\nexport const getSymbolParameterInfo = (\r\n parameter: ClassificationParameter\r\n): ParameterInfo => {\r\n return PARAMETER_INFOS[parameter] || DEFAULT_PARAMETER_INFO;\r\n};\r\n\r\nexport const formatUniqueClassValue = (\r\n value: UniqueClass,\r\n formatValue?: LegendProps['formatValue']\r\n): string => {\r\n const { attribute, uniqueValue } = value;\r\n\r\n return attribute && formatValue\r\n ? (formatValue(\r\n attribute.type,\r\n uniqueValue,\r\n attribute.stringFormat\r\n ) 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:\r\n from !== null && index !== 0\r\n ? isDate\r\n ? from\r\n : isDouble\r\n ? +from\r\n : +from + 1\r\n : 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\r\n ? formatValue(\r\n value.attribute?.type as AttributeType,\r\n from as string | number | Date,\r\n value.attribute?.stringFormat\r\n )\r\n : from;\r\n const formattedTo = formatValue\r\n ? formatValue(\r\n value.attribute?.type as AttributeType,\r\n to as string | number | Date,\r\n value.attribute?.stringFormat\r\n )\r\n : to;\r\n\r\n if (from === null) {\r\n return `${formattedTo}${!isDate ? ` ${i18n.t(\"andLess\", { ns: \"style\" })}` : ''}`;\r\n }\r\n\r\n if (to === null) {\r\n return `${!isDate ? `${i18n.t(\"more\", { ns: \"style\" })} ` : ''}${formattedFrom}`;\r\n }\r\n\r\n return from === to ? `${formattedFrom}` : `${formattedFrom} - ${formattedTo}`;\r\n};\r\n\r\nexport const checkLayerHasLegend = (\r\n layerInfo: Pick<FeatureLayerServiceInfoDc, 'geometryType' | 'style'>\r\n): boolean => {\r\n return (\r\n SYMBOL_CLASSIFICATION[layerInfo.geometryType]?.some(param => {\r\n const paramValue = (get(\r\n layerInfo.style?.symbol,\r\n param\r\n ) as unknown) as ParameterByAttribute<ParameterValue>;\r\n\r\n return paramValue?.type === 'byAttribute';\r\n }) || false\r\n );\r\n};\r\n\r\nexport const getTitleFromCondition = ({\r\n condition,\r\n attribute,\r\n formatValue,\r\n}: {\r\n condition?: string;\r\n attribute?: LayerAttribute | null;\r\n formatValue?: LegendProps['formatValue'];\r\n}): string => {\r\n const parts = condition?.split(' == ');\r\n const uniqueValue = parts?.[1] ? (parts[1].startsWith(\"'\") && parts[1].endsWith(\"'\") ? parts[1].slice(1, -1) : parts[1]) : '';\r\n\r\n return attribute && formatValue\r\n ? formatValue(attribute.type, uniqueValue, attribute.stringFormat)\r\n : uniqueValue;\r\n};\r\n\r\nexport function createValueTitleFromCondition(\r\n paramValue: ParameterByAttributeValue<ParameterValueWithSymbol>,\r\n attribute: LayerAttribute | null,\r\n formatValue: LegendProps['formatValue'],\r\n index: number\r\n): string {\r\n if (!attribute) return '';\r\n\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\r\n ? getValueFromConditionPart(paramValue.condition, 1)\r\n : 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))\r\n return formatRangeClassValue(value as RangeClass, formatValue, index);\r\n if (isUniqueClass(value))\r\n 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(\r\n DEFAULT_LEGEND_STYLES[type],\r\n parameter\r\n );\r\n\r\n if (defaultParameterValue) {\r\n return defaultParameterValue;\r\n }\r\n if (\r\n SYMBOL_SIZE_PARAMETERS.includes(parameter) &&\r\n DEFAULT_LEGEND_SIZES[baseSymbol.type as string]\r\n ) {\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(\r\n baseSymbol,\r\n 'fillColor',\r\n classificationsParams,\r\n LegendSymbolTypes.Point\r\n ),\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(\r\n baseSymbol,\r\n 'size',\r\n classificationsParams,\r\n LegendSymbolTypes.Point\r\n ),\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(\r\n baseSymbol,\r\n parameterValue as number\r\n );\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(\r\n baseSymbol,\r\n 'stroke.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Line\r\n ),\r\n width: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.width',\r\n classificationsParams,\r\n LegendSymbolTypes.Line\r\n ),\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(\r\n baseSymbol,\r\n 'fill.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\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(\r\n baseSymbol,\r\n 'stroke.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n width: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.width',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\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(\r\n baseSymbol,\r\n 'fill.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n },\r\n stroke: {\r\n color: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n width: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.width',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n },\r\n },\r\n parameter,\r\n parameterValue\r\n ) as unknown) as H3Symbol;\r\n};\r\n\r\nconst createClusterSymbol: SymbolCreator<ClusterSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue\r\n): ClusterSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fillColor: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'fillColor',\r\n classificationsParams,\r\n LegendSymbolTypes.Point\r\n ) as ParameterDcColor,\r\n } as StyleSymbolType,\r\n parameter,\r\n parameterValue\r\n ) as ClusterSymbol;\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(\r\n baseSymbol as ClusterSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue\r\n );\r\n }\r\n\r\n if (isSizableSymbol(baseSymbol)) {\r\n return createPointSymbol(\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue\r\n );\r\n }\r\n\r\n if (isTwoDimensionalSymbol(baseSymbol)) {\r\n return createImagePointSymbol(\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue\r\n );\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(\r\n baseSymbol as H3Symbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport function createHiddenCondition(\r\n attributeName: string,\r\n attributeType: AttributeType,\r\n value: ClassificationClass\r\n) {\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 || value.title;\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\r\n .filter(Boolean)\r\n .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<ParameterValueWithSymbol>,\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(\r\n classified.values.map(val =>\r\n getClassificationValue(\r\n val.value,\r\n otherTitle,\r\n new ClassificationCondition(val.condition)\r\n )\r\n ),\r\n attribute.name as string,\r\n attribute.type\r\n ),\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\r\n ? isNumeric(from)\r\n ? +from\r\n : formatDate(from)\r\n : null;\r\n (result as RangeClass).to = to\r\n ? isNumeric(to)\r\n ? +to\r\n : formatDate(to)\r\n : null;\r\n\r\n result.title = createValueTitleFromCondition(\r\n paramValue,\r\n attribute,\r\n formatValue,\r\n index\r\n );\r\n\r\n return result;\r\n }\r\n\r\n (result as UniqueClass).uniqueValue = formatValue\r\n ? (formatValue(\r\n attribute.type,\r\n paramValue.value,\r\n attribute.stringFormat\r\n ) as string)\r\n : paramValue.value.toString();\r\n result.title = getTitleFromCondition({ condition: paramValue.condition });\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(paramValue.condition)\r\n )\r\n ) as string;\r\n\r\n return result;\r\n }) as LegendValueType[];\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<ParameterValueWithSymbol>,\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(\r\n classified.defaultValue,\r\n param,\r\n params,\r\n symbol as StyleSymbolType\r\n ),\r\n hiddenCondition: createOtherHiddenCondition(\r\n classified.values.map(val =>\r\n getClassificationValue(\r\n val.value,\r\n otherTitle,\r\n new ClassificationCondition(val.condition)\r\n )\r\n ),\r\n attribute.name as string,\r\n attribute.type\r\n ),\r\n };\r\n\r\n const items = classified.values.map((paramValue, index) => {\r\n const result = {\r\n symbol: createLegendSymbol(\r\n paramValue.value,\r\n param,\r\n params,\r\n symbol as StyleSymbolType\r\n ),\r\n } as LegendSectionItem;\r\n\r\n result.title = isRangeCondition(paramValue.condition)\r\n ? createValueTitleFromCondition(\r\n paramValue,\r\n attribute,\r\n formatValue,\r\n sectionIndex\r\n )\r\n : getTitleFromCondition({ condition: 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 return [...items, other] as LegendSectionItem[];\r\n};\r\n\r\nexport type ClassifiedListItem = ParameterByAttribute<ParameterValueWithSymbol> & { index?: number };\r\n\r\nexport type ClassifiedList = Partial<Record<ClassifyParameter, ClassifiedListItem>>;\r\n\r\nexport const classifyParamsReduce = (\r\n symbol?: StyleSymbolType,\r\n classifyParams?: ClassifyParameter[],\r\n index?: number,\r\n): undefined | ClassifiedList => {\r\n return classifyParams?.reduce((result, classified) => {\r\n const param = (get(\r\n symbol,\r\n classified\r\n ) as unknown) as ParameterByAttribute<ParameterValue>;\r\n\r\n return param?.type === 'byAttribute' ? { ...result, [classified]: { index, ...param } } : result;\r\n }, {} as ClassifiedList);\r\n}\r\n\r\nexport const getClassified = (\r\n layerInfo: FeatureLayerServiceInfoDc\r\n): ClassifiedList | undefined => {\r\n if (!layerInfo) return undefined;\r\n\r\n if (layerInfo.style?.children?.length) {\r\n return {\r\n symbol: {\r\n type: 'byAttribute',\r\n defaultValue: layerInfo.style.symbol as StyleSymbolType,\r\n title: null,\r\n values: layerInfo.style?.children as ParameterByAttributeValue<\r\n ParameterValueWithSymbol\r\n >[],\r\n },\r\n };\r\n }\r\n\r\n const classifyParams = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\r\n\r\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\r\n if (!layerInfo.style.symbol.values?.length) return undefined;\r\n\r\n return layerInfo.style.symbol.values.reduce((result: ClassifiedList, polyline: SimplePolylineSymbolDc, index) => {\r\n return { ...result, ...classifyParamsReduce(polyline, classifyParams, index) };\r\n }, {} as ClassifiedList);\r\n }\r\n\r\n return classifyParamsReduce(layerInfo.style?.symbol, classifyParams);\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 =\r\n 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(\r\n getParameterFromSymbol(symbol, 'stroke.width')\r\n ) 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 =\r\n ((symbol.figure as SvgParameterDc)?.fillColor as string) || null;\r\n const bgFillColor =\r\n ((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:\r\n ((symbol.background as SvgParameterDc)?.strokeColor as string) ||\r\n null,\r\n strokeWidth:\r\n (symbol.background as SvgParameterDc)?.strokeWidth || null,\r\n type:\r\n (symbol.background as SvgParameterDc)?.type || SvgSymbolBg.Circle,\r\n },\r\n }\r\n : {}),\r\n ...(figureFillColor\r\n ? {\r\n figure: {\r\n id: 'symbol-figure',\r\n fillColor: figureFillColor,\r\n strokeColor:\r\n ((symbol.figure as SvgParameterDc)?.strokeColor as string) ||\r\n null,\r\n strokeWidth:\r\n (symbol.figure as SvgParameterDc)?.strokeWidth || null, },\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 =>\r\n SIZE_PARAMETERS.includes(parameter);\r\n\r\nexport const getServiceConfiguration = (\r\n layer?: ServiceInfoDc\r\n): ServiceInfoDc['configuration'] => {\r\n const emptyServiceConfiguration: ServiceInfoDc['configuration'] = {\r\n name: '',\r\n };\r\n\r\n if (!isLayerService(layer) || !('configuration' in layer))\r\n 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 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 { 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 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 { 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 { 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 { 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 { 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 { 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 { 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 {\r\n PointSymbol,\r\n PointSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/point/Point';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\r\n\r\nexport type EditorPointSymbolParams = {\r\n shadowColor: string;\r\n shadowSize: number;\r\n mapCoordinates?: Coordinates;\r\n} & PointSymbolConstructorParams;\r\n\r\nexport class ShadowedPointSymbol extends PointSymbol {\r\n shadowColor!: string;\r\n shadowSize!: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(options: EditorPointSymbolParams) {\r\n super(options);\r\n }\r\n\r\n static getShadowArc(\r\n position: Coordinates,\r\n { strokeWidth = 2, shadowColor, shadowSize, size = 6 }: EditorPointSymbolParams,\r\n mapCoordinates: Coordinates,\r\n ): Arc {\r\n return new Arc(position, {\r\n fillColor: \"transparent\",\r\n strokeColor: shadowColor,\r\n strokeWidth: shadowSize,\r\n radius: (size + strokeWidth + shadowSize) / 2,\r\n mapCoordinates,\r\n });\r\n }\r\n\r\n static getPointArc(\r\n position: Coordinates,\r\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams,\r\n mapCoordinates: Coordinates,\r\n ): Arc {\r\n return new Arc(position, {\r\n fillColor,\r\n strokeColor,\r\n strokeWidth,\r\n radius: size / 2,\r\n mapCoordinates,\r\n });\r\n }\r\n\r\n public renderFunction(\r\n feature: PointFeature,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n if (!(feature instanceof PointFeature)) return [];\r\n const { position } = feature.projectTo(crs);\r\n\r\n const pxPosition: Coordinates = [\r\n position[0] / resolution + (this.offset[0] || 0),\r\n -position[1] / resolution + (this.offset[1] || 0),\r\n ];\r\n\r\n const shadowRender = this.getShadow(pxPosition, feature, position);\r\n const pointArc = this.getPoint(pxPosition, feature, position);\r\n\r\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\r\n }\r\n\r\n protected getShadow(\r\n position: Coordinates,\r\n _feature: Feature,\r\n mapCoordinates: Coordinates,\r\n ): Arc | void {\r\n return ShadowedPointSymbol.getShadowArc(position, this, mapCoordinates);\r\n }\r\n\r\n protected getPoint(position: Coordinates, _feature: Feature, mapCoordinates: Coordinates): Arc {\r\n return ShadowedPointSymbol.getPointArc(position, this, mapCoordinates);\r\n }\r\n}\r\n","import {\r\n PolylineSymbol,\r\n PolylineSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Feature } from '@evergis/sgis';\r\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\r\n\r\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from './ShadowedPointSymbol';\r\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\r\n\r\nexport const getSimplifiedPolygonCoordinates = (feature: Poly, crs: Crs, tolerance = 1) => {\r\n const projected = feature.crs.equals(crs) ? feature.rings : feature.projectTo(crs).rings;\r\n\r\n return simplifyCoordinates(projected, tolerance);\r\n};\r\n\r\nexport function createShadowRender(\r\n position: Coordinates,\r\n { strokeWidth = 1, shadowColor, shadowSize, size = 3, mapCoordinates }: EditorPointSymbolParams,\r\n) {\r\n const shadowRadius = (size + strokeWidth + shadowSize) / 2;\r\n\r\n return new Arc(position, {\r\n fillColor: \"transparent\",\r\n strokeColor: shadowColor,\r\n strokeWidth: shadowSize,\r\n radius: shadowRadius,\r\n mapCoordinates,\r\n });\r\n}\r\n\r\nexport function createPointRender(\r\n position: Coordinates,\r\n { strokeColor, strokeWidth, fillColor, size = 3, mapCoordinates }: EditorPointSymbolParams,\r\n) {\r\n const radius = size / 2;\r\n\r\n return new Arc(position, {\r\n fillColor,\r\n strokeColor,\r\n strokeWidth,\r\n radius,\r\n mapCoordinates,\r\n });\r\n}\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 simplifiedFeatureCoordinates = getSimplifiedPolygonCoordinates(feature, crs);\r\n const polyRender = this.getPolyRender(coordinates, feature, simplifiedFeatureCoordinates);\r\n const shadowRender = this.getShadow(coordinates, feature, simplifiedFeatureCoordinates);\r\n const vertexRenders = this.getVertexRenders(coordinates, simplifiedFeatureCoordinates);\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 mapCoordinates: Coordinates[][],\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 mapCoordinates,\r\n });\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n _feature: Feature,\r\n mapCoordinates: Coordinates[][],\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 mapCoordinates,\r\n });\r\n }\r\n\r\n protected getVertexRenders(\r\n coordinates: Coordinates[][],\r\n mapCoordinates: Coordinates[][]\r\n ): Arc[] | void {\r\n if (!this.showVertex) return;\r\n\r\n const pointRenderers = [];\r\n const shadowRenderers = [];\r\n\r\n for (let i = 0; i < coordinates.length; i++) {\r\n const ring = coordinates[i];\r\n\r\n for (let j = 0; j < ring.length; j++) {\r\n const point = ring[j];\r\n const featurePoint = mapCoordinates[i][j];\r\n\r\n const shadowRender = createShadowRender(point, {\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: 'transparent',\r\n mapCoordinates: featurePoint,\r\n });\r\n const pointRender = createPointRender(point, {\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 mapCoordinates: featurePoint,\r\n });\r\n\r\n shadowRenderers.push(shadowRender);\r\n pointRenderers.push(pointRender);\r\n }\r\n }\r\n\r\n return [...pointRenderers, ...shadowRenderers];\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 { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\n\r\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\r\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\r\n\r\ntype SelectedFeature = PointFeature & {\r\n isSelected: boolean;\r\n};\r\n\r\nexport type SelectedPointSymbolParams = {\r\n selectedStrokeColor: string;\r\n selectedFillColor: string;\r\n} & EditorPointSymbolParams;\r\n\r\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\r\n selectedStrokeColor!: string;\r\n selectedFillColor!: string;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(props: SelectedPointSymbolParams) {\r\n super(props);\r\n }\r\n\r\n protected getShadow(\r\n position: [number, number],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates,\r\n ): Arc | void {\r\n if (feature.isSelected) {\r\n return super.getShadow(position, feature, mapCoordinates);\r\n }\r\n }\r\n\r\n protected getPoint(\r\n position: [number, number],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates,\r\n ): Arc {\r\n const pointRender = super.getPoint(position, feature, mapCoordinates);\r\n\r\n if (feature.isSelected) {\r\n pointRender.strokeColor = this.selectedStrokeColor;\r\n pointRender.fillColor = this.selectedFillColor;\r\n }\r\n\r\n return pointRender;\r\n }\r\n}\r\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\n\r\nimport {\r\n EditorPolySymbolParams,\r\n ShadowedPolySymbol,\r\n} from '../Shadowed';\r\n\r\ntype SelectedFeature = Polygon & {\r\n isSelected: boolean;\r\n};\r\n\r\nexport type SelectedPolySymbolParams = {\r\n selectedFillColor?: string;\r\n selectedStrokeColor: string;\r\n selectedStrokeWidth?: number;\r\n} & EditorPolySymbolParams;\r\n\r\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\r\n selectedFillColor!: string;\r\n selectedStrokeColor!: string;\r\n selectedStrokeWidth!: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(props: SelectedPolySymbolParams) {\r\n super(props);\r\n }\r\n\r\n protected getShadow(\r\n coordinates: Coordinates[][],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates[][],\r\n ): PolyRender | void {\r\n if (feature.isSelected) {\r\n return super.getShadow(coordinates, feature, mapCoordinates);\r\n }\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates[][],\r\n ): PolyRender {\r\n const polyRender = super.getPolyRender(coordinates, feature, mapCoordinates);\r\n if (feature.isSelected) {\r\n polyRender.fillColor = this.selectedFillColor;\r\n polyRender.strokeColor = this.selectedStrokeColor;\r\n if (this.selectedStrokeWidth !== void 0) {\r\n polyRender.strokeWidth = this.selectedStrokeWidth;\r\n }\r\n }\r\n\r\n return polyRender;\r\n }\r\n}\r\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\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 strokeColor: deserializeColor(getParameterValue((figure as SvgParameterDc)?.strokeColor as string)),\r\n strokeWidth: getParameterValue((figure as SvgParameterDc)?.strokeWidth as ParameterValue),\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 { 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 {\r\n getParameterValue,\r\n Offset,\r\n ParameterValue,\r\n SvgPointSymbol,\r\n} from '../../../core';\r\nimport { SvgEditorField, SvgSymbolBg } from '../types';\r\n\r\nexport const useSvgSymbol = (symbol: SvgPointSymbol, skipOffset?: boolean, isClassified?: 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 ({\r\n svg,\r\n bg,\r\n newSymbol,\r\n isClassified,\r\n }: {\r\n svg: string;\r\n bg?: SvgSymbolBg;\r\n newSymbol?: SvgPointSymbol;\r\n isClassified?: boolean;\r\n }) => {\r\n manipulateSvgSymbol({\r\n SVGContainer,\r\n symbol: newSymbol || symbol,\r\n svg,\r\n bg,\r\n isClassified,\r\n });\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 = {\r\n ...JSON.parse(JSON.stringify(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 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({\r\n svg: getParameterValue(data as ParameterValue) as string,\r\n newSymbol,\r\n bg: newSymbol.background?.type,\r\n isClassified,\r\n });\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 }) =>\r\n !!fontSettings?.fontFamily && `font-family: ${fontSettings.fontFamily}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontWeight && `font-weight: ${fontSettings.fontWeight}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontStyle && `font-style: ${fontSettings.fontStyle}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontColor && `color: ${fontSettings.fontColor}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontSize &&\r\n `font-size: ${\r\n typeof fontSettings.fontSize === 'string'\r\n ? fontSettings.fontSize\r\n : `${fontSettings.fontSize}px`\r\n }`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.haloColor &&\r\n !!fontSettings?.haloWidth &&\r\n `-webkit-text-stroke: ${fontSettings.haloWidth}px ${fontSettings.haloColor};`};\r\n line-height: 0;\r\n`;\r\n\r\nexport const SvgSymbol: FC<SvgSymbolProps> = memo(\r\n ({ svg, bg, symbol, title, text, fontSettings, skipOffset, isClassified, onClick }) => {\r\n const { svgRef, initSvg, getSvgData, manipulateSvg } = useSvgSymbol(\r\n symbol,\r\n skipOffset,\r\n isClassified,\r\n );\r\n\r\n const onSelectSymbol = useCallback(() => {\r\n onClick?.(getSvgData(), {\r\n ...symbol,\r\n ...(bg\r\n ? {\r\n background: {\r\n ...(symbol.background as SvgParameterDc),\r\n type: bg,\r\n },\r\n }\r\n : {}),\r\n } as SvgPointSymbol);\r\n }, [bg, getSvgData, onClick, symbol]);\r\n\r\n const renderSymbol = useMemo(\r\n () => (\r\n <SymbolButton\r\n ref={svgRef}\r\n title={title}\r\n onClick={onClick ? onSelectSymbol : undefined}\r\n />\r\n ),\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, isClassified });\r\n }, [svg, symbol, bg, manipulateSvg, isClassified]);\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\r\n fontSettings={{\r\n ...fontSettings,\r\n haloColor: undefined,\r\n haloWidth: undefined,\r\n }}\r\n >\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 } from 'react';\r\nimport {\r\n CalculatedParameterDc,\r\n ClusterSymbolDc,\r\n ParameterDcColor,\r\n} from '@evergis/api';\r\n\r\nimport { SvgSymbol } from './SvgSymbol';\r\nimport { DEFAULT_CLUSTER_SVG } from '../constants';\r\nimport {\r\n isParameterByAttribute,\r\n ParameterByAttribute,\r\n SvgPointSymbol,\r\n} from '../../../core';\r\n\r\nexport const ClusterSymbolPreview: FC<{\r\n symbol: ClusterSymbolDc;\r\n index?: number;\r\n size?: number;\r\n fontSize?: string;\r\n}> = ({ symbol, index, size = 56, fontSize = '1.25rem' }) => {\r\n const isClassified = isParameterByAttribute(\r\n symbol.fillColor as ParameterDcColor\r\n );\r\n const isClassifiedValue = isClassified && index !== undefined;\r\n\r\n const fillColor =\r\n isClassifiedValue\r\n ? (symbol.fillColor as ParameterByAttribute<string>).values[index as number]\r\n ?.value ||\r\n (symbol.fillColor as ParameterByAttribute<string>).defaultValue\r\n : symbol.fillColor;\r\n\r\n const strokeColor = isClassified ? fillColor : symbol.strokeColor;\r\n\r\n const svgSymbol = {\r\n type: 'svgPointSymbol',\r\n size,\r\n offset: [0, 0],\r\n angle: 0,\r\n background: {\r\n id: 'symbol-bg',\r\n fillColor,\r\n strokeColor,\r\n strokeWidth: 6,\r\n type: 'circle',\r\n },\r\n };\r\n\r\n return (\r\n <SvgSymbol\r\n svg={DEFAULT_CLUSTER_SVG}\r\n symbol={(svgSymbol as unknown) as SvgPointSymbol}\r\n isClassified={isClassified}\r\n text={'99'}\r\n fontSettings={{\r\n ...symbol.labelSymbol,\r\n fontSize:\r\n (fontSize as CalculatedParameterDc) || symbol.labelSymbol?.fontSize,\r\n }}\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(() => (\r\n <Symbol symbol={symbol as SGisSymbolType} size={size} />\r\n ), [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\nimport { ClusterSymbolDc } from '@evergis/api';\r\n\r\nimport { SymbolByType } from './SymbolByType';\r\nimport { ClusterSymbolPreview } from './ClusterSymbolPreview';\r\nimport { ClusterLegendContainer } from '../styled';\r\nimport { DEFAULT_LEGEND_SYMBOL_SIZE } from '../constants';\r\nimport { getLegendSymbolSize } from '../../../utils/legend';\r\nimport { deserializeSymbol } from '../../../symbols';\r\nimport {\r\n getParameterValue,\r\n isClusterSymbol,\r\n ParameterValue,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n} from '../../../core';\r\nimport { SGisSymbol } from '../types';\r\n\r\nexport const LegendSymbolRenderer: FC<{\r\n symbol: StyleSymbolType;\r\n index?: number;\r\n}> = memo(({ symbol, index }) => {\r\n if (isClusterSymbol(symbol)) {\r\n return (\r\n <ClusterLegendContainer>\r\n <ClusterSymbolPreview\r\n symbol={symbol as ClusterSymbolDc}\r\n index={index}\r\n />\r\n </ClusterLegendContainer>\r\n );\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={\r\n getParameterValue(\r\n (symbol as SvgPointSymbol).data as ParameterValue\r\n ) as string\r\n }\r\n skipOffset\r\n />\r\n );\r\n});\r\n","import React, { FC } from \"react\";\r\nimport { EverCloudClassificationIcon, EverCloudRefreshIcon, IconButton } from \"@evergis/icons\";\r\n\r\nimport { LegendHeaderButton } from \"../styled\";\r\nimport { LegendProps } from \"../types\";\r\n\r\ntype LegendHeaderButtonsProps = Pick<LegendProps, 'clearHiddenLegends' | 'goToClassification' | 'isShared'> & {\r\n layerName: string;\r\n hasHiddenLegends?: boolean;\r\n};\r\n\r\nexport const LegendHeaderButtons: FC<LegendHeaderButtonsProps> = ({ layerName, hasHiddenLegends, isShared, clearHiddenLegends, goToClassification }) => (\r\n <>\r\n {!!goToClassification && !isShared && (\r\n <LegendHeaderButton>\r\n <IconButton onClick={goToClassification}>\r\n <EverCloudClassificationIcon />\r\n </IconButton>\r\n </LegendHeaderButton>\r\n )}\r\n {!!clearHiddenLegends && (\r\n <LegendHeaderButton>\r\n <IconButton\r\n disabled={!hasHiddenLegends}\r\n onClick={() => clearHiddenLegends?.(layerName)}\r\n >\r\n <EverCloudRefreshIcon />\r\n </IconButton>\r\n </LegendHeaderButton>\r\n )}\r\n </>\r\n);\r\n","import { AttributeType } from '@evergis/api';\r\n\r\nimport { getAttributeNameFromCondition, LayerAttribute } from '../../../core';\r\n\r\nexport const getConditionAttribute = (\r\n attributes: LayerAttribute[],\r\n condition?: string\r\n): LayerAttribute | null => {\r\n if (!condition) return null;\r\n\r\n const attributeName = getAttributeNameFromCondition(condition) as string;\r\n\r\n let attribute: LayerAttribute = attributes.find(\r\n ({ name }) => name === attributeName\r\n ) as LayerAttribute;\r\n\r\n if (!attribute) {\r\n if (attributeName === 'count') {\r\n attribute = {\r\n name: 'count',\r\n alias: 'Количество',\r\n type: AttributeType.Int32,\r\n };\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n return attribute;\r\n};\r\n","export const isHiddenLegend = (\r\n hiddenCondition: string,\r\n hiddenLegends?: string[]\r\n): boolean => !!hiddenLegends?.includes(hiddenCondition);\r\n","import React, { Fragment } from 'react';\r\n\r\nimport { ItemSeparator, ItemText, MapLegendDescription } from '../styled';\r\nimport { i18n } from \"../../../i18n\";\r\n\r\nconst renderColumn = (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\nexport const getLegendText = ({\r\n title,\r\n index,\r\n isDate,\r\n}: {\r\n title?: string;\r\n index: number;\r\n isDate: boolean;\r\n}) => {\r\n if (!title) {\r\n return <ItemText>{i18n.t(\"other\", { ns: \"style\" })}</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","import { LayerDefinitionDc } from '@evergis/api';\r\n\r\nimport { LayerAttribute } from './types';\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","import React, { FC } from 'react';\r\n\r\nimport { LegendSymbolRenderer } from './LegendSymbolRenderer';\r\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\r\nimport { ClassifiedItem, MapLegendContainer, SymbolContainer } from '../styled';\r\nimport {\r\n createHiddenCondition,\r\n createValueTitleFromCondition,\r\n getClassificationValue,\r\n getTitleFromCondition,\r\n isRangeCondition,\r\n} from '../../../utils/legend';\r\nimport { getConditionAttribute } from '../utils/getConditionAttribute';\r\nimport { isHiddenLegend } from '../utils/isHiddenLegend';\r\nimport { getLegendText } from '../utils/getLegendText';\r\nimport { getLayerAttributes } from '../../../core/attributes/utils';\r\nimport { LegendChildrenProps } from '../types';\r\nimport {\r\n ClassificationCondition,\r\n ParameterByAttributeValue,\r\n ParameterValueWithSymbol,\r\n StyleSymbolType,\r\n} from '../../../core';\r\n\r\nexport const LegendChildren: FC<LegendChildrenProps> = ({\r\n layerInfo,\r\n hiddenLegends,\r\n toggleHiddenLegend,\r\n clearHiddenLegends,\r\n formatValue,\r\n}) => {\r\n if (!layerInfo?.style?.children?.length) return null;\r\n\r\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\r\n\r\n return (\r\n <MapLegendContainer>\r\n {layerInfo.style.children.map((paramValue, index) => {\r\n const attribute = getConditionAttribute(\r\n attributes,\r\n paramValue.condition\r\n );\r\n\r\n if (!attribute) return null;\r\n\r\n const hiddenCondition = createHiddenCondition(\r\n attribute.name as string,\r\n attribute.type,\r\n getClassificationValue(\r\n paramValue.symbol as StyleSymbolType,\r\n paramValue.title as string,\r\n new ClassificationCondition(paramValue.condition as string)\r\n )\r\n ) as string;\r\n\r\n const legendText = getLegendText({\r\n title: isRangeCondition(paramValue.condition)\r\n ? createValueTitleFromCondition(\r\n paramValue as ParameterByAttributeValue<\r\n ParameterValueWithSymbol\r\n >,\r\n attribute,\r\n formatValue,\r\n index\r\n )\r\n : getTitleFromCondition({\r\n condition: paramValue.condition,\r\n attribute,\r\n formatValue,\r\n }),\r\n index,\r\n isDate:\r\n getConditionAttribute(attributes, paramValue.condition)?.type ===\r\n 'DateTime',\r\n });\r\n\r\n return (\r\n <ClassifiedItem\r\n key={index}\r\n isHidden={isHiddenLegend(\r\n hiddenCondition,\r\n hiddenLegends?.[layerInfo.name]\r\n )}\r\n onClick={() =>\r\n toggleHiddenLegend?.(layerInfo.name, hiddenCondition)\r\n }\r\n >\r\n <SymbolContainer>\r\n <LegendSymbolRenderer\r\n symbol={paramValue.symbol as StyleSymbolType}\r\n />\r\n </SymbolContainer>\r\n {legendText}\r\n <LegendHeaderButtons layerName={layerInfo.name} clearHiddenLegends={clearHiddenLegends} />\r\n </ClassifiedItem>\r\n );\r\n })}\r\n </MapLegendContainer>\r\n );\r\n};\r\n","import React, { FC } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { MapLegendBadge, MapLegendDescriptionContainer } from \"../styled\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended } from \"../../../core\";\r\n\r\nexport const LegendParameterDescription: FC<{\r\n parameter: ClassificationParameterExtended;\r\n index?: number;\r\n}> = ({ parameter, index }) => {\r\n const { t } = useTranslation(\"style\");\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 ? t(\"strokeWidth\") : t(\"strokeColor\"))\r\n : isSize ? t(\"symbolSize\") : t(\"symbolColor\")}\r\n {!!index && <MapLegendBadge>{index}</MapLegendBadge>}\r\n </MapLegendDescriptionContainer>\r\n );\r\n};\r\n","import React, { FC, useCallback } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\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 { t } = useTranslation(\"style\");\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={t(\"other\")}\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>{t(\"other\")}</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={t(\"other\")}\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n >\r\n {t(\"other\")}\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={t(\"other\")}\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n )}\r\n {typeof other?.parameterValue === \"string\" && (titleMax || titleMin) && (\r\n <MapLegendValues>\r\n <MapLegendValuesRange>\r\n <div>{titleMax}</div>\r\n <div>{titleMin}</div>\r\n </MapLegendValuesRange>\r\n <MapLegendValuesOther>-</MapLegendValuesOther>\r\n </MapLegendValues>\r\n )}\r\n </MinimizedLegendContainer>\r\n )\r\n}\r\n","import React, { FC, useCallback, useMemo } from 'react';\r\nimport get from 'lodash/get';\r\n\r\nimport {\r\n ClassifiedItem,\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 { isHiddenLegend } from '../utils/isHiddenLegend';\r\nimport { getLegendText } from '../utils/getLegendText';\r\nimport {\r\n ClassificationParameterExtended,\r\n getExtractedSymbol,\r\n getParameterValue,\r\n isClusterFillColor as isClusterFillColorAction,\r\n ParameterByAttribute,\r\n ParameterValue,\r\n StyleSymbolType,\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 isDate = attributeType === 'DateTime';\r\n const isSize = isParameterType(\r\n 'size',\r\n parameter as ClassificationParameterExtended\r\n );\r\n const isStrokeWidth = isParameterType(\r\n ['strokeWidth', 'stroke.width'],\r\n parameter as ClassificationParameterExtended\r\n );\r\n const isStrokeColor = isParameterType(\r\n ['strokeColor', 'stroke.color'],\r\n parameter as ClassificationParameterExtended\r\n );\r\n\r\n const parameterValue = useMemo(\r\n () =>\r\n (get(sectionSymbol, parameter) as unknown) as ParameterByAttribute<\r\n ParameterValue\r\n >,\r\n [sectionSymbol, parameter]\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 const value = (getParameterValue(\r\n parameterValue?.values[index]?.value) || parameterValue?.defaultValue\r\n ) as string | number;\r\n\r\n return (\r\n <ClassifiedItem\r\n key={sectionIndex + title + index}\r\n isHidden={isHiddenLegend(hiddenCondition, hiddenLegends)}\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={value}\r\n parameter={parameter as ClassificationParameterExtended}\r\n />\r\n </MapLegendItems>\r\n ) : (\r\n <SymbolContainer>\r\n <LegendSymbolRenderer\r\n index={index}\r\n symbol={\r\n isClusterFillColor ? sectionSymbol as StyleSymbolType : getExtractedSymbol(symbol, true)\r\n }\r\n />\r\n </SymbolContainer>\r\n )}\r\n {getLegendText({ title, index, isDate })}\r\n </ClassifiedItem>\r\n );\r\n },\r\n [\r\n parameter,\r\n sectionIndex,\r\n hiddenLegends,\r\n isSize,\r\n isStrokeWidth,\r\n isStrokeColor,\r\n parameterValue,\r\n sectionSymbol,\r\n isDate,\r\n toggleHiddenLegend,\r\n layerName,\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\nimport { useTranslation } from \"react-i18next\";\r\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\r\nimport { CombinedPolylineSymbolDc, StyleDc } from \"@evergis/api\";\r\n\r\nimport { MinimizedLegend } from './MinimizedLegend';\r\nimport { MaximizedLegend } from './MaximizedLegend';\r\nimport { LegendParameterDescription } from './LegendParameterDescription';\r\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\r\nimport {\r\n MapLegendExpandButton,\r\n MapLegendHeader,\r\n MapLegendSectionContainer,\r\n MapLegendSectionItems,\r\n} from '../styled';\r\nimport {\r\n getMaximizedLegendValues,\r\n getMinimizedLegendValues,\r\n} from '../../../utils/legend';\r\nimport { isCombinedPolylineSymbol } from \"../../../core\";\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 clearHiddenLegends,\r\n goToClassification,\r\n attribute,\r\n formatValue,\r\n index,\r\n count,\r\n isShared,\r\n}) => {\r\n const { t } = useTranslation(\"style\");\r\n const [isExpanded, toggleExpanded] = useToggle();\r\n const [maxRef, maxNode] = useNode();\r\n const [minRef, minNode] = useNode();\r\n\r\n if (!layerName || !attribute) return null;\r\n\r\n const currentSymbol = isCombinedPolylineSymbol(symbol as CombinedPolylineSymbolDc)\r\n ? (symbol as CombinedPolylineSymbol).values[index] as StyleDc['symbol'] : symbol;\r\n\r\n return (\r\n <MapLegendSectionContainer hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}>\r\n <MapLegendHeader>\r\n {attribute.alias || attribute.name}\r\n <LegendHeaderButtons\r\n layerName={layerName}\r\n hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}\r\n clearHiddenLegends={clearHiddenLegends}\r\n goToClassification={goToClassification}\r\n isShared={isShared}\r\n />\r\n </MapLegendHeader>\r\n <LegendParameterDescription\r\n parameter={parameter}\r\n index={count && index !== undefined ? count - index : 0}\r\n />\r\n <MapLegendSectionItems\r\n minHeight={minNode?.offsetHeight}\r\n maxHeight={maxNode?.offsetHeight}\r\n isExpanded={isExpanded}\r\n >\r\n <MaximizedLegend\r\n innerRef={maxRef}\r\n isShown={isExpanded}\r\n layerName={layerName}\r\n symbol={currentSymbol}\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 currentSymbol,\r\n formatValue,\r\n index,\r\n t(\"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(\"other\")\r\n )}\r\n />\r\n </MapLegendSectionItems>\r\n <MapLegendExpandButton onClick={toggleExpanded}>\r\n {isExpanded ? t('hide') : t('show')}\r\n </MapLegendExpandButton>\r\n </MapLegendSectionContainer>\r\n );\r\n};\r\n","import React, { FC, memo, useMemo } from 'react';\r\n\r\nimport { LegendSection, LegendChildren } from './components';\r\nimport { MapLegendContainer } from './styled';\r\n\r\nimport { SYMBOL_CLASSIFICATION } from './constants';\r\n\r\nimport { getLayerAttributes } from '../../core/attributes/utils';\r\nimport { getConditionAttribute } from './utils/getConditionAttribute';\r\n\r\nimport { ClassifiedList, ClassifiedListItem, classifyParamsReduce, getClassified } from '../../utils/legend';\r\nimport { ClassificationParameterExtended, isCombinedPolylineSymbol } from '../../core';\r\nimport { ClassifyParameter, LegendProps } from './types';\r\n\r\nexport const Legend: FC<LegendProps> = memo(\r\n ({ layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification, ...rest }) => {\r\n if (!layerInfo) return null;\r\n\r\n if (layerInfo.style?.children?.length) {\r\n return (\r\n <LegendChildren\r\n layerInfo={layerInfo}\r\n formatValue={formatValue}\r\n hiddenLegends={hiddenLegends}\r\n toggleHiddenLegend={toggleHiddenLegend}\r\n clearHiddenLegends={clearHiddenLegends}\r\n goToClassification={goToClassification}\r\n />\r\n );\r\n }\r\n\r\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\r\n\r\n const renderItems = useMemo(() => {\r\n const parameters = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\r\n const props = {\r\n layerName: layerInfo.name,\r\n symbol: layerInfo.style?.symbol,\r\n parameters: parameters as ClassificationParameterExtended[],\r\n formatValue: formatValue,\r\n hiddenLegends: hiddenLegends,\r\n toggleHiddenLegend: toggleHiddenLegend,\r\n clearHiddenLegends: clearHiddenLegends,\r\n goToClassification: goToClassification,\r\n };\r\n\r\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\r\n const values = layerInfo.style?.symbol?.values?.reduce((result, symbol, index) => {\r\n return [classifyParamsReduce(symbol, parameters as ClassifyParameter[], index) as ClassifiedList, ...result];\r\n }, [] as ClassifiedList[]);\r\n\r\n return (\r\n <>\r\n {values?.map((value, index) => Object.keys(value).map((param, keyIndex) => {\r\n const item = value[param as ClassifyParameter] as ClassifiedListItem;\r\n\r\n return (\r\n <LegendSection\r\n key={[keyIndex, index].join(\"-\")}\r\n index={item?.index as number}\r\n count={values?.length}\r\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\r\n parameter={param as ClassificationParameterExtended}\r\n classified={item}\r\n {...props}\r\n {...rest}\r\n />\r\n );\r\n }))}\r\n </>\r\n );\r\n }\r\n\r\n const classified = getClassified(layerInfo);\r\n\r\n if (!classified) return null;\r\n\r\n return (\r\n <>\r\n {Object.keys(classified).map((param, keyIndex) => {\r\n const item = classified[param as keyof ClassifiedList] as ClassifiedListItem;\r\n\r\n return (\r\n <LegendSection\r\n key={[keyIndex, item.index].join(\"-\")}\r\n index={item.index as number}\r\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\r\n parameter={param as ClassificationParameterExtended}\r\n classified={item}\r\n {...props}\r\n {...rest}\r\n />\r\n );\r\n })}\r\n </>\r\n );\r\n }, [layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification]);\r\n\r\n return (\r\n <MapLegendContainer>\r\n {renderItems}\r\n </MapLegendContainer>\r\n );\r\n }\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"],"names":["isParameterType","types","parameter","toLowerCase","includes","some","type","MapLegendDescription","styled","div","ItemText","theme","fonts","description","ItemSeparator","SymbolContainer","ClassifiedItem","isClusterFillColor","isHidden","IconButton","SymbolButtonWithClick","css","palette","elementDeep","SymbolButton","span","onClick","MapLegendContainer","MapLegendHeader","MapLegendDescriptionContainer","MapLegendBadge","borderRadius","xSmall","element","textPrimary","MaximizedLegendContainer","isShown","MinimizedLegendContainer","LegendHeaderButton","MapLegendSectionContainer","MapLegendSectionItems","minHeight","maxHeight","isExpanded","MapLegendValueDescr","SizeLegendItemMixin","value","StrokeWidthLegendItemMixin","Math","round","StrokeColorLegendItemMixin","MapLegendItem","MapLegendOther","SizeLegendItemsMixin","StrokeWidthLegendItemsMixin","SizeMinimizedLegend","SizeMinimizedLegendSymbol","SizeMinimizedLegendLabel","SizeMinimizedLegendDown","SizeMinimizedLegendUp","SingleSizeLegendItemsMixin","SingleLegendItemsMixin","isSize","MapLegendItems","isStrokeWidth","isSingle","MapLegendItemsContainer","MapLegendValues","MapLegendValuesRange","MapLegendValuesOther","MapLegendExpandButton","ClusterLegendContainer","NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","formatDate","dateFormat","ClientDefaultFormat","defaultValue","dateValue","format","toString","numberWithSpaces","x","fractionDigits","delim","num","frac","toFixed","split","numWithSpaces","replace","join","matchPhone","phoneRegexp","isStringAsInn","match","innRegexp","test","isStringAsKpp","kppRegexp","isStringAsOgrn","ogrnRegexp","isStringContainsDate","dateRegexp","isRequisiteNumbers","isStringAsPhone","isStringAsMail","isStringAsUrl","isValidUrl","urlRegexp","urlKind","URL","_","mailHref","mail","phoneHref","urlHref","url","stringAttribute","urlAttribute","mailAttribute","phoneAttribute","convertStringAttribute","formatStringAttribute","phones","length","map","attributeValues","every","isNaN","formatDateTimeAttribute","formatIntAttribute","DOUBLE_FRACTIONS","formatDoubleAttribute","isNullOrUndefined","undefined","NO_CONTENT_ATTRIBUTE","formatAttributeValue","attribute","isRangeClass","Boolean","isUniqueClass","NULL_EXPRESSION","operation","ClassificationCondition","condition","conditionResult","ConditionInterpreter","expressions","Error","leftExpression","isUnique","console","warn","isRange","from","to","rightExpression","isFrom","TokenType","ArGr","ArEq","ArGre","ArLs","ArLse","PARAMETER_SEPARATOR","parameterToPaths","pathsToParameter","paths","isObject","Array","isArray","isParameterByAttribute","isCalculatedParameter","getParameterValue","symbolParameterWalker","valueModifier","symbol","firstKey","restKeys","symbolPart","goDeeper","setDefaultParameterValue","setParameterValue","path","applyParameterValue","symbolTypeGuard","isPointLabelSymbol","isPolygonLabelSymbol","isPolylineLabelSymbol","isLabelSymbol","createCompositeSymbol","childSymbols","getChildSymbols","isCompositeSymbol","extractSymbol","find","isSimpleSymbol","label","raster","isRasterSymbol","extractStyle","style","children","packStyle","ignoreLabel","styleDc","filter","childStyle","isPointSymbol","isSquareSymbol","isMaskedImageSymbol","isStaticImageSymbol","isCombinedPolylineSymbol","isPolygonSymbol","isPolylineSymbol","isSimplePolylineSymbol","isPolylineSymbols","isImageSymbol","isTwoDimensionalSymbol","isSizableSymbol","isStrokeStyledSymbol","isScalablePolylineSymbol","beginning","ending","stroke","isH3GridSymbol","isSvgPointSymbol","isClusterSymbol","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","EvergisStyle","classificationManager","ClassificationManager","title","minResolution","maxResolution","toClassificationClass","uniqueValue","range","DEFAULT_EXTRAS","defaultTitle","toClassification","values","extras","reduce","classification","classificationCondition","classificationValue","push","attributeName","getClassifications","pathContext","Object","entries","classifications","skipHeight","skip","collectClassifications","predicate","callback","initial","unClassify","flatSymbol","result","DEFAULT_LANGUAGE","resources","en","ru","i18n","use","LanguageDetector","initReactI18next","init","fallbackLng","ns","keys","interpolation","escapeValue","supportedLngs","printRangeClass","index","isDouble","isDate","getRangeValues","t","evaluateCondition","attributes","evaluator","ConditionEvaluator","evaluate","getAttributeValue","attributeMeta","name","getAttributeNameFromCondition","getAttributeNameFromClassified","findFeatureValue","parameterValues","extractValuesAttribute","evaluateFeatureSymbol","calc","parameterName","newParameterValue","attributeValue","featureValue","findChildFeatureStyle","childStyles","findChildFeatureSymbol","featureStyle","getFeatureSymbol","createValueTitle","isValidParameter","FilterConditionOperation","ComparisonOperator","DEFAULT_LEGEND_SYMBOL_SIZE","EXTRA_BORDER_SIZE","DEFAULT_SYMBOL_SIZE","DEFAULT_SYMBOL_WITH_BG_SIZE","DEFAULT_SYMBOL_FILL_COLOR","DEFAULT_SYMBOL_STROKE_COLOR","DEFAULT_SYMBOL_OFFSET","DEFAULT_CLUSTER_SVG","SYMBOL_CLASSIFICATION","GeometryType","Polygon","Polyline","Point","SYMBOL_LIMITS","SIZE_MIN","SIZE_MAX","SIZE_STEP","GRID_SIZE_MIN","GRID_SIZE_MAX","MIN_OBJECTS_COUNT","MAX_OBJECTS_COUNT","MIN_CLUSTER_SIZE","MAX_CLUSTER_SIZE","STROKE_WIDTH_MIN","STROKE_WIDTH_MAX","STROKE_WIDTH_STEP","ANGLE_MIN","ANGLE_MAX","ANGLE_STEP","PREVIEW_SIZE_MAX","PREVIEW_SIZE_MAX_WIDTH","DEFAULT_PARAMETER_INFO","classifyAble","min","max","step","units","serialize","deserialize","PARAMETER_INFOS","size","OPERATOR_CONDITION_REMAP","Equals","NotEquals","GreaterThan","GreaterOrEquals","LessThan","LessOrEquals","Filled","Empty","Contains","NotContains","StartsWith","NotStartsWith","EndsWith","NotEndsWith","Between","Outside","BASE_OPERATORS","CONTAINS_OPERATORS","FILLED_OPERATORS","STARTS_WITH_OPERATORS","ENDS_WITH_OPERATORS","RANGE_OPERATORS","BETWEEN_OPERATORS","numberComparisonOperators","dateComparisonOperators","textComparisonOperators","SvgSymbolBg","DEFAULT_STROKE_OPACITY","convertSvgToBase64","svg","window","btoa","createSvgGradient","gradient","add","forEach","stop","manipulateSvgSymbol","SVGContainer","bg","isClassified","symbolData","data","clear","angle","background","figure","isUploadedFile","innerSvg","uploadedViewBox","exec","viewbox","hasBg","defaultSize","currentSize","viewBox","strokeWidth","strokeColor","currentBg","fillColor","each","item","remove","center","symbolBg","opacity","color","width","rootTransform","transformParts","slice","transform","rotatedAngle","rotate","PI","isNumeric","number","parseFloat","isFinite","comparisonOperatorMapReversed","ArNotEq","NUMERIC_ATTRIBUTE_TYPES","AttributeType","Int32","Int64","DateTime","Double","formatValue","UTC","formatCondition","comparisonOperator","operator","preparedValue","isBetweenOutside","formattedValue","val","nulledValue","isNil","valueEscaped","Char","escapeSpecChars","addOperationToValue","createConditionString","createCondition","convertedResult","convertOperatorValue","operatorIndex","startsWith","PERCENTAGE","endsWith","addContains","addStartsWith","addEndsWith","BETWEEN","OUTSIDE","FilterCondition","conditionInterpreter","message","isOrCondition","boolOperations","BoolOr","isAndCondition","BoolAnd","OR","AND","conditions","isLayerService","getAttributeFromCondition","parts","getExprFromCondition","partIndex","expr","part","getSignFromConditionPart","getValueFromConditionPart","isRangeCondition","getSymbolParameterInfo","formatUniqueClassValue","stringFormat","formatRangeClassValue","formattedFrom","formattedTo","checkLayerHasLegend","layerInfo","geometryType","param","paramValue","get","getTitleFromCondition","createValueTitleFromCondition","sign","isFirstFrom","DEFAULT_LEGEND_STYLES","maskedColor","hatchColor","SYMBOL_SIZE_PARAMETERS","DEFAULT_LEGEND_SIZES","circlePointSymbol","squarePointSymbol","imagePointSymbol","maskedImagePointSymbol","svgPointSymbol","getNonClassifiedParamValue","baseSymbol","classificationsParams","defaultParameterValue","getParameterFromSymbol","updateSymbolParameter","createPointSymbol","getDimensions","height","ratio","createImagePointSymbol","createLineSymbol","createPolygonSymbol","createH3Symbol","createClusterSymbol","createLegendSymbol","createHiddenCondition","attributeType","newValue","createOtherHiddenCondition","hiddenCondition","getMinimizedLegendValues","classified","otherTitle","other","getClassificationValue","items","getMaximizedLegendValues","params","sectionIndex","classifyParamsReduce","classifyParams","getClassified","polyline","getSymbolStrokeWidth","parameterFromSymbol","getLegendSymbolSize","cellSize","serializeSvgPointSymbol","figureFillColor","bgFillColor","id","SIZE_PARAMETERS","isSizeClassification","getServiceConfiguration","layer","emptyServiceConfiguration","configuration","GEOMETRY_ATTRIBUTE","DEFAULT_ID_ATTRIBUTE_NAME","getHexColor","colorString","Color","PREVIEW_LIMITS","clamp","SOLID_INTERVALS","solidStrokeStylePreset","intervals","strokeStylePresets","walkByNumbersGroup","numbers","walker","newNumbers","i","toIntervals","gap","toLineDash","getLineDash","brush","defineStrokeStylePreset","preset","uniqueStrokeWidths","presetInterval","unique","getDashStylePreset","dashStyle","ALPHA_NORMALIZER","sum","shouldFillMatrixCell","matrixSize","hatchAngle","y","createEmptyMatrix","fillMatrix","matrix","filler","createFillBrushMatrix","hatchWidth","scalingFactor","createSymbolFillBrush","fillBrush","SGisBrushFill","originalSymbol","lineDash","fillBackground","fillForeground","lineCap","_initialized","canvas","document","createElement","ctx","getContext","brushSize","foreground","j","srcA","a","dstA","alpha","red","r","green","g","blue","b","fillStyle","fillRect","_brush","Image","src","toDataURL","sBrushFill","SGisImageFill","pattern","sImageFill","SGisPolygonSymbol","sPolygonSymbol","adaptMiterRings","rings","resolution","fromCrs","toCrs","projected","projectRings","simplifyCoordinates","ring","miterSizeCalcs","LineMiterRender","baseInfo","position","lastRing","firstRing","assign","anchorRings","anchorCrs","currentCrs","xMultiplier","miterAnchor","getAnchor","miterRings","createRings","projectedMiterRings","createRender","calcMiterSize","ArrowLineMiterRender","miterSize","isFilled","kind","PolyRender","enclosed","FillStyle","lineJoin","LegendContext","createContext","LegendProvider","React","Provider","useLegendContext","useContext","useCanvas","useRef","ref","useCallback","node","current","Canvas","useMount","onMount","onUnmount","useEffect","useNode","onSetNode","useState","useSymbol","canvasRef","render","getSymbolRenders","maxWidth","setCanvasSize","then","renders","renderSymbolToCanvas","useToggle","state","setState","toggle","metersToPixels","meters","painter","crs","geo","zeroPoint","getPointFromPxPosition","projectTo","maxWidthPoint","widthDistance","distance","pxK","polygonCircleFromPoint","diameter","coordinates","radius","endAngle","start","end","ang","cos","sin","CircleLineMiterRender","SquareLineMiterRender","getLineMiterRender","options","updateRingForRightMiter","isLastRing","reversedRing","reverse","nextCoordinates","abs","updateRingForLeftMiter","isFirstRing","newRing","prevCoordinates","updateRingsForMiter","ringIndex","copyRings","SGisPolylineSymbol","feature","featureCopy","clone","beginningMiterRender","endingMiterRender","updatedRings","usageSize","getRender","unshift","sPolylineSymbol","ShadowedPointSymbol","PointFeature","pxPosition","shadowRender","getShadow","pointArc","getPoint","_feature","mapCoordinates","getShadowArc","getPointArc","shadowColor","shadowSize","Arc","PointSymbol","getSimplifiedPolygonCoordinates","tolerance","equals","createShadowRender","shadowRadius","createPointRender","ShadowedPolySymbol","Poly","simplifiedFeatureCoordinates","polyRender","getPolyRender","vertexRenders","getVertexRenders","concat","enclose","showVertex","pointRenderers","shadowRenderers","point","featurePoint","vertexShadowSize","pointRender","PolylineSymbol","polySymbolParams","measureSymbolParams","measureLengthSymbol","measureAreaSymbol","snapSymbolParams","measurePolygonSnapSymbol","SelectedPointSymbol","props","isSelected","selectedStrokeColor","selectedFillColor","SelectedPolySymbol","selectedStrokeWidth","selectedPoint","selectedPolyline","selectedPolygon","defaultPathStyles","SVGPoly","redrawFeatureNode","pathStyles","circle","className","appendToSvg","container","getRenderedCoordinates","centroid","setCirclePxRaius","innerHTML","setSvg","append","__dynamicSymbolRender","DynamicRender","update","bbox","redraw","_setEventListeners","pxOffset","__lastBbox","__lastResolution","canProjectTo","newCoordinates","polygon","radiusOffset","dx","xMin","dy","yMax","left","top","miterLimit","dashOffset","svgRender","SvgRender","_setArcNode","_setPolyNode","svgElement","getNode","classList","querySelector","setAttribute","dynamicFeature","eventFlags","MouseEventFlags","svgNode","mouseEvents","eventName","flag","listenDomEvent","event","fire","browserEvent","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","combinedPolyline","h3grid","MOCK_FEATURES","features","featuresToRender","renderFunctionAsync","getMapLegendSymbolRenders","getLegendSymbolRenders","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","useSvgSymbol","skipOffset","SVGWrapperRefElement","useMemo","SVG","initSvg","addTo","getSvgData","manipulateSvg","newSymbol","getUpdatedSvgSymbol","field","JSON","parse","stringify","indexOf","svgRef","SvgSymbolContainer","SvgSymbolLabel","fontSettings","fontFamily","fontWeight","fontStyle","fontColor","fontSize","haloColor","haloWidth","SvgSymbol","memo","text","onSelectSymbol","renderSymbol","ClusterSymbolPreview","isClassifiedValue","svgSymbol","labelSymbol","SymbolByType","defaultSymbol","LegendSymbolRenderer","LegendHeaderButtons","layerName","hasHiddenLegends","isShared","clearHiddenLegends","goToClassification","EverCloudClassificationIcon","disabled","EverCloudRefreshIcon","getConditionAttribute","alias","isHiddenLegend","hiddenLegends","renderColumn","column","dateTime","Fragment","key","getLegendText","columns","isSingleColumn","getLayerAttributes","layerDefinition","definition","LegendChildren","toggleHiddenLegend","legendText","LegendParameterDescription","useTranslation","isStrokeColor","getValueFromLegendTitle","minOrMax","MinimizedLegend","innerRef","currentValues","pop","titleMax","titleMin","checkIsHidden","MaximizedLegend","sectionSymbol","renderLegend","isClusterFillColorAction","LegendSection","parameters","count","toggleExpanded","maxRef","maxNode","minRef","minNode","currentSymbol","offsetHeight","Legend","rest","renderItems","keyIndex","CompoundIcon","icons","ClusterSymbol","MAX_SIZE","StyleSymbol","sGisSymbol","e"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAIaA,eAAe,GAAG,CAC7BC,KAD6B,EAE7BC,SAF6B;AAAA;;AAAA,SAGjB,CAAC,OAAOD,KAAP,KAAiB,QAAjB,GACTC,SADS,6CACTA,SAAS,CAAEC,WAAX,EADS,qBACT,sBAA0BC,QAA1B,CAAmCH,KAAK,CAACE,WAAN,EAAnC,CADS,GAETF,KAAK,CAACI,IAAN,CAAWC,IAAI;AAAA;;AAAA,WAAIJ,SAAJ,8CAAIA,SAAS,CAAEC,WAAX,EAAJ,qBAAI,uBAA0BC,QAA1B,CAAmCE,IAAI,CAACH,WAAL,EAAnC,CAAJ;AAAA,GAAf,CAFQ,KAEuE,KALtD;AAAA;;;MCKlBI,oBAAoB,gBAAGC,MAAM,CAACC,GAAV,gHAA1B;AAIP,MAAaC,QAAQ,gBAAGF,MAAM,CAACC,GAAV,4IAEX;AAAA,MAAC;AAAEE,IAAAA,KAAK,EAAE;AAAEC,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA0BA,KAAK,CAACC,WAAhC;AAAA,CAFW,CAAd;AAKP,MAAaC,aAAa,gBAAGN,MAAM,CAACC,GAAV,+KAAnB;AAQP,MAAaM,eAAe,gBAAGP,MAAM,CAAC,MAAD,CAAT,wLAArB;AAOP,MAAaQ,cAAc,gBAAGR,MAAM,CAACC,GAAV,gfAOf;AAAA,MAAC;AAAEQ,IAAAA;AAAF,GAAD;AAAA,SACRA,kBAAkB,GAAG,SAAH,GAAe,SADzB;AAAA,CAPe,EASP;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAChBA,kBAAkB,GAAG,MAAH,GAAY,MADd;AAAA,CATO,EAgBvBP,QAhBuB,EAgBVK,eAhBU,EAoBvBL,QApBuB,EAqBZ;AAAA,MAAC;AAAEQ,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,IAAH,GAAU,IAArC;AAAA,CArBY,EAwBvBH,eAxBuB,EAyBZ;AAAA,MAAC;AAAEG,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,IAAH,GAAU,CAArC;AAAA,CAzBY,EA6BrBR,QA7BqB,EA6BRK,eA7BQ,EAkCvBI,UAlCuB,CAApB;AAuCP,MAAMC,qBAAqB,gBAAGC,GAAH,0MAMH;AAAA,MAAC;AAAEV,IAAAA,KAAK,EAAE;AAAEW,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA4BA,OAAO,CAACC,WAApC;AAAA,CANG,CAA3B;AAUA,MAAaC,YAAY,gBAAGhB,MAAM,CAACiB,IAAV,+QAOrB;AAAA,MAAC;AAAEC,IAAAA;AAAF,GAAD;AAAA,SAAiB,CAAC,CAACA,OAAF,IAAaN,qBAA9B;AAAA,CAPqB,CAAlB;AAeP,MAAaO,kBAAkB,gBAAGnB,MAAM,CAACC,GAAV,+SAAxB;AAcP,MAAamB,eAAe,gBAAGpB,MAAM,CAACC,GAAV,wLAArB;AAOP,MAAaoB,6BAA6B,gBAAGrB,MAAM,CAACC,GAAV,sMAAnC;AAOP,MAAaqB,cAAc,gBAAGtB,MAAM,CAACiB,IAAV,mTAMR;AAAA,MAAC;AAAEd,IAAAA,KAAK,EAAE;AAAEoB,MAAAA;AAAF;AAAT,GAAD;AAAA,SAAiCA,YAAY,CAACC,MAA9C;AAAA,CANQ,EAOL;AAAA,MAAC;AAAErB,IAAAA,KAAK,EAAE;AAAEW,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA4BA,OAAO,CAACW,OAApC;AAAA,CAPK,EAQhB;AAAA,MAAC;AAAEtB,IAAAA,KAAK,EAAE;AAAEW,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA4BA,OAAO,CAACY,WAApC;AAAA,CARgB,CAApB;AAYP,MAAaC,wBAAwB,gBAAG3B,MAAM,CAACC,GAAV,sOACvB;AAAA,MAAC;AAAE2B,IAAAA;AAAF,GAAD;AAAA,SAAkBA,OAAO,GAAG,UAAH,GAAgB,UAAzC;AAAA,CADuB,EAGxB;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAkBA,OAAO,GAAG,CAAH,GAAO,CAAhC;AAAA,CAHwB,EAIrB;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAkBA,OAAO,GAAG,SAAH,GAAe,QAAxC;AAAA,CAJqB,CAA9B;AASP,MAAaC,wBAAwB,gBAAG7B,MAAM,CAAC2B,wBAAD,CAAT,sJAA9B;AAKP,MAAaG,kBAAkB,gBAAG9B,MAAM,CAACiB,IAAV,2FAAxB;AAEP,MAAac,yBAAyB,gBAAG/B,MAAM,CAACC,GAAV,qcAOlC6B,kBAPkC,EAiBb;AAAA,MAAC;AAAE3B,IAAAA,KAAK,EAAE;AAAEW,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA2BA,OAAO,CAACC,WAAnC;AAAA,CAjBa,EAsBhCe,kBAtBgC,CAA/B;AA4BP,MAAaE,qBAAqB,gBAAGhC,MAAM,CAACC,GAAV,uLAMtB;AAAA,MAAC;AAAEgC,IAAAA,SAAF;AAAaC,IAAAA,SAAb;AAAwBC,IAAAA;AAAxB,GAAD;AAAA,SACRA,UAAU,GAAG,CAACD,SAAS,IAAI,CAAd,IAAmB,CAAtB,GAA0BD,SAD5B;AAAA,CANsB,EAQpB;AAAA,MAAC;AAAEE,IAAAA;AAAF,GAAD;AAAA,SAAqBA,UAAU,GAAG,MAAH,GAAY,QAA3C;AAAA,CARoB,CAA3B;AAYP,MAAaC,mBAAmB,gBAAGpC,MAAM,CAACC,GAAV,+MAAzB;;AAQP,MAAMoC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,KAAD;AAAA,MAACA,KAAD;AAACA,IAAAA,KAAD,GAAS,CAAT;AAAA;;AAAA,SAAezB,GAAf,qeAkBPyB,KAAK,GAAG,CAlBD,EAmBfA,KAnBe,EAoBdA,KApBc;AAAA,CAA5B;;AAwBA,MAAMC,0BAA0B,GAAG,SAA7BA,0BAA6B,CAACD,KAAD;AAAA,MAACA,KAAD;AAACA,IAAAA,KAAD,GAAS,CAAT;AAAA;;AAAA,SAAezB,GAAf,8jBAQvByB,KARuB,EAwBrBA,KAxBqB,EAyBhBE,IAAI,CAACC,KAAL,CAAWH,KAAK,GAAG,CAAnB,CAzBgB;AAAA,CAAnC;;AA8BA,MAAMI,0BAA0B,gBAAG7B,GAAH,wIAAhC;AAKA,MAAa8B,aAAa,gBAAG3C,MAAM,CAACC,GAAV,8RAEd;AAAA,MAAC;AAAEP,IAAAA;AAAF,GAAD;AAAA,SACRF,eAAe,CACb,CAAC,aAAD,EAAgB,cAAhB,CADa,EAEbE,SAFa,CAAf,GAII,IAJJ,GAKI,CANI;AAAA,CAFc,EASV;AAAA,MAAC;AAAE4C,IAAAA;AAAF,GAAD;AAAA,SAAgB,OAAOA,KAAP,KAAiB,QAAjB,GAA4B,MAA5B,GAAqCA,KAArD;AAAA,CATU,EAab;AAAA,MAAC;AAAE5B,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,IAAH,GAAU,CAArC;AAAA,CAba,EAetB;AAAA,MAAC;AAAE4B,IAAAA,KAAF;AAAS5C,IAAAA;AAAT,GAAD;AAAA,SACAF,eAAe,CAAC,MAAD,EAASE,SAAT,CAAf,IACA2C,mBAAmB,CAACC,KAAD,CAFnB;AAAA,CAfsB,EAmBtB;AAAA,MAAC;AAAEA,IAAAA,KAAF;AAAS5C,IAAAA;AAAT,GAAD;AAAA,SACAF,eAAe,CACb,CAAC,aAAD,EAAgB,cAAhB,CADa,EAEbE,SAFa,CAAf,IAGK6C,0BAA0B,CAACD,KAAD,CAJ/B;AAAA,CAnBsB,CAAnB;AA0BP,MAAaM,cAAc,gBAAG5C,MAAM,CAAC2C,aAAD,CAAT,kPAApB;AAUP,MAAME,oBAAoB,gBAAGhC,GAAH,iOAMtB+B,cANsB,CAA1B;AAYA,MAAME,2BAA2B,gBAAGjC,GAAH,qOAK7B+B,cAL6B,CAAjC;AAWA,MAAaG,mBAAmB,gBAAG/C,MAAM,CAACC,GAAV,0LAAzB;AAOP,MAAa+C,yBAAyB,gBAAGhD,MAAM,CAACC,GAAV,uIAA/B;AAKP,MAAagD,wBAAwB,gBAAGjD,MAAM,CAACC,GAAV,2IAA9B;AAKP,MAAaiD,uBAAuB,gBAAGlD,MAAM,CAACC,GAAV,+HAA7B;AAIP,MAAakD,qBAAqB,gBAAGnD,MAAM,CAACkD,uBAAD,CAAT,2FAA3B;AAEP,MAAME,0BAA0B,gBAAGvC,GAAH,oLAI5B8B,aAJ4B,CAAhC;AASA,MAAMU,sBAAsB,gBAAGxC,GAAH,qYAQxB;AAAA,MAAC;AAAEyC,IAAAA;AAAF,GAAD;AAAA,SAAgBA,MAAM,IAAIF,0BAA1B;AAAA,CARwB,EAUxBT,aAVwB,EAqBtB;AAAA,MAAC;AAAEjD,IAAAA;AAAF,GAAD;AAAA,SACAF,eAAe,CACb,CAAC,aAAD,EAAgB,cAAhB,CADa,EAEbE,SAFa,CAAf,IAGKgD,0BAJL;AAAA,CArBsB,CAA5B;AA6BA,MAAaa,cAAc,gBAAGvD,MAAM,CAACC,GAAV,iNAYvB;AAAA,MAAC;AAAEqD,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,gBAAG1D,MAAM,CAACC,GAAV,oXAIhC0C,aAJgC,CAA7B;AAiBP,MAAagB,eAAe,gBAAG3D,MAAM,CAACC,GAAV,+MAArB;AAQP,MAAa2D,oBAAoB,gBAAG5D,MAAM,CAACC,GAAV,2aAA1B;AAsBP,MAAa4D,oBAAoB,gBAAG7D,MAAM,CAAC4C,cAAD,CAAT,6JAA1B;AAMP,MAAakB,qBAAqB,gBAAG9D,MAAM,CAACC,GAAV,mLAA3B;AAOP,MAAa8D,sBAAsB,gBAAG/D,MAAM,CAACC,GAAV,2IAA5B;;MCvcM+D,gBAAgB,GAAG,GAAzB;AAKP,IAAYC,UAAZ;;AAAA,WAAYA;AACVA,EAAAA,iCAAA,qBAAA;AACAA,EAAAA,sBAAA,wBAAA;AACAA,EAAAA,iBAAA,iCAAA;AACAA,EAAAA,yBAAA,gBAAA;AACD,CALD,EAAYA,UAAU,KAAVA,UAAU,KAAA,CAAtB;;AAYA,MAAMC,iBAAiB,GAAmC,CAACC,SAAD,EAAYC,QAAZ,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,OAAO,CAACD,IAAD,CAAX,EAAmB;AACjB,eAAOE,MAAM,CAACF,IAAD,CAAb;AACD;AACF;;AAED,WAAO,IAAP;AACD;;AAED,QAAMG,UAAU,GAAGD,MAAM,CAACN,OAAD,CAAzB;AAEA,SAAOK,OAAO,CAACE,UAAD,CAAP,GAAsBA,UAAtB,GAAmC,IAA1C;AACD,CAlBM;AAoBP,MAAaC,UAAU,GAAG,SAAbA,UAAa,CACxBJ,IADwB;MAExB;AAAEK,IAAAA,UAAU,GAAGb,UAAU,CAACc,mBAA1B;AAA+CC,IAAAA,YAAY,GAAGhB;AAA9D,yBAAsG;AAEtG,QAAMiB,SAAS,GAAGR,IAAI,GAAGF,OAAO,CAACE,IAAD,CAAV,GAAmB,IAAzC;;AAEA,MAAIC,OAAO,CAACO,SAAD,CAAX,EAAwB;AACtB,WAAOC,MAAM,CAACD,SAAD,EAAoBH,UAApB,CAAb;AACD;;AAED,SAAOE,YAAY,CAACG,QAAb,EAAP;AACD,CAXM;;SCzCSC,iBACdC,GACAC,gBACAC;MADAD;AAAAA,IAAAA,iBAAiB;;;MACjBC;AAAAA,IAAAA,QAAwB;;;AAExB,QAAM,CAACC,GAAD,EAAMC,IAAN,IAAcJ,CAAC,CAACK,OAAF,CAAUJ,cAAV,EAA0BK,KAA1B,CAAgC,GAAhC,CAApB;AACA,QAAMC,aAAa,GAAGJ,GAAG,CAACK,OAAJ,CAAY,uBAAZ,EAAqC,GAArC,CAAtB;AAEA,SAAO,CAACD,aAAD,EAAgBH,IAAhB,EAAsBK,IAAtB,CAA2BP,KAA3B,CAAP;AACD;;SCTeQ,WAAWzD;AACzB,QAAM0D,WAAW,GAAG,oDAApB;AAEA,SAAO,CAACC,aAAa,CAAC3D,KAAD,CAAd,IAAyBA,KAAK,CAAC4D,KAAN,CAAYF,WAAZ,CAAhC;AACD;AAED,SAAgBC,cAAc3D;AAC5B,QAAM6D,SAAS,GAAG,6BAAlB;AAEA,SAAOA,SAAS,CAACC,IAAV,CAAe9D,KAAf,CAAP;AACD;AAED,SAAgB+D,cAAc/D;AAC5B,QAAMgE,SAAS,GAAG,gBAAlB;AAEA,SAAOA,SAAS,CAACF,IAAV,CAAe9D,KAAf,CAAP;AACD;AAED,SAAgBiE,eAAejE;AAC7B,QAAMkE,UAAU,GAAG,gBAAnB;AAEA,SAAOA,UAAU,CAACJ,IAAX,CAAgB,CAAC,CAAC9D,KAAF,EAAS6C,QAAT,EAAhB,CAAP;AACD;AAED,SAAgBsB,qBAAqBnE;AACnC,QAAMoE,UAAU,GAAG,8BAAnB;AACA,SAAOA,UAAU,CAACN,IAAX,CAAgB9D,KAAhB,CAAP;AACD;AAED,SAAgBqE,mBAAmBrE;AACjC,SAAO2D,aAAa,CAAC3D,KAAD,CAAb,IAAwB+D,aAAa,CAAC/D,KAAD,CAArC,IAAgDiE,cAAc,CAACjE,KAAD,CAArE;AACD;AAED,SAAgBsE,gBAAgBtE;AAC9B,QAAM0D,WAAW,GAAG,oDAApB;AAEA,SACE,CAACW,kBAAkB,CAACrE,KAAD,CAAnB,IACA,CAACmE,oBAAoB,CAACnE,KAAD,CADrB,IAEA0D,WAAW,CAACI,IAAZ,CAAiB9D,KAAjB,CAHF;AAKD;AAED,SAAgBuE,eAAevE;AAC7B,SAAOwE,aAAa,CAACxE,KAAD,CAAb,IAAwBA,KAAK,CAAC1C,QAAN,CAAe,GAAf,CAA/B;AACD;AAED,SAAgBkH,cAAcxE;AAC5B,MAAIyE,UAAU,CAACzE,KAAD,CAAd,EAAuB;AACrB,WAAO,IAAP;AACD;;AAED,QAAM0E,SAAS,GAAG,kGAAlB;AAEA,QAAMC,OAAO,GAAG3E,KAAK,CAAC4D,KAAN,CAAYc,SAAZ,CAAhB;AAEA,SAAOC,OAAO,KAAK,IAAnB;AACD;AAED,SAAgBF,WAAWzE;AACzB,MAAI;AACF,QAAI4E,GAAJ,CAAQ5E,KAAR;AACD,GAFD,CAEE,OAAO6E,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,GAAIC,GAAD,IAAkBT,UAAU,CAACS,GAAD,CAAV,GAAkBA,GAAlB,UAA6BA,GAA/D;;AC3DP,MAAMC,eAAe,GAAInF,KAAD,KAAoB;AAC1CxC,EAAAA,IAAI;;AADsC;AAE1CwC,EAAAA;AAF0C,CAApB,CAAxB;;AAKA,MAAMoF,YAAY,GAAIpF,KAAD,KAAoB;AACvCxC,EAAAA,IAAI;;AADmC;AAEvCwC,EAAAA;AAFuC,CAApB,CAArB;;AAKA,MAAMqF,aAAa,GAAIrF,KAAD,KAAoB;AACxCxC,EAAAA,IAAI;;AADoC;AAExCwC,EAAAA;AAFwC,CAApB,CAAtB;;AAKA,MAAMsF,cAAc,GAAItF,KAAD,KAAoB;AACzCxC,EAAAA,IAAI;;AADqC;AAEzCwC,EAAAA;AAFyC,CAApB,CAAvB;;AAKA,MAAMuF,sBAAsB,GAAIvF,KAAD;AAC7B,MAAIuE,cAAc,CAACvE,KAAD,CAAlB,EAA2B;AACzB,WAAOqF,aAAa,CAACrF,KAAD,CAApB;AACD;;AAED,MAAIwE,aAAa,CAACxE,KAAD,CAAjB,EAA0B;AACxB,WAAOoF,YAAY,CAACpF,KAAD,CAAnB;AACD;;AAED,MAAIsE,eAAe,CAACtE,KAAD,CAAnB,EAA4B;AAC1B,WAAOsF,cAAc,CAACtF,KAAD,CAArB;AACD;;AAED,SAAOmF,eAAe,CAACnF,KAAD,CAAtB;AACD,CAdD;;AAgBA,MAAMwF,qBAAqB,GAAIxF,KAAD;AAC5B,QAAMyF,MAAM,GAAGhC,UAAU,CAACzD,KAAD,CAAzB;;AAEA,MACE,CAACqE,kBAAkB,CAACrE,KAAD,CAAnB,IACA,CAACmE,oBAAoB,CAACnE,KAAD,CADrB,IAEAyF,MAFA,IAGAA,MAAM,CAACC,MAJT,EAKE;AACA,WAAOD,MAAM,CAACE,GAAP,CAAWL,cAAX,CAAP;AACD;;AAED,QAAMM,eAAe,GAAG5F,KAAK,CAACqD,KAAN,CAAY,OAAZ,EAAqBsC,GAArB,CAAyBJ,sBAAzB,CAAxB;;AAEA,MAAIK,eAAe,CAACC,KAAhB,CAAsB;AAAA,QAAC;AAAErI,MAAAA;AAAF,KAAD;AAAA,WAAcA,IAAI,MAAlB;AAAA;;AAAtB,GAAJ,EAA6E;AAC3E,WAAO,CACL2H,eAAe,CACbS,eAAe,CACZD,GADH,CACO;AAAA,UAAC;AAAE3F,QAAAA;AAAF,OAAD;AAAA,aACH8F,KAAK,CAAC,CAAC9F,KAAF,CAAL,IAAiBqE,kBAAkB,CAACrE,KAAD,CAAnC,GACIiE,cAAc,CAACjE,KAAD,CAAd,GACE,CAACA,KADH,GAEEA,KAHN,GAII8C,gBAAgB,CAAC,CAAC9C,KAAF,EAAS,CAAT,EAAY,EAAZ,CALjB;AAAA,KADP,EAQGwD,IARH,CAQQ,GARR,CADa,CADV,CAAP;AAaD;;AAED,SAAOoC,eAAP;AACD,CA/BD;;AAiCA,MAAMG,uBAAuB,GAAI/F,KAAD,IAC9BmF,eAAe,CAACnF,KAAK,CAAC6C,QAAN,EAAD,CADjB;;AAGA,MAAMmD,kBAAkB,GAAIhG,KAAD,IACzBmF,eAAe,CAACrC,gBAAgB,CAAC9C,KAAD,EAAQ,CAAR,EAAW,EAAX,CAAjB,CADjB;;AAGA,MAAMiG,gBAAgB,GAAG,CAAzB;;AAEA,MAAMC,qBAAqB,GAAIlG,KAAD,IAC5BmF,eAAe,CAACrC,gBAAgB,CAAC9C,KAAD,EAAQiG,gBAAR,EAA0B,GAA1B,CAAjB,CADjB;;AAGA,MAAME,iBAAiB,GACrBnG,KADwB,IAEMA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKoG,SAF5D;;AAIA,MAAMC,oBAAoB,GAAG;AAC3B7I,EAAAA,IAAI;;AADuB;AAE3BwC,EAAAA,KAAK,EAAE0B;AAFoB,CAA7B;AAKA,MAAa4E,oBAAoB,GAC/BC,SADkC;AAGlC,MAAIJ,iBAAiB,CAACI,SAAS,CAACvG,KAAX,CAArB,EAAwC;AACtC,WAAO,CAACqG,oBAAD,CAAP;AACD;;AAED,UAAQE,SAAS,CAAC/I,IAAlB;AACE,SAAK,QAAL;AACE,aAAOgI,qBAAqB,CAACe,SAAS,CAACvG,KAAX,CAA5B;;AACF,SAAK,UAAL;AACE,aAAO,CAAC+F,uBAAuB,CAACQ,SAAS,CAACvG,KAAX,CAAxB,CAAP;;AACF,SAAK,OAAL;AACA,SAAK,OAAL;AACE,aAAO,CAACgG,kBAAkB,CAACO,SAAS,CAACvG,KAAX,CAAnB,CAAP;;AACF,SAAK,QAAL;AACE,aAAO,CAACkG,qBAAqB,CAACK,SAAS,CAACvG,KAAX,CAAtB,CAAP;;AACF;AACE,aAAO,CAACqG,oBAAD,CAAP;AAXJ;AAaD,CApBM;;SCZSG,aAAaxG;AAC3B,SAAOyG,OAAO,CAACzG,KAAK,IAAI,UAAUA,KAApB,CAAd;AACD;AAED,SAAgB0G,cACd1G;AAEA,SAAOyG,OAAO,CAACzG,KAAK,IAAI,iBAAiBA,KAA3B,CAAd;AACD;;AC3FD,MAAM2G,eAAe,GAAe;AAClC;AACAJ,EAAAA,SAAS,EAAE,IAFuB;AAGlC;AACAK,EAAAA,SAAS,EAAE,IAJuB;AAKlC5G,EAAAA,KAAK,EAAE;AAL2B,CAApC;AAQA,IAAa6G,uBAAb;AAIE,mCAAYC,SAAZ;;;AAFiB,oBAAA,GAA4B,EAA5B;AAGf,SAAKA,SAAL,GAAiBA,SAAjB;AACA,UAAMC,eAAe,GAAG,IAAIC,oBAAJ,CAAyBF,SAAzB,EAAoC9G,KAA5D;AAEA,SAAKiH,WAAL,GACEF,eAAe,YAAYG,KAA3B,GAAmC,EAAnC,GAAwCH,eAAe,CAACE,WAD1D;AAED;;AAVH;AAAA;AAAA,SAYE;AACE,aAAO,KAAKE,cAAL,CAAoBZ,SAA3B;AACD;AAdH;AAAA;AAAA,SAgBE;AACE,UAAI,KAAKa,QAAL,EAAJ,EAAqB;AACnB,cAAM;AAAEpH,UAAAA;AAAF,YAAY,KAAKmH,cAAvB;AAEA,eAAO,OAAOnH,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoC,EAA3C;AACD;;AAEDqH,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,CAAiBvB,MAAjB,KAA4B,CAAhC,EAAmC;AACjC,cAAM;AAAE1F,UAAAA,KAAK,EAAEwH;AAAT,YAAkB,KAAKL,cAA7B;AACA,cAAM;AAAEnH,UAAAA,KAAK,EAAEyH;AAAT,YAAgB,KAAKC,eAA3B;AAEA,eAAO,CAACF,IAAD,EAAOC,EAAP,CAAP;AACD;;AAED,UAAI,KAAKR,WAAL,CAAiBvB,MAAjB,KAA4B,CAAhC,EAAmC;AACjC,cAAM;AAAEkB,UAAAA,SAAF;AAAa5G,UAAAA;AAAb,YAAuB,KAAKmH,cAAlC;AACA,cAAMQ,MAAM,GAAGf,SAAS,KAAKgB,SAAS,CAACC,IAAvC;AAEA,eAAO,CAACF,MAAM,GAAG3H,KAAH,GAAW,IAAlB,EAAwB2H,MAAM,GAAG,IAAH,GAAU3H,KAAxC,CAAP;AACD;;AAED,aAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACD;AApDH;AAAA;AAAA,SAsDE;AACE,aAAO,KAAKoH,QAAL;;AAAA;;AAAP;AAGD;AA1DH;AAAA;AAAA,WA4DS;AACL,aAAO,KAAKD,cAAL,CAAoBP,SAApB,KAAkCgB,SAAS,CAACE,IAAnD;AACD;AA9DH;AAAA;AAAA,WAgES;AACL,aAAO,CACLF,SAAS,CAACC,IADL,EAELD,SAAS,CAACG,KAFL,EAGLH,SAAS,CAACI,IAHL,EAILJ,SAAS,CAACK,KAJL,EAKL3K,QALK,CAKI,KAAK6J,cAAL,CAAoBP,SALxB,CAAP;AAMD;AAvEH;AAAA;AAAA,WAyES;AACL,aAAO,KAAKE,SAAZ;AACD;AA3EH;AAAA;AAAA,SA6EE;AACE,aAAO,KAAKG,WAAL,CAAiBvB,MAAjB,GAA0B,CAA1B,GAA8B,KAAKuB,WAAL,CAAiB,CAAjB,CAA9B,GAAoDN,eAA3D;AACD;AA/EH;AAAA;AAAA,SAiFE;AACE,aAAO,KAAKM,WAAL,CAAiBvB,MAAjB,GAA0B,CAA1B,GAA8B,KAAKuB,WAAL,CAAiB,CAAjB,CAA9B,GAAoDN,eAA3D;AACD;AAnFH;;AAAA;AAAA;;ACdO,MAAMuB,mBAAmB,GAAG,GAA5B;AAEP,AAAO,MAAMC,gBAAgB,GAC3B/K,SAD8B,IAG9BA,SAAS,CAACiG,KAAV,CAAgB6E,mBAAhB,CAHK;AAKP,AAAO,MAAME,gBAAgB,GAC3BC,KAD8B,IAG9BA,KAAK,CAAC7E,IAAN,CAAW0E,mBAAX,CAHK;;SCTSI,SAAYtI;AAC1B,SAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAAvC,IAA+C,CAACuI,KAAK,CAACC,OAAN,CAAcxI,KAAd,CAAvD;AACD;;MCiBYyI,sBAAsB,GACjCzI,KADoC,IAGpCyG,OAAO,CACL6B,QAAQ,CAACtI,KAAD,CAAR,IACG,CAAAA,KAAwD,QAAxD,YAAAA,KAAwD,CAAExC,IAA1D,MACC,aAHC,CAHF;AASP,MAAakL,qBAAqB,GAChC1I,KADmC,IAGnCyG,OAAO,CACL6B,QAAQ,CAACtI,KAAD,CAAR,IACG,CAAAA,KAAuD,QAAvD,YAAAA,KAAuD,CAAExC,IAAzD,MACC,YAHC,CAHF;AASP,MAAamL,iBAAiB,GAC5B3I,KAD+B;AAG/B,MAAIyI,sBAAsB,CAACzI,KAAD,CAAtB,IAAiC0I,qBAAqB,CAAC1I,KAAD,CAA1D,EAAmE;AACjE,WAAOA,KAAK,CAAC0C,YAAb;AACD;;AAED,SAAO1C,KAAP;AACD,CARM;AAUP,MAAa4I,qBAAqB,GAChCC,aADmC,IAEhC,CACHC,MADG,EAEH1L,SAFG;AAIH,QAAMiL,KAAK,GAAGE,KAAK,CAACC,OAAN,CAAcpL,SAAd,IACVA,SADU,GAEV+K,gBAAgB,CAAC/K,SAAD,CAFpB;AAGA,QAAM,CAAC2L,QAAD,EAAW,GAAGC,QAAd,IAA0BX,KAAhC;;AAGA,QAAMY,UAAU,GAAGH,MAAM,CAACC,QAAD,CAAzB;;AAEA,MAAIC,QAAQ,CAACtD,MAAb,EAAqB;AACnB,UAAMwD,QAAQ,GAAGN,qBAAqB,CAACC,aAAD,CAAtC;AAEA,wBACKC,MADL;AAEE,OAACC,QAAD,GAAYG,QAAQ,CAACD,UAAD,EAAaD,QAAb,CAAR,IAAkCC;AAFhD;AAID;;AAED,sBACKH,MADL;AAEE,KAACC,QAAD,GAAYF,aAAa,CAACI,UAAD,CAAb,IAA6BA;AAF3C;AAID,CA3BM;AA6BP,MAAaE,wBAAwB,gBAAGP,qBAAqB,CAC3DD,iBAD2D,CAAtD;AAIP,MAAaS,iBAAiB,GAAG,CAC/BN,MAD+B,EAE/BO,IAF+B,EAG/BrJ,KAH+B,KAIzB4I,qBAAqB,CAAC,MAAM5I,KAAP,CAArB,CAAmC8I,MAAnC,EAA2CO,IAA3C,CAJD;AAMP,SAAgBC,oBACdR,QACAO,MACArJ;AAEA,MAAIqJ,IAAI,KAAK,QAAb,EAAuB;AACrB,WAAOrJ,KAAP;AACD;;AAED,SAAOoJ,iBAAiB,CAACN,MAAD,EAASO,IAAT,EAAerJ,KAAf,CAAxB;AACD;;MC7CYuJ,eAAe,GAC1B/L,IAD6B,IAEzBsL,MAAD,IACHA,MAAM,IAAIA,MAAM,CAACtL,IAAP,KAAgBA,IAHrB;;MCxBMgM,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,GAAIb,MAAD,IAC3BrC,OAAO,CACLqC,MAAM,KACHU,kBAAkB,CAACV,MAAD,CAAlB,IACCW,oBAAoB,CAACX,MAAD,CADrB,IAECY,qBAAqB,CAACZ,MAAD,CAHnB,CADD,CADF;;;ACnCP,MAWac,qBAAqB,GAChCC,YADmC,KAEV;AACzBrM,EAAAA,IAAI,EAAE,iBADmB;AAEzBqM,EAAAA;AAFyB,CAFU,CAA9B;AAOP,MAAaC,eAAe,GAAIhB,MAAD;AAC7B,MAAI,CAACA,MAAD,IAAW,CAACiB,iBAAiB,CAACjB,MAAD,CAAjC,EAA2C,OAAO,EAAP;AAE3C,SAAOA,MAAM,CAACe,YAAP,IAAuB,EAA9B;AACD,CAJM;AAMP,MAAaG,aAAa,GACxBlB,MAD2B;AAG3B,QAAMe,YAAY,GAAGC,eAAe,CAAChB,MAAD,CAApC;AAEA,SAAO;AACL;AACAA,IAAAA,MAAM,EAAEe,YAAY,CAACI,IAAb,CAAkBC,cAAlB,CAFH;AAGLC,IAAAA,KAAK,EAAEN,YAAY,CAACI,IAAb,CAAkBN,aAAlB,KAAoC,IAHtC;AAILS,IAAAA,MAAM,EAAEP,YAAY,CAACI,IAAb,CAAkBI,cAAlB,KAAqC;AAJxC,GAAP;AAMD,CAXM;AAaP,MAAaC,YAAY,GAAIC,KAAD;AAC1B;AACA,MAAIR,iBAAiB,CAACQ,KAAK,CAACzB,MAAP,CAArB,EAAqC;AACnC,wBACKyB,KADL,EAEKP,aAAa,CAACO,KAAK,CAACzB,MAAP,CAFlB;AAGE;AACA0B,MAAAA,QAAQ,EAAED,KAAK,CAACC,QAAN,IAAkBD,KAAK,CAACC,QAAN,CAAe7E,GAAf,CAAmB2E,YAAnB;AAJ9B;AAMD;;;AAGD,SAAQC,KAAK,IAAI,EAAjB;AACD,CAbM;AAeP,MAAaE,SAAS,GAAIF,KAAD;AACvB,QAAM;AAAEG,IAAAA,WAAF;AAAeP,IAAAA,KAAf;AAAsBrB,IAAAA,MAAtB;AAA8BsB,IAAAA,MAA9B;AAAsCI,IAAAA;AAAtC,MAA+DD,KAArE;AAAA,QAAyDI,OAAzD,iCAAqEJ,KAArE;;AACA,QAAMV,YAAY,GAAG,CAAC,CAACa,WAAD,IAAgBP,KAAjB,EAAwBC,MAAxB,EAAgCQ,MAAhC,CAAuCnE,OAAvC,CAArB;AAEA,sBACKkE,OADL;AAEE7B,IAAAA,MAAM,EAAEe,YAAY,CAACnE,MAAb;AAEJkE,IAAAA,qBAAqB,CAAC,CAACd,MAAD,EAAS,GAAGe,YAAZ,CAAD,CAFjB,GAGJf,MALN;AAME;AACA0B,IAAAA,QAAQ,EAAEA,QAAQ;AAEdA,IAAAA,QAAQ,CAAC7E,GAAT,CAAakF,UAAU,IACrBJ,SAAS,cAAMI,UAAN;AAAkBH,MAAAA,WAAlB;AAA+BP,MAAAA;AAA/B,OADX,CAFc,GAKdK;AAZN;AAcD,CAlBM;;MCsDMM,aAAa,gBAAGvB,eAAe,CAAc,mBAAd,CAArC;AAEP,MAAawB,cAAc,gBAAGxB,eAAe,CAC3C,mBAD2C,CAAtC;AAIP,MAAayB,mBAAmB,gBAAGzB,eAAe,CAChD,wBADgD,CAA3C;AAIP,MAAa0B,mBAAmB,gBAAG1B,eAAe,CAChD,kBADgD,CAA3C;AAIP,MAAa2B,wBAAwB,gBAAG3B,eAAe,CAA2B,wBAA3B,CAAhD;AAEP,MAAa4B,eAAe,gBAAG5B,eAAe,CAAgB,eAAhB,CAAvC;AAEP,MAAa6B,gBAAgB,gBAAG7B,eAAe,CAC7C,gBAD6C,CAAxC;AAIP,MAAa8B,sBAAsB,gBAAG9B,eAAe,CACnD,sBADmD,CAA9C;AAIP,MAAa+B,iBAAiB,GAC5BxC,MAD+B,IAG/BrC,OAAO,CACLqC,MAAM,KAAKsC,gBAAgB,CAACtC,MAAD,CAAhB,IAA4BuC,sBAAsB,CAACvC,MAAD,CAAvD,CADD,CAHF;AAOP,MAAaiB,iBAAiB,gBAAGR,eAAe,CAC9C,iBAD8C,CAAzC;AAGP,MAAac,cAAc,gBAAGd,eAAe,CAAe,cAAf,CAAtC;AAEP,MAAagC,aAAa,GAAIzC,MAAD,IAC3BrC,OAAO,CACLqC,MAAM,KAAKkC,mBAAmB,CAAClC,MAAD,CAAnB,IAA+BmC,mBAAmB,CAACnC,MAAD,CAAvD,CADD,CADF;AAKP,MAAa0C,sBAAsB,GACjC1C,MADoC,IAEVrC,OAAO,CAACqC,MAAM,IAAI,WAAWA,MAAtB,CAF5B;AAIP,MAAa2C,eAAe,GAC1B3C,MAD6B,IAEGrC,OAAO,CAACqC,MAAM,IAAI,UAAUA,MAArB,CAFlC;AAIP,MAAa4C,oBAAoB,GAC/B5C,MADkC,IAGlCrC,OAAO,CAACqC,MAAM,KAAKqC,eAAe,CAACrC,MAAD,CAAf,IAA2BwC,iBAAiB,CAACxC,MAAD,CAAjD,CAAP,CAHF;AAKP,MAAa6C,wBAAwB,GACnC7C,MADsC,IAGrCA,MAAM,CAAC8C,SAAP,KAAqB,IAArB,IAA6B9C,MAAM,CAAC+C,MAAP,KAAkB,IAAhD,IACC/C,MAAM,CAACgD,MAAP,IAAiBhD,MAAM,CAACgD,MAAP,CAActO,IAAd,KAAuB,OAJpC;AAMP,MAAa0M,cAAc,GACzBpB,MAD4B,IAG5BrC,OAAO,CACLqC,MAAM,IACJ,CAACa,aAAa,CAACb,MAAD,CADhB,IAEE,CAACiB,iBAAiB,CAACjB,MAAD,CAFpB,IAGE,CAACuB,cAAc,CAACvB,MAAD,CAJZ,CAHF;AAUP,MAAaiD,cAAc,gBAAGxC,eAAe,CAAiB,QAAjB,CAAtC;AAEP,MAAayC,gBAAgB,gBAAGzC,eAAe,CAAiB,gBAAjB,CAAxC;AAEP,MAAa0C,eAAe,gBAAG1C,eAAe,CAAoB,SAApB,CAAvC;AAEP,MAAapL,kBAAkB,GAAG,CAAC2K,MAAD,EAA0B1L,SAA1B;AAChC,SAAO6O,eAAe,CAACnD,MAAD,CAAf,IAA2B1L,SAAS,KAAK,WAAhD;AACD,CAFM;AAIP,MAAa8O,kBAAkB,GAAG,SAArBA,kBAAqB,CAACpD,MAAD,EAA0BqD,cAA1B;;;MAA0BA;AAAAA,IAAAA,iBAAiB;;;AAC3E,QAAMC,SAAS,GAAGrC,iBAAiB,CAACjB,MAAD,CAAjB,qBAAmDkB,aAAa,CAAClB,MAAD,CAAhE,qBAAmD,eAAuBA,MAA1E,GAAmFA,MAArG;AAEA,SAAOqD,cAAc,IAAIF,eAAe,CAACG,SAAD,CAAjC,GACDA,SAA+B,CAACC,kBAD/B,GAEHD,SAFJ;AAGD,CANM;;MC5KME,YAAY,gBAAG/C,eAAe,CAAa,OAAb,CAApC;AACP,MAAagD,cAAc,gBAAGhD,eAAe,CAAe,SAAf,CAAtC;AACP,MAAaiD,aAAa,gBAAGjD,eAAe,CAAc,QAAd,CAArC;AACP,MAAakD,YAAY,gBAAGlD,eAAe,CAAa,OAAb,CAApC;AAEP,MAAamD,wBAAwB,GACnC5D,MADsC,IAGtCrC,OAAO,CAACqC,MAAM,IAAIqC,eAAe,CAACrC,MAAD,CAAzB,IAAqCyD,cAAc,CAACzD,MAAM,CAAC6D,IAAR,CAApD,CAHF;AAKP,MAAaC,sBAAsB,GACjC9D,MADoC,IAGpCrC,OAAO,CAACqC,MAAM,IAAIqC,eAAe,CAACrC,MAAD,CAAzB,IAAqCwD,YAAY,CAACxD,MAAM,CAAC6D,IAAR,CAAlD,CAHF;;MCiCME,YAAY,GACvBC,KAD0B,IAG1BrG,OAAO,CAACqG,KAAK,IAAIA,KAAK,CAACtP,IAAN,KAAeuP,cAAc,CAACC,IAAxC,CAHF;AAKP,MAAaC,kBAAkB,GAC7BH,KADgC,IAGhCA,KAAK,CAACtP,IAAN,KAAeuP,cAAc,CAACG,YAA9B,IACAJ,KAAK,CAACtP,IAAN,KAAeuP,cAAc,CAACI,WAD9B,IAEAL,KAAK,CAACtP,IAAN,KAAeuP,cAAc,CAACK,YALzB;AAOP,MAAaC,gBAAgB,GAC3BP,KAD8B,IAG9BA,KAAK,CAACtP,IAAN,KAAeuP,cAAc,CAACO,KAA9B,IACAR,KAAK,CAACtP,IAAN,KAAeuP,cAAc,CAACI,WAJzB;AAMP,MAAaI,iBAAiB,GAC5BT,KAD+B,IAG/BA,KAAK,CAACtP,IAAN,KAAeuP,cAAc,CAACS,MAA9B,IACAV,KAAK,CAACtP,IAAN,KAAeuP,cAAc,CAACK,YAJzB;AAMP,MAAaK,iBAAiB,GAC5BX,KAD+B,IAG/BA,KAAK,CAACtP,IAAN,KAAeuP,cAAc,CAACW,MAA9B,IACAZ,KAAK,CAACtP,IAAN,KAAeuP,cAAc,CAACG,YAJzB;;MCvEMS,cAAc,GAAIC,MAAD,IAC5BA,MAAM,IACN,CAACnF,sBAAsB,CAACmF,MAAM,CAAC,CAAD,CAAP,CADvB,IAEA,CAACnF,sBAAsB,CAACmF,MAAM,CAAC,CAAD,CAAP,CAHlB;AAKP,MAAaC,kBAAkB,GAC7B/E,MADgC,IAEFrC,OAAO,CAACqC,MAAM,IAAI,YAAYA,MAAvB,CAFhC;;MCwBMgF,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,GAAIlO,KAAD,IAAmC,YAAYA,KAA/D;;ICNMmO,YAAb;AAIE,wBAAY5D,KAAZ;;;AACE,SAAKA,KAAL,GAAaD,YAAY,CAACC,KAAD,CAAzB;AACA,SAAK6D,qBAAL,GAA6B,IAAIC,qBAAJ,CAA0B,KAAK9D,KAA/B,CAA7B;AACD;;AAPH;AAAA;AAAA,WASS;AACL,aAAOE,SAAS,CAAC,KAAKF,KAAN,CAAhB;AACD;AAXH;AAAA;AAAA,WAaS;AACL,aAAO,CAAC,EACN,KAAKA,KAAL,CAAWH,MAAX,IACA,CAAC,KAAKG,KAAL,CAAWC,QAAX,IAAuB,EAAxB,EAA4BjN,IAA5B,CAAiCgN,KAAK,IAAIA,KAAK,CAACH,MAAhD,CAFM,CAAR;AAID;AAlBH;AAAA;AAAA,SAoBE;AACE,aAAO,KAAKG,KAAL,CAAWzB,MAAlB;AACD;AAtBH;AAAA;AAAA,SAwBE;AACE,aAAO,KAAKyB,KAAL,CAAWH,MAAlB;AACD;AA1BH;AAAA;AAAA,SA2BE;AACE,aAAO,KAAKG,KAAL,CAAWJ,KAAlB;AACD;AA7BH;AAAA;AAAA,SA+BE;AACE,aAAO,KAAKI,KAAL,CAAWC,QAAlB;AACD;AAjCH;AAAA;AAAA,SAmCE;AACE,aAAO,KAAKD,KAAL,CAAW+D,KAAlB;AACD;AArCH;AAAA;AAAA,SAuCE;AACE,aAAO,KAAK/D,KAAL,CAAWzD,SAAlB;AACD;AAzCH;AAAA;AAAA,SA2CE;AACE,aAAO,KAAKyD,KAAL,CAAWG,WAAlB;AACD;AA7CH;AAAA;AAAA,SA+CE;AACE,YAAM;AAAE6D,QAAAA,aAAF;AAAiBC,QAAAA;AAAjB,UAAmC,KAAKjE,KAA9C;AAEA,aAAOgE,aAAa,KAAK,KAAK,CAAvB,IAA4BC,aAAa,KAAK,KAAK,CAAnD,GACH,IADG,GAEH,CAACD,aAAD,EAAgBC,aAAhB,CAFJ;AAGD;AArDH;;AAAA;AAAA;;ACcA,MAAMC,qBAAqB,GAAG,CAC5BV,cAD4B,EAE5BO,KAF4B,EAG5BxH,SAH4B;AAK5BiH,EAAAA,cAL4B;AAM5BO,EAAAA;AAN4B,GAOxBxH,SAAS,CAACM,QAAV,KACA;AACEsH,EAAAA,WAAW,EAAE5H,SAAS,CAAC4H;AADzB,CADA,GAIA;AACElH,EAAAA,IAAI,EAAEV,SAAS,CAAC6H,KAAV,CAAgB,CAAhB,CADR;AAEElH,EAAAA,EAAE,EAAEX,SAAS,CAAC6H,KAAV,CAAgB,CAAhB;AAFN,CAXwB,CAA9B;;AAiBA,MAAMC,cAAc,GAAyB;AAC3CC,EAAAA,YAAY,EAAE,EAD6B;AAE3C;AACAnM,EAAAA,YAAY,EAAE;AAH6B,CAA7C;AAMA,AAAO,MAAMoM,gBAAgB,GAAG,SAAnBA,gBAAmB,CAC9BC,MAD8B,EAE9B3R,SAF8B,EAG9B4R,MAH8B;AAAA,MAG9BA,MAH8B;AAG9BA,IAAAA,MAH8B,GAGCJ,cAHD;AAAA;;AAAA;AAM9BG,IAAAA,MAAM,CAACE,MAAP;AAEE,KAACC,cAAD,EAAyClP,KAAzC;AACE,YAAMmP,uBAAuB,GAAG,IAAItI,uBAAJ,CAC9B7G,KAAK,CAAC8G,SAAN,IAAmB,EADW,CAAhC;AAGA,YAAMsI,mBAAmB,GAAGX,qBAAqB,CAC/CP,OAAO,CAAClO,KAAD,CAAP,GAAiBA,KAAK,CAAC8I,MAAvB,GAAgC9I,KAAK,CAACA,KADS;AAG/CA,MAAAA,KAAK,CAACsO,KAHyC,EAI/Ca,uBAJ+C,CAAjD;AAOAD,MAAAA,cAAc,CAACH,MAAf,CAAsBM,IAAtB,CAA2BD,mBAA3B;AAEA,0BACKF,cADL;AAEE1R,QAAAA,IAAI,EAAE0R,cAAc,CAAC1R,IAAf,IAAuB2R,uBAAuB,CAAC3R,IAFvD;AAGE+I,QAAAA,SAAS,EACP2I,cAAc,CAAC3I,SAAf,IAA4B4I,uBAAuB,CAACG;AAJxD;AAMD,KArBH,eAuBON,MAvBP;AAwBIzI,MAAAA,SAAS,EAAE,IAxBf;AAyBInJ,MAAAA,SAzBJ;AA0BII,MAAAA,IAAI,EAAE,IA1BV;AA2BIuR,MAAAA,MAAM,EAAE;AA3BZ;AAN8B;AAAA,CAAzB;AAqCP,AAAO,MAAMQ,kBAAkB,GAAG,SAArBA,kBAAqB,CAChCzG,MADgC,EAEhC0G,WAFgC;AAAA,MAEhCA,WAFgC;AAEhCA,IAAAA,WAFgC,GAEiB,EAFjB;AAAA;;AAAA,SAIhCC,MAAM,CAACC,OAAP,CAAe5G,MAAf,EAAuBmG,MAAvB,CACE,CAACU,eAAD;QAAkB,CAACvS,SAAD,EAAY2Q,cAAZ;AAChB,UAAM6B,UAAU,GACdpE,sBAAsB,CAAC1C,MAAD,CAAtB,IAAkC1L,SAAS,KAAK,QADlD;AAEA,UAAMyS,IAAI,GAAG,CAACvH,QAAQ,CAACyF,cAAD,CAAT,IAA6B6B,UAA1C;;AAEA,QAAIC,IAAJ,EAAU;AACR,aAAOF,eAAP;AACD;;AAED,QAAI,CAAClH,sBAAsB,CAACsF,cAAD,CAA3B,EAA6C;AAC3C,aAAO,CACL,GAAG4B,eADE;AAGL,SAAGJ,kBAAkB,CAACzG,MAAM,CAAC1L,SAAD,CAAP,EAAoB,CACvC,GAAGoS,WADoC,EAEvCpS,SAFuC,CAApB,CAHhB,CAAP;AAQD;;AAED,UAAM8R,cAAc,GAAGJ,gBAAgB,CACrCf,cAAc,CAACgB,MADsB,EAErC3G,gBAAgB,CAAC,CACf,GAAGoH,WADY,EAEfpS,SAFe,CAAD,CAFqB,EAMrC;AACE;AACAyR,MAAAA,YAAY,EAAEd,cAAc,CAACO,KAF/B;AAGE5L,MAAAA,YAAY,EAAEqL,cAAc,CAACrL;AAH/B,KANqC,CAAvC;AAaA,WAAO,CAAC,GAAGiN,eAAJ,EAAqBT,cAArB,CAAP;AACD,GAnCH,EAoCE,EApCF,CAJgC;AAAA,CAA3B;;IC5EMb,qBAAb;AAGE,iCAAoB9D,KAApB;;;AAAoB,cAAA,GAAAA,KAAA;AAFZ,wBAAA,GAA4C,EAA5C;AAGN,SAAKuF,sBAAL;AACD;;AALH;AAAA;AAAA,SAOE;AACE,aAAO,KAAKH,eAAZ;AACD;AATH;AAAA;AAAA,WAWS,cAAKI,SAAL;AACL,WAAK,MAAMb,cAAX,IAA6B,KAAKS,eAAlC,EAAmD;AACjD,YAAII,SAAS,CAACb,cAAD,CAAb,EAA+B;AAC7B,iBAAOA,cAAP;AACD;AACF;;AAED,aAAO,IAAP;AACD;AAnBH;AAAA;AAAA,WAqBS,gBAAOc,QAAP;AACL,aAAO,KAAKL,eAAL,CAAqB/E,MAArB,CAA4BoF,QAA5B,CAAP;AACD;AAvBH;AAAA;AAAA,WAyBS,aACLA,QADK;AAGL,aAAO,KAAKL,eAAL,CAAqBhK,GAArB,CAAyBqK,QAAzB,CAAP;AACD;AA7BH;AAAA;AAAA,WA+BS,gBACLA,QADK,EAELC,OAFK;AAIL,aAAO,KAAKN,eAAL,CAAqBV,MAArB,CAA4Be,QAA5B,EAAsCC,OAAtC,CAAP;AACD;AApCH;AAAA;AAAA,WAsCS;AACL,aAAO,KAAKN,eAAL,CAAqBjK,MAArB,GAA8B,CAArC;AACD;AAxCH;AAAA;AAAA,WA0CU;AACN,UAAI,KAAK6E,KAAL,CAAWC,QAAX,IAAuB,KAAKD,KAAL,CAAWC,QAAX,CAAoB9E,MAA/C,EAAuD;AACrD,aAAKiK,eAAL,CAAqBN,IAArB,CACEP,gBAAgB,CAAC,KAAKvE,KAAL,CAAWC,QAAZ,EAAsB,QAAtB,CADlB;AAGD;;AAED,UAAI,KAAKD,KAAL,CAAWzB,MAAf,EAAuB;AACrB,aAAK6G,eAAL,CAAqBN,IAArB,CAA0B,GAAGE,kBAAkB,CAAC,KAAKhF,KAAL,CAAWzB,MAAZ,CAA/C;AACD;AACF;AApDH;;AAAA;AAAA;;MCCaoH,UAAU,GACrBpH,MADwB,IAGxB2G,MAAM,CAACC,OAAP,CAAe5G,MAAf,EAAuBmG,MAAvB,CAA8B,CAACkB,UAAD;MAAa,CAAC/S,SAAD,EAAY2Q,cAAZ;AACzC,MAAIqC,MAAM,GAAG7H,KAAK,CAACC,OAAN,CAAcuF,cAAd,IACTA,cAAc,CAACpI,GAAf,CAAmBgD,iBAAnB,CADS,GAETA,iBAAiB,CAACoF,cAAD,CAFrB;;AAIA,MAAIzF,QAAQ,CAAC8H,MAAD,CAAZ,EAAsB;AACpB,wBACKD,UADL;AAEE,OAAC/S,SAAD,GAAa8S,UAAU,CAACnC,cAAD;AAFzB;AAID;;AAED,sBACKoC,UADL;AAEE,KAAC/S,SAAD,GAAagT;AAFf;AAID,CAhBD,EAgBG,EAhBH,CAHK;;ACFA,MAAMC,gBAAgB,GAAG,IAAzB;AAEP,AAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,EAAE,EAAE,EADmB;AAEvBC,EAAAA,EAAE,EAAE;AAFmB,CAAlB;AAKPC,IAAI,CACDC,GADH,CACOC,gBADP,EAEGD,GAFH,CAEOE,gBAFP,EAGGC,IAHH,CAGQ;AACJC,EAAAA,WAAW,EAAET,gBADT;AAEJU,EAAAA,EAAE,EAAEtB,MAAM,CAACuB,IAAP,CAAYV,SAAS,CAACD,gBAAD,CAArB,CAFA;AAGJY,EAAAA,aAAa,EAAE;AACbC,IAAAA,WAAW,EAAE;AADA,GAHX;AAMJZ,EAAAA,SANI;AAOJa,EAAAA,aAAa,EAAE1B,MAAM,CAACuB,IAAP,CAAYV,SAAZ;AAPX,CAHR;;MCRac,eAAe,GAAG,CAACpR,KAAD,EAAoBqR,KAApB;;;AAC7B,QAAMC,QAAQ,GAAG7K,OAAO,CAAC,qBAAAzG,KAAK,CAACuG,SAAN,sCAAiB/I,IAAjB,MAA0B,QAA3B,CAAxB;AACA,QAAM+T,MAAM,GAAG9K,OAAO,CAAC,sBAAAzG,KAAK,CAACuG,SAAN,uCAAiB/I,IAAjB,MAA0B,UAA3B,CAAtB;AACA,QAAM;AAAEgK,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAe+J,cAAc,CAACxR,KAAD,EAAQsR,QAAR,EAAkBC,MAAlB,EAA0BF,KAA1B,CAAnC;;AAEA,MAAI7J,IAAI,KAAK,IAAb,EAAmB;AACjB,WAAUC,EAAV,UAAgB8J,MAAM,GAAGd,IAAI,CAACgB,CAAL,CAAO,WAAP,EAAoB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAApB,CAAH,GAA0CN,IAAI,CAACgB,CAAL,CAAO,SAAP,EAAkB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAlB,CAAhE;AACD;;AAED,MAAItJ,EAAE,KAAK,IAAX,EAAiB;AACf,YAAU8J,MAAM,GAAGd,IAAI,CAACgB,CAAL,CAAO,OAAP,EAAgB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAhB,CAAH,GAAsCN,IAAI,CAACgB,CAAL,CAAO,MAAP,EAAe;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAf,CAAtD,UAAyFvJ,IAAzF;AACD;;AAED,SAAOA,IAAI,KAAKC,EAAT,QAAiBD,IAAjB,GAA6BA,IAA7B,WAAuCC,EAA9C;AACD,CAdM;;AAgBP,SAAS+J,cAAT,OAEEF,QAFF,EAGEC,MAHF,EAIEF,KAJF;MACE;AAAE7J,IAAAA,IAAF;AAAQC,IAAAA;AAAR;AAKA,SAAO;AACLD,IAAAA,IAAI,EAAEA,IAAI,KAAK,IAAT,IAAiB6J,KAAK,KAAK,CAA3B,GACHE,MAAM,GAAG/J,IAAH,GAAW8J,QAAQ,GAAG,CAAC9J,IAAJ,GAAW,CAACA,IAAD,GAAQ,CADzC,GAC+CA,IAFhD;AAGLC,IAAAA;AAHK,GAAP;AAKD;;SC5BeiK,kBACd5K,WACA6K;AAEA,MAAI;AACF,UAAMC,SAAS,GAAG,IAAIC,kBAAJ,CAAuBF,UAAvB,CAAlB;AACA,UAAMvB,MAAM,GAAGwB,SAAS,CAACE,QAAV,CAAmBhL,SAAnB,CAAf;;AAEA,QAAIsJ,MAAM,YAAYlJ,KAAtB,EAA6B;AAC3B,aAAO,IAAP;AACD;;AAED,WAAOkJ,MAAP;AACD,GATD,CASE,gBAAM;AACN,WAAO,IAAP;AACD;AACF;;ACGD,SAAS2B,iBAAT,CACEJ,UADF,EAEErC,aAFF;AAIE,QAAM0C,aAAa,GAAGL,UAAU,CAAC1H,IAAX,CAAgB;AAAA,QAAC;AAAEgI,MAAAA;AAAF,KAAD;AAAA,WAAcA,IAAI,KAAK3C,aAAvB;AAAA,GAAhB,CAAtB;AAEA,SAAO0C,aAAa,GAAGA,aAAa,CAAChS,KAAjB,GAAyB,IAA7C;AACD;;AAED,MAAakS,6BAA6B,GACxCpL,SAD2C,IAEzB,IAAID,uBAAJ,CAA4BC,SAA5B,EAAuCwI,aAFpD;AAIP,MAAa6C,8BAA8B,GACzCpD,MAD4C,IAG5CA,MAAM,CAACrJ,MAAP,GAAgB,CAAhB,GAAoBwM,6BAA6B,CAACnD,MAAM,CAAC,CAAD,CAAN,CAAUjI,SAAX,CAAjD,GAAyE,IAHpE;;AAKP,SAASsL,gBAAT,CACEC,eADF;MAEE,CAACJ,IAAD,EAAOjS,KAAP;AAEA,SAAOA,KAAK,KAAK,IAAV,GACHqS,eAAe,CAACpI,IAAhB,CACE;AAAA,QAAC;AAAEnD,MAAAA;AAAF,KAAD;AAAA,WACE9G,KAAK,KAAKoG,SAAV,IAAuBsL,iBAAiB,CAAC5K,SAAD,EAAY;AAAE,OAACmL,IAAD,GAAQjS;AAAV,KAAZ,CAD1C;AAAA,GADF,CADG,GAKH,IALJ;AAMD;;AAED,SAASsS,sBAAT,CACED,eADF,EAEEV,UAFF;AAIE,QAAMM,IAAI,GAAGE,8BAA8B,CAACE,eAAD,CAA9B,IAAmD,EAAhE;AACA,QAAMrS,KAAK,GAAGiS,IAAI,IAAIF,iBAAiB,CAACJ,UAAD,EAAaM,IAAb,CAAvC;AAEA,SAAO,CAACA,IAAD,EAAOjS,KAAP,CAAP;AACD;;AAED,SAASuS,qBAAT,CAA+BZ,UAA/B;AACE;AACA,WAASa,IAAT,CACEpC,MADF;QAEE,CAACqC,aAAD,EAAgB1E,cAAhB;AAEA,QAAI2E,iBAAJ;;AAEA,QAAIjK,sBAAsB,CAACsF,cAAD,CAA1B,EAA4C;AAC1C,YAAM,CAACuB,aAAD,EAAgBqD,cAAhB,IAAkCL,sBAAsB,CAC5DvE,cAAc,CAACgB,MAD6C,EAE5D4C,UAF4D,CAA9D;AAIA,YAAMiB,YAAY,GAAGR,gBAAgB,CAACrE,cAAc,CAACgB,MAAhB,EAAwB,CAC3DO,aAD2D,EAE3DqD,cAF2D,CAAxB,CAArC;AAKAD,MAAAA,iBAAiB,GAAGE,YAAY,GAC5BA,YAAY,CAAC5S,KADe,GAE5B+N,cAAc,CAACrL,YAFnB;AAGD,KAbD,MAaO,IAAI4F,QAAQ,CAACyF,cAAD,CAAZ,EAA8B;AACnC;AACA2E,MAAAA,iBAAiB,GAAGjD,MAAM,CAACC,OAAP,CAAe3B,cAAf,EAA+BkB,MAA/B,CAClBuD,IADkB,EAElBzE,cAFkB,CAApB;AAID;;AAED,WAAO2E,iBAAiB,KAAKtM,SAAtB,gBAEEgK,MAFF;AAGD,OAACqC,aAAD,GAAiBC;AAHhB,SAKHtC,MALJ;AAMD;;AAED,SAAOoC,IAAP;AACD;;AAED,SAAgBK,sBACdC,aACAnB;AAEA,SACE,CAACmB,WAAW,IAAI,EAAhB,EAAoB7I,IAApB,CAAyB;QAAC;AAAEnD,MAAAA;AAAF;AACxB,UAAMwI,aAAa,GACjBxI,SAAS,IAAIoL,6BAA6B,CAACpL,SAAD,CAD5C;AAEA,UAAM6L,cAAc,GAClBrD,aAAa,IAAIyC,iBAAiB,CAACJ,UAAD,EAAarC,aAAb,CADpC;;AAGA,QAAIxI,SAAS,IAAIwI,aAAb,IAA8BqD,cAAc,KAAKvM,SAArD,EAAgE;AAC9D,aAAOsL,iBAAiB,CAAC5K,SAAD,EAAY;AAClC,SAACwI,aAAD,GAAiBqD;AADiB,OAAZ,CAAxB;AAGD;;AAED,WAAO,KAAP;AACD,GAbD,KAaM,IAdR;AAgBD;AAED,SAAgBI,uBACdD,aACAnB;AAEA,QAAMqB,YAAY,GAAGH,qBAAqB,CAACC,WAAD,EAAcnB,UAAd,CAA1C;AAEA,SAAOqB,YAAY,GAAGA,YAAY,CAAClK,MAAhB,GAAyB,IAA5C;AACD;AAED,SAAgBmK,iBACd1I,OACAoH;AAEA,MAAI,CAACpH,KAAD,IAAU,CAACA,KAAK,CAACzB,MAArB,EAA6B;AAC3B,WAAO,IAAP;AACD;;AAED,MAAIyB,KAAK,CAACC,QAAN,KAAmB,IAAvB,EAA6B;AAC3B,WAAOuI,sBAAsB,CAACxI,KAAK,CAACC,QAAP,EAAiBmH,UAAjB,CAAtB,IAAsDpH,KAAK,CAACzB,MAAnE;AACD;;AAED,SAAO2G,MAAM,CAACC,OAAP,CAAenF,KAAK,CAACzB,MAArB,EAA6BmG,MAA7B,CACLsD,qBAAqB,CAACZ,UAAD,CADhB,EAELpH,KAAK,CAACzB,MAFD,CAAP;AAID;;SC7IeoK,iBACdlT,OACAqR;AAEA,MAAIrR,KAAK,CAACsO,KAAV,EAAiB,OAAOtO,KAAK,CAACsO,KAAb;AAEjB,MAAI9H,YAAY,CAACxG,KAAD,CAAhB,EAAyB,OAAOoR,eAAe,CAACpR,KAAD,EAAQqR,KAAR,CAAtB;AACzB,MAAI3K,aAAa,CAAC1G,KAAD,CAAjB,EAA0B,OAAOA,KAAK,CAAC0O,WAAb;AAE1B,SAAO,EAAP;AACD;;SCfeyE,iBAAiB/V;AAC/B,SAAO,EAACA,SAAD,YAACA,SAAS,CAAEE,QAAX,CAAoB,aAApB,CAAD,KAAuC,EAACF,SAAD,YAACA,SAAS,CAAEE,QAAX,CAAoB,oBAApB,CAAD,CAA9C;AACD;;ICMW8V,wBAAZ;;AAAA,WAAYA;AACVA,EAAAA,+BAAA,OAAA;AACAA,EAAAA,8BAAA,OAAA;AACD,CAHD,EAAYA,wBAAwB,KAAxBA,wBAAwB,KAAA,CAApC;;AAKA,IAAYC,kBAAZ;;AAAA,WAAYA;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,kBAAkB,KAAlBA,kBAAkB,KAAA,CAA9B;;MCVaC,0BAA0B,GAAG,EAAnC;AAEP,MAAaC,iBAAiB,GAAG,CAA1B;AAEP,MAAaC,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,MAAaC,mBAAmB,4PAAzB;AAMP,MAAaC,qBAAqB,GAG7B;AACH,GAACC,YAAY,CAACC,OAAd,GAAwB,CAAC,YAAD,EAAe,cAAf,EAA+B,cAA/B,CADrB;AAEH,GAACD,YAAY,CAACE,QAAd,GAAyB,CAAC,cAAD,EAAiB,cAAjB,CAFtB;AAGH,GAACF,YAAY,CAACG,KAAd,GAAsB,CACpB,OADoB,EAEpB,MAFoB,EAGpB,YAHoB,EAIpB,WAJoB,EAKpB,sBALoB,EAMpB,wBANoB,EAOpB,wBAPoB,EAQpB,kBARoB,EASpB,oBAToB,EAUpB,oBAVoB,EAWpB,yBAXoB,EAYpB,qCAZoB,EAapB,uCAboB,EAcpB,uCAdoB,EAepB,yCAfoB,EAgBpB,2CAhBoB,EAiBpB,2CAjBoB;AAHnB,CAHE;AA2BP,MAAaC,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;AAU3BC,EAAAA,gBAAgB,EAAE,CAVS;AAW3BC,EAAAA,gBAAgB,EAAE,EAXS;AAY3BC,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,MAAaC,sBAAsB,GAAkB;AACnDC,EAAAA,YAAY,EAAE,IADqC;AAEnDC,EAAAA,GAAG,EAAEpB,aAAa,CAACU,gBAFgC;AAGnDW,EAAAA,GAAG,EAAErB,aAAa,CAACW,gBAHgC;AAInDW,EAAAA,IAAI,EAAEtB,aAAa,CAACY,iBAJ+B;AAKnDW,EAAAA,KAAK;;AAL8C;AAMnDC,EAAAA,SAAS,EAAE3V,KAAK,IAAIA,KAN+B;AAOnD4V,EAAAA,WAAW,EAAE5V,KAAK,IAAIA;AAP6B,CAA9C;AAUP,MAAa6V,eAAe,GAGvB;AACHC,EAAAA,IAAI,4BACCT,sBADD;AAEFE,IAAAA,GAAG,EAAEpB,aAAa,CAACC,QAFjB;AAGFoB,IAAAA,GAAG,EAAErB,aAAa,CAACE,QAHjB;AAIFoB,IAAAA,IAAI,EAAEtB,aAAa,CAACG,SAJlB;AAKFoB,IAAAA,KAAK;;;AALH;AADD,CAHE;AAqDP,MAAaK,wBAAwB,GAAuC;AAC1E,GAAC1C,kBAAkB,CAAC2C,MAApB,GAA6B,IAD6C;AAE1E,GAAC3C,kBAAkB,CAAC4C,SAApB,GAAgC,IAF0C;AAG1E,GAAC5C,kBAAkB,CAAC6C,WAApB,GAAkC,GAHwC;AAI1E,GAAC7C,kBAAkB,CAAC8C,eAApB,GAAsC,IAJoC;AAK1E,GAAC9C,kBAAkB,CAAC+C,QAApB,GAA+B,GAL2C;AAM1E,GAAC/C,kBAAkB,CAACgD,YAApB,GAAmC,IANuC;AAO1E,GAAChD,kBAAkB,CAACiD,MAApB,GAA6B,IAP6C;AAQ1E,GAACjD,kBAAkB,CAACkD,KAApB,GAA4B,IAR8C;AAS1E,GAAClD,kBAAkB,CAACmD,QAApB,GAA+B,IAT2C;AAU1E,GAACnD,kBAAkB,CAACoD,WAApB,GAAkC,IAVwC;AAW1E,GAACpD,kBAAkB,CAACqD,UAApB,GAAiC,IAXyC;AAY1E,GAACrD,kBAAkB,CAACsD,aAApB,GAAoC,IAZsC;AAa1E,GAACtD,kBAAkB,CAACuD,QAApB,GAA+B,IAb2C;AAc1E,GAACvD,kBAAkB,CAACwD,WAApB,GAAkC,IAdwC;AAe1E,GAACxD,kBAAkB,CAACyD,OAApB,GAA8B,SAf4C;AAgB1E,GAACzD,kBAAkB,CAAC0D,OAApB,GAA8B;AAhB4C,CAArE;AAmBP,MAAaC,cAAc,GAAG,CAC5B3D,kBAAkB,CAAC2C,MADS,EAE5B3C,kBAAkB,CAAC4C,SAFS,CAAvB;AAKP,MAAagB,kBAAkB,GAAG,CAChC5D,kBAAkB,CAACmD,QADa,EAEhCnD,kBAAkB,CAACoD,WAFa,CAA3B;AAKP,MAAaS,gBAAgB,GAAG,CAC9B7D,kBAAkB,CAACiD,MADW,EAE9BjD,kBAAkB,CAACkD,KAFW,CAAzB;AAKP,MAAaY,qBAAqB,GAAG,CACnC9D,kBAAkB,CAACqD,UADgB,EAEnCrD,kBAAkB,CAACsD,aAFgB,CAA9B;AAKP,MAAaS,mBAAmB,GAAG,CACjC/D,kBAAkB,CAACuD,QADc,EAEjCvD,kBAAkB,CAACwD,WAFc,CAA5B;AAKP,MAAaQ,eAAe,GAAG,CAC7BhE,kBAAkB,CAAC+C,QADU,EAE7B/C,kBAAkB,CAACgD,YAFU,EAG7BhD,kBAAkB,CAAC6C,WAHU,EAI7B7C,kBAAkB,CAAC8C,eAJU,CAAxB;AAOP,MAAamB,iBAAiB,GAAG,CAC/BjE,kBAAkB,CAACyD,OADY,EAE/BzD,kBAAkB,CAAC0D,OAFY,CAA1B;AAKP,MAAaQ,yBAAyB,GAAG,CACvC,GAAGP,cADoC,EAEvC,GAAGK,eAFoC,EAGvC,GAAGH,gBAHoC,EAIvC,GAAGI,iBAJoC,CAAlC;AAOP,MAAaE,uBAAuB,GAAG,CACrC,GAAGR,cADkC,EAErC,GAAGK,eAFkC,EAGrC,GAAGH,gBAHkC,EAIrC,GAAGI,iBAJkC,CAAhC;AAOP,MAAaG,uBAAuB,GAAG,CACrC,GAAGT,cADkC,EAErC,GAAGC,kBAFkC,EAGrC,GAAGE,qBAHkC,EAIrC,GAAGC,mBAJkC,EAKrC,GAAGF,gBALkC,CAAhC;;IC3CKQ,WAAZ;;AAAA,WAAYA;AACVA,EAAAA,mBAAA,SAAA;AACAA,EAAAA,qBAAA,WAAA;AACD,CAHD,EAAYA,WAAW,KAAXA,WAAW,KAAA,CAAvB;;AC/IA,MAAMC,sBAAsB,GAAG,IAA/B;AAEA,MAAaC,kBAAkB,GAAIC,GAAD,mCACHC,MAAM,CAACC,IAAP,CAAYF,GAAZ,CADxB;AAGP,MAAaG,iBAAiB,GAAG,CAC/BH,GAD+B,EAE/B9I,MAF+B,KAI/B8I,GAAG,CACAI,QADH,CACY,QADZ,EACuBC,GAAD;AAClBnJ,EAAAA,MAAM,QAAN,YAAAA,MAAM,CAAEoJ,OAAR,CAAgB,OAAY9G,KAAZ;QAAC;AAAErR,MAAAA;AAAF;AACfkY,IAAAA,GAAG,CAACE,IAAJ,CAAS/G,KAAK,IAAI,CAAAtC,MAAM,QAAN,YAAAA,MAAM,CAAErJ,MAAR,IAAiB,CAArB,CAAd,EAAuC1F,KAAvC;AACD,GAFD;AAGD,CALH,EAMGwH,IANH,CAMQ,CANR,EAMW,CANX,EAOGC,EAPH,CAOM,CAPN,EAOS,CAPT,CAJK;;AAcP,MAAa4Q,mBAAmB,GAAG;;;MAAC;AAClCC,IAAAA,YADkC;AAElCxP,IAAAA,MAFkC;AAGlC+O,IAAAA,GAHkC;AAIlCU,IAAAA,EAJkC;AAKlCC,IAAAA;AALkC;AAalC,MAAI,CAAC1P,MAAL,EAAa,OAAOwP,YAAP;AAEb,QAAMG,UAAU,GAAG9P,iBAAiB,CAClCkP,GAAG,IAAK/O,MAAM,CAAC4P,IADmB,CAApC;AAIA,MAAI,CAACD,UAAL,EAAiB,OAAOH,YAAP;AAEjBA,EAAAA,YAAY,CAACK,KAAb;AAEA,QAAM;AAAE7C,IAAAA,IAAF;AAAQ8C,IAAAA,KAAR;AAAeC,IAAAA,UAAf;AAA2BC,IAAAA;AAA3B,MAAsChQ,MAA5C;AAEA,QAAMiQ,cAAc,GAClB,CAACR,EAAD,IACA,CAACE,UAAU,CAACnb,QAAX,CAAoB,WAApB,CADD,IAEA,CAACmb,UAAU,CAACnb,QAAX,CAAoB,eAApB,CAHH;AAIA,QAAM0b,QAAQ,GAAGP,UAAU,CAAClV,OAAX,CAAmB,oCAAnB,EAAyD,EAAzD,CAAjB;;AAEA,MAAIwV,cAAJ,EAAoB;AAAA;;AAClBT,IAAAA,YAAY,CAACT,GAAb,CAAiBmB,QAAjB;AAEA,UAAMC,eAAe,aAAG,qBAAqBC,IAArB,CAA0BT,UAA1B,CAAH,qBAAG,OAAwC,CAAxC,CAAxB;;AAEA,QAAIQ,eAAJ,YAAIA,eAAe,CAAG,CAAH,CAAnB,EAA0B;AACxBX,MAAAA,YAAY,CAACa,OAAb,CAAqBF,eAArB;AACD;;AAEDX,IAAAA,YAAY,CAACxC,IAAb,CAAkBA,IAAlB;AACD,GAVD,MAUO;AACL,UAAMsD,KAAK,GAAGb,EAAE,KAAIS,QAAJ,oBAAIA,QAAQ,CAAE1b,QAAV,CAAmB,WAAnB,CAAJ,CAAhB;AACA,QAAI+b,WAAW,GAAGD,KAAK,GAAG3F,2BAAH,GAAiCD,mBAAxD;AACA,UAAM8F,WAAW,GAAGxD,IAAI,IAAIuD,WAA5B;AACA,QAAIE,OAAO,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAOF,WAAP,EAAoBA,WAApB,CAAd;AACA,UAAMG,WAAW,GACf7Q,iBAAiB,CACdkQ,UADc,oBACdA,UAA6B,CAAEW,WADjB,CAAjB,KAGC,QAAQX,UAAR,oBAAQA,UAA6B,CAAEY,WAAvC,MAAuD,QAAvD,GAAkE,CAAlE,GAAsE,CAHvE,CADF;;AAMA,QAAID,WAAJ,EAAiB;AACfH,MAAAA,WAAW,IAAIG,WAAf;AACAD,MAAAA,OAAO,GAAG,CAAC,CAACC,WAAD,GAAe,CAAhB,EAAmB,CAACA,WAAD,GAAe,CAAlC,EAAqCH,WAArC,EAAkDA,WAAlD,CAAV;AACD;;AAED,QAAID,KAAJ,EAAW;AACTd,MAAAA,YAAY,CAACxC,IAAb,CAAqBwD,WAArB,SAAyCA,WAAzC,SAA0DH,OAA1D,CACEI,OAAO,CAAC/V,IAAR,CAAa,GAAb,CADF;AAIA,YAAMkW,SAAS,GAAGnB,EAAE,KAAKM,UAAL,oBAAKA,UAA6B,CAAErb,IAApC,CAApB;;AAEA,UAAIkc,SAAJ,EAAe;AACb,cAAMD,WAAW,GAAG9Q,iBAAiB,CAClCkQ,UADkC,oBAClCA,UAA6B,CAAEY,WADG,CAArC;AAGA,cAAME,SAAS,GAAGhR,iBAAiB,CAChCkQ,UADgC,oBAChCA,UAA6B,CAAEc,SADC,CAAnC;AAIArB,QAAAA,YAAY,CAACT,GAAb,CACE6B,SAAS,KAAKhC,WAAW,CAAChK,MAA1B,wEAGY+F,2BAA2B,GAAG,CAH1C,iCAIYA,2BAA2B,GAAG,CAJ1C,gCAKWA,2BAA2B,GAAG,CALzC,oCAMckG,SAAS,IAAIjG,yBAN3B,uCAOgB+F,WAAW,IAAI9F,2BAP/B,4CAQsB6F,WARtB,kGAYe/F,2BAZf,qCAagBA,2BAbhB,8DAeckG,SAAS,IAAIjG,yBAf3B,uCAgBgB+F,WAAW,IAAI9F,2BAhB/B,4CAiBsB6F,WAjBtB,yBADF;AAqBAlB,QAAAA,YAAY,CAACT,GAAb,CAAiBmB,QAAjB;AACAV,QAAAA,YAAY,CAACrO,IAAb,CAAkB,8BAAlB,EAAkD2P,IAAlD,CAAwDC,IAAD,IACrDA,IAAI,CAACC,MAAL,EADF;AAGAxB,QAAAA,YAAY,CAACrO,IAAb,CAAkB,kBAAlB,EAAsC2P,IAAtC,CAA4CC,IAAD,IACzCA,IAAI,CACDE,MADH,CAEItG,2BAA2B,GAAG,CAFlC,EAGIA,2BAA2B,GAAG,CAHlC,EAKG9G,IALH,CAKQ,OALR,CADF;AASA,cAAMqN,QAAQ,GAAG1B,YAAY,CAACrO,IAAb,CAAkB,YAAlB,EAAgC,CAAhC,CAAjB;;AAEA,YAAIuO,YAAJ,EAAkB;AAChBwB,UAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAElO,MAAV,CAAiB;AAAEmO,YAAAA,OAAO,EAAEtC;AAAX,WAAjB;AACD,SA9CY;;;AAiDb,YACElP,sBAAsB,CACnBoQ,UADmB,oBACnBA,UAA6B,CAAEc,SADZ,CADxB,EAIE;AAAA;;AACAK,UAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAErN,IAAV,CAAeqL,iBAAiB,CAC9BM,YAD8B,EAE5BO,UAF4B,6CAE5BA,UAA6B,CAAEc,SAFH,qBAE5B,sBAEE5K,MAJ0B,CAAhC;AAMD;;AAED,YAAItG,sBAAsB,CACvBoQ,UADuB,oBACvBA,UAA6B,CAAEY,WADR,CAA1B,EAEG;AAAA;;AACDO,UAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAElO,MAAV,CAAiB;AACfoO,YAAAA,KAAK,EAAGlC,iBAAiB,CACvBM,YADuB,EAErBO,UAFqB,6CAErBA,UAA6B,CAAEY,WAFV,qBAErB,sBAEE1K,MAJmB;AADV,WAAjB;AAQD;AACF,OA1ED,MA0EO;AACLuJ,QAAAA,YAAY,CAACT,GAAb,CAAiBmB,QAAjB;AACD;AACF,KApFD,MAoFO;AACL,YAAMS,WAAW,GAAG9Q,iBAAiB,CAClCmQ,MADkC,oBAClCA,MAAyB,CAAEW,WADO,CAArC;AAGA,YAAMD,WAAW,GAAG7Q,iBAAiB,CAClCmQ,MADkC,oBAClCA,MAAyB,CAAEU,WADO,CAAjB,KAGjB,QAAQV,MAAR,oBAAQA,MAAyB,CAAEW,WAAnC,MAAmD,QAAnD,GAA8D,CAA9D,GAAkE,CAHjD,CAApB;AAIA,YAAME,SAAS,GAAGhR,iBAAiB,CAChCmQ,MADgC,oBAChCA,MAAyB,CAAEa,SADK,CAAnC;AAIArB,MAAAA,YAAY,CAACxC,IAAb,CAAqBwD,WAArB,SAAyCA,WAAzC,SAA0DH,OAA1D,CACEI,OAAO,CAAC/V,IAAR,CAAa,GAAb,CADF;AAGA8U,MAAAA,YAAY,CAACT,GAAb,CAAiBmB,QAAjB;AACAV,MAAAA,YAAY,CAACrO,IAAb,CAAkB,gBAAlB,EAAoC2P,IAApC,CAAyCC,IAAI;AAC3CA,QAAAA,IAAI,CACDE,MADH,CACUvG,mBAAmB,GAAG,CADhC,EACmCA,mBAAmB,GAAG,CADzD,EAEG7G,IAFH,CAEQgN,SAAS,IAAIjG,yBAFrB,EAGG5H,MAHH,CAGU;AAAEoO,UAAAA,KAAK,EAAET,WAAT;AAAsBU,UAAAA,KAAK,EAAEX;AAA7B,SAHV;;AAKA,YACE/Q,sBAAsB,CACnBqQ,MADmB,oBACnBA,MAAyB,CAAEa,SADR,CADxB,EAIE;AAAA;;AACAE,UAAAA,IAAI,QAAJ,YAAAA,IAAI,CAAElN,IAAN,CAAWqL,iBAAiB,CAC1BM,YAD0B,EAExBQ,MAFwB,yCAExBA,MAAyB,CAAEa,SAFH,qBAExB,kBAEE5K,MAJsB,CAA5B;AAMD;;AAED,YACEtG,sBAAsB,CACnBqQ,MADmB,oBACnBA,MAAyB,CAAEW,WADR,CADxB,EAIE;AAAA;;AACAI,UAAAA,IAAI,QAAJ,YAAAA,IAAI,CAAE/N,MAAN,CAAa;AACXoO,YAAAA,KAAK,EAAGlC,iBAAiB,CACvBM,YADuB,EAErBQ,MAFqB,2CAErBA,MAAyB,CAAEW,WAFN,qBAErB,oBAEE1K,MAJmB;AADd,WAAb;AAQD;AACF,OAjCD;AAkCD;AACF;;AAED,QAAMqL,aAAa,cAAG,gCAAgClB,IAAhC,CAAqCT,UAArC,CAAH,qBAAG,QAAmD,CAAnD,CAAtB;;AAEA,MAAI2B,aAAJ,EAAmB;AACjB,UAAMC,cAAc,GAAGD,aAAa,CAACE,KAAd,CAAoB,CAApB,EAAuB,CAAC,CAAxB,EAA2BjX,KAA3B,CAAiC,GAAjC,CAAvB;AAEAiV,IAAAA,YAAY,CAACiC,SAAb,CAAuB;AACrB,OAACF,cAAc,CAAC,CAAD,CAAf,GAAqBA,cAAc,CAAC,CAAD,CAAd,CAAkBhX,KAAlB,CAAwB,GAAxB;AADA,KAAvB;AAGD;;AAED,QAAMmX,YAAY,GAAGlC,YAAY,CAACiC,SAAb,CAAuB,QAAvB,CAArB;;AAEA,MAAIC,YAAJ,EAAkB;AAChBlC,IAAAA,YAAY,CAACmC,MAAb,CAAoB,CAACD,YAArB,EAAmC,CAAnC,EAAsC,CAAtC;AACD;;AACD,MAAI5B,KAAK,KAAKxS,SAAd,EAAyB;AACvBkS,IAAAA,YAAY,CAACmC,MAAb,CAAqB7B,KAAgB,IAAI,MAAM1Y,IAAI,CAACwa,EAAf,CAArC,EAAyD,CAAzD,EAA4D,CAA5D;AACD;;AAED,SAAOpC,YAAP;AACD,CAtNM;;MCtCMqC,SAAS,GAAIC,MAAD,IACvB,CAAC9U,KAAK,CAAC+U,UAAU,CAACD,MAAD,CAAX,CAAN,IAAwCE,QAAQ,CAACF,MAAD,CAD3C;;ACcA,MAAMG,6BAA6B,GAAuC;AAC/E,GAACnT,SAAS,CAACE,IAAX,GAAkBuL,kBAAkB,CAAC2C,MAD0C;AAE/E,GAACpO,SAAS,CAACoT,OAAX,GAAqB3H,kBAAkB,CAAC4C,SAFuC;AAG/E,GAACrO,SAAS,CAACC,IAAX,GAAkBwL,kBAAkB,CAAC6C,WAH0C;AAI/E,GAACtO,SAAS,CAACI,IAAX,GAAkBqL,kBAAkB,CAAC+C,QAJ0C;AAK/E,GAACxO,SAAS,CAACG,KAAX,GAAmBsL,kBAAkB,CAAC8C,eALyC;AAM/E,GAACvO,SAAS,CAACK,KAAX,GAAmBoL,kBAAkB,CAACgD,YANyC;AAO/E,GAACzO,SAAS,CAACkP,OAAX,GAAqBzD,kBAAkB,CAACyD,OAPuC;AAQ/E,GAAClP,SAAS,CAACmP,OAAX,GAAqB1D,kBAAkB,CAAC0D;AARuC,CAA1E;AAWP,AAAO,MAAMkE,uBAAuB,GAAoB,CACtDC,aAAa,CAACC,KADwC,EAEtDD,aAAa,CAACE,KAFwC,EAGtDF,aAAa,CAACG,QAHwC,EAItDH,aAAa,CAACI,MAJwC,CAAjD;;AAOP,MAAMC,WAAW,GAAG,CAACvb,KAAD,EAAyBuR,MAAzB;AAClB,SAAOA,MAAM,UACJhP,UAAU,CAACvC,KAAD,EAAQ;AACrBwC,IAAAA,UAAU,EAAEb,UAAU,CAAC6Z,GADF;AAErB9Y,IAAAA,YAAY,EAAE1C;AAFO,GAAR,CADN,SAKTA,KAAK,GACLA,KAAK,CAAC6C,QAAN,EADK,GAEL,CAPJ;AAQD,CATD;;AAWA,SAAgB4Y,gBAAgB3U;AAC9B,QAAM;AAAE4U,IAAAA,kBAAF;AAAsB1b,IAAAA,KAAtB;AAA6BxC,IAAAA,IAA7B;AAAmC+I,IAAAA;AAAnC,MAAiDO,SAAvD;AACA,QAAM6U,QAAQ,GAAG5F,wBAAwB,CAAC2F,kBAAD,CAAxB,IAAsEA,kBAAvF;AAEA,QAAME,aAAa,GAAG,OAAO5b,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAAC1C,QAAN,CAAe,KAAf,CAA7B,GAAqD0C,KAAK,CAACqD,KAAN,CAAY,KAAZ,CAArD,GAA0ErD,KAAhG;AACA,QAAMuR,MAAM,GAAG/T,IAAI,KAAK0d,aAAa,CAACG,QAAtC;AACA,QAAMQ,gBAAgB,GAAGvE,iBAAiB,CAACha,QAAlB,CAA2Boe,kBAA3B,CAAzB;AACA,QAAMxK,WAAW,GAAG,CAAC+J,uBAAuB,CAAC3d,QAAxB,CAAiCE,IAAjC,CAAD,IAA4Doe,aAAa,KAAK,IAAlG;;AAEA,MAAIC,gBAAgB,IAAItT,KAAK,CAACC,OAAN,CAAcoT,aAAd,CAApB,IAAoDA,aAAa,CAAC,CAAD,CAAb,KAAqBxV,SAA7E,EAAwF;AACtF,WAAU2P,wBAAwB,CAAC2F,kBAAD,CAAlC,SAAgFnV,SAAhF,UAA8FgV,WAAW,CACvGK,aAAa,CAAC,CAAD,CAD0F,EAEvGrK,MAFuG,CAAzG,UAGMgK,WAAW,CAACK,aAAa,CAAC,CAAD,CAAd,EAAmBrK,MAAnB,CAHjB;AAID;;AAED,QAAMuK,cAAc,GAAGvT,KAAK,CAACC,OAAN,CAAcoT,aAAd,IACnBA,aAAa,CAACjW,GAAd,CAAkBoW,GAAG,IAAIR,WAAW,CAACQ,GAAD,EAAMxK,MAAN,CAApC,CADmB,GAEnBgK,WAAW,CAACK,aAAD,EAAmCrK,MAAnC,CAFf;AAIA,QAAMyK,WAAW,GAAGC,KAAK,CAACL,aAAD,CAAL,GAAuB,QAAvB,GAAkCE,cAAtD;AAEA,QAAMI,YAAY,GAChBhL,WAAW,IAAI,OAAO8K,WAAP,KAAuB,QAAtC,SACQG,IAAI,CAACC,eAAL,CAAqBC,mBAAmB,CAACL,WAAD,EAAcN,kBAAd,CAAxC,CADR,SAEIM,WAHN;AAKA,SAAUzV,SAAV,SAAuBoV,QAAvB,SAAmCO,YAAnC;AACD;AAED,SAAgBI,sBAAsBxV;AACpC,MAAIyB,KAAK,CAACC,OAAN,CAAc1B,SAAd,CAAJ,EAA8B;AAC5B,kBAAY2U,eAAe,CAAC3U,SAAS,CAAC,CAAD,CAAV,CAA3B,SAA6CA,SAAS,CAAC,CAAD,CAAT,CAAaF,SAA1D,SAAuE6U,eAAe,CAAC3U,SAAS,CAAC,CAAD,CAAV,CAAtF;AACD;;AAED,SAAO2U,eAAe,CAAC3U,SAAD,CAAtB;AACD;AAED,SAAgByV;MAAgB;AAAEhW,IAAAA,SAAF;AAAaK,IAAAA,SAAb;AAAwB5G,IAAAA;AAAxB;AAC9B,QAAM0b,kBAAkB,GAAGX,6BAA6B,CAACnU,SAAD,CAAxD;AACA,QAAM4V,eAAe,GAAGC,oBAAoB,CAACzc,KAAD,EAAqC0b,kBAArC,CAA5C;AAEA;AACEnV,IAAAA;AADF,KAEKiW,eAFL;AAID;;AAED,SAASC,oBAAT,CAA8Bzc,KAA9B,EAAgE0b,kBAAhE;AACE,MAAI,OAAO1b,KAAP,KAAiB,QAArB,EAA+B;AAC7B,UAAM0c,aAAa,GAAG,EAAEhB,kBAAkB,KAAKrI,kBAAkB,CAAC4C,SAA5C,CAAtB;;AAEA,QAAIjW,KAAK,CAAC2c,UAAN,CAAiBR,IAAI,CAACS,UAAtB,KAAqC5c,KAAK,CAAC6c,QAAN,CAAeV,IAAI,CAACS,UAApB,CAAzC,EAA0E;AACxE,aAAO;AACL5c,QAAAA,KAAK,EAAEA,KAAK,CAACsa,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CADF;AAELoB,QAAAA,kBAAkB,EAAEzE,kBAAkB,CAACyF,aAAD;AAFjC,OAAP;AAID;;AAED,QAAI1c,KAAK,CAAC2c,UAAN,CAAiBR,IAAI,CAACS,UAAtB,CAAJ,EAAuC;AACrC,aAAO;AACL5c,QAAAA,KAAK,EAAEA,KAAK,CAACsa,KAAN,CAAY,CAAZ,CADF;AAELoB,QAAAA,kBAAkB,EAAEtE,mBAAmB,CAACsF,aAAD;AAFlC,OAAP;AAID;;AAED,QAAI1c,KAAK,CAAC6c,QAAN,CAAeV,IAAI,CAACS,UAApB,CAAJ,EAAqC;AACnC,aAAO;AACL5c,QAAAA,KAAK,EAAEA,KAAK,CAACsa,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CADF;AAELoB,QAAAA,kBAAkB,EAAEvE,qBAAqB,CAACuF,aAAD;AAFpC,OAAP;AAID;AACF;;AAED,SAAO;AAAE1c,IAAAA,KAAF;AAAS0b,IAAAA;AAAT,GAAP;AACD;;AAED,MAAMoB,WAAW,GAAI9c,KAAD,UAAgCA,KAAhC,MAApB;;AACA,MAAM+c,aAAa,GAAI/c,KAAD,IAA+BA,KAA/B,MAAtB;;AACA,MAAMgd,WAAW,GAAIhd,KAAD,UAAgCA,KAApD;;AAEA,SAASqc,mBAAT,CAA6Brc,KAA7B,EAA4C2b,QAA5C;AACE,UAAQA,QAAR;AACE,SAAKtI,kBAAkB,CAACmD,QAAxB;AACA,SAAKnD,kBAAkB,CAACoD,WAAxB;AACE,aAAOqG,WAAW,CAAC9c,KAAD,CAAlB;;AACF,SAAKqT,kBAAkB,CAACqD,UAAxB;AACA,SAAKrD,kBAAkB,CAACsD,aAAxB;AACE,aAAOoG,aAAa,CAAC/c,KAAD,CAApB;;AACF,SAAKqT,kBAAkB,CAACuD,QAAxB;AACA,SAAKvD,kBAAkB,CAACwD,WAAxB;AACE,aAAOmG,WAAW,CAAChd,KAAD,CAAlB;;AACF,SAAKqT,kBAAkB,CAACyD,OAAxB;AACE,aAAOqF,IAAI,CAACc,OAAZ;;AACF,SAAK5J,kBAAkB,CAAC0D,OAAxB;AACE,aAAOoF,IAAI,CAACe,OAAZ;;AACF;AACE,aAAOld,KAAP;AAfJ;AAiBD;;ICzIYmd,eAAb;AAGE,2BAAoBrW,SAApB;QAAoBA;AAAAA,MAAAA,YAA2B;;;;;AAA3B,kBAAA,GAAAA,SAAA;AAClB,SAAKsW,oBAAL,GAA4B,IAAIpW,oBAAJ,CAAyBF,SAAzB,CAA5B;AACD;;AALH;AAAA;AAAA,SAaE;AACE,YAAM;AAAE9G,QAAAA;AAAF,UAAY,KAAKod,oBAAvB;;AAEA,UAAIpd,KAAK,YAAYkH,KAArB,EAA4B;AAC1B;AACAG,QAAAA,OAAO,CAACC,IAAR,CAAatH,KAAK,CAACqd,OAAnB;AACD;;AAED,aAAOrd,KAAK,YAAYkH,KAAjB,GAAyB,EAAzB,GAA8BlH,KAAK,CAACiH,WAAN,CAAkBtB,GAAlB,CAAsB4W,eAAtB,CAArC;AACD;AAtBH;AAAA;AAAA,SAwBE;AACE,YAAM;AAAEvc,QAAAA;AAAF,UAAY,KAAKod,oBAAvB;;AAEA,UAAIpd,KAAK,YAAYkH,KAArB,EAA4B;AAC1B,eAAO,IAAP;AACD;;AAED,YAAMoW,aAAa,GAAGtd,KAAK,CAACud,cAAN,CAAqBjgB,QAArB,CAA8BsK,SAAS,CAAC4V,MAAxC,CAAtB;AACA,YAAMC,cAAc,GAAGzd,KAAK,CAACud,cAAN,CAAqBjgB,QAArB,CAA8BsK,SAAS,CAAC8V,OAAxC,CAAvB;;AAEA,UAAIJ,aAAa,IAAIG,cAArB,EAAqC;AACnC,eAAO,IAAP;AACD;;AAED,aAAOH,aAAa,GAAGlK,wBAAwB,CAACuK,EAA5B,GAAiCF,cAAc,GAAGrK,wBAAwB,CAACwK,GAA5B,GAAkC,IAArG;AACD;AAvCH;AAAA;AAAA,WAyCS;AACL,aAAO,KAAKR,oBAAL,CAA0Bpd,KAA1B,YAA2CkH,KAAlD;AACD;AA3CH;AAAA;AAAA,WA6CS;AACL,aAAO,KAAKJ,SAAZ;AACD;AA/CH;AAAA;AAAA,WAOE,cAAY+W,UAAZ,EAA+CjX,SAA/C;AACE,YAAME,SAAS,GAAG,CAAA+W,UAAU,QAAV,YAAAA,UAAU,CAAElY,GAAZ,CAAgB2W,qBAAhB,EAAuC9Y,IAAvC,OAAgDoD,SAAhD,YAAiE,IAAnF;AAEA,aAAO,IAAIuW,eAAJ,CAAoBrW,SAApB,CAAP;AACD;AAXH;;AAAA;AAAA;;MCsEagX,cAAc,GACzB9d,KAD4B,IAEesI,QAAQ,CAACtI,KAAD,CAAR,IAAmB,UAAUA,KAFnE;AAIP,MAAa+d,yBAAyB,GAAIjX,SAAD;AACvC,QAAMkX,KAAK,GAAGlX,SAAS,CAACzD,KAAV,CAAgB,GAAhB,CAAd;AAEA,SAAO2a,KAAK,CAAC,CAAD,CAAL,CAASrB,UAAT,CAAoB,GAApB,IAA2BqB,KAAK,CAAC,CAAD,CAAL,CAAS1D,KAAT,CAAe,CAAf,CAA3B,GAA+C0D,KAAK,CAAC,CAAD,CAA3D;AACD,CAJM;AAMP,MAAaC,oBAAoB,GAAG,CAClCnX,SADkC,EAElCoX,SAFkC;;;AAIlC,MAAIC,IAAJ;;AAEA,MAAID,SAAJ,EAAe;AACb,UAAMF,KAAK,GAAGlX,SAAS,CAACzD,KAAV,CAAgB,MAAhB,EAAwBsC,GAAxB,CAA4ByY,IAAI,IAAIA,IAAI,CAAC9D,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAApC,CAAd;AAEA6D,IAAAA,IAAI,GAAGH,KAAK,CAACE,SAAS,GAAG,CAAb,CAAZ;AACD,GAJD,MAIO;AACLC,IAAAA,IAAI,GAAGrX,SAAP;AACD;;AAED,kBAAOqX,IAAP,qBAAO,MAAM9a,KAAN,CAAY,GAAZ,CAAP;AACD,CAfM;AAiBP,MAAagb,wBAAwB,GAAG,CACtCvX,SADsC,EAEtCoX,SAFsC;;;AAItC,kCAAOD,oBAAoB,CAACnX,SAAD,EAAYoX,SAAZ,CAA3B,qBAAO,sBAA6C,CAA7C,CAAP;AACD,CALM;AAOP,MAAaI,yBAAyB,GAAG,CACvCxX,SADuC,EAEvCoX,SAFuC;;;AAIvC,mCAAOD,oBAAoB,CAACnX,SAAD,EAAYoX,SAAZ,CAA3B,qBAAO,uBAA6C,CAA7C,CAAP;AACD,CALM;AAOP,MAAaK,gBAAgB,GAAIzX,SAAD,IAC9B,CAAAA,SAAS,QAAT,YAAAA,SAAS,CAAExJ,QAAX,CAAoB,GAApB,MAA4B,KADvB;AAGP,MAAakhB,sBAAsB,GACjCphB,SADoC;AAGpC,SAAOyY,eAAe,CAACzY,SAAD,CAAf,IAA8BiY,sBAArC;AACD,CAJM;AAMP,MAAaoJ,sBAAsB,GAAG,CACpCze,KADoC,EAEpCub,WAFoC;AAIpC,QAAM;AAAEhV,IAAAA,SAAF;AAAamI,IAAAA;AAAb,MAA6B1O,KAAnC;AAEA,SAAOuG,SAAS,IAAIgV,WAAb,GACFA,WAAW,CACVhV,SAAS,CAAC/I,IADA,EAEVkR,WAFU,EAGVnI,SAAS,CAACmY,YAHA,CADT,GAMHhQ,WANJ;AAOD,CAbM;AAeP,MAAa8C,gBAAc,GAAG,OAE5BF,QAF4B,EAG5BC,MAH4B,EAI5BF,KAJ4B;MAC5B;AAAE7J,IAAAA,IAAF;AAAQC,IAAAA;AAAR;AAKA,SAAO;AACLD,IAAAA,IAAI,EACFA,IAAI,KAAK,IAAT,IAAiB6J,KAAK,KAAK,CAA3B,GACIE,MAAM,GACJ/J,IADI,GAEJ8J,QAAQ,GACR,CAAC9J,IADO,GAER,CAACA,IAAD,GAAQ,CALd,GAMIA,IARD;AASLC,IAAAA;AATK,GAAP;AAWD,CAjBM;AAmBP,MAAakX,qBAAqB,GAAG,CACnC3e,KADmC,EAEnCub,WAFmC,EAGnClK,KAHmC;;;AAKnC,QAAMC,QAAQ,GAAG,qBAAAtR,KAAK,CAACuG,SAAN,sCAAiB/I,IAAjB,MAA0B,QAA3C;AACA,QAAM+T,MAAM,GAAG,sBAAAvR,KAAK,CAACuG,SAAN,uCAAiB/I,IAAjB,MAA0B,UAAzC;AAEA,QAAM;AAAEgK,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAe+J,gBAAc,CAACxR,KAAD,EAAQsR,QAAR,EAAkBC,MAAlB,EAA0BF,KAA1B,CAAnC;AAEA,QAAMuN,aAAa,GAAGrD,WAAW,GAC7BA,WAAW,sBACTvb,KAAK,CAACuG,SADG,qBACT,kBAAiB/I,IADR,EAETgK,IAFS,uBAGTxH,KAAK,CAACuG,SAHG,qBAGT,kBAAiBmY,YAHR,CADkB,GAM7BlX,IANJ;AAOA,QAAMqX,WAAW,GAAGtD,WAAW,GAC3BA,WAAW,sBACTvb,KAAK,CAACuG,SADG,qBACT,kBAAiB/I,IADR,EAETiK,EAFS,uBAGTzH,KAAK,CAACuG,SAHG,qBAGT,kBAAiBmY,YAHR,CADgB,GAM3BjX,EANJ;;AAQA,MAAID,IAAI,KAAK,IAAb,EAAmB;AACjB,gBAAUqX,WAAV,IAAwB,CAACtN,MAAD,SAAcd,IAAI,CAACgB,CAAL,CAAO,SAAP,EAAkB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAlB,CAAd,GAAqD,EAA7E;AACD;;AAED,MAAItJ,EAAE,KAAK,IAAX,EAAiB;AACf,iBAAU,CAAC8J,MAAD,GAAad,IAAI,CAACgB,CAAL,CAAO,MAAP,EAAe;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAf,CAAb,SAAkD,EAA5D,IAAiE6N,aAAjE;AACD;;AAED,SAAOpX,IAAI,KAAKC,EAAT,QAAiBmX,aAAjB,GAAsCA,aAAtC,WAAyDC,WAAhE;AACD,CAlCM;AAoCP,MAAaC,mBAAmB,GAC9BC,SADiC;;;AAGjC,SACE,0BAAAjL,qBAAqB,CAACiL,SAAS,CAACC,YAAX,CAArB,2CAA+CzhB,IAA/C,CAAoD0hB,KAAK;;;AACvD,UAAMC,UAAU,GAAIC,GAAG,qBACrBJ,SAAS,CAACxU,KADW,qBACrB,iBAAiBzB,MADI,EAErBmW,KAFqB,CAAvB;AAKA,WAAO,CAAAC,UAAU,QAAV,YAAAA,UAAU,CAAE1hB,IAAZ,MAAqB,aAA5B;AACD,GAPD,MAOM,KARR;AAUD,CAbM;AAeP,MAAa4hB,qBAAqB,GAAG;MAAC;AACpCtY,IAAAA,SADoC;AAEpCP,IAAAA,SAFoC;AAGpCgV,IAAAA;AAHoC;AASpC,QAAMyC,KAAK,GAAGlX,SAAH,oBAAGA,SAAS,CAAEzD,KAAX,CAAiB,MAAjB,CAAd;AACA,QAAMqL,WAAW,GAAGsP,KAAK,QAAL,IAAAA,KAAK,CAAG,CAAH,CAAL,GAAcA,KAAK,CAAC,CAAD,CAAL,CAASrB,UAAT,CAAoB,GAApB,KAA4BqB,KAAK,CAAC,CAAD,CAAL,CAASnB,QAAT,CAAkB,GAAlB,CAA5B,GAAqDmB,KAAK,CAAC,CAAD,CAAL,CAAS1D,KAAT,CAAe,CAAf,EAAkB,CAAC,CAAnB,CAArD,GAA6E0D,KAAK,CAAC,CAAD,CAAhG,GAAuG,EAA3H;AAEA,SAAOzX,SAAS,IAAIgV,WAAb,GACHA,WAAW,CAAChV,SAAS,CAAC/I,IAAX,EAAiBkR,WAAjB,EAA8BnI,SAAS,CAACmY,YAAxC,CADR,GAEHhQ,WAFJ;AAGD,CAfM;AAiBP,SAAgB2Q,8BACdH,YACA3Y,WACAgV,aACAlK;AAEA,MAAI,CAAC9K,SAAL,EAAgB,OAAO,EAAP;AAEhB,MAAI2Y,UAAU,CAAC5Q,KAAf,EAAsB,OAAO4Q,UAAU,CAAC5Q,KAAlB;AAEtB,QAAMtO,KAAK,GAAG;AACZ+N,IAAAA,cAAc,EAAEpF,iBAAiB,CAACuW,UAAU,CAAClf,KAAZ,CADrB;AAEZuG,IAAAA;AAFY,GAAd;AAKA,QAAM+Y,IAAI,GAAGjB,wBAAwB,CAACa,UAAU,CAACpY,SAAZ,EAAuB,CAAvB,CAArC;AACA,QAAMyY,WAAW,GAAGD,IAAI,CAAChiB,QAAL,CAAc,GAAd,CAApB;AAEC0C,EAAAA,KAAoB,CAACwH,IAArB,GAA4B+X,WAAW,GACpCjB,yBAAyB,CAACY,UAAU,CAACpY,SAAZ,EAAuB,CAAvB,CADW,GAEpC,IAFH;AAGA9G,EAAAA,KAAoB,CAACyH,EAArB,GACCyX,UAAU,CAACpY,SAAX,CAAqBxJ,QAArB,CAA8B,MAA9B,KAAyCiiB,WAAzC,GACIjB,yBAAyB,CAACY,UAAU,CAACpY,SAAZ,EAAuB,CAAvB,CAD7B,GAEI,CAACyY,WAAD,GACAjB,yBAAyB,CAACY,UAAU,CAACpY,SAAZ,EAAuB,CAAvB,CADzB,GAEA,IALL;AAOD,MAAIN,YAAY,CAACxG,KAAD,CAAhB,EACE,OAAO2e,qBAAqB,CAAC3e,KAAD,EAAsBub,WAAtB,EAAmClK,KAAnC,CAA5B;AACF,MAAI3K,aAAa,CAAC1G,KAAD,CAAjB,EACE,OAAOye,sBAAsB,CAACze,KAAD,EAAuBub,WAAvB,CAA7B;AAEF,SAAO,EAAP;AACD;AAwBD;AACA;;AACA,MAAaiE,qBAAqB,GAAqB;AACrD;;AAAA,KAA2B;AACzB7F,IAAAA,SAAS,EAAE,WADc;AAEzBH,IAAAA,WAAW,EAAE,CAFY;AAGzBC,IAAAA,WAAW,EAAE;AAHY,GAD0B;AAMrD;;AAAA,KAAgC;AAC9BgG,IAAAA,WAAW,EAAE;AADiB,GANqB;AASrD;;AAAA,KAA0B;AACxB3T,IAAAA,MAAM,EAAE;AACNqO,MAAAA,KAAK,EAAE,CADD;AAEND,MAAAA,KAAK,EAAE;AAFD;AADgB,GAT2B;AAerD;;AAAA,KAA6B;AAC3BvN,IAAAA,IAAI,EAAE;AACJuN,MAAAA,KAAK,EAAE,WADH;AAEJwF,MAAAA,UAAU,EAAE;AAFR,KADqB;AAK3B5T,IAAAA,MAAM,EAAE;AACNqO,MAAAA,KAAK,EAAE,CADD;AAEND,MAAAA,KAAK,EAAE;AAFD;AALmB;AAfwB,CAAhD;AA2BP,MAAayF,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,EAEjC/iB,SAFiC,EAGjCgjB,qBAHiC,EAIjC5iB,IAJiC;AAMjC,MAAI4iB,qBAAqB,CAAC9iB,QAAtB,CAA+BF,SAA/B,CAAJ,EAA+C;AAC7C,UAAMijB,qBAAqB,GAAGC,sBAAsB,CAClDd,qBAAqB,CAAChiB,IAAD,CAD6B,EAElDJ,SAFkD,CAApD;;AAKA,QAAIijB,qBAAJ,EAA2B;AACzB,aAAOA,qBAAP;AACD;;AACD,QACEV,sBAAsB,CAACriB,QAAvB,CAAgCF,SAAhC,KACAwiB,oBAAoB,CAACO,UAAU,CAAC3iB,IAAZ,CAFtB,EAGE;AACA,aAAOoiB,oBAAoB,CAACO,UAAU,CAAC3iB,IAAZ,CAA3B;AACD;AACF;;AAED,SAAOmL,iBAAiB,CAAC2X,sBAAsB,CAACH,UAAD,EAAa/iB,SAAb,CAAvB,CAAxB;AACD,CAxBD;;AA0BA,MAAamjB,qBAAqB,GAAG,CACnCzX,MADmC,EAEnCO,IAFmC,EAGnCrJ,KAHmC,KAKnC4I,qBAAqB,CAAC,MAAM5I,KAAP,CAArB,CACE8I,MADF,EAEEO,IAFF,CALK;;AAUP,MAAMmX,iBAAiB,GAA8C,CACnEL,UADmE,EAEnE/iB,SAFmE,EAGnEgjB,qBAHmE,EAInErS,cAJmE;AAMnE,SAAOwS,qBAAqB,cAErBJ,UAFqB;AAGxBxG,IAAAA,SAAS,EAAEuG,0BAA0B,CACnCC,UADmC,EAEnC,WAFmC,EAGnCC,qBAHmC;;AAAA,KAHb;AASxB3G,IAAAA,WAAW,EAAEyG,0BAA0B,CACrCC,UADqC,EAErC,aAFqC,EAGrCC,qBAHqC;;AAAA,KATf;AAexB5G,IAAAA,WAAW,EAAE0G,0BAA0B,CACrCC,UADqC,EAErC,aAFqC,EAGrCC,qBAHqC;;AAAA,KAff;AAqBxBtK,IAAAA,IAAI,EAAEoK,0BAA0B,CAC9BC,UAD8B,EAE9B,MAF8B,EAG9BC,qBAH8B;;AAAA,KArBR;AA2BxBxS,IAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ;AA3BgB,MA6B1BxQ,SA7B0B,EA8B1B2Q,cA9B0B,CAA5B;AAgCD,CAtCD;;AA6CA,SAAgB0S,cAAc3X,QAAqBgN;AACjD,QAAM4K,MAAM,GAAG/X,iBAAiB,CAACG,MAAM,CAAC4X,MAAR,CAAhC;AACA,QAAMvG,KAAK,GAAGxR,iBAAiB,CAACG,MAAM,CAACqR,KAAR,CAA/B;;AAEA,MAAIA,KAAK,KAAKuG,MAAd,EAAsB;AACpB,WAAO;AACLvG,MAAAA,KAAK,EAAErE,IADF;AAEL4K,MAAAA,MAAM,EAAE5K;AAFH,KAAP;AAID;;AAED,QAAM6K,KAAK,GAAGD,MAAM,GAAGvG,KAAvB;;AAEA,MAAIA,KAAK,GAAGuG,MAAZ,EAAoB;AAClB,WAAO;AACLvG,MAAAA,KAAK,EAAErE,IADF;AAEL4K,MAAAA,MAAM,EAAEA,MAAM,GAAG,CAAC5K,IAAI,GAAGqE,KAAR,IAAiBwG;AAF7B,KAAP;AAID;;AAED,SAAO;AACLxG,IAAAA,KAAK,EAAEA,KAAK,GAAG,CAACrE,IAAI,GAAG4K,MAAR,IAAkBC,KAD5B;AAELD,IAAAA,MAAM,EAAE5K;AAFH,GAAP;AAID;;AAED,MAAM8K,sBAAsB,GAA+B,CACzDT,UADyD,EAEzD/iB,SAFyD,EAGzDgjB,qBAHyD,EAIzDrS,cAJyD;AAMzD,MAAIjF,MAAM,gBAAQqX,UAAR,CAAV;;AAEA,MAAInV,mBAAmB,CAAClC,MAAD,CAAvB,EAAiC;AAC/BA,IAAAA,MAAM,CAAC2W,WAAP,GAAqBS,0BAA0B,CAC7CC,UAD6C,EAE7C,aAF6C,EAG7CC,qBAH6C;;AAAA,KAA/C;AAMD;;AAED,MAAIhjB,SAAS,KAAK,QAAd,IAA0BA,SAAS,KAAK,OAA5C,EAAqD;AACnD,UAAM;AAAEsjB,MAAAA,MAAF;AAAUvG,MAAAA;AAAV,QAAoBsG,aAAa,CACrCN,UADqC,EAErCpS,cAFqC,CAAvC;AAKAjF,IAAAA,MAAM,CAAC4X,MAAP,GAAgBA,MAAhB;AACA5X,IAAAA,MAAM,CAACqR,KAAP,GAAeA,KAAf;AACD,GARD,MAQO;AACLrR,IAAAA,MAAM,CAACqR,KAAP,GAAe+F,0BAA0B,CACvCC,UADuC,EAEvC,OAFuC,EAGvCC,qBAHuC;;AAAA,KAAzC;AAMAtX,IAAAA,MAAM,CAAC4X,MAAP,GAAgB5X,MAAM,CAACqR,KAAvB;AAEArR,IAAAA,MAAM,GAAGyX,qBAAqB,CAACzX,MAAD,EAAS1L,SAAT,EAAoB2Q,cAApB,CAA9B;AACD;;AAEDjF,EAAAA,MAAM,CAAC8E,MAAP,GAAgB,CACbjF,iBAAiB,CAACG,MAAM,CAAC4X,MAAR,CAAjB,GAAsE,CADzD,EAEb/X,iBAAiB,CAACG,MAAM,CAACqR,KAAR,CAAjB,GAAqE,CAFxD,CAAhB;AAKA,SAAOrR,MAAP;AACD,CA3CD;;AA6CA,MAAM+X,gBAAgB,GAAkC,CACtDV,UADsD,EAEtD/iB,SAFsD,EAGtDgjB,qBAHsD,EAItDrS,cAJsD;AAMtD,SAAOwS,qBAAqB,cAErBJ,UAFqB;AAGxB3iB,IAAAA,IAAI,EAAE,gBAHkB;AAIxBsO,IAAAA,MAAM,EAAE;AACNoO,MAAAA,KAAK,EAAEgG,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA,OAD3B;AAONjG,MAAAA,KAAK,EAAE+F,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA;AAP3B;AAJgB,MAmB1BhjB,SAnB0B,EAoB1B2Q,cApB0B,CAA5B;AAsBD,CA5BD;;AA8BA,MAAM+S,mBAAmB,GAAiC,CACxDX,UADwD,EAExD/iB,SAFwD,EAGxDgjB,qBAHwD,EAIxDrS,cAJwD;AAMxD,SAAOwS,qBAAqB,cAErBJ,UAFqB;AAGxBxT,IAAAA,IAAI,EAAE;AACJuN,MAAAA,KAAK,EAAEgG,0BAA0B,CAC/BC,UAD+B,EAE/B,YAF+B,EAG/BC,qBAH+B;;AAAA,OAD7B;AAOJV,MAAAA,UAAU,EAAEQ,0BAA0B,CACpCC,UADoC,EAEpC,iBAFoC,EAGpCC,qBAHoC;;AAAA;AAPlC,KAHkB;AAiBxBtU,IAAAA,MAAM,EAAE;AACNoO,MAAAA,KAAK,EAAEgG,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA,OAD3B;AAONjG,MAAAA,KAAK,EAAE+F,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA;AAP3B;AAjBgB,MAgC1BhjB,SAhC0B,EAiC1B2Q,cAjC0B,CAA5B;AAmCD,CAzCD;;AA2CA,MAAMgT,cAAc,GAA4B,CAC9CZ,UAD8C,EAE9C/iB,SAF8C,EAG9CgjB,qBAH8C,EAI9CrS,cAJ8C;AAM9C,SAAQwS,qBAAqB,cAEtBJ,UAFsB;AAGzBxT,IAAAA,IAAI,EAAE;AACJuN,MAAAA,KAAK,EAAEgG,0BAA0B,CAC/BC,UAD+B,EAE/B,YAF+B,EAG/BC,qBAH+B;;AAAA;AAD7B,KAHmB;AAWzBtU,IAAAA,MAAM,EAAE;AACNoO,MAAAA,KAAK,EAAEgG,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA,OAD3B;AAONjG,MAAAA,KAAK,EAAE+F,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA;AAP3B;AAXiB,MA0B3BhjB,SA1B2B,EA2B3B2Q,cA3B2B,CAA7B;AA6BD,CAnCD;;AAqCA,MAAMiT,mBAAmB,GAAiC,CACxDb,UADwD,EAExD/iB,SAFwD,EAGxDgjB,qBAHwD,EAIxDrS,cAJwD;AAMxD,SAAOwS,qBAAqB,cAErBJ,UAFqB;AAGxBxG,IAAAA,SAAS,EAAEuG,0BAA0B,CACnCC,UADmC,EAEnC,WAFmC,EAGnCC,qBAHmC;;AAAA;AAHb,MAU1BhjB,SAV0B,EAW1B2Q,cAX0B,CAA5B;AAaD,CAnBD;;AAqBA,MAAakT,kBAAkB,GAAG,CAChClT,cADgC,EAEhC3Q,SAFgC,EAGhCgjB,qBAHgC,EAIhCD,UAJgC;AAMhC,MAAIlS,sBAAsB,CAACF,cAAD,CAA1B,EAA4C;AAC1C,WAAOA,cAAP;AACD;;AAED,MAAI9B,eAAe,CAACkU,UAAD,CAAnB,EAAiC;AAC/B,WAAOa,mBAAmB,CACxBb,UADwB,EAExB/iB,SAFwB,EAGxBgjB,qBAHwB,EAIxBrS,cAJwB,CAA1B;AAMD;;AAED,MAAItC,eAAe,CAAC0U,UAAD,CAAnB,EAAiC;AAC/B,WAAOK,iBAAiB,CACtBL,UADsB,EAEtB/iB,SAFsB,EAGtBgjB,qBAHsB,EAItBrS,cAJsB,CAAxB;AAMD;;AAED,MAAIvC,sBAAsB,CAAC2U,UAAD,CAA1B,EAAwC;AACtC,WAAOS,sBAAsB,CAC3BT,UAD2B,EAE3B/iB,SAF2B,EAG3BgjB,qBAH2B,EAI3BrS,cAJ2B,CAA7B;AAMD;;AAED,MAAIzC,iBAAiB,CAAC6U,UAAD,CAArB,EAAmC;AACjC,WAAOU,gBAAgB,CACrBV,UADqB,EAErB/iB,SAFqB,EAGrBgjB,qBAHqB,EAIrBrS,cAJqB,CAAvB;AAMD;;AAED,MAAI5C,eAAe,CAACgV,UAAD,CAAnB,EAAiC;AAC/B,WAAOW,mBAAmB,CACxBX,UADwB,EAExB/iB,SAFwB,EAGxBgjB,qBAHwB,EAIxBrS,cAJwB,CAA1B;AAMD;;AAED,MAAIhC,cAAc,CAACoU,UAAD,CAAlB,EAAgC;AAC9B,WAAOY,cAAc,CACnBZ,UADmB,EAEnB/iB,SAFmB,EAGnBgjB,qBAHmB,EAInBrS,cAJmB,CAArB;AAMD;;AAED,SAAO,IAAP;AACD,CAjEM;AAmEP,SAAgBmT,sBACd5R,eACA6R,eACAnhB;AAEA,MAAIohB,QAAJ;AACA,MAAI1F,kBAAJ;;AAEA,MAAIlV,YAAY,CAACxG,KAAD,CAAhB,EAAyB;AACvB,QAAIA,KAAK,CAACwH,IAAN,IAAcxH,KAAK,CAACyH,EAAxB,EAA4B;AAC1B2Z,MAAAA,QAAQ,GAAG,CAACphB,KAAK,CAACwH,IAAP,EAAuBxH,KAAK,CAACyH,EAA7B,CAAX;AACAiU,MAAAA,kBAAkB,GAAGrI,kBAAkB,CAAC0D,OAAxC;AACD,KAHD,MAGO,IAAI/W,KAAK,CAACwH,IAAV,EAAgB;AACrB4Z,MAAAA,QAAQ,GAAGphB,KAAK,CAACwH,IAAjB;AACAkU,MAAAA,kBAAkB,GAAGrI,kBAAkB,CAAC+C,QAAxC;AACD,KAHM,MAGA,IAAIpW,KAAK,CAACyH,EAAV,EAAc;AACnB2Z,MAAAA,QAAQ,GAAGphB,KAAK,CAACyH,EAAjB;AACAiU,MAAAA,kBAAkB,GAAGrI,kBAAkB,CAAC6C,WAAxC;AACD;AACF,GAXD,MAWO;AACLkL,IAAAA,QAAQ,GAAGphB,KAAK,CAAC0O,WAAN,IAAqB1O,KAAK,CAACsO,KAAtC;AACAoN,IAAAA,kBAAkB,GAAGrI,kBAAkB,CAAC4C,SAAxC;AACD;;AAED,SAAO,IAAIkH,eAAJ,CACLb,qBAAqB,CAAC;AACpB/V,IAAAA,SAAS,EAAE+I,aADS;AAEpB9R,IAAAA,IAAI,EAAE2jB,aAFc;AAGpBzF,IAAAA,kBAAkB,EAAEA,kBAHA;AAIpB1b,IAAAA,KAAK,EAAEohB;AAJa,GAAD,CADhB,EAOLve,QAPK,EAAP;AAQD;AAED,MAAawe,0BAA0B,GAAG,CACxCtS,MADwC,EAExCO,aAFwC,EAGxC6R,aAHwC;AAKxC,QAAMnhB,KAAK,GAAG+O,MAAM,CAACA,MAAM,CAACrJ,MAAP,GAAgB,CAAjB,CAApB;AACA,MAAI4b,eAAJ;;AAEA,MAAI9a,YAAY,CAACxG,KAAD,CAAhB,EAAyB;AACvBshB,IAAAA,eAAe,GAAG,IAAInE,eAAJ,CAChBb,qBAAqB,CAAC;AACpB/V,MAAAA,SAAS,EAAE+I,aADS;AAEpB9R,MAAAA,IAAI,EAAE2jB,aAFc;AAGpBzF,MAAAA,kBAAkB,EAAErI,kBAAkB,CAACgD,YAHnB;AAIpBrW,MAAAA,KAAK,EAAGA,KAAoB,CAACyH,EAArB,IAA4BzH,KAAoB,CAACwH;AAJrC,KAAD,CADL,EAOhB3E,QAPgB,EAAlB;AAQD,GATD,MASO;AACL,UAAMgb,UAAU,GAAG9O,MAAM,CAACpJ,GAAP,CAAWoW,GAAG,IAC/B,IAAIoB,eAAJ,CACEb,qBAAqB,CAAC;AACpB/V,MAAAA,SAAS,EAAE+I,aADS;AAEpB9R,MAAAA,IAAI,EAAE2jB,aAFc;AAGpBzF,MAAAA,kBAAkB,EAAErI,kBAAkB,CAAC2C,MAHnB;AAIpBhW,MAAAA,KAAK,EAAG+b,GAAmB,CAACrN;AAJR,KAAD,CADvB,EAOE7L,QAPF,EADiB,CAAnB;AAWAye,IAAAA,eAAe,UAAQzD,UAAU,CAC9BjT,MADoB,CACbnE,OADa,EAEpBjD,IAFoB,OAEX4P,wBAAwB,CAACuK,EAFd,OAAR,OAAf;AAGD;;AAED,SAAO2D,eAAP;AACD,CAnCM;AAqCP,MAAaC,wBAAwB,GAAG,CACtChb,SADsC,EAEtCib,UAFsC,EAGtCjG,WAHsC,EAItClK,KAJsC,EAKtCoQ,UALsC;AAOtC,QAAMC,KAAK,GAAG;AACZpT,IAAAA,KAAK,EAAEmT,UADK;AAEZ1T,IAAAA,cAAc,EAAEyT,UAAU,CAAC9e,YAFf;AAGZ4e,IAAAA,eAAe,EAAED,0BAA0B,CACzCG,UAAU,CAACzS,MAAX,CAAkBpJ,GAAlB,CAAsBoW,GAAG,IACvB4F,sBAAsB,CACpB5F,GAAG,CAAC/b,KADgB,EAEpByhB,UAFoB,EAGpB,IAAI5a,uBAAJ,CAA4BkV,GAAG,CAACjV,SAAhC,CAHoB,CADxB,CADyC,EAQzCP,SAAS,CAAC0L,IAR+B,EASzC1L,SAAS,CAAC/I,IAT+B;AAH/B,GAAd;AAgBA,QAAMokB,KAAK,GAAGJ,UAAU,CAACzS,MAAX,CAAkBpJ,GAAlB,CAAsBuZ,UAAU;AAC5C,UAAMnR,cAAc,GAAGpF,iBAAiB,CAACuW,UAAU,CAAClf,KAAZ,CAAxC;AACA,UAAMoQ,MAAM,GAAG;AAAErC,MAAAA,cAAF;AAAkBxH,MAAAA;AAAlB,KAAf;;AAEA,QAAIgY,gBAAgB,CAACW,UAAU,CAACpY,SAAZ,CAApB,EAA4C;AAC1C,YAAMU,IAAI,GAAG8W,yBAAyB,CAACY,UAAU,CAACpY,SAAZ,EAAuB,CAAvB,CAAtC;AACA,YAAMW,EAAE,GAAG6W,yBAAyB,CAACY,UAAU,CAACpY,SAAZ,EAAuB,CAAvB,CAApC;AAECsJ,MAAAA,MAAqB,CAAC5I,IAAtB,GAA6BA,IAAI,GAC9BmT,SAAS,CAACnT,IAAD,CAAT,GACE,CAACA,IADH,GAEEjF,UAAU,CAACiF,IAAD,CAHkB,GAI9B,IAJH;AAKA4I,MAAAA,MAAqB,CAAC3I,EAAtB,GAA2BA,EAAE,GAC1BkT,SAAS,CAAClT,EAAD,CAAT,GACE,CAACA,EADH,GAEElF,UAAU,CAACkF,EAAD,CAHc,GAI1B,IAJH;AAMD2I,MAAAA,MAAM,CAAC9B,KAAP,GAAe+Q,6BAA6B,CAC1CH,UAD0C,EAE1C3Y,SAF0C,EAG1CgV,WAH0C,EAI1ClK,KAJ0C,CAA5C;AAOA,aAAOjB,MAAP;AACD;;AAEAA,IAAAA,MAAsB,CAAC1B,WAAvB,GAAqC6M,WAAW,GAC5CA,WAAW,CACVhV,SAAS,CAAC/I,IADA,EAEV0hB,UAAU,CAAClf,KAFD,EAGVuG,SAAS,CAACmY,YAHA,CADiC,GAM7CQ,UAAU,CAAClf,KAAX,CAAiB6C,QAAjB,EANH;AAODuN,IAAAA,MAAM,CAAC9B,KAAP,GAAe8Q,qBAAqB,CAAC;AAAEtY,MAAAA,SAAS,EAAEoY,UAAU,CAACpY;AAAxB,KAAD,CAApC;AACAsJ,IAAAA,MAAM,CAACkR,eAAP,GAAyBJ,qBAAqB,CAC5C3a,SAAS,CAAC0L,IADkC,EAE5C1L,SAAS,CAAC/I,IAFkC,EAG5CmkB,sBAAsB,CACpBzC,UAAU,CAAClf,KADS,EAEpBoQ,MAAM,CAAC9B,KAFa,EAGpB,IAAIzH,uBAAJ,CAA4BqY,UAAU,CAACpY,SAAvC,CAHoB,CAHsB,CAA9C;AAUA,WAAOsJ,MAAP;AACD,GAhDa,CAAd;AAkDA,SAAO,CAAC,GAAGwR,KAAJ,EAAWF,KAAX,CAAP;AACD,CA1EM;AA4EP,MAAaG,wBAAwB,GAAG,CACtCtb,SADsC,EAEtC0Y,KAFsC,EAGtC6C,MAHsC,EAItCN,UAJsC,EAKtC1Y,MALsC,EAMtCyS,WANsC,EAOtCwG,YAPsC,EAQtCN,UARsC;AAUtC,QAAMC,KAAK,GAAG;AACZpT,IAAAA,KAAK,EAAEmT,UADK;AAEZ3Y,IAAAA,MAAM,EAAEmY,kBAAkB,CACxBO,UAAU,CAAC9e,YADa,EAExBuc,KAFwB,EAGxB6C,MAHwB,EAIxBhZ,MAJwB,CAFd;AAQZwY,IAAAA,eAAe,EAAED,0BAA0B,CACzCG,UAAU,CAACzS,MAAX,CAAkBpJ,GAAlB,CAAsBoW,GAAG,IACvB4F,sBAAsB,CACpB5F,GAAG,CAAC/b,KADgB,EAEpByhB,UAFoB,EAGpB,IAAI5a,uBAAJ,CAA4BkV,GAAG,CAACjV,SAAhC,CAHoB,CADxB,CADyC,EAQzCP,SAAS,CAAC0L,IAR+B,EASzC1L,SAAS,CAAC/I,IAT+B;AAR/B,GAAd;AAqBA,QAAMokB,KAAK,GAAGJ,UAAU,CAACzS,MAAX,CAAkBpJ,GAAlB,CAAsB,CAACuZ,UAAD,EAAa7N,KAAb;AAClC,UAAMjB,MAAM,GAAG;AACbtH,MAAAA,MAAM,EAAEmY,kBAAkB,CACxB/B,UAAU,CAAClf,KADa,EAExBif,KAFwB,EAGxB6C,MAHwB,EAIxBhZ,MAJwB;AADb,KAAf;AASAsH,IAAAA,MAAM,CAAC9B,KAAP,GAAeiQ,gBAAgB,CAACW,UAAU,CAACpY,SAAZ,CAAhB,GACXuY,6BAA6B,CAC3BH,UAD2B,EAE3B3Y,SAF2B,EAG3BgV,WAH2B,EAI3BwG,YAJ2B,CADlB,GAOX3C,qBAAqB,CAAC;AAAEtY,MAAAA,SAAS,EAAEoY,UAAU,CAACpY;AAAxB,KAAD,CAPzB;AASAsJ,IAAAA,MAAM,CAACkR,eAAP,GAAyBJ,qBAAqB,CAC5C3a,SAAS,CAAC0L,IADkC,EAE5C1L,SAAS,CAAC/I,IAFkC,EAG5CmkB,sBAAsB,CACpBzC,UAAU,CAAClf,KADS,EAEpBoQ,MAAM,CAAC9B,KAFa,EAGpB,IAAIzH,uBAAJ,CAA4B2a,UAAU,CAACzS,MAAX,CAAkBsC,KAAlB,EAAyBvK,SAArD,CAHoB,CAHsB,CAA9C;AAUA,WAAOsJ,MAAP;AACD,GA9Ba,CAAd;AAgCA,SAAO,CAAC,GAAGwR,KAAJ,EAAWF,KAAX,CAAP;AACD,CAhEM;AAsEP,MAAaM,oBAAoB,GAAG,CAClClZ,MADkC,EAElCmZ,cAFkC,EAGlC5Q,KAHkC;AAKlC,SAAO4Q,cAAP,oBAAOA,cAAc,CAAEhT,MAAhB,CAAuB,CAACmB,MAAD,EAASoR,UAAT;AAC5B,UAAMvC,KAAK,GAAIE,GAAG,CAChBrW,MADgB,EAEhB0Y,UAFgB,CAAlB;AAKA,WAAO,CAAAvC,KAAK,QAAL,YAAAA,KAAK,CAAEzhB,IAAP,MAAgB,aAAhB,gBAAqC4S,MAArC;AAA6C,OAACoR,UAAD;AAAgBnQ,QAAAA;AAAhB,SAA0B4N,KAA1B;AAA7C,SAAmF7O,MAA1F;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD,CAbM;AAeP,MAAa8R,aAAa,GACxBnD,SAD2B;;;AAG3B,MAAI,CAACA,SAAL,EAAgB,OAAO3Y,SAAP;;AAEhB,2BAAI2Y,SAAS,CAACxU,KAAd,sCAAI,kBAAiBC,QAArB,aAAI,sBAA2B9E,MAA/B,EAAuC;AAAA;;AACrC,WAAO;AACLoD,MAAAA,MAAM,EAAE;AACNtL,QAAAA,IAAI,EAAE,aADA;AAENkF,QAAAA,YAAY,EAAEqc,SAAS,CAACxU,KAAV,CAAgBzB,MAFxB;AAGNwF,QAAAA,KAAK,EAAE,IAHD;AAINS,QAAAA,MAAM,uBAAEgQ,SAAS,CAACxU,KAAZ,qBAAE,kBAAiBC;AAJnB;AADH,KAAP;AAUD;;AAED,QAAMyX,cAAc,GAAGnO,qBAAqB,CAACiL,SAAS,CAACC,YAAX,CAA5C;;AAEA,MAAI,qBAAAD,SAAS,CAACxU,KAAV,+BAAiBzB,MAAjB,IAA2BoC,wBAAwB,CAAC6T,SAAS,CAACxU,KAAV,CAAgBzB,MAAjB,CAAvD,EAAiF;AAAA;;AAC/E,QAAI,2BAACiW,SAAS,CAACxU,KAAV,CAAgBzB,MAAhB,CAAuBiG,MAAxB,aAAC,sBAA+BrJ,MAAhC,CAAJ,EAA4C,OAAOU,SAAP;AAE5C,WAAO2Y,SAAS,CAACxU,KAAV,CAAgBzB,MAAhB,CAAuBiG,MAAvB,CAA8BE,MAA9B,CAAqC,CAACmB,MAAD,EAAyB+R,QAAzB,EAA2D9Q,KAA3D;AAC1C,0BAAYjB,MAAZ,EAAuB4R,oBAAoB,CAACG,QAAD,EAAWF,cAAX,EAA2B5Q,KAA3B,CAA3C;AACD,KAFM,EAEJ,EAFI,CAAP;AAGD;;AAED,SAAO2Q,oBAAoB,sBAACjD,SAAS,CAACxU,KAAX,qBAAC,kBAAiBzB,MAAlB,EAA0BmZ,cAA1B,CAA3B;AACD,CA7BM;AA+BP,MAAaG,oBAAoB,GAAItZ,MAAD;;;AAClC,SAAOkD,gBAAgB,CAAClD,MAAD,CAAhB,yBACDA,MAAM,CAAC+P,UADN,qBACD,mBAAsCW,WADrC,GAED1Q,MAAsB,CAAC0Q,WAF7B;AAGD,CAJM;AAMP,MAAa8G,sBAAsB,GAAG,CACpCxX,MADoC,EAEpC1L,SAFoC;AAIpC,MAAIilB,mBAAmB,GAAG,EAA1B;AAEAzZ,EAAAA,qBAAqB,CAAEmF,cAAD;AACpBsU,IAAAA,mBAAmB,GAAGtU,cAAtB;AACD,GAFoB,CAArB,CAEGjF,MAFH,EAEW1L,SAFX;AAIA,SAAOilB,mBAAP;AACD,CAXM;AAaP,MAAaC,mBAAmB,GAAIxZ,MAAD;AACjC,MAAIgN,IAAI,GAAG,CAAX;;AAEA,MAAI9J,gBAAgB,CAAClD,MAAD,CAApB,EAA8B;AAC5BgN,IAAAA,IAAI,GAAGnN,iBAAiB,CAACG,MAAM,CAACgN,IAAR,CAAxB;AACD;;AAED,MAAI/J,cAAc,CAACjD,MAAD,CAAlB,EAA4B;AAC1BgN,IAAAA,IAAI,GAAGnN,iBAAiB,CAACG,MAAM,CAACyZ,QAAR,CAAxB;AACD;;AAED,MAAI/W,sBAAsB,CAAC1C,MAAD,CAA1B,EAAoC;AAClCgN,IAAAA,IAAI,GAAG5V,IAAI,CAACsV,GAAL,CACL7M,iBAAiB,CAACG,MAAM,CAACqR,KAAR,CADZ,EAELxR,iBAAiB,CAACG,MAAM,CAAC4X,MAAR,CAFZ,CAAP;AAID;;AAED,MAAIjV,eAAe,CAAC3C,MAAD,CAAnB,EAA6B;AAC3B,UAAM0Q,WAAW,GAAG4I,oBAAoB,CAACtZ,MAAD,CAAxC;AAEAgN,IAAAA,IAAI,GACFnN,iBAAiB,CAACG,MAAM,CAACgN,IAAR,CAAjB,IACC0D,WAAW,GAAG7Q,iBAAiB,CAAC6Q,WAAD,CAAjB,GAAiCjG,iBAApC,GAAwD,CADpE,CADF;AAGD;;AAED,MAAIjI,iBAAiB,CAACxC,MAAD,CAArB,EAA+B;AAC7BgN,IAAAA,IAAI,GAAGnN,iBAAiB,CACtB2X,sBAAsB,CAACxX,MAAD,EAAS,cAAT,CADA,CAAxB;AAGD;;AAED,SAAO5I,IAAI,CAACsV,GAAL,CAASlC,0BAAT,EAAqCwC,IAArC,CAAP;AACD,CAjCM;AAmCP,MAAa0M,uBAAuB,GAAI1Z,MAAD;;;AACrC,MAAI,CAACA,MAAL,EAAa,OAAO,IAAP;AAEb,QAAM2Z,eAAe,GACjB,mBAAA3Z,MAAM,CAACgQ,MAAP,oCAAkCa,SAAlC,KAA0D,IAD9D;AAEA,QAAM+I,WAAW,GACb,wBAAA5Z,MAAM,CAAC+P,UAAP,yCAAsCc,SAAtC,KAA8D,IADlE;AAGA;AACEnc,IAAAA,IAAI,EAAE,gBADR;AAEEsY,IAAAA,IAAI,EAAEhN,MAAM,CAACgN,IAFf;AAGElI,IAAAA,MAAM,EAAE9E,MAAM,CAAC8E,MAHjB;AAIEgL,IAAAA,KAAK,EAAE9P,MAAM,CAAC8P;AAJhB,KAKM8J,WAAW,GACX;AACE7J,IAAAA,UAAU,EAAE;AACV8J,MAAAA,EAAE,EAAE,WADM;AAEVhJ,MAAAA,SAAS,EAAE+I,WAFD;AAGVjJ,MAAAA,WAAW,EACP,wBAAA3Q,MAAM,CAAC+P,UAAP,yCAAsCY,WAAtC,KACF,IALQ;AAMVD,MAAAA,WAAW,EACR,wBAAA1Q,MAAM,CAAC+P,UAAP,yCAAsCW,WAAtC,KAAqD,IAP9C;AAQVhc,MAAAA,IAAI,EACD,wBAAAsL,MAAM,CAAC+P,UAAP,yCAAsCrb,IAAtC,KAA8Cka,WAAW,CAAChK;AATnD;AADd,GADW,GAcX,EAnBN,EAoBM+U,eAAe,GACf;AACE3J,IAAAA,MAAM,EAAE;AACN6J,MAAAA,EAAE,EAAE,eADE;AAENhJ,MAAAA,SAAS,EAAE8I,eAFL;AAGNhJ,MAAAA,WAAW,EACP,oBAAA3Q,MAAM,CAACgQ,MAAP,qCAAkCW,WAAlC,KACF,IALI;AAMND,MAAAA,WAAW,EACR,oBAAA1Q,MAAM,CAACgQ,MAAP,qCAAkCU,WAAlC,KAAiD;AAP9C;AADV,GADe,GAWf,EA/BN;AAiCD,CAzCM;AA2CP,MAAMoJ,eAAe,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,aAAnB,EAAkC,cAAlC,CAAxB;AAEA,MAAaC,oBAAoB,GAAIzlB,SAAD,IAClCwlB,eAAe,CAACtlB,QAAhB,CAAyBF,SAAzB,CADK;AAGP,MAAa0lB,uBAAuB,GAClCC,KADqC;AAGrC,QAAMC,yBAAyB,GAAmC;AAChE/Q,IAAAA,IAAI,EAAE;AAD0D,GAAlE;AAIA,MAAI,CAAC6L,cAAc,CAACiF,KAAD,CAAf,IAA0B,EAAE,mBAAmBA,KAArB,CAA9B,EACE,OAAOC,yBAAP;AAEF,sBACKA,yBADL,EAEMD,KAAK,CAACE,aAAN,IAAuB,EAF7B;AAID,CAdM;AAgBP;;AACA,MAAaC,kBAAkB,GAAG,UAA3B;AAEP;;AACA,MAAaC,yBAAyB,GAAG,KAAlC;AAEP,MAAaxB,sBAAsB,GAAG,CACpC5T,cADoC,EAEpCO,KAFoC,EAGpCxH,SAHoC;AAKpCiH,EAAAA,cALoC;AAMpCO,EAAAA;AANoC,GAOhCxH,SAAS,CAACM,QAAV,KACA;AACEsH,EAAAA,WAAW,EAAE5H,SAAS,CAAC4H;AADzB,CADA,GAIA;AACElH,EAAAA,IAAI,EAAEV,SAAS,CAAC6H,KAAV,CAAgB,CAAhB,CADR;AAEElH,EAAAA,EAAE,EAAEX,SAAS,CAAC6H,KAAV,CAAgB,CAAhB;AAFN,CAXgC,CAA/B;;MCpiCMyU,WAAW,GAAIC,WAAD,IACzBA,WAAW,GAAG,IAAIC,KAAJ,CAAUD,WAAV,EAAuBxgB,QAAvB,CAAgC,KAAhC,CAAH,GAA4CuD,SADlD;;ACFP;AACA,MAAamd,cAAc,GAAG;AAC5B1O,EAAAA,gBAAgB,EAAE,IADU;AAE5BC,EAAAA,gBAAgB,EAAE;AAFU,CAAvB;;SCDS0O,MAAMtgB,KAAaqS,KAAaC;AAC9C,SAAOtV,IAAI,CAACqV,GAAL,CAASrV,IAAI,CAACsV,GAAL,CAAStS,GAAT,EAAcqS,GAAd,CAAT,EAA6BC,GAA7B,CAAP;AACD;;ACFD;AACA,MAyBaiO,eAAe,GAAa,EAAlC;AAEP,MAAaC,sBAAsB,GAAsB;AACvDnZ,EAAAA,KAAK;;AADkD;AAEvD/M,EAAAA,IAAI,EAAE,OAFiD;AAGvDmmB,EAAAA,SAAS,EAAEF;AAH4C,CAAlD;AAKP,MAAaG,kBAAkB,GAAwB,CACrDF,sBADqD,EAErD;AACEnZ,EAAAA,KAAK;;AADP;AAEE/M,EAAAA,IAAI,EAAE,QAFR;AAGEmmB,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ;AAHb,CAFqD,EAOrD;AACEpZ,EAAAA,KAAK;;AADP;AAEE/M,EAAAA,IAAI,EAAE,QAFR;AAGEmmB,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;AAHb,CAPqD,EAYrD;AACEpZ,EAAAA,KAAK;;AADP;AAEE/M,EAAAA,IAAI,EAAE,QAFR;AAGEmmB,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;AAHb,CAZqD,EAiBrD;AACEpZ,EAAAA,KAAK;;AADP;AAEE/M,EAAAA,IAAI,EAAE,QAFR;AAGEmmB,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB;AAHb,CAjBqD,EAsBrD;AACEpZ,EAAAA,KAAK;;AADP;AAEE/M,EAAAA,IAAI,EAAE,QAFR;AAGEmmB,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ;AAHb,CAtBqD,CAAhD;;AA6BP,MAAME,kBAAkB,GAAG,CACzBC,OADyB,EAEzBlW,MAFyB,EAGzBmW,MAHyB;AAKzB,MAAI,CAACD,OAAD,IAAY,CAACA,OAAO,CAACpe,MAAzB,EAAiC,OAAO,EAAP;AAEjC,QAAMse,UAAU,GAAG,EAAnB;;AAEA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,OAAO,CAACpe,MAA5B,EAAoCue,CAAC,EAArC,EAAyC;AACvC,QAAIA,CAAC,GAAG,CAAR,EAAW;AACTD,MAAAA,UAAU,CAAC3U,IAAX,CAAgB,GAAG0U,MAAM,CAAC,CAACD,OAAO,CAACG,CAAC,GAAG,CAAL,CAAR,EAAiBH,OAAO,CAACG,CAAD,CAAxB,CAAD,EAA+BrW,MAA/B,CAAzB;AACD;AACF;;AAED,SAAOoW,UAAP;AACD,CAhBD;;AAkBA,MAAaE,WAAW,GAAG,CAACJ,OAAD,EAAoB3J,KAApB,KACzB0J,kBAAkB,CAChBC,OADgB,EAEhBN,KAAK,CACH7a,iBAAiB,CAACwR,KAAD,CADd,EAEHoJ,cAAc,CAAC1O,gBAFZ,EAGH0O,cAAc,CAACzO,gBAHZ,CAFW,EAOhB,OAAgBlH,MAAhB;AAAA,MAAC,CAAClI,MAAD,EAASye,GAAT,CAAD;AAAA,SAA2B,CAACze,MAAM,GAAGkI,MAAV,EAAkBuW,GAAG,GAAGvW,MAAxB,CAA3B;AAAA,CAPgB,CADb;AAWP,MAAawW,UAAU,GAAG,CAACN,OAAD,EAAoB3J,KAApB,KACxB0J,kBAAkB,CAChBC,OADgB,EAEhBN,KAAK,CACH7a,iBAAiB,CAACwR,KAAD,CADd,EAEHoJ,cAAc,CAAC1O,gBAFZ,EAGH0O,cAAc,CAACzO,gBAHZ,CAFW,EAOhB,QAAgBlH,MAAhB;AAAA,MAAC,CAAClI,MAAD,EAASye,GAAT,CAAD;AAAA,SAA2B,CACzBjkB,IAAI,CAACC,KAAL,CAAWuF,MAAM,GAAGxF,IAAI,CAACsV,GAAL,CAAS,CAAT,EAAYtV,IAAI,CAACqV,GAAL,CAAS3H,MAAT,EAAiB,EAAjB,IAAuB,CAAnC,CAApB,CADyB,EAEzB1N,IAAI,CAACC,KAAL,CAAWgkB,GAAG,GAAG,CAAN,GAAUjkB,IAAI,CAACsV,GAAL,CAAS,CAAT,EAAYtV,IAAI,CAACqV,GAAL,CAAS3H,MAAT,EAAiB,EAAjB,IAAuB,CAAnC,CAArB,CAFyB,CAA3B;AAAA,CAPgB,CADb;AAcP,MAAayW,WAAW,GAAIC,KAAD;AACzB,MAAI,CAACA,KAAD,IAAUA,KAAK,CAAC9mB,IAAN,KAAe,OAA7B,EAAsC,OAAO,EAAP;;AAGtC,SAAO4mB,UAAU,CAACE,KAAK,CAACX,SAAP,EAAkBW,KAAK,CAACnK,KAAxB,CAAjB;AACD,CALM;AAOP,MAAaoK,uBAAuB,GAAIZ,SAAD;AACrC,MAAI,CAACA,SAAS,CAACje,MAAf,EAAuB,OAAOge,sBAAP;AAEvB,SAAOE,kBAAkB,CAAC3Z,IAAnB,CAAwBua,MAAM;AACnC,QAAIA,MAAM,CAACb,SAAP,CAAiBje,MAAjB,KAA4Bie,SAAS,CAACje,MAA1C,EAAkD,OAAO,KAAP;AAElD,UAAM+e,kBAAkB,GAAGD,MAAM,CAACb,SAAP,CACxBhe,GADwB,CACpB,CAAC+e,cAAD,EAAiBT,CAAjB,KAAuBN,SAAS,CAACM,CAAD,CAAT,GAAeS,cADlB,EAExB9Z,MAFwB,CAEjB+Z,MAFiB,CAA3B;AAIA,WAAOF,kBAAkB,CAAC/e,MAAnB,KAA8B,CAArC;AACD,GARM,CAAP;AASD,CAZM;AAcP,MAAakf,kBAAkB,GAC7BC,SADgC,IAGhCjB,kBAAkB,CAAC3Z,IAAnB,CAAwBua,MAAM,IAAIA,MAAM,CAACja,KAAP,KAAiBsa,SAAnD,CAHK;;AC/GP,MAAMC,gBAAgB,GAAG,KAAzB;;AAEA,MAAMC,GAAG,GAAIjB,OAAD,IACVA,OAAO,CAAC7U,MAAR,CAAe,CAACmB,MAAD,EAASlN,GAAT,KAAiBkN,MAAM,GAAGlN,GAAzC,EAA8C,CAA9C,CADF;;AAGA,MAAM8hB,oBAAoB,GAAG,CAC3BC,UAD2B,EAE3BC,UAF2B,EAG3BniB,CAH2B,EAI3BoiB,CAJ2B;AAM3B,QAAMpL,MAAM,GAAG7Z,IAAI,CAACC,KAAL,CAAW8kB,UAAU,GAAG,CAAxB,CAAf;;AAEA,MAAI,CAACC,UAAU,KAAK,CAAf,IAAoBA,UAAU,KAAKhlB,IAAI,CAACwa,EAAzC,KAAgD3X,CAAC,KAAKgX,MAA1D,EAAkE;AAChE,WAAO,IAAP;AACD;;AACD,MAAImL,UAAU,KAAKhlB,IAAI,CAACwa,EAAL,GAAU,CAAzB,IAA8ByK,CAAC,KAAKpiB,CAAxC,EAA2C;AACzC,WAAO,IAAP;AACD;;AACD,MAAImiB,UAAU,KAAKhlB,IAAI,CAACwa,EAAL,GAAU,CAAzB,IAA8ByK,CAAC,KAAKpL,MAAxC,EAAgD;AAC9C,WAAO,IAAP;AACD;;AAED,SAAOmL,UAAU,KAAM,IAAIhlB,IAAI,CAACwa,EAAV,GAAgB,CAA/B,IAAoCuK,UAAU,GAAG,CAAb,GAAiBE,CAAjB,KAAuBpiB,CAAlE;AACD,CAnBD;;AAqBA,MAAMqiB,iBAAiB,GAAItP,IAAD,IACxBvN,KAAK,CAACuN,IAAD,CAAL,CACGnJ,IADH,CACQ,IADR,EAEGhH,GAFH,CAEO,MAAM4C,KAAK,CAACuN,IAAD,CAFlB,CADF;;AAKA,MAAMuP,UAAU,GAAG,CACjBC,MADiB,EAEjBC,MAFiB;AAIjB,QAAMN,UAAU,GAAGK,MAAM,CAAC5f,MAA1B;;AAEA,OAAK,IAAI3C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkiB,UAApB,EAAgCliB,CAAC,EAAjC,EAAqC;AACnC,SAAK,IAAIoiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,UAApB,EAAgCE,CAAC,EAAjC,EAAqC;AACnCG,MAAAA,MAAM,CAACviB,CAAD,CAAN,CAAUoiB,CAAV,IAAeI,MAAM,CAACxiB,CAAD,EAAIoiB,CAAJ,EAAOF,UAAP,CAArB;AACD;AACF;AACF,CAXD;;AAaA,MAAMO,qBAAqB,GAAG,CAC5BN,UAD4B,EAE5BO,UAF4B,EAG5BC,aAH4B;AAK5B,QAAMT,UAAU,GAAG/kB,IAAI,CAACsV,GAAL,CACjBtV,IAAI,CAACC,KAAL,CAAW4kB,GAAG,CAAC,CAAC7kB,IAAI,CAACsV,GAAL,CAAS,GAAGkQ,aAAZ,CAAD,EAA6BD,UAA7B,CAAD,CAAd,CADiB,EAEjBA,UAFiB,CAAnB;AAIA,QAAMH,MAAM,GAAGF,iBAAiB,CAACH,UAAD,CAAhC;AAEAI,EAAAA,UAAU,CAACC,MAAD,EAAS,CAACviB,CAAD,EAAIoiB,CAAJ,EAAOrP,IAAP,KACjBkP,oBAAoB,CAAClP,IAAD,EAAOoP,UAAP,EAAmBniB,CAAnB,EAAsBoiB,CAAtB,CAApB,GAA+C,GAA/C,GAAqD,CAD7C,CAAV;AAIA,SAAOG,MAAP;AACD,CAhBD;;AAkBA,MAAMK,qBAAqB,GACzBC,SAD4B;AAG5B,MAAIA,SAAS,CAACpoB,IAAV,KAAmB,OAAvB,EAAgC,OAAO4I,SAAP;AAEhC,SAAOof,qBAAqB;AAE1B7c,EAAAA,iBAAiB,CAACid,SAAS,CAACV,UAAX,CAFS;AAI1BhlB,EAAAA,IAAI,CAACC,KAAL,CAAWylB,SAAS,CAACH,UAArB,CAJ0B,EAK1BG,SAAS,CAACF,aALgB,CAA5B;AAOD,CAZD;;AAcA,IAAaG,aAAb;AAAA;;AAAA;;AACE,yBAAmBC,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACArM,MAAAA,WAAW,EAAE2J,WAAW,CAACza,iBAAiB,0BAACmd,cAAc,CAACha,MAAhB,qBAAC,sBAAuBoO,KAAxB,CAAlB,CAFpB;AAGJ;AACAV,MAAAA,WAAW,EAAE7Q,iBAAiB,2BAACmd,cAAc,CAACha,MAAhB,qBAAC,uBAAuBqO,KAAxB,CAJ1B;AAKJ4L,MAAAA,QAAQ,EAAE1B,WAAW,CAACyB,cAAc,CAACha,MAAhB,CALjB;AAMJka,MAAAA,cAAc,EAAE5C,WAAW;AAEzBza,MAAAA,iBAAiB,yBAACmd,cAAc,CAACnZ,IAAhB,qBAAC,qBAAqBuN,KAAtB,CAFQ,CANvB;AAUJ+L,MAAAA,cAAc,EAAE3Z,YAAY,CAACwZ,cAAc,CAACnZ,IAAhB,CAAZ;AAEZyW,MAAAA,WAAW,CAACza,iBAAiB,0BAACmd,cAAc,CAACnZ,IAAhB,qBAAC,sBAAqB+S,UAAtB,CAAlB,CAFC,GAGZ,KAAK,CAbL;AAcJkG,MAAAA,SAAS,EAAED,qBAAqB,CAACG,cAAc,CAACnZ,IAAhB,CAd5B;AAeJuZ,MAAAA,OAAO,EAAE;AAfL,KAAN;AADiB,wBAAA,GAAAJ,cAAA;;AAkBlB;;AAnBH;AAAA;AAAA,WAqBE;AACE;AACA,UAAI,CAAC,KAAKK,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,YAAMjC,KAAK,GAAG,KAAKsB,SAAnB;AACA,YAAMa,SAAS,GAAGnC,KAAK,CAAC5e,MAAxB;AACA,YAAMghB,UAAU,GAAG,IAAIpD,KAAJ,CAAU,KAAK2C,cAAf,CAAnB;AACA,YAAMpN,UAAU,GAAG,IAAIyK,KAAJ,CAAU,KAAK0C,cAAf,CAAnB;AAEAI,MAAAA,MAAM,CAAC1F,MAAP,GAAgB+F,SAAhB;AACAL,MAAAA,MAAM,CAACjM,KAAP,GAAesM,SAAf;;AACA,WAAK,IAAIxC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwC,SAApB,EAA+BxC,CAAC,EAAhC,EAAoC;AAClC;AACA,aAAK,IAAI0C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGrC,KAAK,CAACL,CAAD,CAAL,CAASve,MAA7B,EAAqCihB,CAAC,EAAtC,EAA0C;AACxC,gBAAMC,IAAI,GAAItC,KAAK,CAACL,CAAD,CAAL,CAAS0C,CAAT,IAAcD,UAAU,CAACG,CAA1B,GAA+B/B,gBAA5C;AACA,gBAAMgC,IAAI,GAAIjO,UAAU,CAACgO,CAAX,GAAe,GAAhB,IAAwB,IAAID,IAA5B,CAAb;AACA,gBAAMG,KAAK,GAAG,CAAC7mB,IAAI,CAACqV,GAAL,CAAS,CAAT,EAAYqR,IAAI,GAAGE,IAAnB,EAAyB1jB,OAAzB,CAAiC,CAAjC,CAAf;AACA,gBAAM4jB,GAAG,GAAG9mB,IAAI,CAACC,KAAL,CACVD,IAAI,CAACqV,GAAL,CAAS,GAAT,EAAcsD,UAAU,CAACoO,CAAX,GAAeH,IAAf,GAAsBJ,UAAU,CAACO,CAAX,GAAeL,IAAnD,CADU,CAAZ;AAGA,gBAAMM,KAAK,GAAGhnB,IAAI,CAACC,KAAL,CACZD,IAAI,CAACqV,GAAL,CAAS,GAAT,EAAcsD,UAAU,CAACsO,CAAX,GAAeL,IAAf,GAAsBJ,UAAU,CAACS,CAAX,GAAeP,IAAnD,CADY,CAAd;AAGA,gBAAMQ,IAAI,GAAGlnB,IAAI,CAACC,KAAL,CACXD,IAAI,CAACqV,GAAL,CAAS,GAAT,EAAcsD,UAAU,CAACwO,CAAX,GAAeP,IAAf,GAAsBJ,UAAU,CAACW,CAAX,GAAeT,IAAnD,CADW,CAAb;AAIAL,UAAAA,GAAG,CAACe,SAAJ,aAAwBN,GAAxB,SAA+BE,KAA/B,SAAwCE,IAAxC,SAAgDL,KAAhD;AACAR,UAAAA,GAAG,CAACgB,QAAJ,CAAaZ,CAAb,EAAgB1C,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB;AACD;AACF;;AACD,WAAKuD,MAAL,GAAc,IAAIC,KAAJ,EAAd;AACA,WAAKD,MAAL,CAAYE,GAAZ,GAAkBtB,MAAM,CAACuB,SAAP,EAAlB;AACD;AA7DH;AAAA;AAAA,WA+DE;AACE,aAAO,IAAI9B,aAAJ,CAAkB,KAAKC,cAAvB,CAAP;AACD;AAjEH;;AAAA;AAAA,EAAmC8B,SAAnC;;IClFaC,aAAb;AAAA;;AAAA;;AACE,yBAAmB/B,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACArM,MAAAA,WAAW,EAAE2J,WAAW,CAACza,iBAAiB,0BAACmd,cAAc,CAACha,MAAhB,qBAAC,sBAAuBoO,KAAxB,CAAlB,CAFpB;AAGJ;AACAV,MAAAA,WAAW,EAAE7Q,iBAAiB,2BAACmd,cAAc,CAACha,MAAhB,qBAAC,uBAAuBqO,KAAxB,CAJ1B;AAKJ4L,MAAAA,QAAQ,EAAE1B,WAAW,CAACyB,cAAc,CAACha,MAAhB,CALjB;AAMJ4b,MAAAA,GAAG,6BAA2B5B,cAAc,CAACnZ,IAAf,CAAoBmb,OAN9C;AAOJ5B,MAAAA,OAAO,EAAE1Z,aAAa,CAACsZ,cAAc,CAACha,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AAPvD,KAAN;AADiB,wBAAA,GAAAga,cAAA;;AAUlB;;AAXH;AAAA;AAAA,WAaE;AACE,aAAO,IAAI+B,aAAJ,CAAkB,KAAK/B,cAAvB,CAAP;AACD;AAfH;;AAAA;AAAA,EAAmCiC,SAAnC;;ICAaC,iBAAb;AAAA;;AAAA;;AACE,6BAAmBlC,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACArM,MAAAA,WAAW,EAAE2J,WAAW,CAACza,iBAAiB,0BAACmd,cAAc,CAACha,MAAhB,qBAAC,sBAAuBoO,KAAxB,CAAlB,CAFpB;AAGJ;AACAV,MAAAA,WAAW,EAAE7Q,iBAAiB,2BAACmd,cAAc,CAACha,MAAhB,qBAAC,uBAAuBqO,KAAxB,CAJ1B;AAKJ4L,MAAAA,QAAQ,EAAE1B,WAAW,CAACyB,cAAc,CAACha,MAAhB,CALjB;AAMJ;AACA6N,MAAAA,SAAS,EAAEyJ,WAAW,CAACza,iBAAiB,yBAACmd,cAAc,CAACnZ,IAAhB,qBAAC,qBAAqBuN,KAAtB,CAAlB,CAPlB;AAQJ;AACAgM,MAAAA,OAAO,EAAE1Z,aAAa,CAACsZ,cAAc,CAACha,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AATvD,KAAN;AADiB,wBAAA,GAAAga,cAAA;;AAYlB;;AAbH;AAAA;AAAA,WAeE;AACE,aAAO,IAAIkC,iBAAJ,CAAsB,KAAKlC,cAA3B,CAAP;AACD;AAjBH;;AAAA;AAAA,EAAuCmC,aAAvC;;ACUA,MAAMC,eAAe,GAAG,CACtBC,KADsB,EAEtBC,UAFsB,EAGtBC,OAHsB,EAItBC,KAJsB;AAMtB,QAAMC,SAAS,GAAGC,YAAY,CAACL,KAAD,EAAQE,OAAR,EAAiBC,KAAjB,CAA9B;AAEA,SAAOG,mBAAmB,CACxBF,SAAS,CAAC5iB,GAAV,CAAc+iB,IAAI;AAEhBA,EAAAA,IAAI,CAAC/iB,GAAL,CAAS;AAAA,QAAC,CAAC5C,CAAD,EAAIoiB,CAAJ,CAAD;AAAA,WAAY,CAACpiB,CAAC,GAAGqlB,UAAL,EAAiBjD,CAAC,GAAG,CAACiD,UAAtB,CAAZ;AAAA,GAAT,CAFF,CADwB,EAKxB,CALwB,CAA1B;AAOD,CAfD;;AAiBA,MAAMO,cAAc,GAA2D;AAC7E;;AAAA,KAAuBnP,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,IAAsBoP,eAAtB;AAYE,2BAAYC,QAAZ;;;AAIA,kBAAA,GAAaV,KAAD;AACV,UAAI,KAAKW,QAAL,KAAkB,OAAtB,EAA+B;AAC7B,cAAMC,QAAQ,GAAGZ,KAAK,CAACA,KAAK,CAACziB,MAAN,GAAe,CAAhB,CAAtB;AAEA,eAAQqjB,QAAQ,IAAIA,QAAQ,CAACA,QAAQ,CAACrjB,MAAT,GAAkB,CAAnB,CAArB,IAA+C,IAAtD;AACD;;AAED,YAAMsjB,SAAS,GAAGb,KAAK,CAAC,CAAD,CAAvB;AAEA,aAAQa,SAAS,IAAIA,SAAS,CAAC,CAAD,CAAvB,IAA+B,IAAtC;AACD,KAVD;;AAHEvZ,IAAAA,MAAM,CAACwZ,MAAP,CAAc,IAAd,EAAoBJ,QAApB;AACD;;AAdH;AAAA;AAAA,WA4BE,mBACEK,WADF,EAEEC,SAFF,EAGEf,UAHF,EAIEgB,UAJF;AAME,YAAMC,WAAW,GAAG,KAAKP,QAAL,KAAkB,OAAlB,GAA4B,CAA5B,GAAgC,CAAC,CAArD;AACA,YAAMQ,WAAW,GAAG,KAAKC,SAAL,CAAeL,WAAf,CAApB;AACA,YAAMM,UAAU,GAAG,KAAKC,WAAL,CAAiBH,WAAjB,EAA8BD,WAA9B,CAAnB;AACA,YAAMK,mBAAmB,GAAGxB,eAAe,CACzCsB,UADyC,EAEzCpB,UAFyC,EAGzCe,SAHyC,EAIzCC,UAJyC,CAA3C;AAOA,aAAO,KAAKO,YAAL,CAAkBD,mBAAlB,CAAP;AACD;AA7CH;AAAA;AAAA,SA+CE;AACE,YAAME,aAAa,GAAGjB,cAAc,CAAC,KAAK7S,IAAN,CAApC;AAEA,aAAO8T,aAAa,GAAGA,aAAa,CAAC,KAAKpQ,WAAN,CAAhB,GAAqC,CAAzD;AACD;AAnDH;;AAAA;AAAA;;ICnCaqQ,oBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAKC,SAAL,GAAiB,KAAKtQ,WAA7B;AACD;AAHH;AAAA;AAAA,WAIE,2BAAiC6P,WAAjC;UAAY,CAACtmB,CAAD,EAAIoiB,CAAJ;AACV,aAAO,CACL,CACE,CAACpiB,CAAD,EAAIoiB,CAAC,GAAG,KAAK2E,SAAL,GAAiB,CAAzB,CADF,EAEE,CAAC/mB,CAAC,GAAG,KAAK+mB,SAAL,GAAiBT,WAAtB,EAAmClE,CAAnC,CAFF,EAGE,CAACpiB,CAAD,EAAIoiB,CAAC,GAAG,KAAK2E,SAAL,GAAiB,CAAzB,CAHF,CADK,CAAP;AAOD;AAZH;AAAA;AAAA,WAcE,sBAAaN,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAcjd,cAAc,CAACI,WAA9C;AAEA,aAAO,IAAI8c,UAAJ,CAAeT,UAAf,EAA2B;AAChCU,QAAAA,QAAQ,EAAEH,QADsB;AAEhCpQ,QAAAA,SAAS,EAAEoQ,QAAQ,GAAG,KAAK7P,KAAR,GAAgB,KAAK,CAFR;AAGhCoN,QAAAA,SAAS,EAAEyC,QAAQ,GAAGI,SAAS,CAAC7G,KAAb,GAAqB6G,SAAS,CAACnd,IAHlB;AAIhCkZ,QAAAA,OAAO,EAAE,QAJuB;AAKhCkE,QAAAA,QAAQ,EAAE,OALsB;AAMhC3Q,QAAAA,WAAW,EAAE,KAAKS,KANc;AAOhCV,QAAAA,WAAW,EAAE,KAAKA;AAPc,OAA3B,CAAP;AASD;AA1BH;;AAAA;AAAA,EAA0CoP,eAA1C;;ACHA,MAAMyB,aAAa,gBAAGC,aAAa,CAAyB,IAAzB,CAAnC;AAMA,MAAaC,cAAc,GAAkC;MAAC;AAC5DzhB,IAAAA,MAD4D;AAE5D0B,IAAAA;AAF4D;AAI5D,SACEggB,mBAAA,CAACH,aAAa,CAACI,QAAf;AAAwBzqB,IAAAA,KAAK,EAAE8I,MAAM,IAAI;GAAzC,EACG0B,QADH,CADF;AAKD,CATM;AAWP,MAAakgB,gBAAgB,GAAG,MAAMC,UAAU,CAACN,aAAD,CAAzC;;SCjBSO;AACd,QAAMxE,MAAM,GAAGyE,MAAM,CAAgB,IAAhB,CAArB;AACA,QAAMC,GAAG,GAAGC,WAAW,CAAEC,IAAD;AACtB,QAAIA,IAAI,KAAK,IAAb,EAAmB;AACjB5E,MAAAA,MAAM,CAAC6E,OAAP,GAAiB,IAAIC,MAAJ,CAAWF,IAAX,CAAjB;AACD,KAFD,MAEO;AACL5E,MAAAA,MAAM,CAAC6E,OAAP,GAAiB,IAAjB;AACD;AACF,GANsB,EAMpB,EANoB,CAAvB;AAQA,SAAO;AAAE7E,IAAAA,MAAF;AAAU0E,IAAAA;AAAV,GAAP;AACD;;SCZeK;MAAS;AAAEC,IAAAA,OAAF;AAAWC,IAAAA;AAAX;AACvBC,EAAAA,SAAS,CAAC;AACRF,IAAAA,OAAO,IAAIA,OAAO,EAAlB;AACA,WAAOC,SAAP;AAED,GAJQ,EAIN,EAJM,CAAT;AAKD;;SCNeE;AACd,QAAM,CAACP,IAAD,EAAOQ,SAAP,IAAoBC,QAAQ,CAAqB,IAArB,CAAlC;AAEA,QAAMX,GAAG,GAAGC,WAAW,CAACS,SAAD,EAAY,CAACA,SAAD,CAAZ,CAAvB;AAEA,SAAO,CAACV,GAAD,EAAME,IAAN,CAAP;AACD;;ACSD,MAAMxX,qBAAmB,GAAG,EAA5B;AAEA,SAAgBkY,gBAOdC;MANA;AACE7iB,IAAAA,MADF;AAEEgN,IAAAA,IAAI,GAAGtC,qBAFT;AAGEoY,IAAAA,MAAM,GAAGC,gBAHX;AAIEC,IAAAA;AAJF;AAQAR,EAAAA,SAAS,CAAC;AACR,QAAIK,SAAS,CAACV,OAAV,KAAsB,IAAtB,IAA8BniB,MAAM,KAAK1C,SAA7C,EAAwD;AACtD,YAAMggB,MAAM,GAAGuF,SAAS,CAACV,OAAzB;AACAc,MAAAA,aAAa,CAAC3F,MAAD,EAAStQ,IAAT,EAAegW,QAAf,CAAb;AAEAF,MAAAA,MAAM,CAAC9iB,MAAD,EAASgN,IAAT,CAAN,CAAqBkW,IAArB,CAA0BC,OAAO;AAC/BC,QAAAA,oBAAoB,CAACD,OAAD,EAAU7F,MAAV,CAApB;AACD,OAFD;AAGD;;AAEF,GAVQ,EAUN,CAACtd,MAAD,EAASgN,IAAT,EAAegW,QAAf,CAVM,CAAT;AAWD;;AAED,SAASC,aAAT,CAAuB3F,MAAvB,EAAuCtQ,IAAvC,EAAqDgW,QAArD;AACE1F,EAAAA,MAAM,CAAC4E,IAAP,CAAYtK,MAAZ,GAAqB5K,IAArB;AACAsQ,EAAAA,MAAM,CAAC4E,IAAP,CAAY7Q,KAAZ,GAAoB2R,QAAQ,GAAG5rB,IAAI,CAACqV,GAAL,CAASO,IAAT,EAAegW,QAAf,CAAH,GAA8BhW,IAA1D;AACD;;MC1CYqW,SAAS,GAAIlc,OAAD;AACvB,QAAM,CAACmc,KAAD,EAAQC,QAAR,IAAoBZ,QAAQ,CAACxb,OAAO,KAAK7J,SAAZ,GAAwB6J,OAAxB,GAAkC,KAAnC,CAAlC;AACA,QAAMqc,MAAM,GAAGvB,WAAW,CAAC,MAAMsB,QAAQ,CAAC,CAACD,KAAF,CAAf,EAAyB,CAACA,KAAD,CAAzB,CAA1B;AAEA,SAAO,CAACA,KAAD,EAAQE,MAAR,EAAgBD,QAAhB,CAAP;AACD,CALM;;MCOME,cAAc,GAAG,CAC5BC,MAD4B;MAE5B;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,GAAG,GAAGC;AAAjB;AAEA,QAAM;AAAExS,IAAAA;AAAF,MAAYsS,OAAlB;AACA,QAAMG,SAAS,GAAGH,OAAO,CAACI,sBAAR,CAA+B,CAA/B,EAAkC,CAAlC,EAAqCC,SAArC,CAA+CJ,GAA/C,CAAlB;AACA,QAAMK,aAAa,GAAGN,OAAO,CAACI,sBAAR,CAA+B1S,KAA/B,EAAsC,CAAtC,EAAyC2S,SAAzC,CAAmDJ,GAAnD,CAAtB;AACA,QAAMM,aAAa,GAAWC,QAAQ,CAACL,SAAD,EAAYG,aAAZ,CAAtC;AACA,QAAMG,GAAG,GAAG/S,KAAK,IAAI6S,aAAa,IAAI,CAArB,CAAjB;AAEA,SAAO9sB,IAAI,CAACC,KAAL,CAAWqsB,MAAM,GAAGU,GAApB,CAAP;AACD,CAXM;;MCPMC,sBAAsB,GAAG,CACpCpT,MADoC,EAEpCqT,QAFoC;AAIpC,QAAMC,WAAW,GAAkB,EAAnC;AACA,QAAMC,MAAM,GAAGF,QAAQ,GAAG,CAA1B;AACA,QAAMG,QAAQ,GAAGrtB,IAAI,CAACwa,EAAL,GAAU,CAA3B;AACA,QAAMjF,IAAI,GAAGvV,IAAI,CAACsV,GAAL,CAAStV,IAAI,CAACwa,EAAL,GAAU,CAAV,GAAc4S,MAAvB,EAA+BC,QAAQ,GAAG,GAA1C,CAAb;AACA,MAAIC,KAAK,GAAG,CAAZ;AACA,MAAIC,GAAG,GAAGF,QAAV;;AAEA,OAAK,IAAIG,GAAG,GAAGF,KAAf,EAAsBE,GAAG,GAAGD,GAA5B,EAAiCC,GAAG,IAAIjY,IAAxC,EAA8C;AAC5C4X,IAAAA,WAAW,CAAChe,IAAZ,CAAiB,CACfnP,IAAI,CAACytB,GAAL,CAASD,GAAT,IAAgBJ,MAAhB,GAAyBvT,MAAM,CAAC,CAAD,CADhB,EAEf7Z,IAAI,CAAC0tB,GAAL,CAASF,GAAT,IAAgBJ,MAAhB,GAAyBvT,MAAM,CAAC,CAAD,CAFhB,CAAjB;AAID;;AAED,SAAO,CAACsT,WAAD,CAAP;AACD,CAnBM;;ICKMQ,qBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAK/D,SAAL,GAAiB,KAAKtQ,WAAL,GAAmB,CAA3C;AACD;AAHH;AAAA;AAAA,WAKE,2BAAiC6P,WAAjC;UAAY,CAACtmB,CAAD,EAAIoiB,CAAJ;AACV,aAAO,CAAC,CAAC,CAACpiB,CAAC,GAAG,CAAC,KAAK+mB,SAAL,GAAiB,CAAjB,GAAqB,KAAKtQ,WAA3B,IAA0C6P,WAA/C,EAA4DlE,CAA5D,CAAD,CAAD,CAAP;AACD;AAPH;AAAA;AAAA,WASE,sBAAaqE,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAcjd,cAAc,CAACG,YAA9C;AAEA,aAAO,IAAI+c,UAAJ,CACLkD,sBAAsB,CAAC3D,UAAU,CAAC,CAAD,CAAV,CAAc,CAAd,CAAD,EAAmB,KAAKM,SAAxB,CADjB,EAEL;AACEnQ,QAAAA,SAAS,EAAEoQ,QAAQ,GAAG,KAAK7P,KAAR,GAAgB,aADrC;AAEET,QAAAA,WAAW,EAAE,KAAKS,KAFpB;AAGEV,QAAAA,WAAW,EAAE,KAAKA,WAHpB;AAIE0Q,QAAAA,QAAQ,EAAE;AAJZ,OAFK,CAAP;AASD;AArBH;;AAAA;AAAA,EAA2CtB,eAA3C;;ICDakF,qBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAKhE,SAAL,GAAiB,KAAKtQ,WAA7B;AACD;AAHH;AAAA;AAAA,WAIE,2BAAiC6P,WAAjC;UAAY,CAACtmB,CAAD,EAAIoiB,CAAJ;AACV,aAAO,CACL,CACE,CAACpiB,CAAD,EAAIoiB,CAAC,GAAG,KAAK2E,SAAL,GAAiB,CAAzB,CADF,EAEE,CAAC/mB,CAAD,EAAIoiB,CAAC,GAAG,KAAK2E,SAAL,GAAiB,CAAzB,CAFF,EAGE,CAAC/mB,CAAC,GAAG,KAAK+mB,SAAL,GAAiBT,WAAtB,EAAmClE,CAAC,GAAG,KAAK2E,SAAL,GAAiB,CAAxD,CAHF,EAIE,CAAC/mB,CAAC,GAAG,KAAK+mB,SAAL,GAAiBT,WAAtB,EAAmClE,CAAC,GAAG,KAAK2E,SAAL,GAAiB,CAAxD,CAJF,CADK,CAAP;AAQD;AAbH;AAAA;AAAA,WAeE,sBAAaN,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAcjd,cAAc,CAACK,YAA9C;AAEA,aAAO,IAAI6c,UAAJ,CAAeT,UAAf,EAA2B;AAChCU,QAAAA,QAAQ,EAAE,IADsB;AAEhCvQ,QAAAA,SAAS,EAAEoQ,QAAQ,GAAG,KAAK7P,KAAR,GAAgB,KAAK,CAFR;AAGhCoN,QAAAA,SAAS,EAAEyC,QAAQ,GAAGI,SAAS,CAAC7G,KAAb,GAAqB6G,SAAS,CAACnd,IAHlB;AAIhCkZ,QAAAA,OAAO,EAAE,QAJuB;AAKhCkE,QAAAA,QAAQ,EAAE,OALsB;AAMhC3Q,QAAAA,WAAW,EAAE,KAAKS,KANc;AAOhCV,QAAAA,WAAW,EAAE,KAAKA;AAPc,OAA3B,CAAP;AASD;AA3BH;;AAAA;AAAA,EAA2CoP,eAA3C;;ACCO,MAAMmF,kBAAkB,GAC7BC,OADgC;AAGhC,UAAQA,OAAO,CAAChE,IAAhB;AACE,SAAKjd,cAAc,CAACO,KAApB;AACA,SAAKP,cAAc,CAACI,WAApB;AACE,aAAO,IAAI0c,oBAAJ,CAAyBmE,OAAzB,CAAP;;AACF,SAAKjhB,cAAc,CAACS,MAApB;AACA,SAAKT,cAAc,CAACK,YAApB;AACE,aAAO,IAAI0gB,qBAAJ,CAA0BE,OAA1B,CAAP;;AACF,SAAKjhB,cAAc,CAACW,MAApB;AACA,SAAKX,cAAc,CAACG,YAApB;AACE,aAAO,IAAI2gB,qBAAJ,CAA0BG,OAA1B,CAAP;;AACF;AACE,aAAO,IAAP;AAXJ;AAaD,CAhBM;;ACHP,MAAMC,uBAAuB,GAAG,CAC9BvF,IAD8B,EAE9BoB,SAF8B,EAG9BoE,UAH8B;AAK9B,QAAMC,YAAY,GAAGzF,IAAI,CAACpO,KAAL,GAAa8T,OAAb,EAArB;;AAEA,OAAK,IAAInK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkK,YAAY,CAACzoB,MAAjC,EAAyCue,CAAC,EAA1C,EAA8C;AAC5C,UAAMoJ,WAAW,GAAGc,YAAY,CAAClK,CAAD,CAAhC;;AAEA,QAAIiK,UAAU,IAAIjK,CAAC,KAAK,CAAxB,EAA2B;AACzBkK,MAAAA,YAAY,CAAClK,CAAD,CAAZ,GAAkB,CAACoJ,WAAW,CAAC,CAAD,CAAX,GAAiBvD,SAAlB,EAA6BuD,WAAW,CAAC,CAAD,CAAxC,CAAlB;AACD;;AAED,UAAMgB,eAAe,GAAGF,YAAY,CAAClK,CAAC,GAAG,CAAL,CAApC;;AAEA,QAAIoK,eAAe,IAAIA,eAAe,CAAC,CAAD,CAAf,GAAqBhB,WAAW,CAAC,CAAD,CAAvD,EAA4D;AAC1Dc,MAAAA,YAAY,CAAClK,CAAD,CAAZ,GAAkB,CAChBoK,eAAe,CAAC,CAAD,CAAf,GAAqBnuB,IAAI,CAACouB,GAAL,CAASD,eAAe,CAAC,CAAD,CAAf,GAAqBhB,WAAW,CAAC,CAAD,CAAzC,CADL,EAEhBA,WAAW,CAAC,CAAD,CAFK,CAAlB;AAID;AACF;;AAED,SAAOc,YAAY,CAACC,OAAb,EAAP;AACD,CAzBD;;AA2BA,MAAMG,sBAAsB,GAAG,CAC7B7F,IAD6B,EAE7BoB,SAF6B,EAG7B0E,WAH6B;AAK7B,QAAMC,OAAO,GAAG/F,IAAI,CAACpO,KAAL,EAAhB;;AAEA,OAAK,IAAI2J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwK,OAAO,CAAC/oB,MAA5B,EAAoCue,CAAC,EAArC,EAAyC;AACvC,UAAMoJ,WAAW,GAAGoB,OAAO,CAACxK,CAAD,CAA3B;;AAEA,QAAIA,CAAC,KAAK,CAAN,IAAWuK,WAAf,EAA4B;AAC1BC,MAAAA,OAAO,CAACxK,CAAD,CAAP,GAAa,CAACoJ,WAAW,CAAC,CAAD,CAAX,GAAiBvD,SAAlB,EAA6BuD,WAAW,CAAC,CAAD,CAAxC,CAAb;AACD;;AAED,UAAMqB,eAAe,GAAGD,OAAO,CAACxK,CAAC,GAAG,CAAL,CAA/B;;AAEA,QAAIyK,eAAe,IAAIA,eAAe,CAAC,CAAD,CAAf,GAAqBrB,WAAW,CAAC,CAAD,CAAvD,EAA4D;AAC1DoB,MAAAA,OAAO,CAACxK,CAAD,CAAP,GAAa,CACXyK,eAAe,CAAC,CAAD,CAAf,GAAqBxuB,IAAI,CAACouB,GAAL,CAASjB,WAAW,CAAC,CAAD,CAAX,GAAiBqB,eAAe,CAAC,CAAD,CAAzC,CADV,EAEXrB,WAAW,CAAC,CAAD,CAFA,CAAb;AAID;AACF;;AAED,SAAOoB,OAAP;AACD,CAzBD;;AA2BA,AAAO,MAAME,mBAAmB,GAAG,CACjCxG,KADiC,EAEjCW,QAFiC,EAGjCgB,SAHiC;AAKjC,SAAO3B,KAAK,CAACxiB,GAAN,CAAU,CAAC+iB,IAAD,EAAOkG,SAAP;AACf,YAAQ9F,QAAR;AACE,WAAK,OAAL;AACE,eAAOmF,uBAAuB,CAC5BvF,IAD4B,EAE5BoB,SAF4B,EAG5B8E,SAAS,KAAKzG,KAAK,CAACziB,MAAN,GAAe,CAHD,CAA9B;;AAKF;AACE,eAAO6oB,sBAAsB,CAAC7F,IAAD,EAAOoB,SAAP,EAAkB8E,SAAS,KAAK,CAAhC,CAA7B;AARJ;AAUD,GAXM,CAAP;AAYD,CAjBM;;MCpCMC,SAAS,GAAI1G,KAAD,IACvBA,KAAK,CAACxiB,GAAN,CAAU+iB,IAAI,IACZA,IAAI,CAAC/iB,GAAL,CAAS0nB,WAAW,IAAIA,WAAW,CAAC/S,KAAZ,EAAxB,CADF,CADK;AAKP,IAAawU,kBAAb;AAAA;;AAAA;;AACE,8BAAmBhJ,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACArM,MAAAA,WAAW,EAAE2J,WAAW,CAACza,iBAAiB,0BAACmd,cAAc,CAACha,MAAhB,qBAAC,sBAAuBoO,KAAxB,CAAlB,CAFpB;AAGJV,MAAAA,WAAW,EAAEgK,KAAK;AAEhB7a,MAAAA,iBAAiB,2BAACmd,cAAc,CAACha,MAAhB,qBAAC,uBAAuBqO,KAAxB,CAFD,EAGhBoJ,cAAc,CAAC1O,gBAHC,EAIhB0O,cAAc,CAACzO,gBAJC,CAHd;AASJ;AACAiR,MAAAA,QAAQ,EAAE1B,WAAW,CAACyB,cAAc,CAACha,MAAhB,CAVjB;AAWJ;AACAoa,MAAAA,OAAO,EAAE1Z,aAAa,CAACsZ,cAAc,CAACha,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AAZvD,KAAN;AADiB,wBAAA,GAAAga,cAAA;;AAelB;;AAhBH;AAAA;AAAA,WAkBE,wBAAeiJ,OAAf,EAAkC3G,UAAlC,EAAsDsE,GAAtD;AACE,UAAI,CAACrhB,sBAAsB,CAAC,KAAKya,cAAN,CAA3B,EACE,8FAA4BiJ,OAA5B,EAAqC3G,UAArC,EAAiDsE,GAAjD;AAEF,YAAM;AACJ7gB,QAAAA,MADI;AAEJD,QAAAA;AAFI,UAGF,KAAKka,cAHT;AAIA,YAAMmG,OAAO,GAAa,EAA1B;AAEA,YAAM+C,WAAW,GAAGD,OAAO,CAACE,KAAR,EAApB;AAEA,YAAMC,oBAAoB,GAAGnB,kBAAkB,CAAC;AAC9C7T,QAAAA,KAAK,EAAE,KAAKT,WADkC;AAE9C;AACAuQ,QAAAA,IAAI,EAAEpe,SAAS,CAACpO,IAH8B;AAI9CsrB,QAAAA,QAAQ,EAAE,MAJoC;AAK9C;AACAhT,QAAAA,IAAI,EAAElK,SAAS,CAACkK,IAN8B;AAO9C0D,QAAAA,WAAW,EAAE,KAAKA;AAP4B,OAAD,CAA/C;AASA,YAAM2V,iBAAiB,GAAGpB,kBAAkB,CAAC;AAC3C7T,QAAAA,KAAK,EAAE,KAAKT,WAD+B;AAE3C;AACAuQ,QAAAA,IAAI,EAAEne,MAAM,CAACrO,IAH8B;AAI3CsrB,QAAAA,QAAQ,EAAE,OAJiC;AAK3C;AACAhT,QAAAA,IAAI,EAAEjK,MAAM,CAACiK,IAN8B;AAO3C0D,QAAAA,WAAW,EAAE,KAAKA;AAPyB,OAAD,CAA5C;;AAUA,UAAI0V,oBAAJ,EAA0B;AACxB,cAAME,YAAY,GAAGT,mBAAmB,CACtCK,WAAW,CAAC7G,KAD0B,EAEtC,MAFsC,EAGtC+G,oBAAoB,CAACG,SAHiB,CAAxC;AAKA,cAAMzD,MAAM,GAAGsD,oBAAoB,CAACI,SAArB,CACbF,YADa,EAEbL,OAAO,CAACrC,GAFK,EAGbtE,UAHa,EAIbsE,GAJa,CAAf;AAOAsC,QAAAA,WAAW,CAAC7G,KAAZ,GAAoBiH,YAApB;AACAnD,QAAAA,OAAO,CAAC5c,IAAR,CAAauc,MAAb;AACD;;AAED,UAAIuD,iBAAJ,EAAuB;AACrB,cAAMC,YAAY,GAAGT,mBAAmB,CACtCK,WAAW,CAAC7G,KAD0B,EAEtC,OAFsC,EAGtCgH,iBAAiB,CAACE,SAHoB,CAAxC;AAKA,cAAMzD,MAAM,GAAGuD,iBAAiB,CAACG,SAAlB,CACbF,YADa,EAEbL,OAAO,CAACrC,GAFK,EAGbtE,UAHa,EAIbsE,GAJa,CAAf;AAOAsC,QAAAA,WAAW,CAAC7G,KAAZ,GAAoBiH,YAApB;AACAnD,QAAAA,OAAO,CAAC5c,IAAR,CAAauc,MAAb;AACD;;;AAGDK,MAAAA,OAAO,CAACsD,OAAR,CAAgB,0FAAwBP,WAAxB,EAAqC5G,UAArC,EAAiDsE,GAAjD,CAAhB;AAEA,aAAOT,OAAP;AACD;AAvFH;AAAA;AAAA,WAyFE;AACE,aAAO,IAAI6C,kBAAJ,CAAuB,KAAKhJ,cAA5B,CAAP;AACD;AA3FH;;AAAA;AAAA,EAAwC0J,cAAxC;;ICTaC,mBAAb;AAAA;;AAAA;;AAIE;AACA,+BAAYzB,OAAZ;;;6BACQA;AACP;;AAPH;AAAA;AAAA,WAqCS,wBACLe,OADK,EAEL3G,UAFK,EAGLsE,GAHK;AAKL,UAAI,EAAEqC,OAAO,YAAYW,YAArB,CAAJ,EAAwC,OAAO,EAAP;AACxC,YAAM;AAAE5G,QAAAA;AAAF,UAAeiG,OAAO,CAACjC,SAAR,CAAkBJ,GAAlB,CAArB;AAEA,YAAMiD,UAAU,GAAgB,CAC9B7G,QAAQ,CAAC,CAAD,CAAR,GAAcV,UAAd,IAA4B,KAAKxa,MAAL,CAAY,CAAZ,KAAkB,CAA9C,CAD8B,EAE9B,CAACkb,QAAQ,CAAC,CAAD,CAAT,GAAeV,UAAf,IAA6B,KAAKxa,MAAL,CAAY,CAAZ,KAAkB,CAA/C,CAF8B,CAAhC;AAKA,YAAMgiB,YAAY,GAAG,KAAKC,SAAL,CAAeF,UAAf,EAA2BZ,OAA3B,EAAoCjG,QAApC,CAArB;AACA,YAAMgH,QAAQ,GAAG,KAAKC,QAAL,CAAcJ,UAAd,EAA0BZ,OAA1B,EAAmCjG,QAAnC,CAAjB;AAEA,aAAO8G,YAAY,GAAG,CAACA,YAAD,EAAeE,QAAf,CAAH,GAA8B,CAACA,QAAD,CAAjD;AACD;AAtDH;AAAA;AAAA,WAwDY,mBACRhH,QADQ,EAERkH,QAFQ,EAGRC,cAHQ;AAKR,aAAOR,mBAAmB,CAACS,YAApB,CAAiCpH,QAAjC,EAA2C,IAA3C,EAAiDmH,cAAjD,CAAP;AACD;AA9DH;AAAA;AAAA,WAgEY,kBAASnH,QAAT,EAAgCkH,QAAhC,EAAmDC,cAAnD;AACR,aAAOR,mBAAmB,CAACU,WAApB,CAAgCrH,QAAhC,EAA0C,IAA1C,EAAgDmH,cAAhD,CAAP;AACD;AAlEH;AAAA;AAAA,WASE,sBACEnH,QADF,QAGEmH,cAHF;UAEE;AAAEzW,QAAAA,WAAW,GAAG,CAAhB;AAAmB4W,QAAAA,WAAnB;AAAgCC,QAAAA,UAAhC;AAA4Cva,QAAAA,IAAI,GAAG;AAAnD;AAGA,aAAO,IAAIwa,GAAJ,CAAQxH,QAAR,EAAkB;AACvBnP,QAAAA,SAAS,EAAE,aADY;AAEvBF,QAAAA,WAAW,EAAE2W,WAFU;AAGvB5W,QAAAA,WAAW,EAAE6W,UAHU;AAIvB/C,QAAAA,MAAM,EAAE,CAACxX,IAAI,GAAG0D,WAAP,GAAqB6W,UAAtB,IAAoC,CAJrB;AAKvBJ,QAAAA;AALuB,OAAlB,CAAP;AAOD;AArBH;AAAA;AAAA,WAuBE,qBACEnH,QADF,SAGEmH,cAHF;UAEE;AAAEzW,QAAAA,WAAF;AAAeG,QAAAA,SAAf;AAA0BF,QAAAA,WAA1B;AAAuC3D,QAAAA,IAAI,GAAG;AAA9C;AAGA,aAAO,IAAIwa,GAAJ,CAAQxH,QAAR,EAAkB;AACvBnP,QAAAA,SADuB;AAEvBF,QAAAA,WAFuB;AAGvBD,QAAAA,WAHuB;AAIvB8T,QAAAA,MAAM,EAAExX,IAAI,GAAG,CAJQ;AAKvBma,QAAAA;AALuB,OAAlB,CAAP;AAOD;AAnCH;;AAAA;AAAA,EAAyCM,WAAzC;;MCFaC,+BAA+B,GAAG,SAAlCA,+BAAkC,CAACzB,OAAD,EAAgBrC,GAAhB,EAA0B+D,SAA1B;MAA0BA;AAAAA,IAAAA,YAAY;;;AACnF,QAAMlI,SAAS,GAAGwG,OAAO,CAACrC,GAAR,CAAYgE,MAAZ,CAAmBhE,GAAnB,IAA0BqC,OAAO,CAAC5G,KAAlC,GAA0C4G,OAAO,CAACjC,SAAR,CAAkBJ,GAAlB,EAAuBvE,KAAnF;AAEA,SAAOM,mBAAmB,CAACF,SAAD,EAAYkI,SAAZ,CAA1B;AACD,CAJM;AAMP,SAAgBE,mBACd7H;MACA;AAAEtP,IAAAA,WAAW,GAAG,CAAhB;AAAmB4W,IAAAA,WAAnB;AAAgCC,IAAAA,UAAhC;AAA4Cva,IAAAA,IAAI,GAAG,CAAnD;AAAsDma,IAAAA;AAAtD;AAEA,QAAMW,YAAY,GAAG,CAAC9a,IAAI,GAAG0D,WAAP,GAAqB6W,UAAtB,IAAoC,CAAzD;AAEA,SAAO,IAAIC,GAAJ,CAAQxH,QAAR,EAAkB;AACvBnP,IAAAA,SAAS,EAAE,aADY;AAEvBF,IAAAA,WAAW,EAAE2W,WAFU;AAGvB5W,IAAAA,WAAW,EAAE6W,UAHU;AAIvB/C,IAAAA,MAAM,EAAEsD,YAJe;AAKvBX,IAAAA;AALuB,GAAlB,CAAP;AAOD;AAED,SAAgBY,kBACd/H;MACA;AAAErP,IAAAA,WAAF;AAAeD,IAAAA,WAAf;AAA4BG,IAAAA,SAA5B;AAAuC7D,IAAAA,IAAI,GAAG,CAA9C;AAAiDma,IAAAA;AAAjD;AAEA,QAAM3C,MAAM,GAAGxX,IAAI,GAAG,CAAtB;AAEA,SAAO,IAAIwa,GAAJ,CAAQxH,QAAR,EAAkB;AACvBnP,IAAAA,SADuB;AAEvBF,IAAAA,WAFuB;AAGvBD,IAAAA,WAHuB;AAIvB8T,IAAAA,MAJuB;AAKvB2C,IAAAA;AALuB,GAAlB,CAAP;AAOD;AAWD,IAAaa,kBAAb;AAAA;;AAAA;;AAQE;AACA,8BAAY9C,OAAZ;;;6BACQA;AACP;;AAXH;AAAA;AAAA,WAaS,wBACLe,OADK,EAEL3G,UAFK,EAGLsE,GAHK;AAKL,UAAI,EAAEqC,OAAO,YAAYgC,IAArB,CAAJ,EAAgC,OAAO,EAAP;;AAEhC,YAAM1D,WAAW,kGACf0B,OADe,EAEf3G,UAFe,EAGfsE,GAHe,CAAjB;;AAKA,YAAMsE,4BAA4B,GAAGR,+BAA+B,CAACzB,OAAD,EAAUrC,GAAV,CAApE;AACA,YAAMuE,UAAU,GAAG,KAAKC,aAAL,CAAmB7D,WAAnB,EAAgC0B,OAAhC,EAAyCiC,4BAAzC,CAAnB;AACA,YAAMpB,YAAY,GAAG,KAAKC,SAAL,CAAexC,WAAf,EAA4B0B,OAA5B,EAAqCiC,4BAArC,CAArB;AACA,YAAMG,aAAa,GAAG,KAAKC,gBAAL,CAAsB/D,WAAtB,EAAmC2D,4BAAnC,CAAtB;AACA,UAAI/E,OAAO,GAAa,CAACgF,UAAD,CAAxB;;AAEA,UAAIrB,YAAJ,EAAkB;AAChB3D,QAAAA,OAAO,GAAG,CAAC2D,YAAD,EAAeqB,UAAf,CAAV;AACD;;AAED,UAAIE,aAAJ,EAAmB;AACjBlF,QAAAA,OAAO,GAAGA,OAAO,CAACoF,MAAR,CAAeF,aAAf,CAAV;AACD;;AAED,aAAOlF,OAAP;AACD;AAxCH;AAAA;AAAA,WA0CY,mBACRoB,WADQ,EAER2C,QAFQ,EAGRC,cAHQ;AAKR,aAAO,IAAIhG,UAAJ,CAAeoD,WAAf,EAA4B;AACjC/F,QAAAA,SAAS,EAAE6C,SAAS,CAACnd,IADY;AAEjCkd,QAAAA,QAAQ,EAAE,KAAKoH,OAFkB;AAGjC7X,QAAAA,WAAW,EAAE,KAAK2W,WAHe;AAIjC5W,QAAAA,WAAW,EAAE,KAAK6W,UAJe;AAKjCtK,QAAAA,QAAQ,EAAE,KAAKA,QALkB;AAMjCkK,QAAAA;AANiC,OAA5B,CAAP;AAQD;AAvDH;AAAA;AAAA,WAyDY,uBACR5C,WADQ,EAER2C,QAFQ,EAGRC,cAHQ;AAKR,aAAO,IAAIhG,UAAJ,CAAeoD,WAAf,EAA4B;AACjC/F,QAAAA,SAAS,EAAE,KAAKgK,OAAL,GAAenH,SAAS,CAAC7G,KAAzB,GAAiC6G,SAAS,CAACnd,IADrB;AAEjCkd,QAAAA,QAAQ,EAAE,KAAKoH,OAFkB;AAGjC3X,QAAAA,SAAS,EAAE,KAAKA,SAHiB;AAIjCF,QAAAA,WAAW,EAAE,KAAKA,WAJe;AAKjCD,QAAAA,WAAW,EAAE,KAAKA,WALe;AAMjCuM,QAAAA,QAAQ,EAAE,KAAKA,QANkB;AAOjCkK,QAAAA;AAPiC,OAA5B,CAAP;AASD;AAvEH;AAAA;AAAA,WAyEY,0BACR5C,WADQ,EAER4C,cAFQ;AAIR,UAAI,CAAC,KAAKsB,UAAV,EAAsB;AAEtB,YAAMC,cAAc,GAAG,EAAvB;AACA,YAAMC,eAAe,GAAG,EAAxB;;AAEA,WAAK,IAAIxN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoJ,WAAW,CAAC3nB,MAAhC,EAAwCue,CAAC,EAAzC,EAA6C;AAC3C,cAAMyE,IAAI,GAAG2E,WAAW,CAACpJ,CAAD,CAAxB;;AAEA,aAAK,IAAI0C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+B,IAAI,CAAChjB,MAAzB,EAAiCihB,CAAC,EAAlC,EAAsC;AACpC,gBAAM+K,KAAK,GAAGhJ,IAAI,CAAC/B,CAAD,CAAlB;AACA,gBAAMgL,YAAY,GAAG1B,cAAc,CAAChM,CAAD,CAAd,CAAkB0C,CAAlB,CAArB;AAEA,gBAAMiJ,YAAY,GAAGe,kBAAkB,CAACe,KAAD,EAAQ;AAC7C5b,YAAAA,IAAI,EAAE,CADuC;AAE7C0D,YAAAA,WAAW,EAAE,CAFgC;AAG7C4W,YAAAA,WAAW,EAAE,KAAKA,WAH2B;AAI7C3W,YAAAA,WAAW,EAAE,KAAKA,WAJ2B;AAK7C4W,YAAAA,UAAU,EACR,KAAKuB,gBAAL,KAA0BxrB,SAA1B,GAAsC,KAAKwrB,gBAA3C,GAA8D,CANnB;AAO7CjY,YAAAA,SAAS,EAAE,aAPkC;AAQ7CsW,YAAAA,cAAc,EAAE0B;AAR6B,WAAR,CAAvC;AAUA,gBAAME,WAAW,GAAGhB,iBAAiB,CAACa,KAAD,EAAQ;AAC3C5b,YAAAA,IAAI,EAAE,CADqC;AAE3C0D,YAAAA,WAAW,EAAE,CAF8B;AAG3C4W,YAAAA,WAAW,EAAE,KAAKA,WAHyB;AAI3C3W,YAAAA,WAAW,EAAE,KAAKA,WAJyB;AAK3C4W,YAAAA,UAAU,EACR,KAAKuB,gBAAL,KAA0BxrB,SAA1B,GAAsC,KAAKwrB,gBAA3C,GAA8D,CANrB;AAO3CjY,YAAAA,SAAS,EAAE,SAPgC;AAQ3CsW,YAAAA,cAAc,EAAE0B;AAR2B,WAAR,CAArC;AAWAF,UAAAA,eAAe,CAACpiB,IAAhB,CAAqBugB,YAArB;AACA4B,UAAAA,cAAc,CAACniB,IAAf,CAAoBwiB,WAApB;AACD;AACF;;AAED,aAAO,CAAC,GAAGL,cAAJ,EAAoB,GAAGC,eAAvB,CAAP;AACD;AApHH;;AAAA;AAAA,EAAwCK,cAAxC;AAuHA,MAAMC,gBAAgB,GAAG;AACvBvY,EAAAA,WAAW,EAAE,CADU;AAEvBC,EAAAA,WAAW,EAAE,SAFU;AAGvB4W,EAAAA,UAAU,EAAE,CAHW;AAIvBD,EAAAA,WAAW,EAAE;AAJU,CAAzB;AAOA,MAAM4B,mBAAmB,GAAG;AAC1BvY,EAAAA,WAAW,EAAE,SADa;AAE1B4W,EAAAA,UAAU,EAAE,CAFc;AAG1BuB,EAAAA,gBAAgB,EAAE;AAHQ,CAA5B;AAMA,MAAaK,mBAAmB,gBAAG,IAAInB,kBAAJ,4BAC9BiB,gBAD8B,EAE9BC,mBAF8B;AAGjCV,EAAAA,OAAO,EAAE,KAHwB;AAIjCC,EAAAA,UAAU,EAAE;AAJqB,GAA5B;AAOP,MAAaW,iBAAiB,gBAAG,IAAIpB,kBAAJ,4BAC5BiB,gBAD4B,EAE5BC,mBAF4B;AAG/BrY,EAAAA,SAAS,EAAE,0BAHoB;AAI/B2X,EAAAA,OAAO,EAAE,IAJsB;AAK/BC,EAAAA,UAAU,EAAE;AALmB,GAA1B;AAQP,MAAMY,gBAAgB,GAAG;AACvBrc,EAAAA,IAAI,EAAE,EADiB;AAEvB0D,EAAAA,WAAW,EAAE,CAFU;AAGvBC,EAAAA,WAAW,EAAE,SAHU;AAIvBE,EAAAA,SAAS,EAAE,SAJY;AAKvByW,EAAAA,WAAW,EAAE,uBALU;AAMvBC,EAAAA,UAAU,EAAE;AANW,CAAzB;AASA,MAAa+B,wBAAwB,gBAAG,IAAI3C,mBAAJ,4BACnC0C,gBADmC;AAEtC1Y,EAAAA,WAAW,EAAE,SAFyB;AAGtC4W,EAAAA,UAAU,EAAE;AAH0B,GAAjC;;IC1MMgC,mBAAb;AAAA;;AAAA;;AAIE;AACA,+BAAYC,KAAZ;;;6BACQA;AACP;;AAPH;AAAA;AAAA,WASY,mBACRxJ,QADQ,EAERiG,OAFQ,EAGRkB,cAHQ;AAKR,UAAIlB,OAAO,CAACwD,UAAZ,EAAwB;AACtB,kGAAuBzJ,QAAvB,EAAiCiG,OAAjC,EAA0CkB,cAA1C;AACD;AACF;AAjBH;AAAA;AAAA,WAmBY,kBACRnH,QADQ,EAERiG,OAFQ,EAGRkB,cAHQ;AAKR,YAAM4B,WAAW,qFAAkB/I,QAAlB,EAA4BiG,OAA5B,EAAqCkB,cAArC,CAAjB;;AAEA,UAAIlB,OAAO,CAACwD,UAAZ,EAAwB;AACtBV,QAAAA,WAAW,CAACpY,WAAZ,GAA0B,KAAK+Y,mBAA/B;AACAX,QAAAA,WAAW,CAAClY,SAAZ,GAAwB,KAAK8Y,iBAA7B;AACD;;AAED,aAAOZ,WAAP;AACD;AAhCH;;AAAA;AAAA,EAAyCpC,mBAAzC;;ICIaiD,kBAAb;AAAA;;AAAA;;AAKE;AACA,8BAAYJ,KAAZ;;;6BACQA;AACP;;AARH;AAAA;AAAA,WAUY,mBACRjF,WADQ,EAER0B,OAFQ,EAGRkB,cAHQ;AAKR,UAAIlB,OAAO,CAACwD,UAAZ,EAAwB;AACtB,iGAAuBlF,WAAvB,EAAoC0B,OAApC,EAA6CkB,cAA7C;AACD;AACF;AAlBH;AAAA;AAAA,WAoBY,uBACR5C,WADQ,EAER0B,OAFQ,EAGRkB,cAHQ;AAKR,YAAMgB,UAAU,yFAAuB5D,WAAvB,EAAoC0B,OAApC,EAA6CkB,cAA7C,CAAhB;;AACA,UAAIlB,OAAO,CAACwD,UAAZ,EAAwB;AACtBtB,QAAAA,UAAU,CAACtX,SAAX,GAAuB,KAAK8Y,iBAA5B;AACAxB,QAAAA,UAAU,CAACxX,WAAX,GAAyB,KAAK+Y,mBAA9B;;AACA,YAAI,KAAKG,mBAAL,KAA6B,KAAK,CAAtC,EAAyC;AACvC1B,UAAAA,UAAU,CAACzX,WAAX,GAAyB,KAAKmZ,mBAA9B;AACD;AACF;;AAED,aAAO1B,UAAP;AACD;AAnCH;;AAAA;AAAA,EAAwCH,kBAAxC;;MChBa8B,aAAa,gBAAG,IAAIP,mBAAJ,CAAwB;AACnDvc,EAAAA,IAAI,EAAE,CAD6C;AAEnD0D,EAAAA,WAAW,EAAE,CAFsC;AAGnDC,EAAAA,WAAW,EAAE,wBAHsC;AAInDE,EAAAA,SAAS,EAAE,2BAJwC;AAKnDyW,EAAAA,WAAW,EAAE,wBALsC;AAMnDC,EAAAA,UAAU,EAAE,CANuC;AAQnDmC,EAAAA,mBAAmB,EAAE,SAR8B;AASnDC,EAAAA,iBAAiB,EAAE;AATgC,CAAxB,CAAtB;AAYP,MAAaI,gBAAgB,gBAAG,IAAIH,kBAAJ,CAAuB;AACrDlZ,EAAAA,WAAW,EAAE,CADwC;AAErDC,EAAAA,WAAW,EAAE,wBAFwC;AAGrD4W,EAAAA,UAAU,EAAE,CAHyC;AAIrDD,EAAAA,WAAW,EAAE,wBAJwC;AAKrDoC,EAAAA,mBAAmB,EAAE,SALgC;AAMrDG,EAAAA,mBAAmB,EAAE;AANgC,CAAvB,CAAzB;AASP,MAAaG,eAAe,gBAAG,IAAIJ,kBAAJ,CAAuB;AACpDlZ,EAAAA,WAAW,EAAE,CADuC;AAEpDC,EAAAA,WAAW,EAAE,wBAFuC;AAGpD4W,EAAAA,UAAU,EAAE,CAHwC;AAIpDD,EAAAA,WAAW,EAAE,wBAJuC;AAKpDzW,EAAAA,SAAS,EAAE,2BALyC;AAMpD2X,EAAAA,OAAO,EAAE,IAN2C;AAOpDmB,EAAAA,iBAAiB,EAAE,2BAPiC;AAQpDD,EAAAA,mBAAmB,EAAE;AAR+B,CAAvB,CAAxB;;ACJP,MAAMO,iBAAiB,GAAsB;AAC3CvZ,EAAAA,WAAW,EAAE,CAD8B;AAE3CC,EAAAA,WAAW,EAAE,kBAF8B;AAG3C6N,EAAAA,SAAS,EAAE6C,SAAS,CAACnd;AAHsB,CAA7C;AAMA,IAAagmB,OAAb;AAAA;;AAAA;;AAQE;;;QAAY;AACVC,MAAAA,iBADU;AAEVC,MAAAA,UAFU;AAGVC,MAAAA,MAHU;AAIVC,MAAAA,SAJU;AAKVC,MAAAA;AALU,2BAMM;;;;AAChB;AAdF,mBAAA,GAA4BhN,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAA5B;AAeE,UAAKgN,SAAL,CAAe/oB,KAAf,CAAqBue,QAArB,GAAgC,UAAhC;AACA,UAAKmK,iBAAL,GAAyBA,iBAAzB;AACA,UAAKC,UAAL;AAAoBnZ,MAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CAA5B;AAAoCJ,MAAAA,SAAS,EAAE;AAA/C,OAA0DuZ,UAA1D;AACA,UAAKC,MAAL,GAAcA,MAAd;AACA,UAAKC,SAAL,GAAiBA,SAAjB;AACA,UAAKC,WAAL,GAAmBA,WAAnB;;AACD;;AAtBH;AAAA;AAAA,WAwBE,wBACEtE,OADF,EAEE3G,UAFF,EAGEsE,GAHF;AAKE,YAAMW,WAAW,GACf0B,OAAO,YAAYgC,IAAnB,GACI,IAAIe,cAAJ,GAAqByB,sBAArB,CAA4CxE,OAA5C,EAAqD3G,UAArD,EAAiEsE,GAAjE,CADJ,GAEIqC,OAAO,CAACyE,QAHd;AAKA,WAAKC,gBAAL,CAAsB/G,GAAtB;AACA,WAAK4G,SAAL,CAAeI,SAAf,GAA2B,EAA3B;AACA,YAAM7b,GAAG,GAAG,KAAK8b,MAAL,CAAYtG,WAAZ,CAAZ;AACAxV,MAAAA,GAAG,IAAI,KAAKyb,SAAL,CAAeM,MAAf,CAAsB/b,GAAtB,CAAP;AAEAkX,MAAAA,OAAO,CAAC8E,qBAAR,GAAgC,IAAIC,aAAJ,CAAkB;AAChD9I,QAAAA,IAAI,EAAE,KAAKsI,SADqC;AAEhDS,QAAAA,MAAM,EAAE,CAACC,IAAD,EAAO5L,UAAP,KACN,KAAK2L,MAAL,CAAY;AAAEC,UAAAA,IAAF;AAAQ5L,UAAAA,UAAR;AAAoB2G,UAAAA,OAApB;AAA6BrC,UAAAA;AAA7B,SAAZ,CAH8C;AAIhDuH,QAAAA,MAAM,EAAE;AACN,eAAKhB,iBAAL,IAA0B,KAAKA,iBAAL,CAAuBlE,OAAvB,CAA1B;AACD;AAN+C,OAAlB,CAAhC;;AASA,WAAKmF,kBAAL,CAAwBnF,OAAxB;;AAEA,aAAO,CAACA,OAAO,CAAC8E,qBAAT,CAAP;AACD;AAnDH;AAAA;AAAA,WAqDE,0BAAiBnH,GAAjB;AACE,UAAI,KAAKyG,MAAL,IAAe,KAAKD,UAAxB,EAAoC;AAAA;;AAClC,aAAKA,UAAL,CAAgB5F,MAAhB,GACEf,cAAc,CAAC,KAAK4G,MAAL,CAAY7F,MAAb,EAAqB;AACjCb,UAAAA,OAAO,EAAE,KAAK0G,MAAL,CAAY1G,OADY;AAEjCC,UAAAA;AAFiC,SAArB,CAAd,IAGM,sBAAKyG,MAAL,kCAAagB,QAAb,KAAyB,CAH/B,CADF;AAKD;AACF;AA7DH;AAAA;AAAA,WA+DE;;;UAAO;AACLH,QAAAA,IADK;AAEL5L,QAAAA,UAFK;AAGL2G,QAAAA,OAHK;AAILrC,QAAAA;AAJK;AAWL,UAAI,CAACqC,OAAL,EAAc;AAEd,UAAI,CAACiF,IAAL,EAAWA,IAAI,GAAGjF,OAAO,CAACqF,UAAf;AACX,UAAI,CAAChM,UAAL,EAAiBA,UAAU,GAAG2G,OAAO,CAACsF,gBAArB;AAEjB,UAAI,CAACL,IAAD,IAAS,CAAC5L,UAAV,IAAwB,CAAC2G,OAAO,CAACrC,GAAR,CAAY4H,YAAZ,CAAyBN,IAAI,CAACtH,GAA9B,CAA7B,EAAiE;;AAEjE,UAAIqC,OAAO,CAACsF,gBAAR,IAA4BjM,UAAU,KAAK2G,OAAO,CAACsF,gBAAvD,EAAyE;AACvE,cAAME,cAAc,GAClBxF,OAAO,YAAYgC,IAAnB,GACI,IAAIe,cAAJ,GAAqByB,sBAArB,CAA4CxE,OAA5C,EAAqD3G,UAArD,EAAiEsE,GAAjE,CADJ,GAEIqC,OAAO,CAACyE,QAHd;AAKA,aAAKC,gBAAL,CAAsB/G,GAAtB;AACA,aAAK4G,SAAL,CAAeI,SAAf,GAA2B,EAA3B;AACA,cAAM7b,GAAG,GAAG,KAAK8b,MAAL,CAAYY,cAAZ,CAAZ;AACA1c,QAAAA,GAAG,IAAI,KAAKyb,SAAL,CAAeM,MAAf,CAAsB/b,GAAtB,CAAP;AACD;;AAED,YAAM2c,OAAO,GAAGzF,OAAO,CAACjC,SAAR,CAAkBkH,IAAI,CAACtH,GAAvB,CAAhB;AACA,YAAM+H,YAAY,GAAG,yBAAKvB,UAAL,8BAAiB5F,MAAjB,GACjB,2BAAK4F,UAAL,uCAAiB5F,MAAjB,KACC,0BAAK4F,UAAL,+BAAiB1Z,WAAjB,GAA+B,2BAAK0Z,UAAL,uCAAiB1Z,WAAjB,IAA+B,CAA9D,GAAkE,CADnE,CADiB,GAGjB,CAHJ;AAIA,YAAMkb,EAAE,GACNx0B,IAAI,CAACC,KAAL,CAAW,CAACq0B,OAAO,CAACR,IAAR,CAAaW,IAAb,GAAoBX,IAAI,CAACW,IAA1B,IAAkCvM,UAA7C,IAA2DqM,YAD7D;AAEA,YAAMG,EAAE,GACN10B,IAAI,CAACC,KAAL,CAAW,CAAC6zB,IAAI,CAACa,IAAL,GAAYL,OAAO,CAACR,IAAR,CAAaa,IAA1B,IAAkCzM,UAA7C,IAA2DqM,YAD7D;AAGA,WAAKnB,SAAL,CAAe/oB,KAAf,CAAqBuqB,IAArB,GAA+BJ,EAAE,CAAC7xB,QAAH,EAA/B;AACA,WAAKywB,SAAL,CAAe/oB,KAAf,CAAqBwqB,GAArB,GAA8BH,EAAE,CAAC/xB,QAAH,EAA9B;AAEAksB,MAAAA,OAAO,CAACqF,UAAR,GAAqBJ,IAArB;AACAjF,MAAAA,OAAO,CAACsF,gBAAR,GAA2BjM,UAA3B;AACD;AA5GH;AAAA;AAAA,WA8GE,gBACEiF,WADF;AAGE,YAAM;AAAEnH,QAAAA,OAAF;AAAWkE,QAAAA,QAAX;AAAqB4K,QAAAA,UAArB;AAAiCjP,QAAAA,QAAjC;AAA2CkP,QAAAA;AAA3C,UACJ,KAAK/B,UAAL,IAAmB,EADrB;AAEA,YAAMgC,SAAS,GAAG,IAAIC,SAAJ;AAChB9H,QAAAA;AADgB,SAEb0F,iBAFa;AAGhBM,QAAAA,WAAW,EAAE,KAAKA;AAHF,SAIb,KAAKH,UAJQ,EAAlB;;AAOA,UAAI,KAAKC,MAAT,EAAiB;AACf+B,QAAAA,SAAS,CAACE,WAAV;AACD,OAFD,MAEO;AACLF,QAAAA,SAAS,CAACG,YAAV;AACD;;AAED,UAAIC,UAAJ;AACAJ,MAAAA,SAAS,CAACK,OAAV,CAAkB,CAAC1wB,CAAD,EAAUgT,GAAV;AAChByd,QAAAA,UAAU,GAAGzd,GAAb;AACA,aAAKub,SAAL,IAAkBkC,UAAU,CAACE,SAAX,CAAqBtd,GAArB,CAAyB,KAAKkb,SAA9B,CAAlB;AACA,cAAM/pB,IAAI,GACRisB,UAAU,IAAIA,UAAU,CAACG,aAAX,CAAyB,KAAKtC,MAAL,GAAc,QAAd,GAAyB,MAAlD,CADhB;;AAGA,YAAI9pB,IAAJ,EAAU;AACRA,UAAAA,IAAI,CAACqsB,YAAL,CAAkB,gBAAlB,EAAoCxP,OAAO,IAAI,OAA/C;AACA7c,UAAAA,IAAI,CAACqsB,YAAL,CAAkB,iBAAlB,EAAqCtL,QAAQ,IAAI,OAAjD;AACA/gB,UAAAA,IAAI,CAACqsB,YAAL,CAAkB,mBAAlB,EAAuC,CAACV,UAAU,IAAI,EAAf,EAAmBnyB,QAAnB,EAAvC;AACAwG,UAAAA,IAAI,CAACqsB,YAAL,CAAkB,mBAAlB,EAAuC,CAACT,UAAU,IAAI,CAAf,EAAkBpyB,QAAlB,EAAvC;;AAEA,cAAI,KAAKswB,MAAT,EAAiB;AACf9pB,YAAAA,IAAI,CAACqsB,YAAL,CACE,kBADF,EAEE3P,QAAQ,IAAIA,QAAQ,CAACrgB,MAAT,GAAkB,CAA9B,GAAkCqgB,QAAQ,CAACviB,IAAT,CAAc,GAAd,CAAlC,GAAuD,EAFzD;AAID;AACF;AACF,OAnBD;AAqBA,aAAO8xB,UAAP;AACD;AAvJH;AAAA;AAAA,WAyJU,4BAAmBK,cAAnB;;;AACN,UAAIA,cAAc,CAACC,UAAf,KAA8BC,eAAe,CAAC7oB,IAAlD,EAAwD;AAExD,YAAM8oB,OAAO,GAAGH,cAAH,6CAAGA,cAAc,CAAE9B,qBAAnB,qBAAG,sBAAuC7I,IAAvC,CAA4CyK,aAA5C,CACd,KAAKtC,MAAL,GAAc,QAAd,GAAyB,MADX,CAAhB;AAIA1jB,MAAAA,MAAM,CAACuB,IAAP,CAAY+kB,WAAZ,EAAyB5d,OAAzB,CAAiC6d,SAAS;AACxC,YAAIL,cAAc,CAACC,UAAf,GAA4BG,WAAW,CAACC,SAAD,CAAX,CAAuBC,IAAvD,EAA6D;AAC3DC,UAAAA,cAAc,CACZJ,OADY,EAEZC,WAAW,CAACC,SAAD,CAAX,CAAuBx4B,IAFX,EAGX24B,KAAD;AACER,YAAAA,cAAc,CAACS,IAAf,CAAoBL,WAAW,CAACC,SAAD,CAAX,CAAuBx4B,IAA3C,EAAiD;AAC/CwtB,cAAAA,IAAI,EAAE8K,OADyC;AAE/CO,cAAAA,YAAY,EAAEF;AAFiC,aAAjD;AAID,WARW,CAAd;AAUD;AACF,OAbD;AAcD;AA9KH;;AAAA;AAAA,EAA6BG,QAA7B;;SCLgBC,kBACdztB;AAEA,SACEA,MAAM,YAAYynB,WAAlB,IACAznB,MAAM,YAAY0tB,iBADlB,IAEA1tB,MAAM,YAAY2tB,YAFlB,IAGA3tB,MAAM,YAAY4tB,WAJpB;AAMD;AAED,SAAgBC,kBACd7tB;AAEA,SAAOA,MAAM,YAAY0tB,iBAAlB,IAAuC1tB,MAAM,YAAY4tB,WAAhE;AACD;AAED,SAAgBE,oBACd9tB;AAEA,SACEA,MAAM,YAAY+tB,aAAlB,IACA/tB,MAAM,YAAYguB,SADlB,IAEAhuB,MAAM,YAAYiuB,SAHpB;AAKD;AAED,SAAgBC,qBACdluB;AAEA,SAAOA,MAAM,YAAYgpB,cAAzB;AACD;AAED,SAAgBmF,eACdnuB;AAEA,SAAOA,MAAM,YAAYouB,QAAzB;AACD;AAED,SAAgBC,6BACdruB;AAEA,SAAOA,MAAM,YAAYsuB,sBAAzB;AACD;AAED,SAAgBC,oBACdvuB;AAEA,SAAO,CAAC,CAAEA,MAA0B,CAACuD,kBAArC;AACD;;AC/DD;;;;;AAKA,AAAO,MAAMirB,WAAW,GAAG,GAApB;AAEP,AAAO,MAAMC,YAAY,gBAAG,IAAI7H,YAAJ,CAAiB,CAAC,EAAD,EAAK,CAAC,EAAN,CAAjB,EAA4B;AAAEhD,EAAAA,GAAG,EAAE8K;AAAP,CAA5B,CAArB;AAEP,AAAO,MAAMC,WAAW,gBAAG,IAAIxjB,QAAJ,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;AACEyY,EAAAA,GAAG,EAAE8K;AADP,CATyB,CAApB;AAaP,AAAO,MAAME,mBAAmB,gBAAG,IAAIC,gBAAJ,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;AACEjL,EAAAA,GAAG,EAAE8K;AADP,CATiC,CAA5B;AAaP,AAAO,MAAMI,cAAc,gBAAG,IAAI5jB,OAAJ,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;AAAE0Y,EAAAA,GAAG,EAAE8K;AAAP,CAP4B,CAAvB;AASP,AAAO,MAAMK,aAAa,gBAAG,IAAIC,SAAJ,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;AAAEpL,EAAAA,GAAG,EAAE8K;AAAP,CAV2B,CAAtB;AAaP,AAAO,MAAMO,iBAAiB,gBAAG,IAAI9jB,QAAJ,CAC/B,CACE,CAAC,CAAD,EAAI,CAAC,EAAL,CADF,EAEE,CAAC,GAAD,EAAM,CAAC,EAAP,CAFF,CAD+B,EAK/B;AACEyY,EAAAA,GAAG,EAAE8K;AADP,CAL+B,CAA1B;AAUP,AAAO,MAAMQ,oBAAoB,gBAAG,IAAIhkB,OAAJ,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;AAAE0Y,EAAAA,GAAG,EAAE8K;AAAP,CAPkC,CAA7B;AAUP,AAAO,MAAMS,uBAAuB,gBAAG,IAAIjkB,OAAJ,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;AAAE0Y,EAAAA,GAAG,EAAE8K;AAAP,CATqC,CAAhC;AAYP,AAAO,MAAMU,mBAAmB,GAAG;AACjC1D,EAAAA,OAAO,EAAEyD;AADwB,CAA5B;AAIP,AAAO,MAAME,eAAe,GAAG;AAC7BzG,EAAAA,KAAK,EAAE6F,YADsB;AAE7BpV,EAAAA,QAAQ,EAAE4V,iBAFmB;AAG7BK,EAAAA,gBAAgB,EAAEV,mBAHW;AAI7BlD,EAAAA,OAAO,EAAEwD,oBAJoB;AAK7BK,EAAAA,MAAM,EAAER;AALqB,CAAxB;AAQP,AAAO,MAAMS,aAAa,GAAG;AAC3B5G,EAAAA,KAAK,EAAE6F,YADoB;AAE3BpV,EAAAA,QAAQ,EAAEsV,WAFiB;AAG3BW,EAAAA,gBAAgB,EAAEV,mBAHS;AAI3BlD,EAAAA,OAAO,EAAEoD,cAJkB;AAK3BS,EAAAA,MAAM,EAAER;AALmB,CAAtB;;SCjGShM,iBACd/iB,QACAgN,MACAyiB;MADAziB;AAAAA,IAAAA,OAAewhB;;;MACfiB;AAAAA,IAAAA,WAA0C;;;AAE1C,QAAMnQ,UAAU,GAAGkP,WAAW,GAAGxhB,IAAjC;;AACA,QAAM0iB,gBAAgB,gBAAQF,aAAR,EAA0BC,QAA1B,CAAtB;;AAEA,MAAI3B,mBAAmB,CAAC9tB,MAAD,CAAvB,EAAiC;AAC/B,WAAOA,MAAM,CAAC2vB,mBAAP,CACLD,gBAAgB,CAAChE,OADZ,EAELpM,UAFK,EAGLoP,KAHK,CAAP;AAKD;;AAED,MAAIR,oBAAoB,CAACluB,MAAD,CAAxB,EAAkC;AAChC,WAAOA,MAAM,CAAC2vB,mBAAP,CACLD,gBAAgB,CAACrW,QADZ,EAELiG,UAFK,EAGLoP,KAHK,CAAP;AAKD;;AAED,MAAIP,cAAc,CAACnuB,MAAD,CAAlB,EAA4B;AAC1B,WAAOA,MAAM,CAAC2vB,mBAAP,CACLD,gBAAgB,CAACH,MADZ,EAELjQ,UAFK,EAGLoP,KAHK,CAAP;AAKD;;AAED,MAAIL,4BAA4B,CAACruB,MAAD,CAAhC,EAA0C;AACxC,WAAOA,MAAM,CAAC2vB,mBAAP,CACLD,gBAAgB,CAACJ,gBADZ,EAELhQ,UAFK,EAGLoP,KAHK,CAAP;AAKD;;AAED,SAAO1uB,MAAM,CAAC2vB,mBAAP,CAA2BD,gBAAgB,CAAC9G,KAA5C,EAAmDtJ,UAAnD,EAA+DoP,KAA/D,CAAP;AACD;AAED,MAAakB,yBAAyB,GAAG,SAA5BA,yBAA4B,CACvC5vB,MADuC,EAEvCgN,IAFuC;MAEvCA;AAAAA,IAAAA,OAAewhB;;;AAEf,SAAOzL,gBAAgB,CAAC/iB,MAAD,EAASgN,IAAT,EAAeoiB,mBAAf,CAAvB;AACD,CALM;AAOP,MAAaS,sBAAsB,GAAG,SAAzBA,sBAAyB,CACpC7vB,MADoC,EAEpCgN,IAFoC;MAEpCA;AAAAA,IAAAA,OAAewhB;;;AAEf,SAAOzL,gBAAgB,CAAC/iB,MAAD,EAASgN,IAAT,EAAeqiB,eAAf,CAAvB;AACD,CALM;;SCzDSjM,qBAAqBD,SAAmB7F;AACtD6F,EAAAA,OAAO,CAAC9T,OAAR,CAAgByT,MAAM;AACpBxF,IAAAA,MAAM,CAACwS,IAAP,CAA6BhN,MAA7B;AACD,GAFD;AAGD;;SC8BeiN,kBACd/vB;AAEA,UAAQA,MAAM,CAACtL,IAAf;AACE,SAAK,QAAL;AACE,aAAOs7B,mBAAmB,CAAChwB,MAAD,CAA1B;;AACF,SAAK,gBAAL;AACE,aAAOiwB,yBAAyB,CAACjwB,MAAD,CAAhC;;AACF,SAAK,mBAAL;AACE,aAAOkwB,sBAAsB,CAAClwB,MAAD,CAA7B;;AACF,SAAK,mBAAL;AACE,aAAOmwB,uBAAuB,CAACnwB,MAAD,CAA9B;;AACF,SAAK,wBAAL;AACE,aAAOowB,4BAA4B,CAACpwB,MAAD,CAAnC;;AACF,SAAK,kBAAL;AACE,aAAOqwB,2BAA2B,CAACrwB,MAAD,CAAlC;;AACF,SAAK,eAAL;AACE,aAAOswB,wBAAwB,CAACtwB,MAAD,CAA/B;;AACF,SAAK,sBAAL;AACA,SAAK,gBAAL;AACE,aAAOuwB,yBAAyB,CAACvwB,MAAD,CAAhC;;AACF,SAAK,eAAL;AACE,aAAO+vB,iBAAiB,CAAE/vB,MAA0B,CAACuD,kBAA7B,CAAxB;;AACF;AACE,aAAO,IAAP;AArBJ;AAuBD;;AAED,SAASysB,mBAAT,CAA6BhwB,MAA7B;;;AACE,SAAO,IAAIouB,QAAJ,cACFpuB,MADE;AAELyZ,IAAAA,QAAQ,EAAE5Z,iBAAiB,CAACG,MAAM,CAACyZ,QAAR,CAFtB;AAGL/I,IAAAA,WAAW,EAAE7Q,iBAAiB,CAACG,MAAD,sCAACA,MAAM,CAAEgD,MAAT,qBAAC,eAAgBqO,KAAjB,CAHzB;AAILV,IAAAA,WAAW,EAAE9Q,iBAAiB,CAACG,MAAD,uCAACA,MAAM,CAAEgD,MAAT,qBAAC,gBAAgBoO,KAAjB,CAJzB;AAKLP,IAAAA,SAAS,EAAEhR,iBAAiB,CAACG,MAAD,oCAACA,MAAM,CAAE6D,IAAT,qBAAC,aAAcuN,KAAf;AALvB,KAAP;AAOD;;AAED,SAAS8e,sBAAT,CAAgClwB,MAAhC;AACE;AACA,SAAO,IAAIwwB,WAAJ,CAAiBC,4BAA4B,CAACzwB,MAAD,CAA7C,CAAP;AACD;;AAED,MAAa0wB,uBAAuB,GAAI5rB,MAAD,IAAkC,CACvEjF,iBAAiB,CAACiF,MAAD,oBAACA,MAAM,CAAG,CAAH,CAAP,CADsD,EAEvEjF,iBAAiB,CAACiF,MAAD,oBAACA,MAAM,CAAG,CAAH,CAAP,CAFsD,CAAlE;;AAKP,SAAS6rB,+BAAT;MAAyC;AAAEj8B,IAAAA,IAAF;AAAQkb,IAAAA,IAAR;AAAc5C,IAAAA,IAAd;AAAoBlI,IAAAA,MAApB;AAA4BgL,IAAAA,KAA5B;AAAmCC,IAAAA,UAAnC;AAA+CC,IAAAA;AAA/C;AACvC;AACEtb,IAAAA,IAAI,EAAEmL,iBAAiB,CAACnL,IAAD,CADzB;AAEEkb,IAAAA,IAAI,EAAE/P,iBAAiB,CAAC+P,IAAD,CAFzB;AAGE5C,IAAAA,IAAI,EAAEnN,iBAAiB,CAACmN,IAAD,CAHzB;AAIElI,IAAAA,MAAM,EAAE4rB,uBAAuB,CAAC5rB,MAAD,CAJjC;AAKEgL,IAAAA,KAAK,EAAEjQ,iBAAiB,CAACiQ,KAAD;AAL1B,KAMMC,UAAU,GACV;AACAA,IAAAA,UAAU,eACJA,UADI;AAERc,MAAAA,SAAS,EAAE+f,gBAAgB,CAAC/wB,iBAAiB,CAAEkQ,UAAF,oBAAEA,UAA6B,CAAEc,SAAjC,CAAlB,CAFnB;AAGRF,MAAAA,WAAW,EAAEigB,gBAAgB,CAAC/wB,iBAAiB,CAAEkQ,UAAF,oBAAEA,UAA6B,CAAEY,WAAjC,CAAlB,CAHrB;AAIRD,MAAAA,WAAW,EAAE7Q,iBAAiB,CAAEkQ,UAAF,oBAAEA,UAA6B,CAAEW,WAAjC;AAJtB;AADV,GADU,GASV,EAfN,EAgBMV,MAAM,GACN;AACAA,IAAAA,MAAM,eACAA,MADA;AAEJW,MAAAA,WAAW,EAAEigB,gBAAgB,CAAC/wB,iBAAiB,CAAEmQ,MAAF,oBAAEA,MAAyB,CAAEW,WAA7B,CAAlB,CAFzB;AAGJD,MAAAA,WAAW,EAAE7Q,iBAAiB,CAAEmQ,MAAF,oBAAEA,MAAyB,CAAEU,WAA7B,CAH1B;AAIJG,MAAAA,SAAS,EAAE+f,gBAAgB,CACzB/wB,iBAAiB,CAAEmQ,MAAF,oBAAEA,MAAyB,CAAEa,SAA7B,CADQ;AAJvB;AADN,GADM,GAWN,EA3BN;AA6BD;;AAED,SAASof,yBAAT,CAAmCjwB,MAAnC;AACE,SAAO,IAAIwwB,WAAJ,CAAiBG,+BAA+B,CAAC3wB,MAAD,CAAhD,CAAP;AACD;;AAED,SAASmwB,uBAAT,CAAiCnwB,MAAjC;AACE,SAAO,IAAI6wB,YAAJ,cACFJ,4BAA4B,CAACzwB,MAAD,CAD1B;AAEL;AACA8P,IAAAA,KAAK,EAAEjQ,iBAAiB,CAACG,MAAM,CAAC8P,KAAR;AAHnB,KAAP;AAKD;;AAED,SAASsgB,4BAAT,CAAsCpwB,MAAtC;AACE,SAAO,IAAI4tB,WAAJ,cACF5tB,MADE;AAEL;AACA8P,IAAAA,KAAK,EAAEjQ,iBAAiB,CAACG,MAAM,CAAC8P,KAAR,CAHnB;AAIL;AACAuB,IAAAA,KAAK,EAAExR,iBAAiB,CAACG,MAAM,CAACqR,KAAR,CALnB;AAML;AACAuG,IAAAA,MAAM,EAAE/X,iBAAiB,CAACG,MAAM,CAAC4X,MAAR,CAPpB;AAQL;AACAkZ,IAAAA,WAAW,EAAEC,iBAAiB,CAAC/wB,MAAM,CAAC8E,MAAR,CATzB;AAUL;AACAksB,IAAAA,WAAW,EAAEC,iBAAiB,CAACjxB,MAAM,CAACkxB,KAAR,CAXzB;AAYL;AACAC,IAAAA,UAAU,EAAEF,iBAAiB,CAACjxB,MAAM,CAACoxB,SAAR,CAbxB;AAcL;AACAC,IAAAA,SAAS,EAAET,gBAAgB,CAAC/wB,iBAAiB,CAACG,MAAM,CAAC2W,WAAR,CAAlB;AAftB,KAAP;AAiBD;;AAED,SAAS0Z,2BAAT,CAAqCrwB,MAArC;AACE,SAAO,IAAIsxB,iBAAJ,cACFtxB,MADE;AAEL;AACA8P,IAAAA,KAAK,EAAEjQ,iBAAiB,CAACG,MAAM,CAAC8P,KAAR,CAHnB;AAIL;AACAuB,IAAAA,KAAK,EAAExR,iBAAiB,CAACG,MAAM,CAACqR,KAAR,CALnB;AAML;AACAuG,IAAAA,MAAM,EAAE/X,iBAAiB,CAACG,MAAM,CAAC4X,MAAR,CAPpB;AAQL;AACAkZ,IAAAA,WAAW,EAAEC,iBAAiB,CAAC/wB,MAAM,CAAC8E,MAAR,CATzB;AAUL;AACAysB,IAAAA,MAAM,EAAEN,iBAAiB,CAACjxB,MAAM,CAACkxB,KAAR;AAXpB,KAAP;AAaD;;AAED,SAASZ,wBAAT,CAAkCtwB,MAAlC;AACE,MAAI4D,wBAAwB,CAAC5D,MAAD,CAA5B,EAAsC;AACpC,WAAO,IAAI+e,aAAJ,CAAkB/e,MAAlB,CAAP;AACD;;AAED,MAAI8D,sBAAsB,CAAC9D,MAAD,CAA1B,EAAoC;AAClC,WAAO,IAAI+c,aAAJ,CAAkB/c,MAAlB,CAAP;AACD;;AAED,SAAO,IAAIkf,iBAAJ,CAAsBlf,MAAtB,CAAP;AACD;;AAED,SAASuwB,yBAAT,CAAmCvwB,MAAnC;AACE,SAAO,IAAIgmB,kBAAJ,CAAuBhmB,MAAvB,CAAP;AACD;;AAED,SAASywB,4BAAT;MAAsC;AACpCzjB,IAAAA,IADoC;AAEpClI,IAAAA,MAFoC;AAGpC6L,IAAAA,WAHoC;AAIpCD,IAAAA,WAJoC;AAKpCG,IAAAA;AALoC;AAOpC,SAAO;AACL7D,IAAAA,IAAI,EAAEnN,iBAAiB,CAACmN,IAAD,CADlB;AAELlI,IAAAA,MAAM,EAAEisB,iBAAiB,CAACjsB,MAAD,CAFpB;AAGL4L,IAAAA,WAAW,EAAE7Q,iBAAiB,CAAC6Q,WAAD,CAHzB;AAILC,IAAAA,WAAW,EAAEigB,gBAAgB,CAC3B/wB,iBAAiB,CAAC8Q,WAAD,CADU,CAJxB;AAOLE,IAAAA,SAAS,EAAE+f,gBAAgB,CACzB/wB,iBAAiB,CAACgR,SAAD,CADQ;AAPtB,GAAP;AAWD;;AAED,SAASogB,iBAAT,CAA2BO,IAA3B;AACE,oCAAgCA,IAAhC;AACD;;AAED,SAAgBT,kBAAkBjsB;AAChC;AACA,SAAOA,MAAM,CAACjI,GAAP,CAAWgD,iBAAX,CAAP;AACD;;AAED,SAAS+wB,gBAAT,CAA0Bxf,KAA1B;AACE,SAAOA,KAAK,GAAG,IAAIoJ,KAAJ,CAAUpJ,KAAV,EAAiBrX,QAAjB,EAAH,GAAiC,IAA7C;AACD;;AChNM,MAAM03B,WAAW,GAAG,CACzBzxB,MADyB,EAEzByM,GAFyB,EAGzBC,GAHyB;AAKzB,MAAImhB,iBAAiB,CAAC7tB,MAAD,CAArB,EAA+B;AAC7BA,IAAAA,MAAM,CAACqR,KAAP,GAAeqJ,KAAK,CAAC1a,MAAM,CAACqR,KAAR,EAAe5E,GAAf,EAAoBC,GAApB,CAApB;AACA1M,IAAAA,MAAM,CAAC4X,MAAP,GAAgB8C,KAAK,CAAC1a,MAAM,CAAC4X,MAAR,EAAgBnL,GAAhB,EAAqBC,GAArB,CAArB;AACD,GAHD,MAGO,IAAI+gB,iBAAiB,CAACztB,MAAD,CAArB,EAA+B;AACpCA,IAAAA,MAAM,CAACgN,IAAP,GAAc0N,KAAK,CAAC1a,MAAM,CAACgN,IAAR,EAAcP,GAAd,EAAmBC,GAAnB,CAAnB;AACD;;AAED,SAAO1M,MAAP;AACD,CAbM;AAeP,SAAgB0xB,kBAAkB1xB;AAChC,MAAI6tB,iBAAiB,CAAC7tB,MAAD,CAArB,EAA+B;AAC7BA,IAAAA,MAAM,CAAC8wB,WAAP,GAAqB,CAAC9wB,MAAM,CAACqR,KAAP,GAAe,CAAhB,EAAmBrR,MAAM,CAAC4X,MAAP,GAAgB,CAAnC,CAArB;AACD,GAFD,MAEO,IAAI6V,iBAAiB,CAACztB,MAAD,CAArB,EAA+B;AACpCA,IAAAA,MAAM,CAAC8E,MAAP,GAAgB,CAAC,CAAD,EAAI,CAAJ,CAAhB;AACD;;AAED,SAAO9E,MAAP;AACD;AAED,MAAa2xB,YAAY,GAAG,CAC1B3xB,MAD0B;AAAA,MAE1B;AAAEgN,IAAAA;AAAF,GAF0B;AAAA,SAGvB0kB,iBAAiB,CAACD,WAAW,CAACzxB,MAAD,EAAS,CAAT,EAAYgN,IAAZ,CAAZ,CAHM;AAAA,CAArB;;MCdM4kB,YAAY,GAAG,CAAC5xB,MAAD,EAAyB6xB,UAAzB,EAA+CniB,YAA/C;AAC1B,QAAMoiB,oBAAoB,GAAG/P,MAAM,CAAqB,IAArB,CAAnC;AACA,QAAMvS,YAAY,GAAGuiB,OAAO,CAAC,MAAMC,GAAG,EAAV,EAAc,EAAd,CAA5B;AAEA,QAAMC,OAAO,GAAGhQ,WAAW,CAAC;AAC1BzS,IAAAA,YAAY,CAAC0iB,KAAb,CAAmBJ,oBAAoB,CAAC3P,OAAxC;AACD,GAF0B,EAExB,CAAC3S,YAAD,CAFwB,CAA3B;AAIA,QAAM2iB,UAAU,GAAGlQ,WAAW,CAAC,MAAMzS,YAAY,CAACT,GAAb,EAAP,EAA2B,CAACS,YAAD,CAA3B,CAA9B;AAEA,QAAM4iB,aAAa,GAAGnQ,WAAW,CAC/B;QAAC;AACClT,MAAAA,GADD;AAECU,MAAAA,EAFD;AAGC4iB,MAAAA,SAHD;AAIC3iB,MAAAA;AAJD;AAWCH,IAAAA,mBAAmB,CAAC;AAClBC,MAAAA,YADkB;AAElBxP,MAAAA,MAAM,EAAEqyB,SAAS,IAAIryB,MAFH;AAGlB+O,MAAAA,GAHkB;AAIlBU,MAAAA,EAJkB;AAKlBC,MAAAA;AALkB,KAAD,CAAnB;AAOD,GAnB8B,EAoB/B,CAACF,YAAD,EAAexP,MAAf,CApB+B,CAAjC;AAuBA,QAAMsyB,mBAAmB,GAAGrQ,WAAW,CACrC,CAACsQ,KAAD,EAA8Br7B,KAA9B;;;AACE,UAAM;AAAE0Y,MAAAA,IAAF;AAAQ9K,MAAAA;AAAR,QAAmB9E,MAAzB;AACA,UAAMsY,QAAQ,GAAGphB,KAAK,YAAYsjB,OAAjB,GAAyBtjB,KAAK,CAAC6C,QAAN,CAAe,MAAf,CAAzB,GAAkD7C,KAAnE;;AAEA,UAAMm7B,SAAS,gBACVG,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAe1yB,MAAf,CAAX,CADU;AAEb8E,MAAAA,MAAM,EAAE+sB,UAAU,GACd/mB,qBADc,GAEdiP,oBAAoB,CAACwY,KAAD,CAApB,GACA7B,uBAAuB,CAAC5rB,MAAD,CADvB,GAEAA;AANS,MAAf;;AASA,QAAIytB,KAAK,CAACI,OAAN,CAAc,GAAd,MAAuB,CAAC,CAA5B,EAA+B;AAAA;;AAC7B,YAAMzd,KAAK,GAAGqd,KAAK,CAACh4B,KAAN,CAAY,GAAZ,CAAd;;AAEA,+BAAI83B,SAAS,CAACnd,KAAK,CAAC,CAAD,CAAN,CAAb,aAAI,kBAAsBA,KAAK,CAAC,CAAD,CAA3B,CAAJ,EAAqC;AACnCmd,QAAAA,SAAS,CAACnd,KAAK,CAAC,CAAD,CAAN,CAAT,CAAoBA,KAAK,CAAC,CAAD,CAAzB,IAAgCoD,QAAhC;AACD,OAFD,MAEO;AACL+Z,QAAAA,SAAS,CAACnd,KAAK,CAAC,CAAD,CAAN,CAAT,gBACKmd,SAAS,CAACnd,KAAK,CAAC,CAAD,CAAN,CADd;AAEE,WAACA,KAAK,CAAC,CAAD,CAAN,GAAYoD;AAFd,WAGMpD,KAAK,CAAC,CAAD,CAAL,KAAa,YAAb,GACA;AAAExgB,UAAAA,IAAI,EAAE29B,SAAS,CAACtiB,UAAV,CAAqBrb,IAA7B;AAAmCmlB,UAAAA,EAAE,EAAE;AAAvC,SADA,GAEA3E,KAAK,CAAC,CAAD,CAAL,KAAa,QAAb,GACA;AAAE2E,UAAAA,EAAE,EAAE;AAAN,SADA,GAEA,EAPN;AASD;AACF,KAhBD,MAgBO;AACLwY,MAAAA,SAAS,CAACE,KAAD,CAAT,GAAmBja,QAAnB;AACD;;AAED8Z,IAAAA,aAAa,CAAC;AACZrjB,MAAAA,GAAG,EAAElP,iBAAiB,CAAC+P,IAAD,CADV;AAEZyiB,MAAAA,SAFY;AAGZ5iB,MAAAA,EAAE,2BAAE4iB,SAAS,CAACtiB,UAAZ,qBAAE,sBAAsBrb,IAHd;AAIZgb,MAAAA;AAJY,KAAD,CAAb;AAOA,wBAAY2iB,SAAZ;AAAuBziB,MAAAA,IAAI,EAAEJ,YAAY,CAACT,GAAb;AAA7B;AACD,GA1CoC,EA2CrC,CAACS,YAAD,EAAe4iB,aAAf,EAA8BP,UAA9B,EAA0C7xB,MAA1C,CA3CqC,CAAvC;AA8CA,SAAO;AACL4yB,IAAAA,MAAM,EAAEd,oBADH;AAELG,IAAAA,OAFK;AAGLE,IAAAA,UAHK;AAILC,IAAAA,aAJK;AAKLE,IAAAA;AALK,GAAP;AAOD,CAtFM;;;ACPP,MAAMO,kBAAkB,gBAAGj+B,MAAM,CAACC,GAAV,oHAAxB;AAIA,MAAMi+B,cAAc,gBAAGl+B,MAAM,CAACC,GAAV,wUAUhB;AAAA,MAAC;AAAEk+B,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEC,UAAf,CAAD,sBAA8CD,YAAY,CAACC,UAD3D;AAAA,CAVgB,EAYhB;AAAA,MAAC;AAAED,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEE,UAAf,CAAD,sBAA8CF,YAAY,CAACE,UAD3D;AAAA,CAZgB,EAchB;AAAA,MAAC;AAAEF,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEG,SAAf,CAAD,qBAA4CH,YAAY,CAACG,SADzD;AAAA,CAdgB,EAgBhB;AAAA,MAAC;AAAEH,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEI,SAAf,CAAD,gBAAuCJ,YAAY,CAACI,SADpD;AAAA,CAhBgB,EAkBhB;AAAA,MAAC;AAAEJ,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEK,QAAf,CAAD,qBAEE,OAAOL,YAAY,CAACK,QAApB,KAAiC,QAAjC,GACIL,YAAY,CAACK,QADjB,GAEOL,YAAY,CAACK,QAFpB,OAFF,CADA;AAAA,CAlBgB,EAyBhB;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,CAzBgB,CAApB;AAgCA,MAAaE,SAAS,gBAAuBC,IAAI,CAC/C;MAAC;AAAEzkB,IAAAA,GAAF;AAAOU,IAAAA,EAAP;AAAWzP,IAAAA,MAAX;AAAmBwF,IAAAA,KAAnB;AAA0BiuB,IAAAA,IAA1B;AAAgCV,IAAAA,YAAhC;AAA8ClB,IAAAA,UAA9C;AAA0DniB,IAAAA,YAA1D;AAAwE5Z,IAAAA;AAAxE;AACC,QAAM;AAAE88B,IAAAA,MAAF;AAAUX,IAAAA,OAAV;AAAmBE,IAAAA,UAAnB;AAA+BC,IAAAA;AAA/B,MAAiDR,YAAY,CACjE5xB,MADiE,EAEjE6xB,UAFiE,EAGjEniB,YAHiE,CAAnE;AAMA,QAAMgkB,cAAc,GAAGzR,WAAW,CAAC;AACjCnsB,IAAAA,OAAO,QAAP,YAAAA,OAAO,CAAGq8B,UAAU,EAAb,eACFnyB,MADE,EAEDyP,EAAE,GACF;AACEM,MAAAA,UAAU,eACJ/P,MAAM,CAAC+P,UADH;AAERrb,QAAAA,IAAI,EAAE+a;AAFE;AADZ,KADE,GAOF,EATC,EAAP;AAWD,GAZiC,EAY/B,CAACA,EAAD,EAAK0iB,UAAL,EAAiBr8B,OAAjB,EAA0BkK,MAA1B,CAZ+B,CAAlC;AAcA,QAAM2zB,YAAY,GAAG5B,OAAO,CAC1B,MACErQ,mBAAA,CAAC9rB,YAAD;AACEosB,IAAAA,GAAG,EAAE4Q;AACLptB,IAAAA,KAAK,EAAEA;AACP1P,IAAAA,OAAO,EAAEA,OAAO,GAAG49B,cAAH,GAAoBp2B;GAHtC,CAFwB,EAQ1B,CAACs1B,MAAD,EAASptB,KAAT,EAAgB1P,OAAhB,EAAyB49B,cAAzB,CAR0B,CAA5B;AAWAlR,EAAAA,SAAS,CAAC;AACRyP,IAAAA,OAAO;AACR,GAFQ,EAEN,CAACA,OAAD,CAFM,CAAT;AAIAzP,EAAAA,SAAS,CAAC;AACR4P,IAAAA,aAAa,CAAC;AAAErjB,MAAAA,GAAF;AAAOU,MAAAA,EAAP;AAAW4iB,MAAAA,SAAS,EAAEryB,MAAtB;AAA8B0P,MAAAA;AAA9B,KAAD,CAAb;AACD,GAFQ,EAEN,CAACX,GAAD,EAAM/O,MAAN,EAAcyP,EAAd,EAAkB2iB,aAAlB,EAAiC1iB,YAAjC,CAFM,CAAT;AAIA,SAAO+jB,IAAI,GACT/R,mBAAA,CAACmR,kBAAD,MAAA,EACGc,YADH,EAEEjS,mBAAA,CAACoR,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,IACC5R,mBAAA,CAACoR,cAAD;AACEC,IAAAA,YAAY,eACPA,YADO;AAEVM,MAAAA,SAAS,EAAE/1B,SAFD;AAGVg2B,MAAAA,SAAS,EAAEh2B;AAHD;GADd,EAOGm2B,IAPH,CAJJ,CADS,GAiBTE,YAjBF;AAmBD,CA5D8C,CAA1C;;MC9BMC,oBAAoB,GAK5B;;;MAAC;AAAE5zB,IAAAA,MAAF;AAAUuI,IAAAA,KAAV;AAAiByE,IAAAA,IAAI,GAAG,EAAxB;AAA4BomB,IAAAA,QAAQ,GAAG;AAAvC;AACJ,QAAM1jB,YAAY,GAAG/P,sBAAsB,CACzCK,MAAM,CAAC6Q,SADkC,CAA3C;AAGA,QAAMgjB,iBAAiB,GAAGnkB,YAAY,IAAInH,KAAK,KAAKjL,SAApD;AAEA,QAAMuT,SAAS,GACbgjB,iBAAiB,GACZ,0BAAA7zB,MAAM,CAAC6Q,SAAP,CAAkD5K,MAAlD,CAAyDsC,KAAzD,4CACGrR,KADH,KAEA8I,MAAM,CAAC6Q,SAAP,CAAkDjX,YAHtC,GAIboG,MAAM,CAAC6Q,SALb;AAOA,QAAMF,WAAW,GAAGjB,YAAY,GAAGmB,SAAH,GAAe7Q,MAAM,CAAC2Q,WAAtD;AAEA,QAAMmjB,SAAS,GAAG;AAChBp/B,IAAAA,IAAI,EAAE,gBADU;AAEhBsY,IAAAA,IAFgB;AAGhBlI,IAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CAHQ;AAIhBgL,IAAAA,KAAK,EAAE,CAJS;AAKhBC,IAAAA,UAAU,EAAE;AACV8J,MAAAA,EAAE,EAAE,WADM;AAEVhJ,MAAAA,SAFU;AAGVF,MAAAA,WAHU;AAIVD,MAAAA,WAAW,EAAE,CAJH;AAKVhc,MAAAA,IAAI,EAAE;AALI;AALI,GAAlB;AAcA,SACEgtB,mBAAA,CAAC6R,SAAD;AACExkB,IAAAA,GAAG,EAAEhE;AACL/K,IAAAA,MAAM,EAAG8zB;AACTpkB,IAAAA,YAAY,EAAEA;AACd+jB,IAAAA,IAAI,EAAE;AACNV,IAAAA,YAAY,eACP/yB,MAAM,CAAC+zB,WADA;AAEVX,MAAAA,QAAQ,EACLA,QAAkC,4BAAIpzB,MAAM,CAAC+zB,WAAX,qBAAI,oBAAoBX,QAAxB;AAH3B;GALd,CADF;AAaD,CA/CM;;MCPMY,YAAY,GAMpB;MAAC;AAAEt/B,IAAAA,IAAF;AAAQsL,IAAAA,MAAR;AAAgBgN,IAAAA,IAAhB;AAAsB+B,IAAAA,GAAtB;AAA2B8iB,IAAAA;AAA3B;AACJ,QAAMoC,aAAa,GAAGlC,OAAO,CAAC,MAC5BrQ,mBAAA,CAAC8L,MAAD;AAAQxtB,IAAAA,MAAM,EAAEA;AAA0BgN,IAAAA,IAAI,EAAEA;GAAhD,CAD2B,EAE1B,CAAChN,MAAD,EAASgN,IAAT,CAF0B,CAA7B;;AAIA,UAAQtY,IAAR;AACE,SAAK,gBAAL;AACE,aAAOqa,GAAG,GACR2S,mBAAA,CAAC6R,SAAD;AACExkB,QAAAA,GAAG,EAAEA;AACL/B,QAAAA,IAAI,EAAEA;AACN6kB,QAAAA,UAAU,EAAEA;AACZ7xB,QAAAA,MAAM,EAAE0Z,uBAAuB,CAAC1Z,MAAD;OAJjC,CADQ,GAQRi0B,aARF;;AAUF;AACE,aAAOA,aAAP;AAbJ;AAeD,CA1BM;;MCUMC,oBAAoB,gBAG5BV,IAAI,CAAC;MAAC;AAAExzB,IAAAA,MAAF;AAAUuI,IAAAA;AAAV;;AACT,MAAIpF,eAAe,CAACnD,MAAD,CAAnB,EAA6B;AAC3B,WACE0hB,mBAAA,CAAC/oB,sBAAD,MAAA,EACE+oB,mBAAA,CAACkS,oBAAD;AACE5zB,MAAAA,MAAM,EAAEA;AACRuI,MAAAA,KAAK,EAAEA;KAFT,CADF,CADF;AAQD;;AAED,SACEmZ,mBAAA,CAACsS,YAAD;AACEh0B,IAAAA,MAAM,EAAE+vB,iBAAiB,CAAC/vB,MAAD;AACzBgN,IAAAA,IAAI,EAAEwM,mBAAmB,CAACxZ,MAAD,CAAnB,IAA+BwK;AACrC9V,IAAAA,IAAI,EAAEsL,MAAM,CAACtL;AACbqa,IAAAA,GAAG,EACDlP,iBAAiB,CACdG,MAAyB,CAAC4P,IADZ;AAInBiiB,IAAAA,UAAU;GATZ,CADF;AAaD,CAzBQ,CAHF;;ACPA,MAAMsC,mBAAmB,GAAiC;AAAA,MAAC;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,gBAAb;AAA+BC,IAAAA,QAA/B;AAAyCC,IAAAA,kBAAzC;AAA6DC,IAAAA;AAA7D,GAAD;AAAA,SAC/D9S,mBAAA,eAAA,MAAA,EACG,CAAC,CAAC8S,kBAAF,IAAwB,CAACF,QAAzB,IACC5S,mBAAA,CAAChrB,kBAAD,MAAA,EACEgrB,mBAAA,CAACnsB,UAAD;AAAYO,IAAAA,OAAO,EAAE0+B;GAArB,EACE9S,mBAAA,CAAC+S,2BAAD,MAAA,CADF,CADF,CAFJ,EAQG,CAAC,CAACF,kBAAF,IACC7S,mBAAA,CAAChrB,kBAAD,MAAA,EACEgrB,mBAAA,CAACnsB,UAAD;AACEm/B,IAAAA,QAAQ,EAAE,CAACL;AACXv+B,IAAAA,OAAO,EAAE,MAAMy+B,kBAAN,oBAAMA,kBAAkB,CAAGH,SAAH;GAFnC,EAIE1S,mBAAA,CAACiT,oBAAD,MAAA,CAJF,CADF,CATJ,CAD+D;AAAA,CAA1D;;ACPA,MAAMC,qBAAqB,GAAG,CACnC/rB,UADmC,EAEnC7K,SAFmC;AAInC,MAAI,CAACA,SAAL,EAAgB,OAAO,IAAP;AAEhB,QAAMwI,aAAa,GAAG4C,6BAA6B,CAACpL,SAAD,CAAnD;AAEA,MAAIP,SAAS,GAAmBoL,UAAU,CAAC1H,IAAX,CAC9B;AAAA,QAAC;AAAEgI,MAAAA;AAAF,KAAD;AAAA,WAAcA,IAAI,KAAK3C,aAAvB;AAAA,GAD8B,CAAhC;;AAIA,MAAI,CAAC/I,SAAL,EAAgB;AACd,QAAI+I,aAAa,KAAK,OAAtB,EAA+B;AAC7B/I,MAAAA,SAAS,GAAG;AACV0L,QAAAA,IAAI,EAAE,OADI;AAEV0rB,QAAAA,KAAK,EAAE,YAFG;AAGVngC,QAAAA,IAAI,EAAE0d,aAAa,CAACC;AAHV,OAAZ;AAKD,KAND,MAMO;AACL,aAAO,IAAP;AACD;AACF;;AAED,SAAO5U,SAAP;AACD,CAzBM;;ACJA,MAAMq3B,cAAc,GAAG,CAC5Btc,eAD4B,EAE5Buc,aAF4B,KAGhB,CAAC,EAACA,aAAD,YAACA,aAAa,CAAEvgC,QAAf,CAAwBgkB,eAAxB,CAAD,CAHR;;ACKP,MAAMwc,YAAY,GAAG,CAACC,MAAD,EAAiB1sB,KAAjB;AACnB,QAAM2sB,QAAQ,GAAGD,MAAM,CAAC16B,KAAP,CAAa,GAAb,CAAjB;AAEA,SACEmnB,mBAAA,CAACyT,QAAD;AAAUC,IAAAA,GAAG,EAAE7sB;GAAf,EACEmZ,mBAAA,CAAC5sB,QAAD;AAAU0Q,IAAAA,KAAK,EAAEyvB;GAAjB,EACGC,QAAQ,CAAC,CAAD,CADX,EAEExT,mBAAA,CAAC/sB,oBAAD,MAAA,EAAuBugC,QAAQ,CAAC,CAAD,CAA/B,CAFF,CADF,EAKG3sB,KAAK,KAAK,CAAV,IAAemZ,mBAAA,CAACxsB,aAAD,MAAA,CALlB,CADF;AASD,CAZD;;AAcA,AAAO,MAAMmgC,aAAa,GAAG;MAAC;AAC5B7vB,IAAAA,KAD4B;AAE5B+C,IAAAA,KAF4B;AAG5BE,IAAAA;AAH4B;;AAS5B,MAAI,CAACjD,KAAL,EAAY;AACV,WAAOkc,mBAAA,CAAC5sB,QAAD,MAAA,EAAW6S,IAAI,CAACgB,CAAL,CAAO,OAAP,EAAgB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAhB,CAAX,CAAP;AACD;;AAED,QAAMqtB,OAAO,GAAG9vB,KAAH,oBAAGA,KAAK,CAAEjL,KAAP,CAAa,KAAb,CAAhB;AACA,QAAMg7B,cAAc,GAAG,CAAAD,OAAO,QAAP,YAAAA,OAAO,CAAE14B,MAAT,MAAoB,CAA3C;;AAEA,MAAI,CAAC6L,MAAD,IAAYF,KAAK,IAAIgtB,cAAzB,EAA0C;AACxC,WAAO7T,mBAAA,CAAC5sB,QAAD;AAAU0Q,MAAAA,KAAK,EAAEA;KAAjB,EAAyBA,KAAzB,CAAP;AACD;;AAED,MAAI,CAAC+C,KAAD,IAAUgtB,cAAd,EAA8B;AAC5B,WACE7T,mBAAA,eAAA,MAAA,EACEA,mBAAA,CAAC5sB,QAAD;AAAU0Q,MAAAA,KAAK,EAAC;KAAhB,UAAA,CADF,EAEEkc,mBAAA,CAACxsB,aAAD,MAAA,CAFF,EAGG8/B,YAAY,CAACxvB,KAAD,CAHf,CADF;AAOD;;AAED,SAAOkc,mBAAA,eAAA,MAAA,EAAG4T,OAAO,CAACz4B,GAAR,CAAYm4B,YAAZ,CAAH,CAAP;AACD,CA/BM;;ACfA,MAAMQ,kBAAkB,GAC7BC,eADgC;AAGhC,QAAM5sB,UAAU,GAAI4sB,eAAe,IAAIA,eAAe,CAAC5sB,UAApC,IAAmD,EAAtE;AAEA,SAAOlC,MAAM,CAACC,OAAP,CAAeiC,UAAf,EAA2BhM,GAA3B,CAA+B;AAAA,QAAC,CAACsM,IAAD,EAAOusB,UAAP,CAAD;AAAA;AACpCvsB,MAAAA;AADoC,OAEjCusB,UAFiC;AAAA,GAA/B,CAAP;AAID,CATM;;MCoBMC,cAAc,GAA4B;;;MAAC;AACtD1f,IAAAA,SADsD;AAEtD8e,IAAAA,aAFsD;AAGtDa,IAAAA,kBAHsD;AAItDrB,IAAAA,kBAJsD;AAKtD9hB,IAAAA;AALsD;AAOtD,MAAI,EAACwD,SAAD,gCAACA,SAAS,CAAExU,KAAZ,sCAAC,iBAAkBC,QAAnB,aAAC,sBAA4B9E,MAA7B,CAAJ,EAAyC,OAAO,IAAP;AAEzC,QAAMiM,UAAU,GAAG2sB,kBAAkB,CAACvf,SAAS,CAACwf,eAAX,CAArC;AAEA,SACE/T,mBAAA,CAAC3rB,kBAAD,MAAA,EACGkgB,SAAS,CAACxU,KAAV,CAAgBC,QAAhB,CAAyB7E,GAAzB,CAA6B,CAACuZ,UAAD,EAAa7N,KAAb;;;AAC5B,UAAM9K,SAAS,GAAGm3B,qBAAqB,CACrC/rB,UADqC,EAErCuN,UAAU,CAACpY,SAF0B,CAAvC;AAKA,QAAI,CAACP,SAAL,EAAgB,OAAO,IAAP;AAEhB,UAAM+a,eAAe,GAAGJ,qBAAqB,CAC3C3a,SAAS,CAAC0L,IADiC,EAE3C1L,SAAS,CAAC/I,IAFiC,EAG3CmkB,sBAAsB,CACpBzC,UAAU,CAACpW,MADS,EAEpBoW,UAAU,CAAC5Q,KAFS,EAGpB,IAAIzH,uBAAJ,CAA4BqY,UAAU,CAACpY,SAAvC,CAHoB,CAHqB,CAA7C;AAUA,UAAM63B,UAAU,GAAGR,aAAa,CAAC;AAC/B7vB,MAAAA,KAAK,EAAEiQ,gBAAgB,CAACW,UAAU,CAACpY,SAAZ,CAAhB,GACHuY,6BAA6B,CAC3BH,UAD2B,EAI3B3Y,SAJ2B,EAK3BgV,WAL2B,EAM3BlK,KAN2B,CAD1B,GASH+N,qBAAqB,CAAC;AACpBtY,QAAAA,SAAS,EAAEoY,UAAU,CAACpY,SADF;AAEpBP,QAAAA,SAFoB;AAGpBgV,QAAAA;AAHoB,OAAD,CAVM;AAe/BlK,MAAAA,KAf+B;AAgB/BE,MAAAA,MAAM,EACJ,0BAAAmsB,qBAAqB,CAAC/rB,UAAD,EAAauN,UAAU,CAACpY,SAAxB,CAArB,2CAAyDtJ,IAAzD,MACA;AAlB6B,KAAD,CAAhC;AAqBA,WACEgtB,mBAAA,CAACtsB,cAAD;AACEggC,MAAAA,GAAG,EAAE7sB;AACLjT,MAAAA,QAAQ,EAAEw/B,cAAc,CACtBtc,eADsB,EAEtBuc,aAFsB,oBAEtBA,aAAa,CAAG9e,SAAS,CAAC9M,IAAb,CAFS;AAIxBrT,MAAAA,OAAO,EAAE,MACP8/B,kBADO,oBACPA,kBAAkB,CAAG3f,SAAS,CAAC9M,IAAb,EAAmBqP,eAAnB;KAPtB,EAUEkJ,mBAAA,CAACvsB,eAAD,MAAA,EACEusB,mBAAA,CAACwS,oBAAD;AACEl0B,MAAAA,MAAM,EAAEoW,UAAU,CAACpW;KADrB,CADF,CAVF,EAeG61B,UAfH,EAgBEnU,mBAAA,CAACyS,mBAAD;AAAqBC,MAAAA,SAAS,EAAEne,SAAS,CAAC9M;AAAMorB,MAAAA,kBAAkB,EAAEA;KAApE,CAhBF,CADF;AAoBD,GA3DA,CADH,CADF;AAgED,CA3EM;;MCjBMuB,0BAA0B,GAGlC;MAAC;AAAExhC,IAAAA,SAAF;AAAaiU,IAAAA;AAAb;AACJ,QAAM;AAAEI,IAAAA;AAAF,MAAQotB,cAAc,CAAC,OAAD,CAA5B;AACA,QAAM79B,MAAM,GAAG9D,eAAe,CAAC,MAAD,EAASE,SAAT,CAA9B;AACA,QAAM8D,aAAa,GAAGhE,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkCE,SAAlC,CAArC;AACA,QAAM0hC,aAAa,GAAG5hC,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkCE,SAAlC,CAArC;AAEA,SACEotB,mBAAA,CAACzrB,6BAAD,MAAA,EACGmC,aAAa,IAAI49B,aAAjB,GACI59B,aAAa,GAAGuQ,CAAC,CAAC,aAAD,CAAJ,GAAsBA,CAAC,CAAC,aAAD,CADxC,GAEGzQ,MAAM,GAAGyQ,CAAC,CAAC,YAAD,CAAJ,GAAqBA,CAAC,CAAC,aAAD,CAHlC,EAIG,CAAC,CAACJ,KAAF,IAAWmZ,mBAAA,CAACxrB,cAAD,MAAA,EAAiBqS,KAAjB,CAJd,CADF;AAQD,CAjBM;;ACgBP,MAAM0tB,uBAAuB,GAAG,CAACzwB,KAAD,EAAgB0wB,QAAhB;AAC9B,MAAI1wB,KAAK,CAAChR,QAAN,CAAe,KAAf,CAAJ,EAA2B;AACzB,UAAM8S,MAAM,GAAG9B,KAAH,oBAAGA,KAAK,CAAEjL,KAAP,CAAa,KAAb,CAAf;AAEA,WAAO27B,QAAQ,KAAK,KAAb,GAAqB5uB,MAArB,oBAAqBA,MAAM,CAAG,CAAH,CAA3B,GAAmCA,MAAnC,oBAAmCA,MAAM,CAAG,CAAH,CAAhD;AACD;;AAED,MAAI9B,KAAK,CAAChR,QAAN,CAAe,GAAf,CAAJ,EAAyB;AACvB,UAAM8S,MAAM,GAAG9B,KAAH,oBAAGA,KAAK,CAAEjL,KAAP,CAAa,GAAb,CAAf;AAEA,WAAO+M,MAAM,CAAC5M,IAAP,CAAY,IAAZ,CAAP;AACD;;AAED,SAAO8K,KAAK,CAACjL,KAAN,CAAY,GAAZ,EAAiB4G,IAAjB,CAAsB0Q,SAAtB,KAAoCrM,KAApC,IAA6C,EAApD;AACD,CAdD;;AAgBA,MAAa2wB,eAAe,GAA6B;;;MAAC;AACxDC,IAAAA,QADwD;AAExD5/B,IAAAA,OAFwD;AAGxDyP,IAAAA,MAHwD;AAIxDT,IAAAA,KAJwD;AAKxDlR,IAAAA,SALwD;AAMxDygC,IAAAA;AANwD;AAQxD,QAAM;AAAEpsB,IAAAA;AAAF,MAAQotB,cAAc,CAAC,OAAD,CAA5B;AACA,QAAMM,aAAa,GAAG,CAAC,GAAGpwB,MAAJ,CAAtB;AACA,QAAM2S,KAAK,GAAGyd,aAAa,CAACC,GAAd,EAAd;AACA,QAAMp+B,MAAM,GAAG9D,eAAe,CAAC,MAAD,EAASE,SAAT,CAA9B;AACA,QAAM8D,aAAa,GAAGhE,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkCE,SAAlC,CAArC;AACA,QAAMiiC,QAAQ,GAAGN,uBAAuB,oBAACI,aAAa,CAAC,CAAD,CAAd,qBAAC,gBAAkB7wB,KAAnB,EAA0B,KAA1B,CAAxC;AACA,QAAMgxB,QAAQ,GAAGP,uBAAuB,mBAACI,aAAa,CAACA,aAAa,CAACz5B,MAAd,GAAuB,CAAxB,CAAd,qBAAC,eAAyC4I,KAA1C,EAAiD,KAAjD,CAAxC;AAEA,QAAMixB,aAAa,GAAGxU,WAAW,CAAEzJ,eAAD,IAA8BA,eAAe,GAC3Euc,aAD2E,oBAC3EA,aAAa,CAAEtgC,IAAf,CAAoBuJ,SAAS,IAAIwa,eAAe,CAAChkB,QAAhB,CAAyBwJ,SAAzB,CAAjC,CAD2E,GAE3E,KAF6B,EAEtB,CAAC+2B,aAAD,CAFsB,CAAjC;AAIA,SACErT,mBAAA,CAACjrB,wBAAD;AAA0BurB,IAAAA,GAAG,EAAEoU;AAAU5/B,IAAAA,OAAO,EAAEA;GAAlD,EACG,CAAC,CAACgP,KAAF,IAAWkc,mBAAA,CAAC1qB,mBAAD,MAAA,EAAsBwO,KAAtB,CADd,EAEGtN,MAAM,GACLwpB,mBAAA,eAAA,MAAA,EACEA,mBAAA,CAAC/pB,mBAAD,MAAA,EACE+pB,mBAAA,CAAC9pB,yBAAD,MAAA,EACE8pB,mBAAA,CAACvpB,cAAD;AAAgB7D,IAAAA,SAAS,EAAEA;AAAW4D,IAAAA,MAAM;GAA5C,EACGm+B,aAAa,CAACx5B,GAAd,CAAkB,CAAC3F,KAAD,EAAQqR,KAAR,KACjBmZ,mBAAA,CAACnqB,aAAD;AACE69B,IAAAA,GAAG,OAAKl+B,KAAK,CAACsO,KAAX,GAAmB+C;AACtB/C,IAAAA,KAAK,EAAEtO,KAAK,CAACsO;AACbtO,IAAAA,KAAK,EAAEA,KAAK,CAAC+N;AACb3Q,IAAAA,SAAS,EAAEA;AACXgB,IAAAA,QAAQ,EAAEmhC,aAAa,CAACv/B,KAAK,CAACshB,eAAP;GALzB,CADD,CADH,CADF,CADF,EAcEkJ,mBAAA,CAAC7pB,wBAAD,MAAA,EACE6pB,mBAAA,CAAC5pB,uBAAD,MAAA,sBAA0Bu+B,aAAa,CAAC,CAAD,CAAvC,qBAA0B,iBAAkB7wB,KAA5C,CADF,EAEEkc,mBAAA,CAAC3pB,qBAAD,MAAA,qBAAwBs+B,aAAa,CAACA,aAAa,CAACz5B,MAAd,GAAuB,CAAxB,CAArC,qBAAwB,gBAAyC4I,KAAjE,CAFF,CAdF,CADF,EAoBEkc,mBAAA,CAAC/pB,mBAAD,MAAA,EACE+pB,mBAAA,CAAC9pB,yBAAD,MAAA,EACE8pB,mBAAA,CAACvpB,cAAD;AAAgB7D,IAAAA,SAAS,EAAEA;AAAW4D,IAAAA,MAAM;GAA5C,EACEwpB,mBAAA,CAAClqB,cAAD;AACEgO,IAAAA,KAAK,EAAEmD,CAAC,CAAC,OAAD;AACRzR,IAAAA,KAAK,EAAE0hB,KAAF,oBAAEA,KAAK,CAAE3T;AACd3Q,IAAAA,SAAS,EAAEA;AACXgB,IAAAA,QAAQ,EAAEmhC,aAAa,CAAC7d,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,CADF,CADF,CADF,EAWEkJ,mBAAA,CAAC7pB,wBAAD,MAAA,EACE6pB,mBAAA,CAAC3pB,qBAAD,MAAA,EAAwB4Q,CAAC,CAAC,OAAD,CAAzB,CADF,CAXF,CApBF,CADK,GAqCHvQ,aAAa,GACfspB,mBAAA,CAACvpB,cAAD;AAAgB7D,IAAAA,SAAS,EAAEA;AAAW8D,IAAAA,aAAa;GAAnD,EACGi+B,aAAa,CAACx5B,GAAd,CAAkB,CAAC3F,KAAD,EAAQqR,KAAR,KACjBmZ,mBAAA,CAACnqB,aAAD;AACE69B,IAAAA,GAAG,OAAKl+B,KAAK,CAACsO,KAAX,GAAmB+C;AACtB/C,IAAAA,KAAK,EAAEtO,KAAK,CAACsO;AACbtO,IAAAA,KAAK,EAAEA,KAAK,CAAC+N;AACb3Q,IAAAA,SAAS,EAAEA;AACXgB,IAAAA,QAAQ,EAAEmhC,aAAa,CAACv/B,KAAK,CAACshB,eAAP;GALzB,EAOG,CAAC,CAACjQ,KAAD,IAAUA,KAAK,KAAK8tB,aAAa,CAACz5B,MAAd,GAAuB,CAA5C,KAAkD1F,KAAK,CAACsO,KAP3D,CADD,CADH,EAYEkc,mBAAA,CAAClqB,cAAD;AACEgO,IAAAA,KAAK,EAAEmD,CAAC,CAAC,OAAD;AACRzR,IAAAA,KAAK,EAAE0hB,KAAF,oBAAEA,KAAK,CAAE3T;AACd3Q,IAAAA,SAAS,EAAEA;AACXgB,IAAAA,QAAQ,EAAEmhC,aAAa,CAAC7d,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,EAMG7P,CAAC,CAAC,OAAD,CANJ,CAZF,CADe,GAuBf+Y,mBAAA,CAACvpB,cAAD;AAAgB7D,IAAAA,SAAS,EAAEA;GAA3B,EACEotB,mBAAA,CAACppB,uBAAD,MAAA,EACG+9B,aAAa,CAACx5B,GAAd,CAAkB,CAAC3F,KAAD,EAAQqR,KAAR,KACjBmZ,mBAAA,CAACnqB,aAAD;AACE69B,IAAAA,GAAG,OAAKl+B,KAAK,CAACsO,KAAX,GAAmB+C;AACtB/C,IAAAA,KAAK,EAAEtO,KAAK,CAACsO;AACbtO,IAAAA,KAAK,EAAEA,KAAK,CAAC+N;AACb3Q,IAAAA,SAAS,EAAEA;AACXgB,IAAAA,QAAQ,EAAEmhC,aAAa,CAACv/B,KAAK,CAACshB,eAAP;GALzB,CADD,CADH,CADF,EAYEkJ,mBAAA,CAAClqB,cAAD;AACEgO,IAAAA,KAAK,EAAEmD,CAAC,CAAC,OAAD;AACRzR,IAAAA,KAAK,EAAE0hB,KAAF,oBAAEA,KAAK,CAAE3T;AACd3Q,IAAAA,SAAS,EAAEA;AACXgB,IAAAA,QAAQ,EAAEmhC,aAAa,CAAC7d,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,CAZF,CA9DJ,EAkFG,QAAOI,KAAP,oBAAOA,KAAK,CAAE3T,cAAd,MAAiC,QAAjC,KAA8CsxB,QAAQ,IAAIC,QAA1D,KACC9U,mBAAA,CAACnpB,eAAD,MAAA,EACEmpB,mBAAA,CAAClpB,oBAAD,MAAA,EACEkpB,mBAAA,MAAA,MAAA,EAAM6U,QAAN,CADF,EAEE7U,mBAAA,MAAA,MAAA,EAAM8U,QAAN,CAFF,CADF,EAKE9U,mBAAA,CAACjpB,oBAAD,MAAA,KAAA,CALF,CAnFJ,CADF;AA8FD,CAlHM;;MCdMi+B,eAAe,GAA6B;MAAC;AACxDN,IAAAA,QADwD;AAExD5/B,IAAAA,OAFwD;AAGxD49B,IAAAA,SAHwD;AAIxDp0B,IAAAA,MAAM,EAAE22B,aAJgD;AAKxDriC,IAAAA,SALwD;AAMxD2R,IAAAA,MANwD;AAOxDsC,IAAAA,KAAK,EAAE0Q,YAPiD;AAQxDZ,IAAAA,aARwD;AASxD0c,IAAAA,aATwD;AAUxDa,IAAAA;AAVwD;AAYxD,QAAMntB,MAAM,GAAG4P,aAAa,KAAK,UAAjC;AACA,QAAMngB,MAAM,GAAG9D,eAAe,CAC5B,MAD4B,EAE5BE,SAF4B,CAA9B;AAIA,QAAM8D,aAAa,GAAGhE,eAAe,CACnC,CAAC,aAAD,EAAgB,cAAhB,CADmC,EAEnCE,SAFmC,CAArC;AAIA,QAAM0hC,aAAa,GAAG5hC,eAAe,CACnC,CAAC,aAAD,EAAgB,cAAhB,CADmC,EAEnCE,SAFmC,CAArC;AAKA,QAAM2Q,cAAc,GAAG8sB,OAAO,CAC5B,MACG1b,GAAG,CAACsgB,aAAD,EAAgBriC,SAAhB,CAFsB,EAK5B,CAACqiC,aAAD,EAAgBriC,SAAhB,CAL4B,CAA9B;AAQA,QAAMsiC,YAAY,GAAG3U,WAAW,CAC9B,QAAqC1Z,KAArC;;;QAAC;AAAEvI,MAAAA,MAAF;AAAUwF,MAAAA,KAAV;AAAiBgT,MAAAA;AAAjB;AACC,QAAI,CAACxY,MAAL,EAAa,OAAO,IAAP;AAEb,UAAM3K,oBAAkB,GAAGwhC,kBAAwB,CAAC72B,MAAD,EAAS1L,SAAT,CAAnD;AACA,UAAM4C,KAAK,GAAI2I,iBAAiB,CAC5BoF,cAD4B,6CAC5BA,cAAc,CAAEgB,MAAhB,CAAuBsC,KAAvB,CAD4B,qBAC5B,sBAA+BrR,KADH,CAAjB,KAC8B+N,cAD9B,oBAC8BA,cAAc,CAAErL,YAD9C,CAAf;AAIA,WACE8nB,mBAAA,CAACtsB,cAAD;AACEggC,MAAAA,GAAG,EAAEnc,YAAY,GAAGzT,KAAf,GAAuB+C;AAC5BjT,MAAAA,QAAQ,EAAEw/B,cAAc,CAACtc,eAAD,EAAkBuc,aAAlB;AACxB1/B,MAAAA,kBAAkB,EAAEA;AACpBS,MAAAA,OAAO,EAAE,MAAM8/B,kBAAN,oBAAMA,kBAAkB,CAAGxB,SAAH,EAAc5b,eAAd;KAJnC,EAMGtgB,MAAM,IAAIE,aAAV,IAA2B49B,aAA3B,GACCtU,mBAAA,CAACvpB,cAAD;AACE7D,MAAAA,SAAS,EAAEA;AACX4D,MAAAA,MAAM,EAAEA;AACRE,MAAAA,aAAa,EAAEA;AACf49B,MAAAA,aAAa,EAAEA;AACf39B,MAAAA,QAAQ;KALV,EAOEqpB,mBAAA,CAACnqB,aAAD;AACE69B,MAAAA,GAAG,OAAK5vB,KAAL,GAAa+C;AAChB/C,MAAAA,KAAK,EAAEA;AACPtO,MAAAA,KAAK,EAAEA;AACP5C,MAAAA,SAAS,EAAEA;KAJb,CAPF,CADD,GAgBCotB,mBAAA,CAACvsB,eAAD,MAAA,EACEusB,mBAAA,CAACwS,oBAAD;AACE3rB,MAAAA,KAAK,EAAEA;AACPvI,MAAAA,MAAM,EACJ3K,oBAAkB,GAAGshC,aAAH,GAAsCvzB,kBAAkB,CAACpD,MAAD,EAAS,IAAT;KAH9E,CADF,CAtBJ,EA+BGq1B,aAAa,CAAC;AAAE7vB,MAAAA,KAAF;AAAS+C,MAAAA,KAAT;AAAgBE,MAAAA;AAAhB,KAAD,CA/BhB,CADF;AAmCD,GA5C6B,EA6C9B,CACEnU,SADF,EAEE2kB,YAFF,EAGE8b,aAHF,EAIE78B,MAJF,EAKEE,aALF,EAME49B,aANF,EAOE/wB,cAPF,EAQE0xB,aARF,EASEluB,MATF,EAUEmtB,kBAVF,EAWExB,SAXF,CA7C8B,CAAhC;AA4DA,SACE1S,mBAAA,CAACnrB,wBAAD;AAA0ByrB,IAAAA,GAAG,EAAEoU;AAAU5/B,IAAAA,OAAO,EAAEA;GAAlD,EACGyP,MAAM,CAACpJ,GAAP,CAAW+5B,YAAX,CADH,CADF;AAKD,CAnGM;;MCFME,aAAa,GAA2B;;;MAAC;AACpD1C,IAAAA,SADoD;AAEpDp0B,IAAAA,MAFoD;AAGpD1L,IAAAA,SAHoD;AAIpDyiC,IAAAA,UAJoD;AAKpDre,IAAAA,UALoD;AAMpDqc,IAAAA,aANoD;AAOpDa,IAAAA,kBAPoD;AAQpDrB,IAAAA,kBARoD;AASpDC,IAAAA,kBAToD;AAUpD/2B,IAAAA,SAVoD;AAWpDgV,IAAAA,WAXoD;AAYpDlK,IAAAA,KAZoD;AAapDyuB,IAAAA,KAboD;AAcpD1C,IAAAA;AAdoD;AAgBpD,QAAM;AAAE3rB,IAAAA;AAAF,MAAQotB,cAAc,CAAC,OAAD,CAA5B;AACA,QAAM,CAACh/B,UAAD,EAAakgC,cAAb,IAA+B5T,SAAS,EAA9C;AACA,QAAM,CAAC6T,MAAD,EAASC,OAAT,IAAoB1U,OAAO,EAAjC;AACA,QAAM,CAAC2U,MAAD,EAASC,OAAT,IAAoB5U,OAAO,EAAjC;AAEA,MAAI,CAAC2R,SAAD,IAAc,CAAC32B,SAAnB,EAA8B,OAAO,IAAP;AAE9B,QAAM65B,aAAa,GAAGl1B,wBAAwB,CAACpC,MAAD,CAAxB,GACjBA,MAAiC,CAACiG,MAAlC,CAAyCsC,KAAzC,CADiB,GACsDvI,MAD5E;AAGA,SACE0hB,mBAAA,CAAC/qB,yBAAD;AAA2B09B,IAAAA,gBAAgB,EAAE,CAAC,EAACU,aAAD,qCAACA,aAAa,CAAGX,SAAH,CAAd,aAAC,sBAA4Bx3B,MAA7B;GAA9C,EACE8kB,mBAAA,CAAC1rB,eAAD,MAAA,EACGyH,SAAS,CAACo3B,KAAV,IAAmBp3B,SAAS,CAAC0L,IADhC,EAEEuY,mBAAA,CAACyS,mBAAD;AACEC,IAAAA,SAAS,EAAEA;AACXC,IAAAA,gBAAgB,EAAE,CAAC,EAACU,aAAD,sCAACA,aAAa,CAAGX,SAAH,CAAd,aAAC,uBAA4Bx3B,MAA7B;AACnB23B,IAAAA,kBAAkB,EAAEA;AACpBC,IAAAA,kBAAkB,EAAEA;AACpBF,IAAAA,QAAQ,EAAEA;GALZ,CAFF,CADF,EAWE5S,mBAAA,CAACoU,0BAAD;AACExhC,IAAAA,SAAS,EAAEA;AACXiU,IAAAA,KAAK,EAAEyuB,KAAK,IAAIzuB,KAAK,KAAKjL,SAAnB,GAA+B05B,KAAK,GAAGzuB,KAAvC,GAA+C;GAFxD,CAXF,EAeEmZ,mBAAA,CAAC9qB,qBAAD;AACEC,IAAAA,SAAS,EAAEwgC,OAAF,oBAAEA,OAAO,CAAEE;AACpBzgC,IAAAA,SAAS,EAAEqgC,OAAF,oBAAEA,OAAO,CAAEI;AACpBxgC,IAAAA,UAAU,EAAEA;GAHd,EAKE2qB,mBAAA,CAACgV,eAAD;AACEN,IAAAA,QAAQ,EAAEc;AACV1gC,IAAAA,OAAO,EAAEO;AACTq9B,IAAAA,SAAS,EAAEA;AACXp0B,IAAAA,MAAM,EAAEs3B;AACRvC,IAAAA,aAAa,EAAEA,aAAF,oBAAEA,aAAa,CAAGX,SAAH;AAC5BwB,IAAAA,kBAAkB,EAAEA;AACpBthC,IAAAA,SAAS,EAAEA;AACX+jB,IAAAA,aAAa,EAAE5a,SAAS,CAAC/I;AACzB6T,IAAAA,KAAK,EAAEA;AACPtC,IAAAA,MAAM,EAAE8S,wBAAwB,CAC9Btb,SAD8B,EAE9BnJ,SAF8B,EAG9ByiC,UAH8B,EAI9Bre,UAJ8B,EAK9B4e,aAL8B,EAM9B7kB,WAN8B,EAO9BlK,KAP8B,EAQ9BI,CAAC,CAAC,OAAD,CAR6B;GAVlC,CALF,EA0BE+Y,mBAAA,CAACyU,eAAD;AACEC,IAAAA,QAAQ,EAAEgB;AACV5gC,IAAAA,OAAO,EAAE,CAACO;AACVg+B,IAAAA,aAAa,EAAEA,aAAF,oBAAEA,aAAa,CAAGX,SAAH;AAC5B9/B,IAAAA,SAAS,EAAEA;AACX2R,IAAAA,MAAM,EAAEwS,wBAAwB,CAC9Bhb,SAD8B,EAE9Bib,UAF8B,EAG9BjG,WAH8B,EAI9BlK,KAJ8B,EAK9BI,CAAC,CAAC,OAAD,CAL6B;GALlC,CA1BF,CAfF,EAuDE+Y,mBAAA,CAAChpB,qBAAD;AAAuB5C,IAAAA,OAAO,EAAEmhC;GAAhC,EACGlgC,UAAU,GAAG4R,CAAC,CAAC,MAAD,CAAJ,GAAeA,CAAC,CAAC,MAAD,CAD7B,CAvDF,CADF;AA6DD,CAvFM;;;ACvBP,MAca6uB,MAAM,gBAAoBhE,IAAI,CACzC;;;MAAC;AAAEvd,IAAAA,SAAF;AAAaxD,IAAAA,WAAb;AAA0BsiB,IAAAA,aAA1B;AAAyCa,IAAAA,kBAAzC;AAA6DrB,IAAAA,kBAA7D;AAAiFC,IAAAA;AAAjF;MAAwGiD;;AACvG,MAAI,CAACxhB,SAAL,EAAgB,OAAO,IAAP;;AAEhB,0BAAIA,SAAS,CAACxU,KAAd,sCAAI,iBAAiBC,QAArB,aAAI,sBAA2B9E,MAA/B,EAAuC;AACrC,WACE8kB,mBAAA,CAACiU,cAAD;AACE1f,MAAAA,SAAS,EAAEA;AACXxD,MAAAA,WAAW,EAAEA;AACbsiB,MAAAA,aAAa,EAAEA;AACfa,MAAAA,kBAAkB,EAAEA;AACpBrB,MAAAA,kBAAkB,EAAEA;AACpBC,MAAAA,kBAAkB,EAAEA;KANtB,CADF;AAUD;;AAED,QAAM3rB,UAAU,GAAG2sB,kBAAkB,CAACvf,SAAS,CAACwf,eAAX,CAArC;AAEA,QAAMiC,WAAW,GAAG3F,OAAO,CAAC;;;AAC1B,UAAMgF,UAAU,GAAG/rB,qBAAqB,CAACiL,SAAS,CAACC,YAAX,CAAxC;AACA,UAAMsT,KAAK,GAAG;AACZ4K,MAAAA,SAAS,EAAEne,SAAS,CAAC9M,IADT;AAEZnJ,MAAAA,MAAM,uBAAEiW,SAAS,CAACxU,KAAZ,qBAAE,kBAAiBzB,MAFb;AAGZ+2B,MAAAA,UAAU,EAAEA,UAHA;AAIZtkB,MAAAA,WAAW,EAAEA,WAJD;AAKZsiB,MAAAA,aAAa,EAAEA,aALH;AAMZa,MAAAA,kBAAkB,EAAEA,kBANR;AAOZrB,MAAAA,kBAAkB,EAAEA,kBAPR;AAQZC,MAAAA,kBAAkB,EAAEA;AARR,KAAd;;AAWA,QAAI,qBAAAve,SAAS,CAACxU,KAAV,+BAAiBzB,MAAjB,IAA2BoC,wBAAwB,CAAC6T,SAAS,CAACxU,KAAV,CAAgBzB,MAAjB,CAAvD,EAAiF;AAAA;;AAC/E,YAAMiG,MAAM,wBAAGgQ,SAAS,CAACxU,KAAb,8CAAG,kBAAiBzB,MAApB,+CAAG,sBAAyBiG,MAA5B,qBAAG,uBAAiCE,MAAjC,CAAwC,CAACmB,MAAD,EAAStH,MAAT,EAAiBuI,KAAjB;AACrD,eAAO,CAAC2Q,oBAAoB,CAAClZ,MAAD,EAAS+2B,UAAT,EAA4CxuB,KAA5C,CAArB,EAA2F,GAAGjB,MAA9F,CAAP;AACD,OAFc,EAEZ,EAFY,CAAf;AAIA,aACEoa,mBAAA,eAAA,MAAA,EACGzb,MADH,oBACGA,MAAM,CAAEpJ,GAAR,CAAY,CAAC3F,KAAD,EAAQqR,KAAR,KAAkB5B,MAAM,CAACuB,IAAP,CAAYhR,KAAZ,EAAmB2F,GAAnB,CAAuB,CAACsZ,KAAD,EAAQwhB,QAAR;;;AACpD,cAAM5mB,IAAI,GAAG7Z,KAAK,CAACif,KAAD,CAAlB;AAEA,eACEuL,mBAAA,CAACoV,aAAD;AACE1B,UAAAA,GAAG,EAAE,CAACuC,QAAD,EAAWpvB,KAAX,EAAkB7N,IAAlB,CAAuB,GAAvB;AACL6N,UAAAA,KAAK,EAAEwI,IAAF,oBAAEA,IAAI,CAAExI;AACbyuB,UAAAA,KAAK,EAAE/wB,MAAF,oBAAEA,MAAM,CAAErJ;AACfa,UAAAA,SAAS,EAAEm3B,qBAAqB,CAAC/rB,UAAD,EAAakI,IAAb,qCAAaA,IAAI,CAAE9K,MAAN,CAAa,CAAb,CAAb,qBAAa,cAAiBjI,SAA9B;AAChC1J,UAAAA,SAAS,EAAE6hB;AACXuC,UAAAA,UAAU,EAAE3H;WACRyY,OACAiO,KARN,CADF;AAYD,OAf8B,CAA9B,CADH,CADF;AAoBD;;AAED,UAAM/e,UAAU,GAAGU,aAAa,CAACnD,SAAD,CAAhC;AAEA,QAAI,CAACyC,UAAL,EAAiB,OAAO,IAAP;AAEjB,WACEgJ,mBAAA,eAAA,MAAA,EACG/a,MAAM,CAACuB,IAAP,CAAYwQ,UAAZ,EAAwB7b,GAAxB,CAA4B,CAACsZ,KAAD,EAAQwhB,QAAR;;;AAC3B,YAAM5mB,IAAI,GAAG2H,UAAU,CAACvC,KAAD,CAAvB;AAEA,aACEuL,mBAAA,CAACoV,aAAD;AACE1B,QAAAA,GAAG,EAAE,CAACuC,QAAD,EAAW5mB,IAAI,CAACxI,KAAhB,EAAuB7N,IAAvB,CAA4B,GAA5B;AACL6N,QAAAA,KAAK,EAAEwI,IAAI,CAACxI;AACZ9K,QAAAA,SAAS,EAAEm3B,qBAAqB,CAAC/rB,UAAD,EAAakI,IAAb,sCAAaA,IAAI,CAAE9K,MAAN,CAAa,CAAb,CAAb,qBAAa,eAAiBjI,SAA9B;AAChC1J,QAAAA,SAAS,EAAE6hB;AACXuC,QAAAA,UAAU,EAAE3H;SACRyY,OACAiO,KAPN,CADF;AAWD,KAdA,CADH,CADF;AAmBD,GA/D0B,EA+DxB,CAACxhB,SAAD,EAAYxD,WAAZ,EAAyBsiB,aAAzB,EAAwCa,kBAAxC,EAA4DrB,kBAA5D,EAAgFC,kBAAhF,CA/DwB,CAA3B;AAiEA,SACE9S,mBAAA,CAAC3rB,kBAAD,MAAA,EACG2hC,WADH,CADF;AAKD,CAzFwC,CAApC;;MCRMlK,MAAM,GAAoB;MAAC;AAAExtB,IAAAA,MAAF;AAAUgN,IAAAA,IAAV;AAAgB8V,IAAAA;AAAhB;AACtC,QAAM;AAAExF,IAAAA,MAAF;AAAU0E,IAAAA;AAAV,MAAkBF,SAAS,EAAjC;AACAc,EAAAA,SAAS,CAAC;AAAE5iB,IAAAA,MAAF;AAAUgN,IAAAA,IAAV;AAAgB8V,IAAAA;AAAhB,GAAD,EAA2BxF,MAA3B,CAAT;AAEA,SAAOoE,mBAAA,SAAA;AAAQM,IAAAA,GAAG,EAAEA;GAAb,CAAP;AACD,CALM;;;MCEM4V,YAAY,gBAAGhjC,MAAM,CAACC,GAAV,oJACT;AAAA,MAAC;AAAEqhB,IAAAA,YAAF;AAAgB2hB,IAAAA;AAAhB,GAAD;AAAA,kBACLA,KAAK,CAAC3hB,YAAD,CADA,2BAEVA,YAAY,KAAKjL,YAAY,CAACE,QAA9B,GAAyC,aAAzC,GAAyD,WAF/C;AAAA,CADS,CAAlB;AASP,MAAa2sB,aAAa,gBAAGljC,MAAM,CAACC,GAAV,orBAYF;AAAA,MAAC;AAAEuc,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAf;AAAA,CAZE,EA2BF;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAf;AAAA,CA3BE,CAAnB;;ACJP,MAAM2mB,QAAQ,GAAG,EAAjB;AAEA,MAAaC,WAAW,GAA+B;MAAC;AACtDh4B,IAAAA,MADsD;AAEtDgN,IAAAA,IAAI,GAAG+qB,QAF+C;AAGtDr2B,IAAAA;AAHsD;;AAKtD,MAAIA,QAAJ,EAAc;AACZ,WAAOggB,mBAAA,eAAA,MAAA,EAAGhgB,QAAH,CAAP;AACD;;AAED,MAAIu2B,UAAU,GAAG,IAAjB;;AAEA,MAAI;AACFA,IAAAA,UAAU,GAAGlI,iBAAiB,CAAC/vB,MAAD,CAA9B;AACD,GAFD,CAEE,OAAOk4B,CAAP,EAAU;AAEX;;AAED,MAAI,CAACD,UAAL,EAAiB;AACf,WAAO,IAAP;AACD;;AAED,MAAI1J,mBAAmB,CAACvuB,MAAD,CAAvB,EAAmD;AAAA;;AACjD,UAAMoR,KAAK,GAAGvR,iBAAiB,0BAAEo4B,UAA+B,CAACloB,UAAlC,qBAAE,sBAA4Cc,SAA9C,CAAjB,IACZhR,iBAAiB,uBAAEo4B,UAA+B,CAACjoB,MAAlC,qBAAE,mBAAwCa,SAA1C,CADL,IACuE,kBADrF;AAGA,WAAO6Q,mBAAA,CAACoW,aAAD;AAAe1mB,MAAAA,KAAK,EAAEA;KAAtB,CAAP;AACD;;AAED,SACEsQ,mBAAA,CAAC8L,MAAD;AACExtB,IAAAA,MAAM,EAAE2xB,YAAY,CAACsG,UAAD,EAAa;AAAEjrB,MAAAA,IAAI,EAAEA,IAAI,GAAG;AAAf,KAAb;AACpBA,IAAAA,IAAI,EAAEA;GAFR,CADF;AAMD,CAlCM;;;;"}